Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
крипта ответы 76-87.docx
Скачиваний:
12
Добавлен:
01.05.2025
Размер:
170.22 Кб
Скачать

78. Семейство алгоритма, вычисляющих хэш – функцииMd (md2, md4, md5).

MD2 MD4 MD5

Семейство алгоритмов вычисления хэш-функции MD (Message Digest Algorithm) разработано Р.Л. Ривестом. Хэш-функции в этих алго­ритмах преобразуют входное сообщение произвольной длины в сжатый 128-битный образ. Эти алгоритмы могут использоваться, например, в со­вокупности с несимметричным криптоалгоритмом типа RSA. Основные операции, используемые в этих алгоритмах – сложение по модулю 232, циклический сдвиг, логические операции Å, Ù, Ú.Алгоритм MD2, предложенный в 1989 г., ориентирован на 8-разрядный процессор и отличается от MD4 и MD5 (ориентированных на 32-разрядный процессор) способом дополнения сообщения (с применени­ем 16-байтной контрольной суммы), значением стартового вектора хэши­рования и использованием 256-байтной перестановки, а обработка одного блока сообщения в нем выполняется за 18 циклов.

В алгоритме MD4, разработанном в 1990 г., обработка одного блока выполняется за 3 цикла, каждый из которых включает в себя 16 операций. На каждом цикле используется своя цикловая функция fj, 1 <= j <=3, где f1 = , f2 =, f3 =.

Наиболее употребительным является алгоритм вычисления хэш-функции MD5, созданный в 1991 г., который и будет рассмотрен под­робно.

Пусть исходное сообщение т задано t-битной строкой m1m2…mt. Строка сообщения m дополняется до длины, сравнимой с 448 по модулю 512 (то есть длине сообщения «не хватает» ровно 64 битов, чтобы быть кратной 512), а именно: к сообщению присоединяется одна «1», a затем необходимое количество нулей. Причем дополнение строки выполняется даже в том случае, если ее длина уже сравнима с 448 по модулю 512 (в этом случае к сообщению просто добавляется 512 бит).

К полученной строке присоединяется 64-битное представление числа t. В случае t³264 , используются только младшие 64 бита числа t. Пусть дополненное сообщение М= М1М2…Мn, где Мi — 16-словный блок с размером слова 32 бита, а n кратно 16. Стартовый вектор хэширования MD0 имеет длину 128 бит и пред­ставляет собой конкатенацию четырех 32-битных слов md0||md1||md2||md3, где

md0 = 01234567, md1 = 89abcdef, md2 = fedcba98, md3 = 76543210.

В алгоритме MD5 используются четыре цикловые функции fj, 1£j£4, каждая из которых сопоставляет трем 32-битным словам X, Y и Z одно 32-битное слово.

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

Вычисление хэш-функции h:

Вход: М = М1М2,…Мn (n блоков по 512 бит).

Алгоритм: Для всех i=1,…, n MDi  g(MDi-1, Мi).

Выход: h(M) = MDn

При вычислении используется накопитель E, содержащий четыре 32-битных слова А, В, С, D. Исходным заполнением накопителя Е явля­ются слова стартового вектора хэширования MD0. Обработка 16-словного блока Мi, 1 £ I £ n, сообщения M осущест­вляется за 4 цикла, каждый из которых включает в себя 16 шагов.

На каждом шаге i-того цикла А ¬ В+((А+fj(В, С, D) + Mi[s]+r)<<<k),

1 < j <. 4, где Mi[s] — слово, выбранное из Мi, s, r и k — параметры шага;

X<<<k — циклический сдвиг слова Х влево на k бит; «+» — операция сложения по модулю 232 . Таким образом, на каждом шаге выполняется четыре операции сложения, одна операция сдвига и вычисляется значение одной цикловой функции. Для каждой итерации MDi представляет собой конкатенацию те­кущих значений четырех слов накопителя Е. После обработки блока Mn, итоговым сжатым образом сообщения будет 128-битная строка из четы­рех слов MDn = A||B||C||D.