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

Стандарт ISO/IEC 10118-2 определяет алгоритм MDC-2, как функцию хеширования двойной длины. MDC-2 параллельно вычисляет два блочных шифрования на каждом шаге итерации и, таким образом, скорость хеширования равна . Стандарт ориентирован на использование DES алгоритма. Однако общая конструкция может быть использована и для построения функции хеширования с другими блочными шифрами.

Оценки стойкости функций хеширования основанных на блочных шифрах (для DES алгоритма) представлены в таблице 2 [11].

Таблица 2

Верхние границы по стойкости функций хеширования.

Функция хеширования

n

m

Стойкость прообраза

Стойкость к коллизии

Замечания

Матис-Мейер-Озисa

MDC-2(DES)b

MDC-4(DES)

Меркли(DES)

MD5

RIPEMD-128

SHA-1,RIPEMD-160

 n

64

64

106

512

512

512

512

n

128

128

128

128

128

128

160

2n

2×282

2109

2112

2128

2128

2128

2160

2n/2

2×254

4×254

256

220

264

264

280

длина ключа = n

скорость 0,5

скорость 0,25

скорость 0,276

Такая же стойкость предполагается для функций хеширования Дэвиса-Мейера и Миягучи-Принеля.

Схемы Матиаса-Мейера-Озиса и MDC-2 включены в ISO/IEC 10118-2 [1] и стандарт для функции хеширования не конкретизирует применяемый блочный шифр. Стойкость таких схем может быть увеличена путем использования шифра с большей длинной ключа и длиной блока шифра. Скорость хеширования будет определяться затратами на блочное шифрование.

Функции хеширования основанные на модулярной арифметике

Функции хеширования основанные на модулярной арифметике используют для построения итерационных функции сжатия технику модульных вычислений из криптосистем с открытыми ключами. Самый большой недостаток заключается в низкой скорости таких схем (по сравнению с заказными функциями хеширования). Алгоритмы хеширования MASH-1 и MASH-2 разработаны с учетом анализа аналитических атак для модулярных функций хеширования

Заказные функции хеширования

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

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

Основной шаг алгоритма MD4 описывается выражением вида:

.

Здесь  есть регистры, содержащие четыре 32 битных слова цепочечной переменной. Операция  определяет дополнение  по модулю  и  – побитовый циклический сдвиг слова на  позиций влево. Нелинейная функция  определяет побитовые вычисления,  - слово сообщения на  шаге,  константа и  постоянная вращения. Функция  и константа  изменяются на каждом цикле вычислений. MD4 включает три цикла, которые используют мультиплексирование, мажоритарную выборку и функции исключающие ИЛИ. Слова блока сообщения используются в вычислениях на всех шагах цикла.

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