Keccak
Добрый день, хотелось бы узнать про алгоритм Кессак, все что я нахожу слишком расплывчато.
Если вам не сложно приведите пожалуйста логику работы данной Хэш функции.
Т.е. считываем блок размера 256, ксорим получившийся блок с генерируем ключом, после чего делаем то-то и то-то.
комментариев: 9796 документов: 488 редакций: 5664
комментариев: 9796 документов: 488 редакций: 5664
Keccak работает по принципу губки (Sponge).
Бесключевая перестановка f-Keccak, действительно 24 раунда, маскимальным размером 1600 бит (предусмотрено и меньше). На вход сначала поступает нулевой вектор, к нему заксоривается в r входящее сообщение p, дополняется паддингом; что не влезло — заксоривается в часть r к состоянию f-Keccak после 24 раундов; и так для всего сообщения (заксоривается с дополнением часть r, перемежаясь 24 раундами f-Keccak), после чего ещё раз 24-раунда f-Keccak. Это фаза поглощения губкой.
На выходе выводится z от части размером r; если не хватает, то ещё 24 раунда перестановки f-Keccak и очередной блок z размером r. Это фаза отжатия губки.
Так выглядит основной режим работы губки. Есть масса других, какие-то ещё продолжают изобретать и исследовать.
2) входящее сообщение р ксорим с r частью вектора
Тут же вопрос каков будет размер сообщения p которое мы ксорим.
И как определить размер r.
3) Дальше происходит 24 раунда f-Keccak.
Что конкретно из себя эта функция представляет.
Т.е на вход этой функции подается вектор после нашего (p xor r) соединенный с нулевым вектором размера с.
И что происходит с этим вектором дальше?
комментариев: 9796 документов: 488 редакций: 5664
1) Хорошо, выбрали именно такой битрейт внутреннего состояния b = r + c = 1600.
2) Сообщение ксорится блоками, размером r, или дополненными до r с округлением до байта. В случае, если всегда брать b = 1600, а c — размер выхода (т.е., 256, 512 или 1024; всё, что больше 1024 считается как 1024), то r = b – c.
3) Функция представляет собой бесключевую перестановку. Конкретно смотрите работу, код, даже фрагмент псевдокода в новости. С вектором дальше ничего не происходит, он ушёл во внутреннее состояние. Если нужно ещё добавить блоки на вход губки в фазе поглощения, то они ксорятся не с начальным вектором, а с результатом выхода предыдущей 24-раундовой перестановки.
комментариев: 11558 документов: 1036 редакций: 4118
комментариев: 9796 документов: 488 редакций: 5664
Во внутренней функции для двумерных объектов есть plane, slice и sheet по терминологии авторов (naming conventions for parts of the Keccak-f state). В официальной Keccak specifications слово «матрица» нигде не встречается.
Что из этого кто-то где-то мог назвать матрицей — неизвестно.Есть ещё Keccak implementation overview — там описаны матрицы, которые вас интересуют. Они как раз формируются из стандартных наименований частей Keccak уже для различных особенностей реализации.