Еще одно важное приложение верификация правильности пароля доступа. Пароли обычно не хранят в открытом виде чтобы они не становились легкой добычей похитителей и злоумышленников. Вместо этого в базе хранятся дайджесты паролей. Тогда система, чтобы проверить подлинность пользователя, хеширует представленный им пароль и сравнивает результат со значением, хранящимся в базе дайджестов паролей. И это, конечно, далеко не все. Благодаря свойствам рандомизации, хеш-функции могут использоваться в качестве генераторов псевдослучайных чисел, а благодаря блочной структуре, они иногда выступают в качестве основы алгоритмов шифрования блочных и поточных. Бывает и наоборот, когда блочный шифр становится основой криптопреобразования, применяемого в циклах хеш-функции.
Короче говоря, хеш-функции стали чуть ли не важнейшим элементом современной криптографии. Они обеспечивают безопасность в повсеместно применяемом протоколе защищенных веб-соединений SSL. Они помогают организовывать эффективное управление ключами в защищенной электронной почте и в программах шифрования телефонии, начиная от самых известных, вроде PGP или Skype, и заканчивая всеми остальными. Если говорить о сетевой безопасности, то хеш-функции используются и в виртуальных частных сетях, и в защите системы
доменных имен DNS, и для подтверждения того, что автоматические обновления программ являются подлинными. Внутри операционной системы хеш-функции так или иначе задействованы практически во всех структурах, обеспечивающих безопасность. Иными словами, каждый раз, когда в компьютере или сети происходит что-то, подразумевающее защиту информации, рано или поздно в действие непременно вступает хеш-функция.
Все самые популярные криптоалгоритмы хеширования построены на единой основе семействе функций 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 в частности заметно повысилось, что связано с общим прогрессом в теории и методах криптоанализа. Пока, правда, даже самая лучшая из атак требует вычислительных ресурсов на грани возможного, да и в этом виде бессильна перед полным набором циклов SHA-1. Однако, как гласит поговорка, бытующая среди сотрудников АНБ: «Атаки всегда становятся только лучше и никогда не становятся хуже». Иначе говоря, для алгоритма SHA-1 начали отмечаться признаки слабости, и все понимают, что пришло время от него отказываться.
Переход к альтернативным хеш-функциям происходит в целом спокойно, без паники, ибо более стойкие альтернативы на ближайшие годы вполне определены. Наиболее очевидная это родственный алгоритм SHA-256 с длиной хеша 256 бит. Но все алгоритмы семейства SHA построены на конкретном классе хеш-функций MD, появившихся в начале 1990-х годов. За прошедшие с тех пор полтора десятка лет криптографы успели узнать о хеш-функциях очень много нового и, несомненно, сейчас могут сконструировать нечто значительно более мощное.
Почему, собственно, новый стандарт ждут от НИСТ США? Главным образом потому, что эта организация обладает опытом и репутацией, которые устраивают все мировое криптографическое сообщество. Десять лет назад очень похожая ситуация сложилась с алгоритмом шифрования. Все понимали, что алгоритм DES, или Data Encryption Standard, нуждается в замене, но вот на что его менять было совсем неочевидно. И тогда руководство НИСТ решилось на беспрецедентный шаг организовать всемирный открытый конкурс на новый криптоалгоритм. Были отобраны пятнадцать предложений из десяти стран (Россию к конкурсу тогда не допустили, прикрывшись формальными придирками к оформлению заявки). И после четырех лет публичных обсуждений и коллективного криптоанализа НИСТ США выбрал бельгийский алгоритм Rijndael, который стал AES, «продвинутым стандартом шифрования» на грядущие десятилетия.