- •76. Линейный криптоанализ.
- •78. Семейство алгоритма, вычисляющих хэш – функцииMd (md2, md4, md5).
- •79. Стандарт sha-1.
- •80. Цифровая подпись.
- •81. Схема подписи rsa
- •82. Верификация цифровой подписи.
- •83. Схема цифровой подписи Рабина.
- •84. Схема подписи dss.
- •Использование dsa [править]
- •85. СхемаподписиЭль – Гамаля.
- •Шифрование
- •Расшифрование
- •86. Схема подписи по гост 34.10 – 90.
- •Алгоритм Параметры схемы цифровой подписи [править]
- •Двоичные векторы [править]
- •87. Схема подписи Шнорра.
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.
