Стандарты Хеш-функций. Основные определения и требования безопасности к функциям хеширования, страница 13

SHA-2 [13] включен в новый NIST стандарт функции хеширования (FIPS 180-2), вырабатывает значения хешей 256, 384 или 512 бит. Главная причина появления нового стандарта состоит в том, чтобы обеспечить уровень защиты сопоставимым уровню защиты нового NIST стандарта блочного шифра AES (с ключевой длиной 128, 192 или 256 бит, соответственно).

Алгоритм SHA-2/256.

SHA-2/256 функция хеширования оперирует с блоками по 512 бита, разделенными на 32 битные слова и вырабатывает хеш код в 256 бит. Алгоритм определен как итерационная функции сжатия.

Вычисление начинает с начальными значениями

       .

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

На заключительном шаге формируется значение хеша.

Функция сжатия SHA-2/256.

Пусть  есть блок сообщения в 512 бит, и  – 32 битные слова. SHA-2/256 использует процедуру расширения, которая определена как

,

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

,

.

Операции  и  обозначают сдвиг и циклический сдвиг слова вправо.

Используются следующие функции:

,

,

,

.

Предположим, что начальные значения  заданы.

Функция сжатие вычисляется на шагах  (сложения по ):

,

,

,

,

,

,

,

.

32 –битные константы  являются различными на каждом из 64 шагов функции сжатия. Вычисление функции сжатия завершается как

,

.

Алгоритм SHA-2/512.

Основное отличие между SHA-2/256 и SHA-2/512 состоит в том, что последний алгоритм использует длину слова в 64 бит (вместо 32 бит). Это позволяет вычислить дайджест сообщения, который в два раза длиннее по сравнению с SHA-2/256, без изменения самой структуры алгоритма. Другое различие заключается в числе шагов в функции сжатия, которое увеличено с 64 до 80. Таким образом, функция SHA-2/512 работает на блоках по 1024 бит, разделенных на 64 битовые слова и вычисляет хеш значение длиной в 512 бит. Алгоритм определен как итеративная функции сжатия.

Вычисление начинается с начальных значений

       .

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

Функция сжатия SHA-2/512.

Пусть  есть блок сообщения в 1024 бит, и  – 64 битные слова. SHA-2/512 использует процедуру расширения, которая определена как

,

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

,

.

Операции  и  обозначают сдвиг и циклический сдвиг слова вправо.

Используются следующие функции:

,

,

,

.

Предположим, что начальные значения  заданы.

Функция сжатие вычисляется на шагах  (сложения по ):

,

,

,

,

,

,

.

64 –битные константы  являются различными на каждом из 80 шагов функции сжатия. Вычисление функции сжатия завершается как

,

.

Алгоритм SHA-2/384.

Функция SHA-2/384 определена так же как SHA-2/512 со следующими двумя исключениям.

Вычисление начинается с другими начальными значениями:

       .

Результирующее значение хеша с 384 битами получается путем усечения результата к крайним левым 384 битам.

Анализ безопасности SHA-2.

Требования коллизионной стойкости к алгоритмам SHA-2 являются следующими. При длине хеш кода n бит порядок образования коллизии должен составлять  попыток, а нахождение второго прообраза иметь порядок , где =256, 384,512,для SHA-2/256, SHA-2/384 и SHA-2/512 соответственно. На данный момент не известны атаки, которые опровергали бы эти предположения.

SHA-2 - новый проект, который имеет некоторые подобия SHA-1, но имеются и важные различия в структуре. Для 256 битной версии число шагов в функции сжатия меньше, чем для SHA-1 (64 шага по сравнению с 80). С другой стороны, на каждом шаге функции сжатия обновляются две переменные, когда в SHA-1 только одна переменная. Дифференциальный криптоанализ показал, что существует 4 шаговая характеристика по любым 4 шагам в функции сжатия с вероятностью 1. Вероятность дифференциальных характеристик уменьшается быстрее в SHA-2, чем в SHA-1. Это определяется многократными вращениями в функциях  и . Слайд атака на SHA-1 не распространяется на SHA-2, потому что для SHA-2 каждый шаг функции сжатия использует уникальную аддитивную постоянную. Требуется осторожность в оценке криптостойкости SHA-2, так существующий анализ безопасности является недостаточным.