2 Стандарты блочного шифрования

Вид материалаРеферат

Содержание


5.5. Алгоритмы хэширования
5.5.2. Алгоритм безопасного хэширования SHA
Рисунок 6. Одна операция SHA
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   13

5.5. Алгоритмы хэширования


Рассмотрим наиболее известные на сегодняшний день алгоритмы хэширования, а именно MD5 и SHA.

5.5.1. Алгоритм MD5


MD5 – это односторонняя функция, разработанная Роном Ривестом. Ее результатом является 128-битное хэш-значение.

После некоторой первоначальной обработки MD5 обрабатывает входной текст 512-битовыми блоками, разбитыми на 16 32-битовых блоков. Выходом алгоритма является набор из 4 32-битовых блоков, которые объединяются в единое 128-битное хэш-значение.

Во-первых, сообщение дополняется так, чтобы его длина была на 64 бита короче числа, кратного 512. Этим дополнением является 1, за которой вплоть до конца сообщения дописывается столько нулей, сколько нужно. Затем к результату добавляется 64-битовое представление длины сообщения. Эти два действия служат для того, чтобы длина сообщения была кратна 512 битам, и чтобы гарантировать, что разные сообщения не будут выглядеть одинаково после дополнения. Затем инициализируются четыре переменных:

A = 0x01234567

B = 0x89abcdef

C = 0xfedcba98

D = 0x76543210

Они называются переменными сцепления.

После этого начинается главный цикл алгоритма. Он продолжается, пока не исчерпаются 512-битовые блоки сообщения.

Четыре переменных копируются в другие переменные A → a, B → b, C → c, D → d.

Главный цикл состоит из четырех очень похожих этапов (см. рис. 7). На каждом из них 16 раз используются различные операции. Каждая операция представляет собой нелинейную функцию над тремя из a, b, c, d. Затем эта операция добавляет результат к четвертой переменной, подблоку текста и константе. Далее результат циклически сдвигается вправо на переменное число битов и добавляет результат к одной из переменных a, b, c, d. Наконец результат заменяет одну из переменных.

5.5.2. Алгоритм безопасного хэширования SHA


Этот стандарт определяет алгоритм безопасного хэширования (Secure Hash Algorithm), необходимый для обеспечения безопасности алгоритма цифровой подписи DSA (Digital Signature Algorithm). Для любого входного значения длиной меньше 264 бит SHA выдает 160-битовый результат, называемый кратким содержанием сообщения, которое далее становится входом DSA, который вычисляет подпись для всего сообщения.

SHA называется безопасным, т.к. он разработан так, чтобы было вычислительно невозможно найти сообщение, соответствующее данному краткому содержанию сообщения или найти два различных сообщения с одинаковым кратким содержанием. Любые изменения, произошедшие при передаче сообщения, с очень высокой вероятностью приведут к изменению краткого содержания сообщения, и подпись не пройдет проверку.

Алгоритм SHA состоит из следующих шагов:

Во-первых, сообщение дополняется так, чтобы его длина была кратной 512 битам. Для этого используется то же дополнение, что и в MD5.

Инициализируются пять 32-битовых переменных:

A = 0x67452301

B = 0xefcdab89

C = 0x98badcfe

D = 0x10325476

E = 0xc3d2e1f0

Затем начинается главный цикл алгоритма. Он обрабатывает сообщение 512-битовыми блоками и продолжается, пока не исчерпаются все блоки сообщения.

Сначала пять переменных копируются в другие переменные: A → a, B → b, C → c, D → d, E → e.

Главный цикл состоит из четырех этапов по 20 операций в каждом. Каждая операция представляет собой нелинейную функцию над тремя из a, b, c, d, e, затем выполняется сдвиг и сложение аналогично MD5.

В SHA используются следующие функции:

, для t = 0…19

, для t = 20…39


, для t = 40…59

, для t = 60…79

а также следующие константы:

Kt = 0x5a827999, для t = 0…19

Kt = 0x6ed9eba1, для t = 20…39

Kt = 0x8f1bbcdc, для t = 40…59

Kt = 0xca62c1d6, для t = 60…79

Блок сообщения превращается из шестнадцати 32-битовых слов (M0 по M15) в восемьдесят 32-битовых слов (W0 по W79) с помощью следующего алгоритма:

, для t = 0…15

, для t = 16…79

Если t – это номер операции (от 1 до 80), Wt представляет собой t-ый подблок расширенного сообщения, а <<
For t:=0 to 79 do

Begin

temp:=(a<<<5)+ft(b,c,d)+e+Wt+Kt;

e:=d;

d:=c;

c:=b<<<30;

b:=a;

a:=temp;

End;

На рис. 8 показана одна операция. Сдвиг переменных выполняет ту же функцию, которую в MD5 выполняет использование в различных местах различных переменных.



Рисунок 6. Одна операция SHA

Дальнейшие вычисления рассматривать не будем ввиду их большого объема.

После всех вычислений a, b, c, d, e добавляются соответственно к A, B, C, D, E, и алгоритм продолжается для следующего блока данных. Окончательным результатом служит объединение A, B, C, D, E.


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