ГОСТ (хеш-функция) - GOST (hash function)

ГОСТ Р 34.11-94
Общий
ДизайнеровФАПСИ и ВНИИстандарт (СССР )
Впервые опубликовано1994-05-23 (рассекречено)
Происходит отБлочный шифр ГОСТ
ПреемникиСтрибог
СертификацияГОСТ ГОСТ
Деталь
Размеры дайджеста256 бит
Раундов32
Лучшая публика криптоанализ
Атака 2008 года нарушает хеш-функцию полного цикла. В статье представлена столкновение через 2105 время и атака на прообраз через 2192 время.[1]

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

Эту функцию не следует путать с другим Стрибог хэш-функция, которая определена в новой редакции стандарта ГОСТ Р 34.11-2012.[2]

Хеш-функция ГОСТ основана на Блочный шифр ГОСТ.

Алгоритм

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

Основные обозначения

В описании алгоритма используются следующие обозначения:

  • - j-битовый блок, заполненный нулями.
  • - длина блока M в битах по модулю 2256.
  • - соединение двух блоков.
  • - арифметическая сумма двух блоков по модулю 2256
  • - логический xor двух блоков

Далее мы считаем, что бит младшего разряда расположен слева от блока, а бит старшего разряда - справа.

Описание

Входное сообщение разбивается на 256-битные блоки .В случае, если последний блок содержит менее 256 бит, слева к нему добавляются нулевые биты для достижения желаемой длины.

Каждый блок обрабатывается пошаговой хеш-функцией ,куда , , представляют собой 256-битные блоки.

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

В значение может быть выбрано произвольно и обычно равно .

После рассчитывается, окончательное значение хеш-функции получается следующим образом

  • , где L - длина сообщения M в битах по модулю
  • , где K - 256-битная контрольная сумма M:

В - желаемое значение хэш-функции сообщения M.

ГОСТ-хэш-расчет.gif

Итак, алгоритм работает следующим образом.

  1. Инициализация:
    1. - Начальное 256-битное значение хеш-функции, определяемое пользователем.
    2. - Контрольная сумма
    3. - Длина сообщения
  2. Функция сжатия внутренних итераций: для i = 1… n - 1 выполните следующие действия (пока ):
    1. - применить пошаговую хеш-функцию
    2. - пересчитать длину сообщения
    3. - рассчитать контрольную сумму
  3. Функция сжатия последней итерации:
    1. - вычислить полную длину сообщения в битах
    2. - дополнить последнее сообщение нулями
    3. - обновить контрольную сумму
    4. - обработать последний блок сообщения
    5. - MD - усилить за счет хеширования длины сообщения
    6. - контрольная сумма хеша
  4. Выходное значение .

Пошаговая хеш-функция

Пошаговая хеш-функция отображает два 256-битных блока в один: Состоит из трех частей:

GOST-step-hash-function.gif
  • Генерация ключей
  • Преобразование шифрования используя ключи
  • Преобразование в случайном порядке

Генерация ключей

В алгоритме генерации ключей используются:

  • Два преобразования 256-битных блоков:
    • Трансформация , куда 64-битные подблоки Y.
    • Трансформация , куда , и 8-битные подблоки Y.
  • Три константы:
    • C2 = 0
    • C3 = 0xff00ffff000000ffff0000ff00ffff0000ff00ff00ff00ffff00ff00ff00ff00
    • C4 = 0

Алгоритм:

  1. За j = 2,3,4 выполните следующие действия:

Преобразование шифрования

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

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

Преобразование в случайном порядке

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

Сначала мы определяем ψ-функцию, выполняя LFSR на 256-битном блоке: , куда являются 16-битными подблоками Y.

ГОСТ-пси-функция.gif

Преобразование в случайном порядке , куда обозначает i-ю степень функция.

ГОСТ-Р-34.11-94-shuffle-transformation.gif

Начальные значения

Для ГОСТ Р 34.11 94 обычно используются два набора начальных параметров. Начальный вектор для обоих наборов равен

= 0x00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000.

Хотя сам стандарт ГОСТ Р 34.11 94 не определяет начальное значение алгоритма. и S-коробка преобразования шифрования , но использует следующие «параметры теста» в разделах примеров.[3]

S-бокс "Параметры теста"

RFC 5831 указывает только эти параметры, но RFC 4357 называет их «тестовыми параметрами» и не рекомендует использовать их в производственных приложениях.

Номер S-боксаЦенить
14109213801461111271553
21411412613151023810759
35811310342141512760911
47131010891514461211253
56127151513841091403112
64111007211336859121514
71311413155901014768212
81151305710492314611812

КриптоПро S-бокс

КриптоПро S-коробка исходит из набора параметров «готово к производству», разработанного компанией CryptoPro, он также указан как часть RFC 4357, раздел 11.2.

Номер S-боксаЦенить
11045681371312140921115
25154021311917631214108
37151214941031152610813
44107120152814165131193
57641191221018014151335
67624139150101511814123
71314417051031281562911
81310951141586714130212

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

В 2008 году была опубликована атака, которая нарушает полноценную хеш-функцию ГОСТ. В статье представлена столкновение через 2105 время, и первое и второе атака на прообраз через 2192 время (2п время относится к приблизительному количеству вычислений алгоритма при атаке).[1]

ГОСТ хэш-тестовые векторы

Хеши для "тестовых параметров"

256-битные (32-байтовые) хэши ГОСТ обычно представлены в виде 64-значных шестнадцатеричных чисел. Вот тестовые векторы для хэша ГОСТ с «параметрами теста».

ГОСТ («Быстрая коричневая лиса прыгает через ленивого dog ") = 77b7fa410c9ac58a25f49bca7d0468c9296529315eaca76bd1a10f376d1f4294

Даже небольшое изменение в сообщении с огромной вероятностью приведет к совершенно другому хешу из-за лавинный эффект. Например, изменение d к c:

ГОСТ («Быстрая коричневая лиса прыгает через ленивого cog ") = a3ebc4daaab78b0be131dab5737a7f67e602670d543521319150d2e14eeec445

Два образца по ГОСТ Р 34.11-94:[3]

GOST («Это сообщение, длина = 32 байта») = b1c466d37519b82e8319819ff32595e047a28cb6f83eff1c6916a815a637fffa

Еще тестовые векторы:

ГОСТ ( "") = ce85b99cc46752fffee35cab9a7b0278abb4c2d2055cff685af4912c49490f8dGOST ( "A") = d42c539e367c66e9c88a801f6649349c21871b4344c6a573f849fdce62f314ddGOST ( "дайджеста сообщения") = ad4434ecb18f2c99b60cbe59ec3d2469582b65273f48de72db2fde16a4889a4dGOST (128 символов 'U') = 53a3a3ed25180cef0c1d85a074273e551c25660a87062a52d926a9e8fe5733a4GOST (1000000 символов 'а') = 5c00ccc2734cdd3332d3d4749576e3c1a7dbaf0e7ea74e9fa602413c90a129fa

Хеши для параметров КриптоПро

Алгоритм ГОСТ с КриптоПро S-box генерирует другой набор хеш-значений.

= 981e5f3ca30c841487830f84fb433e13ac1101569b9c13584ac483234cd656c0

ГОСТ ( "а") = e74c52dd282183bf37af0079c9f78055715a103f17e3133ceff1aacf2f403011GOST ( "а") = b285056dbf18d7392d7677369524dd14747459ed8143997e163b2986f92fd42cGOST ( "дайджест сообщение") = bc6041dd2aa401ebfa6e9886734174febdb4729aa972d60f549ac39b29721ba0GOST ( "быстрая коричневая лиса прыгает через ленивую собаку") = 9004294a361a508c586fe53d1f1b02746765e71b765472786e4770d565830a76GOST ( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 73b70a39497de53a6e08c67b6d4db853540f03e9389299d9b0156ef7e85d0f61GOST ( "12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 6bc7b38989b28cf93ae8842bf9d752905910a7528a61e5bce0782de43e610c90GOST ( "Это сообщение, длина = 32 байта") = 2cefc2f7b7bdc514e18ea57fa74ff357e7fa17d652c75f69cb1be7893ede48ebGOST ( "Предположим, что исходное сообщение имеет длину 50 байт =") = c3730c5cbccacf915ac292676f21e8bd4ef75331d9405e5f1a61dc3130a65011GOST (128 "U") = 1c4ac7614691bbf427fa2316216be8f10d92edfd37cd1027514c1008f649c4e8GOST (1000000 от "а") = 869 3287aa62f9478f7cb312ec0866b6c4e4a0f11160441e8f4ffcd2715dd554f

Смотрите также

Рекомендации

  1. ^ а б Мендель, Флориан; Прамсталлер, Норберт; Рехбергер, Кристиан; Контакт, Марчин; Шмидт, Януш (2008). «Криптоанализ хеш-функции ГОСТ». В Вагнер, Давид (ред.). Достижения в криптологии - CRYPTO 2008. Конспект лекций по информатике. 5157. Германия: Springer Berlin Heidelberg. С. 162–178. Дои:10.1007/978-3-540-85174-5_10. ISBN  978-3-540-85173-8.
  2. ^ ГОСТ Р 34.11-2012 - Хеш-функция Стрибога.
  3. ^ а б «Стандарт ГОСТ Р 34.11-94. Информационные технологии. Криптографическая защита данных. Функция хеширования. Дополнение А.» 1994. Цитировать журнал требует | журнал = (помощь)

дальнейшее чтение

внешняя ссылка