Введение

Российская криптографическая хеш-функция

Хеш-функция ГОСТ, определенная в стандартах GOST R 34.11-94 и GOST 34.311-95, является 256-битной криптографической хеш-функцией. Первоначально она была определена в российском национальном стандарте GOST R 34.11-94 «Информационные технологии – Криптографическая защита информации – Хеш-функция». Эквивалентный стандарт, используемый другими государствами-членами СНГ, – ГОСТ 34.311-95. Эту функцию не следует путать с другой хеш-функцией Streebog, которая определена в новой редакции стандарта GOST R 34.11-2012. Хеш-функция ГОСТ основана на блочном шифре ГОСТ.

Алгоритм

ГОСТ обрабатывает сообщение переменной длины, преобразуя его в выходные данные фиксированной длины – 256 бит. Входное сообщение разбивается на блоки по 256 бит (восемь 32-битных целых чисел в формате little-endian). Сообщение дополняется нулями до достижения длины в 256 бит. Оставшиеся биты заполняются 256-битной целочисленной арифметической суммой всех ранее обработанных блоков, а затем 256-битным целым числом, представляющим длину исходного сообщения в битах.

Трансформация шифрования

После генерации ключей шифрование выполняется с использованием ГОСТ 28147-89 в режиме простой подстановки по ключам. Обозначим преобразование шифрования как E (шифрование 64-битных данных с использованием 256-битного ключа). Для шифрования исходные данные разбиваются на четыре 64-битных блока: , и каждый из этих блоков шифруется следующим образом:

После этого, результирующие блоки объединяются в один 256-битный блок: .

Криптоанализ

В 2008 году была опубликована атака, взламывающая полную раундовую хеш-функцию ГОСТ. В статье представлена атака на нахождение коллизий за 2¹⁰⁵ операций, а также атаки на нахождение первого и второго прообраза за 2¹⁹² операций (время 2ⁿ обозначает приблизительное количество вычислений алгоритма, выполненных в ходе атаки).