Хеш функции на основе блочных шифров
В хеш конструкциях на основе блочных шифров, кроме собственно обработки данных, часто применяется входное и выходное преобразование. Например, в SKEIN есть Configuration Block и Output Block. Какова роль этих преобразований?
Чтобы достичь большего критерия неразличимости по Мауреру, пофиксив некоторые возможности манипулировать паддингом на входе и атакам удлинения сообщения на выходе. В качестве примера удобно рассматривать обобщение Sponge-конструкций до конструкций Parazoa. См. работу[link1] и слайды[link2].
Cм. описание Skein 1.1:
8.
Проще говоря, входное преобразование делает хорошее псевдослучайное IV для вычисления хеша, а выходное преобразование избавляет от нежелательных свойств примененной схемы хеширования. И то, и другое улучшает рандомность, но не повышает стойкость. Т.е. наличие этих преобразований не является обязательным.
http://www.zas-comm.ru
Неразличимость от рэндома (при ограничениях, заданных определённой моделью) — самый надёжный и универсальный критерий стойкости. Иначе придёться каждый раз уточнять, какая именно подразумевается разновидность стойкости.
В вышеприведенном случае речь идет о косметических хаках, которые не является ни необходимыми, ни достаточными для конкретной хеш процедуры.
//
Однажды Вы упомянули, что делали свой IDEA-подобный шифр. Опубликуйте пожалуйста. Было бы интересно посмотреть, какую выбрали конструкцию, чем руководствовались, как решили key schedule, число раундов и некоторые другие моменты.
Откуда получился различитель, как его исправить.