id: Гость   вход   регистрация
текущее время 23:19 18/04/2024
Автор темы: Гость, тема открыта 15/01/2013 19:10 Печать
Категории: криптография, алгоритмы, хэширование
создать
просмотр
ссылки

Про Keccak и PRP


Приветствую!
Изучаю структуру Keccak, и там говорится о том, что внутри sponge функции используется PRP, т.е. псевдослучайная перестановка. Какая же эта перестановка, если после первого же раунда оно нулевое состояние отображает в ненулевое?
У Шнайера в практической криптографии перестановками называются комбинации всех пар открытый текст\шифротекст для блочного шифра при определенном ключе. И там это понятно, т.к. имеется биекция открытый текст:шифротекст. А тут? Тот же принцип или я чего то не понимаю? В некоторых текстах встречал значение permutation и как перестановка и как подстановка? В общем, в голове каша.
И еще, где то рядом видимо со всеми этими штуками лежит утверждение о том, что перестановки не содержат коллизий по умолчанию. Это типа гарант того, что sponge с хорошим f неотличим от RO. Эту мысль я тоже не до конца понял, но думаю она прояснится когда решится вопрос с перестановками.


 
Комментарии
— unknown (15/01/2013 21:09)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
В российской терминологии, кажется, группы перестановок называют группами подстановок. Поэтому и каша.
Перестановка по-английски, действительно, permutation. Например, в шифре DES есть P-блок для побитововй перестановки. А AES — это т.н. SP-сеть, в которой есть слой перестановки и слой подстановки.

Подстановка — это substitution. А теперь, внимание S-блок, размером 4x4 бита:

0 1 2 3 4 5 6 7 8 9 A B C D E F
F 2 0 B 7 4 1 A C 3 8 6 E 9 D 5

S-блок. Substitutuion, подстановка. А сдругой стороны — перестановка. естественно, если на вход подать одни нули, то на выходе будут в данном случае одни F.

Но блочный шифр — это многораундовая SP-сеть, да ещё с ключевым расписанием. Даже при фиксированном ключе (как в хэш-функциях) на выходе будет рэндом. Если размер входного блока PRP-шифра 128 бит, то можно взять все 2128 вариантов входа от {000 … 0} до {FFF … F}, а на выходе получатся все те же 2128 вариантов, но переставленных в псевдослучайном порядке (вот это и PRP).

У хэш-функции Keccak во встроенной PRP-функции размер больше (1600 бит, если не ошибаюсь). В отличие от функции сжатия в традиционных хэшах (обычно 2→1), в которой можно добиться внутренней коллизии, в PRP коллизия по определению невозможна.

Это не означает какого-то особого превосходства Keccak. Авторы просто элегантно избавились от ряда атак, сильно упростили доказательство стойкости и открыли путь к универсализации своей конструкции.

Сама PRP в губчатой конструкции м.б. неидеальна и также потенциально уязвима к любым видам криптоанализа. Да, в ней самой нельзя получить коллизию, но можно получить цикл, когда на при определённых данных, поглощаемых в фазе абсорбции между f-функциями на входе (кроме нулей в первом раунде), на выходе можно будет также получить нули или какие-то предопределённые значения, приводящие к появлению цикла. Цикл в таком случае будет также фатален как и внутренняя коллизия в традиционных функциях.

На выходе снимается только часть внутреннего состояния PRP. Если PRP идеальна, то эта часть на выходе будет давать коллизии с такой же вероятностью, как и идеальный случайный оракул (до предела размера внутреннего состояния, которое ограничено у PRP-функции Keccak и бесконечно велико у RO) — хэши вообще без коллизий не бывают, иначе это — не хэши. Итак, Sponge-конструкция доказуемо безопасна, если безопасна (идеальна) лежащая в её основе PRP. А может оказаться, что она и не идеальна, тем более её сильно оптимизировали и здорово на ней экономили.
— Scratch (16/01/2013 07:11)   <#>
Спасибо, стало немного яснее ) Получается, безключевая PRP однозначно переводит одно множество фиксированной длины в другое множество фиксированной длины, но не факт что однозначно. Или факт? Для блочных то шифров понятно, что иначе работать не будет, не расшифруется. А тут из-за возможных циклов все может быть гораздо хуже, правильно?
— unknown (16/01/2013 09:51, исправлен 16/01/2013 10:02)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Как же м.б. неоднозначно? Это же биекция, обратимое преобразование. От неё просто отрезают кусок на выходе — получается необратимое преобразование, за счёт потери данных внутреннего состояния. И коллизии в отрезанных кусках естественно будут. Главное, чтобы не чаще, чем в идеальном случае. Но само внутренее состояние в полном виде никуда не девается и идёт на обработку последующих данных (смещивающихся с его частью на входе и выводящихся от его части на выходе).



Я даже предлагал авторам сделать из внутренней PRP-Keccak блочный шифр, приделав ключевое расписание из самого Sponge-Keccak, запущенного параллельного. Они ответили, что разумеется работать будет, т.к. PRP по определению обратима. Только они её проектировали так, что в одну сторону она работает быстро, а в обратную (расшифрование) — медленно, неоптимально и возможен класс атак на прогоне данных взад-вперёд, т.е. это просто неоптимальная для чисто блочного шифра конструкция.



И в обычных шифрах могут быть легче плучены циклы, если бы их использовали для хэширование в Sponge-режиме (или каком-либо ином), где противник может видеть массу промежуточных данных на всех раундах и подгонять вводимый на хэширование текст. При обычном хэшировании у противника же нет секретов — он всё видит.


Кое-что (поверхностно) разбиралось здесь.

— Scratch (16/01/2013 10:12)   <#>
Это же биекция, обратимое преобразование

Это я понял, просто я не нашел где указано, что функция f обратима. Это меня и смутило. С Фейстелем я разобрался, там просто делается a ^ b ^ c = d, а потом d ^ с ^ b = a, вот и обратимость. А тут она для меня не очивидна, в т.ч. из за путаницы с подстановками-перестановками (
— Scratch (16/01/2013 17:39)   <#>
Рискну и спрошу еще раз. Потому что прочитал опять все доки и не нашел нужной инфы.
То, что функция f обратима, где то доказывается? Потому что по ее этапам я этого, к сожалению, не вижу. И обратной ей функции в доках тоже не видел. Или только предполагается, что она обратима, потому что она визуально хорошо всё перемешивает, лавинный эффект там то сё (в курсе, что куски, из которой она состоит, изучены вроде бы хорошо, но это все равно ничего не объясняет)?
— unknown (16/01/2013 17:54)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Потому что она делалась по той же стратегии, как в AES, в несколько слоёв: сложение с константами, нелинейная операция (алгебраический S-блок), перестановка, линейное смешивание на умножении полиномов. Каждый слой обратим. Поэтому и сама функция обратима. Фейстель уже не в моде. Используется Wide Trail Strategy.

Сейчас большинство криптоалгоритмов проектируются на функциях, которые обратимы сами по себе, безо всяких сетей Файстеля. Сконструировать их несложно.


Обратимость видна часто невооружённым глазом. Это такая самоочевидная тривиальщина, что доказательство м.б. даже опущено в работе. Или авторы от балды написали, что у них ключевая функция — PRP? Там же куда более сложные вещи доказываются — уровень алгебраической сложности и пр.
— Scratch (16/01/2013 18:48)   <#>
Всё, тогда отваливаю ) Пошел писать функцию, обратную f
— Гость (17/01/2013 01:22)   <#>
Ну вот хоть один вопрос в топике "криптография" по существу, а то уже задолбали своими студенческими задачками.
— Scratch (17/01/2013 06:56)   <#>
Кстати, писать ничего не надо, все инверсные функции есть в пакете KeccakTools!
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3