Новый российский стандарт вычисления хэш-функции ГОСТ Р 34.11-2012 «Стрибог»
Вслед за NIST, утвердившим в прошлом году SHA-3, наш отечественный Росстандарт с 1 января 2013 года ввел в действие новый стандарт хэш-функций ГОСТ Р 34.11-2012 (проектное название «Стрибог») взамен устаревшего в некоторых отношениях ГОСТ Р 34.11-94.
В настоящий момент на официальный сайт федерального агентства текст стандарта ещё не выложен: http://protect.gost.ru/document.aspx?control=7&id=180209 Думаю, вскоре это будет исправлено, но пока с документом можно ознакомиться в ряде источников, например на форуме ТК-26.
Надо сказать, что необходимость в новом стандарте действительно есть. И связана она в первую очередь не с проблемами криптостойкости (был ряд публикаций с обзорами потенциально слабых мест российских алгоритмов, но ничего серьёзного там до сих пор не найдено), а скорее удобства применения.
Перечислю, имеющиеся, на мой взгляд, недостатки нашего старого стандарта:
- в отличие от SHA-2 и SHA-3, ГОСТ 34.11-94 не предусматривал возможности вариации длины выходного хэша (этой гибкости не хватает, особенно в случае встроенных реализаций с ограниченными ресурсами, или наличия каких-то дополнительных требований в области криптографии);
- у нашего старого хэша были далеко не самые быстрые программные реализации;
- неопределённость c S-блоками («тестовый» набор S-блоков, взятых ЦБ РФ, набор S-блоков CryptoPro и так далее), а также разночтения с порядком выдачи итогового значения.
В новом «Стрибоге» размер блоков и внутреннего состояния сообщения увеличен с 256 до 512 бит, он теперь состоит из двух хэш-функций: с длинами результирующего значения в 256 и 512 бит. В стандарте чётко заданы значения «итерационных констант». В отличие от старого ГОСТа 94 года, структура алгоритма ГОСТ Р 34.11-2012 позволяет проще разделить его вычисление на несколько потоков.
Более того, по результатам исследования проведенного в МИЭМ (ВШЭ), реализация «Стрибога» на центральном процессоре (ЦП) оказывается быстрее прежней функции хэширования за счёт использования только сложений по модулю 2 и инструкций пересылки данных. Старый ГОСТ, в свою очередь, содержит множество инструкций перемешивания, которые не лучшим образом отображаются на набор инструкций ЦП, в частности, SSE. Таблицы подстановки обоих алгоритмов умещаются в кэш процессора первого уровня. На графическом процессоре ГОСТ Р 34.11-2012 имеет превосходство над ГОСТ 34.11-94, поскольку последний использует только 4 потока на один поток данных против 16 для Стрибога.
Результаты тестов производительности приведены по первой ссылке ниже. Имея в два раза большее внутреннее состояние, новый алгоритм продемонстрировал на некоторых реализациях примерно в полтора раза более высокую производительность чем старый. Похоже, ГОСТ Р 34.11-2012 оправдал алгоритм своё проектное название, (славянский бог Стрибог — повелитель ветров).
Конечно, ещё прошло слишком мало времени, скорей всего будут предложены новые реализации, будут проведены новые измерения и даны новые оценки, как производительности, так и стойкости нашего нового криптографического алгоритма.
Источники:
http://protect.gost.ru/document.aspx?control=7&id=180209
http://paco2012.ipu.ru/procdngs/F108.pdf