Журнал «Компьютерра» 2007 № 09 (677) 06.03.2007 | страница 43



Нельзя сказать, что это было очевидное и назревшее решение. Проблема в том, что в мировой криптографической науке раздел о хеш-функциях развит гораздо хуже других - таких, скажем, как разделы о блочных шифрах, поточных шифрах или генерации псевдослучайных последовательностей чисел. При объявлении конкурса на AES организаторы четко представляли себе, что именно хотели бы получить в итоге и каковы должны быть критерии отбора для определения наилучшего кандидата среди всех блочных шифров. В случае хеш-функций того же самого сказать нельзя, ибо теория и общее понимание предмета пока оставляют желать лучшего. Но как показали семинары в НИСТ и обратная связь от криптографического сообщества в целом, целесообразно начинать движение к новому стандарту уже сейчас, а не дожидаться, когда точные и строгие критерии выбора сформируются естественным образом.

Что определилось вполне естественным путем, так это время проведения конкурса. По существующим в США правилам, ближайшая оценка состояния стандарта FIPS 180-2 (Secure Hash Standard) запланирована на текущий год, а следующая намечена на 2012-й. Поскольку с применяемым в настоящее время хеш-стандартом ситуация уже более или менее ясна, то сочтено разумным за грядущую пятилетку определиться с оптимальным преемником. Чтобы к 2012 году подойти с уже зрелым кандидатом на роль нового стандарта.


Проблемы с формализацией

На сегодняшний день в криптологии не существует строгого формального определения, которое бы охватывало все свойства, необходимые и достаточные для того, чтобы хеш-функция именовалась «криптографической». Но есть несколько свойств, которые для этого класса функций предполагаются обязательными:

Стойкость к отысканию прообраза: по дайджесту h должно быть сложным отыскание такого сообщения-прообраза m, для которого h = hash(m).

Стойкость к отысканию второго прообраза: по входному сообщению m1 должно быть сложным отыскание второго входа m2 (не равного m1), такого, что hash(m1) = hash(m2).

Стойкость к коллизиям: должно быть сложным отыскание двух разных сообщений m1 и m2 таких, что hash(m1) = hash(m2).

Общий набор требований к криптографическим хеш-функциям столь специфичен, что - как признают математики - идеальная хеш-функция должна быть максимально «скучной», то есть не иметь никаких интересных свойств. В идеале она должна выглядеть как чисто случайная функция - подаешь что угодно на вход, а на выходе получаешь случайное число фиксированной длины. С тем лишь существенным отличием, что в действительности выходной хеш - далеко не случайное, а строго детерминированное значение, вычисляемое быстро и эффективно. Как это ни парадоксально звучит, но можно сказать, что даже на интуитивном уровне понятно - подобный критерий для поиска оптимума сильнейшим образом сопротивляется каким-либо формальным определениям.