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

2.1. Ключевые функции хеширования

Ключевая хеш-функция может быть построена на основе алгоритма блочного шифрования. Пусть – функция зашифрования -битового блока под управлением секретного ключа . Тогда значение n-битовой свертки ) может быть определено как

Данный способ вычисления хеш-значения в российском стандарте криптографической защиты данных ГОСТ 28147-89 называется режимом выработки имитовставки.

Ключевая хеш-функция может быть построена также на основе бесключевой хеш-функции . Секретный ключ , дополненный некоторым способом до размера, кратного длине блока , вставляется в начало и конец сообщения . Значение определяется как

.

Заметим, что ключ k непосредственно не пересылается, а присоединяется к только на время вычисления значения .

Другой способ вычисления хеш-значения определяется как

где .

2.2. Бесключевые функции хеширования

Бесключевую хеш-функцию можно построить, используя симметричный блочный шифр. Пусть – функция зашифрования -битовых блоков под управлением -битового ключа , а – сообщение, представленное в виде последовательности -битовых блоков , ,……, . Схема вычисления n-битового хеш-значения имеет следующий вид (см. рис.2):

где , , могут принимать значения , , или быть константами. Существует комбинации для выбора переменных , , , но установлено, что только комбинаций, перечисленных в таблице 1, приводят к безопасным хеш-функциям. Первые четыре из этих схем иллюстрируются на рис.3.

Рис.2. Обобщенная схема хеш-функции на основе блочного шифра с размером хеш‑значения, равным размеру блока

Таблица 1. Параметры схем безопасного хеширования (к рис.2)

Номер схемы

Номер схемы

Mi

Для противодействия атакам на хеш-функцию необходимо, чтобы длина вырабатываемого хеш‑значения составляла по меньшей мере 128 битов. Увеличить размер хеш‑значения можно, используя, например, следующий прием:

  1. Вычисляется ‑битовое хеш‑значение ).

  2. Значение приписывается в начало сообщения и вычисляется новое хеш‑значение ).

  3. Этап 2 повторяется для конкатенации и т.д.

В результате получается последовательность ‑битовых хеш‑значений, конкатенация которых дает хеш‑значение длины . Формально данная схема определяется как:

.

Из ‑битового значения можно извлечь хеш-значение требуемой длины , отбрасывая, например, последние битов. Другие способы увеличения длины хеш‑значения (в раза) представлены на рис.4, 5 (опущено).

Рис.3. Четыре безопасные хеш‑функции с размером хеш‑значения,

равным размеру блока

-

Алгоритм SHA-1 (Secure Hast Algorith) стандарта США на хеш‑функцию SHS (Secure Hash Standard) вычисляет 160‑битовые хеш‑значения для любого сообщения, длина которого меньше 264 битов. Вычисленное хеш‑значение используется затем в алгоритме DSA (Digital Signature Algorith), стандарта DSS (Digital Signature Standard), вычисляющем цифровую подпись сообщения.

Оригинальное сообщение дополняется до длины, кратной . Способ дополнения такой же, как и в MD5: сначала добавляется битовая комбинация так, чтобы общая длина в битах была сравнима с по модулю (операция дополнения выполняется всегда, даже если сообщение уже имело требуемую длину); затем к сообщению добавляется ‑битовое представление длины исходного сообщения.

(Замечание. В отличие от MD5 и RIPEMD-160 в SHA-1 используется обратный порядок байтов (big endian): наиболее значимый байт идет первым, т.е. занимает младшую адресную позицию. Это относится как к ‑битовому представлению длины исходного сообщения, так и к ‑битовым числам.)

Дополненное сообщение разбивается на ‑битовые блоки ,…, . Каждый блок представляется в виде массива из шестнадцати ‑битовых подблоков: . Вычисляемое хеш‑значение представляется в виде массива из пяти ‑битовых подблоков: .

Псевдокод алгоритма SHA‑1 представлен в табл. 9 (см. рис. 9 и 10). В алгоритме используются вспомогательные переменные: – массив из пяти ‑битовых подблоков, – массив из ‑битовых подблоков. Основные операции над ‑битовыми подблоками те же, что и в алгоритме MD5. Функции с ‑битовыми аргументами и значениями и ‑битовые константы определяются как (опущено)

Рис. 9. Элементарная операция SHA-1

Таблица 9. Псевдокод SHA‑1

h:=($67452301,$efcdab89,$98badcfe,$10325476,$c3d2e1fo);

for i:=1 to N do {

a:= h;

for j:=0 to 15 do wj:= Mij;

for j:=16 to 79 do wj:=rol1(wj-3 Å wj-8 Å wj-14 Å wj-16);

for j:=0 to 79 do {

a4:=rol5(a0) + F(a1,a2,a3) + a4 + wj + Cj;

(a0,a1,a2,a3,a4):= (a4,a0,rol30(a1),a2,a3)};

h:= (h0 + a0,h1 + a1,h2 + a2,h3 + a3,h4 + a4)}.

Рис.10. Функция сжатия в SHA‑1 (обработка одного 512‑битового блока)

ГОСТ

Хеш‑функция, определенная в стандарте ГОСТ Р34.11‑94, вычисляет 256‑битовое хеш‑значение сообщения произвольной длины. Данное хеш‑значение используется для формирования и проверки электронной цифровой подписи в стандарте ГОСТ Р.10‑94.

Исходное сообщение разбивается на ‑битовые блоки . Если последний блок не является полным, то он дополняется (слева) нулями до требуемого размера. В вычислении хеш‑значения используются два дополнительных ‑битовых блока: , в котором записывается длина исходного сообщения (до дополнения), и , в котором формируется контрольная сумма.

Хеш‑значение вычисляется по схеме (см.рис.11а):

h:= h0; Z:= 0;

for i:= 1 to N do {h:= f(Mi,h); Z:= (Z+Mi) mod 2256};

h:= f(L,h); h:= f(Z,h).

Здесь – ‑битовый стартовый вектор хеширования, на выбор которого в стандарте ограничений не накладывается.

Используемая при вычислении значения функция сжатия определяется следующим образом. Пусть

– ‑битовый блок, где – конкатенация экземпляров набора . В определении используется функции , и с -битовыми аргументами и значениями:

Функция с аргументом , где – ‑битовые блоки, задана как

Функция P с аргументом , где – байты, задана как

,

где , .

Функция T с аргументом , где ‑битовые блоки, задана как

,

где v=w1Åw2Åw3Åw4Åw13Åw16.

Пусть обозначает функцию зашифрования 64‑битового блока под управлением ‑битового ключа согласно ГОСТ 28147‑89 (принципиально можно использовать любой другой алгоритм зашифрования с ‑битовым блоком и ‑битовым ключом). При таких обозначениях функция определяется как (см. рис. 11б):

f(m,h)º{

U:=m; V:=h; (X4,X3,X2,X1):= m;

K4:=P(U Å V);

U:= S(U); V:= S2(V); K3:= P(U Å V);

U:= S(U)Å c; V:= S2(V); K2:= P(U Å V);

U:= S(U); V:= S2(V); K1:= P(U Å V);

W:= (EK4(X4),EK3(X3),EK2(X2),EK1(X1));

f:= T61(h Å T(m Å T12(W)))}.

Здесь , .

(а)

(б)

Рис.11. Функция хеширования в ГОСТ Р34.11-94:

(а) общая схема; (б) функция сжатия