Вместо этого в базе хранятся дайджесты паролей. Тогда система, чтобы проверить подлинность пользователя, хеширует представленный им пароль и сравнивает результат со значением, хранящимся в базе дайджестов паролей. И это, конечно, далеко не все. Благодаря свойствам рандомизации, хеш-функции могут использоваться в качестве генераторов псевдослучайных чисел, а благодаря блочной структуре, они иногда выступают в качестве основы алгоритмов шифрования - блочных и поточных. Бывает и наоборот, когда блочный шифр становится основой криптопреобразования, применяемого в циклах хеш- функции.
Короче говоря, хеш-функции стали чуть ли не важнейшим элементом современной криптографии. Они обеспечивают безопасность в повсеместно применяемом протоколе защищенных веб-соединений SSL. Они помогают организовывать эффективное управление ключами в защищенной электронной почте и в программах шифрования телефонии, начиная от самых известных, вроде PGP или Skype, и заканчивая всеми остальными. Если говорить о сетевой безопасности, то хеш-функции используются и в виртуальных частных сетях, и в защите системы доменных имен DNS, и для подтверждения того, что автоматические обновления программ являются подлинными. Внутри операционной системы хеш-функции так или иначе задействованы практически во всех структурах, обеспечивающих безопасность. Иными словами, каждый раз, когда в компьютере или сети происходит что-то, подразумевающее защиту информации, рано или поздно в действие непременно вступает хеш-функция.
Наиболее широко используемые в мире алгоритмы криптографического хеширования - это SHA-1, MD5 и RIPEMD-160 (если же говорить о России, то еще и ГОСТ Р34.11-94, она же 'центробанковская' хеш- функция).
Все самые популярные криптоалгоритмы хеширования построены на единой основе - семействе функций MD (от Message Digest - 'дайджест сообщения'), разработанных известным американским ученым Рональдом Райвестом. Поначалу самым удачным считался алгоритм MD4, а когда в нем нашли слабости, Райвест придумал усиленную модификацию под названием MD5.
На основе идей 128-битного MD4 математики Агентства национальной безопасности США создали более стойкий вариант - 160-битный 'Безопасный алгоритм хеширования', или SHA. Но если Райвест подробно разъяснял в своих описаниях, чему служит и каким образом повышает безопасность каждый из этапов его алгоритма, то АНБ в присущей спецслужбе манере никаких комментариев не дало. Более того, через некоторое время после публикации SHA был отозван и переиздан в модифицированной, очевидно более сильной версии SHA-1, ставшей федеральным стандартом (прежняя получила название SHA-0).
В Европейском сообществе, в свою очередь, разработали собственный 128-битный стандарт криптографического хеширования, получивший название RIPE-MD и также развивающий идеи Райвеста. По мере осуществления успешных криптоаналитических атак против хеш-функций стали появляться усиленные версии этого алгоритма с увеличенной длиной хеша - RIPEMD-160, -256 и -320. Для SHA, соответственно, в АНБ создали укрепленное семейство SHA-2 с длинами хеша 224, 256, 384 и 512 бит. Российская хеш-функция, построенная на основе отечественных крипторазработок, имеет длину 256 бит.
Сложилось так, что хеш-функция, которую с наибольшей вероятностью использует всякий среднестатистический компьютер, - это SHA-1. Эта функция сконструирована безымянными засекреченными умельцами в недрах Агентства национальной безопасности США и с подачи НИСТ запущена во всеобщее употребление в середине 1990-х годов.
За последние годы качество найденных и опубликованных атак в отношении хеш-функций вообще и SHA-1 в частности заметно повысилось, что связано с общим прогрессом в теории и методах криптоанализа. Пока, правда, даже самая лучшая из атак требует вычислительных ресурсов на грани возможного, да и в этом виде бессильна перед полным набором циклов SHA-1. Однако, как гласит поговорка, бытующая среди сотрудников АНБ: 'Атаки всегда становятся только лучше и никогда не становятся хуже'. Иначе говоря, для алгоритма SHA-1 начали отмечаться признаки слабости, и все понимают, что пришло время от него отказываться.
Переход к альтернативным хеш-функциям происходит в целом спокойно, без паники, ибо более стойкие альтернативы на ближайшие годы вполне определены. Наиболее очевидная - это родственный алгоритм SHA-256 с длиной хеша 256 бит. Но все алгоритмы семейства SHA построены на конкретном классе хеш-функций MD, появившихся в начале 1990-х годов. За прошедшие с тех пор полтора десятка лет криптографы успели узнать о хеш-функциях очень много нового и, несомненно, сейчас могут сконструировать нечто значительно более мощное.
Почему, собственно, новый стандарт ждут от НИСТ США? Главным образом потому, что эта организация обладает опытом и репутацией, которые устраивают все мировое криптографическое сообщество. Десять лет назад очень похожая ситуация сложилась с алгоритмом шифрования. Все понимали, что алгоритм DES, или Data Encryption Standard, нуждается в замене, но вот на что его менять - было совсем неочевидно. И тогда руководство НИСТ решилось на беспрецедентный шаг - организовать всемирный открытый конкурс на новый криптоалгоритм. Были отобраны пятнадцать предложений из десяти стран (Россию к конкурсу тогда не допустили, прикрывшись формальными придирками к оформлению заявки). И после четырех лет публичных обсуждений и коллективного криптоанализа НИСТ США выбрал бельгийский алгоритм Rijndael, который стал AES, 'продвинутым стандартом шифрования' на грядущие десятилетия.
Без преувеличения этот конкурс почти на пятилетку стал главным событием и развлечением для всего мирового сообщества криптографов. Широко известный и часто цитируемый гуру Брюс Шнайер, входивший в одну из команд-перетенденток, остроумно уподобил это соревнование автомобильному дерби на выживание. Лучшие умы криптографической науки вывели на трассу свои алгоритмы как автомобили, а затем стали что есть силы крушить соперников - поскольку к финишу должен прийти только один. Конечно, растянувшиеся на несколько лет дискуссии выглядели куда более пристойно и цивилизованно, нежели мясорубка на трассах автодерби, однако суть процесса была весьма похожа. Кроме того, конкурс стимулировал очень мощный поток новых исследований в сферах криптоанализа и конструирования блочных шифров, отчего выиграло все научное сообщество.
Огромная и плодотворная работа, проведенная НИСТ при организации AES-конкурса, сделала практически очевидной траекторию, по которой следует двигать разработку и выбор новой хеш-функции. Два семинара по хеш-функциям, организованные Институтом в 2005 и 2006 году, только подтвердили, что новый конкурс необходим. И когда он наконец был объявлен, все криптографы восприняли это как должное.
Предложения по новым хеш-функциям будут приниматься до осени 2008-го, а выбор должен быть сделан к концу 2011 года. Более длительный, чем в случае AES, срок отбора кандидатов представляется разумным и обоснованным. Сейчас конструирование безопасной хеш-функции - задача более сложная, чем разработка безопасного алгоритма шифрования. Правда, пока никто не может внятно ответить, почему это так - из-за более сложной математической природы хеш-фунций или же из-за недостаточного понимания предмета.
Вполне возможно, что в ходе начавшегося конкурса прояснится и этот вопрос.
В документе НИСТ США, объявляющем о начале конкурса на новый стандарт хеш-функции, приведено 'Предварительное расписание' мероприятий, составляющих процесс разработки и выбора. В самом кратком виде намеченная программа выглядит так.
Год первый (2007). Опубликовать для ознакомления и комментариев общественности базовые требования к кандидатам, правила оформления заявок и общие критерии отбора. В третьем квартале завершить этот этап, сформулировать окончательные требования и критерии для кандидатов, к концу года объявить о начале приема заявок.