[In english | На русском]


           ГОСТ Р 34.11-2012: функция хеширования «Стрибог»



   На сайте представлена информация и исходный код для российской
   криптографической функции хеширования ГОСТ Р 34.11-2012, являющейся
   национальным стандартом Российской Федерации. 
   
   Неофициальное название — «Стрибог», в честь славянского божества.

Исходный код

   Реализация, доступная на этом сайте, представлена в виде консольной
   утилиты, способной вычислять ГОСТ Р 34.11-2012 для строк, файлов и
   произвольного потока данных.  Программа выводит результат хеширования
   в шестнадцатеричном формате.  Исходный код программы на языке «Си»
   доступен для просмотра и загрузки с сайта.

   Последняя версия программы: 0.13.

   Информация об использовании и исходный код на языке «Си» доступны на GitHub:
   https://github.com/adegtyarev/streebog/

   Контрольные суммы файла 0.13.tar.gz:

   SHA256:
   12ef38893ac631f83301ca4c0e2ac1455f4c2ebee82b4e7d1effed064137c5a6

   ГОСТ Р 34.11-2012 (256 бит):
   946fa60ed9841010d54f90c7ee299efd2b7ffe9755b9b29130695b0df0e72a85

Общая информация

   1.  Стандарт ГОСТ Р 34.11-2012 был разработан Центром защиты
       информации и специальной связи ФСБ России с участием Открытого
       акционерного общества «Информационные технологии и
       коммуникационные системы» (ОАО «ИнфоТеКС»).

   2.  Стандарт утверждён и введён в действие Приказом Федерального
       агентства по техническому регулированию и метрологии от 7 августа
       2012 года No 216-ст.

   3.  ГОСТ Р 34.11-2012 разработан взамен национальному стандарту на
       функцию хеширования ГОСТ Р 34.11-94.

Область применения

   ГОСТ Р 34.11-2012 определяет алгоритм и процедуру вычисления
   хэш-функции для любой последовательности двоичных символов, которые
   применяются в криптографических методах обработки и защиты
   информации, в том числе для реализации процедур обеспечения
   целостности, аутентичности, электронной цифровой подписи (ЭЦП) при
   передаче, обработке и хранении информации в автоматизированных
   системах.

   Функция хэширования ГОСТ Р 34.11-2012 используется при реализации
   систем электронной цифровой подписи на базе ассиметричного
   криптографического алгоритма по ГОСТ Р 34.10–2012.

Внутреннее устройство

   Семейство хэш-функций Стрибог состоит из двух хэш-функций с длинами
   результирующего значения в 256 и 512 бит, которые отличаются
   начальным внутренним состоянием и его частью, принимаемой за
   результат вычислений. 

   Устройство новой хэш-функции во многом следует старому стандарту.
   Входное сообщение разбивается на блоки фиксированного размера, для
   сообщений размером не кратным длине блока используется дополнение.
   Начальное внутреннее состояние хэш-функции обновляется
   последовательной обработкой блоков сообщения функцией сжатия.
   Параллельно с этим вычисляются число обработанных бит и контрольная
   сумма блоков.  После всех блоков сообщения функция сжатия
   обрабатывает блок с общей длиной сообщения и блок с контрольной
   суммой для завершения вычисления значения хэш-функции.  Размер блоков
   сообщения и внутреннего состояния хэш-функции составляет 512 бит. 

   Основное отличие хэш-функции Стрибог от своего предшественника —
   функция сжатия.

Функция сжатия

   Основная операция функции сжатия обозначается как LPS и состоит из
   трёх преобразований: подстановки на байтах, транспонирования матрицы
   байт и умножения 64-битных векторов на матрицу 64 × 64 в GF(2):

   1.  S — нелинейная биекция.  512 бит аргумента рассматриваются как
       массив из шестидесяти четырёх байт, каждый из которых заменяется
       по заданной стандартом таблице подстановки;

   2.  P — переупорядочивание байт.  Байты аргумента меняются местами по
       определённому в стандарте порядку;

   3.  L — линейное преобразование.  Аргумент рассматривается как 8
       64-битных векторов, каждый из которых заменяется результатом
       умножения на определённую стандартом матрицу 64 × 64 над GF(2).

   Переупорядочивание байт P, определённое стандартом, является
   операций транспонирования матрицы байт размером 8 × 8.

   В функции сжатия используются только преобразование LPS и побитовое
   исключающее ИЛИ над 512-битными блоками.  Вместе со сложением по
   модулю 2^512 они составляют полный набор операций, использующихся в
   функции хеширования ГОСТ Р 34.11-2012.

   Значение функции сжатия на каждом шаге зависит от предыдущего шага.
   Поэтому невозможно обрабатывать блоки одного потока данных
   параллельно.  Это свойство не является особенностью Стрибога, а
   присуще многим хэш-функциям.

Используемые материалы

   Размещённая на сайте информация взята из публичных источников сети
   интернет.

   * П. А. Лебедев: СРАВНЕНИЕ СТАРОГО И НОВОГО СТАНДАРТОВ РФ НА
     КРИПТОГРАФИЧЕСКУЮ ХЭШ-ФУНКЦИЮ НА ЦП И ГРАФИЧЕСКИХ ПРОЦЕССОРАХ NVIDIA
     Московский институт электроники и математики Национального
     исследовательского университета «Высшая школа экономики», 2012 год.

   * RFC6986: GOST R 34.11-2012: Hash Function