Новый российский стандарт вычисления хэш-функции ГОСТ Р 34.11-2012 «Стрибог»

0

slav052Вслед за 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

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *