ВУЗ:
Составители:
Рубрика:
94 Д. С. КУЛЯБОВ
На каждом шаге j-го цикла A ← B + ((A + f
j
(B, C, D) + M
i
[s] + r) ≪
k), 1 6 j 6 4, где M
i
[s] — слово, выбранное из M
i
; s, r, k — параметры ша-
га; X ≪ k — циклический сдвиг слова X влево на k бит; „+“ — операция
сложения по модулю 2
32
. Таким образом, на каждом шаге выполняется
четыре операции сложения, одна операция сдвига и вычисляется значение
одной цикловой функции.
Для каждой итерации MD
i
представляет собой конкатенацию текущих
значений четырех слов накопителя E. После обработки блока M
n
итого-
вым сжатым образом сообения будет 128-битная строка из четырех слов
MD
n
= A||B||C||D.
4.2.3.2. SHA-1
SHA-1 является модифицированной версией алгоритма SHA (Secure
Hash Algorithm), который используется в стандарте на хэш-функцию SHD
(Secure Hash Standart).
Алгоритм SHA-1 сопоставляет сообщению длиной до 2
64
бит сжатый
160-битный образ, используемый, в частности, для генерации и проверки
цифровой подписи в стандарте DSS. Кроме того, алгоритм SHA-1 создан
по образцу MD4.
Основные операции алгоритма: сложение по модулю 2
32
и по модулю
2, циклический сдвиг.
t-битная строка битов исходного сообщения m = m
1
m
2
. . . m
t
допол-
няется до длины, кратной 512. Если t > 2
64
, то используются только
младшие 64 бита числа t.
Дополнение сообщения выполняется так же, как и для MD-функций,
т.е. сначала к m присоединяется одна „1“, затем необходимое количество
нулей и 64-битное представление числа t — длины исходного сообщения.
Таким образом, дополнение сообщения состоит из n 512-битных бло-
ков, т.е. имеет вид M = M
1
M
2
. . . M
n
(где M
i
— 16-словный блок с разме-
ром слова 32 бита)
Стартовый вектор хэширования SHA
0
имеет длину 160 бит и представ-
ляет собой конкатенацию пяти 32-битных слов sha
0
||sha
1
||sha
2
||sha
3
||sha
4
,
где sha
0
= 67452301, sha
1
= efcdab89, sha
2
= 98badcf e, sha
3
= 10325476,
sha
4
= c3d2e1f0.
В алгоритме SHA-1 используются последовательность функций
f
0
, f
1
, . . . , f
7
9, каждая из которых сопоставляет трем 32-битным словам
X,Y , Z одно 32-битное слово f
j
, 0 6 j 6 79. функции f
j
имеют вид:
f
j
(X,Y , Z) = (X ∧ Y ) ∨ (
¯
X ∧ Z), 0 6 j 6 19
f
j
(X,Y , Z) = X ⊕ Y ⊕ Z, 20 6 j 6 39, 60 6 j 6 79
f
j
(X,Y , Z) = (X ∧ Y ) ∨ (X ∧ Z) ∨ (Y ∧ Z), 40 6 j 6 59.
Вычисление хэш-функции h:
Вход: M = M
1
M
2
. . . M
n
(n блоков по 512 бит).
Алгоритм: Для всех i = 1, . . . , n SHA
i
← g(SHA
i−1
, M
i
).
Страницы
- « первая
- ‹ предыдущая
- …
- 92
- 93
- 94
- 95
- 96
- …
- следующая ›
- последняя »