Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - MD413 июня 2011Оглавление: 1. MD4 2. Примеры хешей 3. Безопасность MD4 хеш-функция, разработанная профессором Массачусетского университета Рональдом Ривестом в 1990 году, и впервые описанная в RFC 1186. Для произвольного входного сообщения функция генерирует 128-разрядное хеш-значение, называемое дайджестом сообщения. Этот алгоритм используется в протоколе аутентификации MS-CHAP, разработанном корпорацией Майкрософт для выполнения процедур проверки подлинности удаленных рабочих станций Windows. Является предшественником MD5.
Одна операция MD4. Хеширование с MD4 состоит из 48 таких операций, сгруппированных в 3 раунда по 16 операций. F нелинейная функция; в каждом раунде функция меняется. Mi означает 32-битный блок входного сообщения, а Ki 32-битная константа, различная для каждой операции.
Алгоритм MD4Предполагается, что на вход подано сообщение, состоящее из Ниже приведены 5 шагов, используемые для вычисления хеша сообщения. Шаг 1. Добавление недостающих битов.Сообщение расширяется так, чтобы его длина в битах по модулю 512 равнялась 448. Таким образом, в результате расширения, сообщению недостает 64 бита до длины, кратной 512 битам. Расширение производится всегда, даже если сообщение изначально имеет нужную длину. Расширение производится следующим образом: один бит, равный 1, добавляется к сообщению, а затем добавляются биты, равные 0, до тех пор, пока длина сообщения не станет равной 448 по модулю 512. В итоге, к сообщению добавляется как минимум 1 бит, и как максимум 512. Шаг 2. Добавление длины сообщения.64-битное представление На этом этапе мы получаем сообщение длиной кратной 512 битам. Это эквивалентно тому, что это сообщение имеет длину, кратную 16-ти 32-битным словам. Каждое 32-битное слово содержит четыре 8-битных, но следуют они не подряд, а наоборот мы получаем два 32-битных слова). Пусть Шаг 3. Инициализация MD-буфера.Для вычисления хеша сообщения используется буфер, состоящий из 4 слов:
word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10
Шаг 4. Обработка сообщения блоками по 16 слов.Для начала определим три вспомогательные функции, каждая из которых получает на вход три 32-битных слова, и по ним вычисляет одно 32-битное слово.
На каждую битовую позицию F действует как условное выражение: если X, то Y; иначе Z. Функция F могла бы быть определена с использованием Алгоритм хеширования на абстрактном языке программирования:
/* Обрабатываем каждый блок из 16-ти слов */
for i = 0 to N/16-1 do
/* Заносим i-ый блок в переменную X */
for j = 0 to 15 do
set X to M.
end /* конец цикла по j */
/* Сохраняем A как AA, B как BB, C как CC, и D как DD */
AA = A
BB = B
CC = C
DD = D
/* Раунд 1 */
/* Пусть означает следующую операцию:
a = + X) <<< s. */
/* Производим 16 следующих операций: */
/* Раунд 2 */
/* Пусть означает следующую операцию:
a = + X + 5A827999) <<< s. */
/* Производим 16 следующих операций: */
/* Раунд 3 */
/* Пусть означает следующую операцию:
a = + X + 6ED9EBA1) <<< s. */
/* Производим 16 следующих операций: */
/* Затем производим следующие операции сложения. (Увеличиваем значение в каждом регистре
на величину, которую он имел перед началом итерации по i */
A = A + AA
B = B + BB
C = C + CC
D = D + DD
end /* конец цикла по i */
Замечание. Величина 5A827999 шестнадцатеричная 32-битная константа, первые байты старшие. Она представляет собой квадратный корень из 2. Она же в восьмеричном представлении: 013240474631. Величина 6ED9EBA1 шестнадцатеричная 32-битная константа, первые байты старшие. Она представляет собой квадратный корень из 3. Она же в восьмеричном представлении: 015666365641. Эти данные приведены в книге Кнут, Искусство программирования, издание 1981 года, том 2, стр 660, таблица 2. Шаг 5. Формирование хеша.Результат получается как ABCD. То есть, мы выписываем 128 бит, начиная с младшего бита A, и заканчивая старшим битом D. Реализация алгоритма на языке C содержится в RFC 1320. Просмотров: 4019
|