Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмы защиты информации / Алгоритм+хэш-функции+MD2

.pdf
Скачиваний:
186
Добавлен:
02.05.2014
Размер:
178.99 Кб
Скачать

Хэширование и эл подпись

1

Request for Comments: 1319

MD2

Тpи алгоpитма сеpии MD pазpаботаны Ривестом в 1989-м, 90-м и 91-м году соответственно. Все они пpеобpазуют текст пpоизвольной длины в 128-битный хэш. Алгоритм MD предназначается для использования в ЭЦП для сжатия большого файла перед его подписью секретным ключом в криптосистеме с ОК, например

Сложность нахождения инверсии, то есть сообщения с тем же дайджестом определяется величиной 2128 , а коллизии, то есть двух сообщений с одинаковым дайджестом 264.

Предположим, что имеем на входе сообщение длиной b байт.

m0 m1 ... mb-1

Шаг 1. Добавление Padding Bytes

Сообщение расширяется (is "padded") так, чтобы его длина в байтах стала кратна 16. Расширение выполняется даже, если длина сообщения уже кратна 16. К сообщению добав-

ляется "i" bytes (i=1..16) of value "i"

Обозначим результирующее сообщение M0 ... MN-1

Шаг 2 Добавление 16 байтной контрольной суммы (Checksum)

При ее вычислении используется 256-байтовую "random" permutation, созданную из цифр числа π. Обозначим S[i] - i-тый элемент таблицы

L:= C0=… =C15:=0

{ Обнуляем контрольную сумму}

For i = 0 to N/16-1 do

{ обрабатываем каждый 16-байтовый блок}

For j = 0 to 15 do {Обрабатываем блок i}

Cj:= S[Mi*16+j L]. L:= Cj

end

end

 

 

 

 

 

 

 

 

ПАЗИ Криптография с ОК

18.04.04

1

Хэширование и эл подпись

2

Получаем 16-байтовую checksum C0 ...С15 , добавляемую к сообщению.

Получим сообщение M*0…M*N'-1 с добавленной контрольной суммой, где N'=N + 16.

Шаг 3. Инициализация MD Buffer

Для вычисления дайджеста используется 48-байиный буфер X , первоначально обнуленный

Шаг 4. Обработка сообщения в 16-байтных блоках

For i = 0 to N'/16-1 do

{Обработка каждого 16 байтного блока}

 

For j = 0 to 15 do X16+j:= Mi*16+j {Копируем блок i в X}

end

X32+j:= X16+j Xj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Накаплив результат

 

I блок

 

двух предыдущих

 

 

 

 

 

 

 

блоков Х

 

 

0

15

16

 

31

32

 

47

 

 

t:= 0.

 

 

 

 

 

 

 

 

For j = 0 to 17 do

{делаем 16 проходов}

 

 

 

For k = 0 to 47 do

{Проход j]

 

t, Xk:=Xk St

end

t:= (t+j) mod 256.

end

end

Шаг 5. Вывод

после окончания алгоритма из X0 ... Х15. берется дайджест сообщения

Т.е. алгоpитм MD2 пpедполагает:

*дополнение текста до длины, кpатной 128 битам;

*вычисление 16-битной контpольной суммы (стаpшие pазpяды отбpасываются);

*добавление контpольной суммы к тексту;

*повтоpное вычисление контpольной суммы.

ПАЗИ Криптография с ОК

18.04.04

2