Kriptografia_prezentatsii / ______ SHA-1 (Secure Hash Algorithm)
.pptЛогика SHA-1 (Secure Hash Algorithm)
|
|
Дополнение |
|
Длина |
||
|
|
сообщения |
||||
|
|
(от 1 до 512 бит) |
||||
|
l x 512 б = N x 32 бит |
(Kmod264) |
||||
|
|
|
||||
|
|
|
|
|
|
|
|
К бит |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сообщение |
|
100000…0 |
|
|
|
|
|
|
512 бит |
|
|
|
|
|
512 бит |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Y0 |
|
|
|
|
|
Y1 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
512 бит |
|
512 бит |
|||||||||
IV |
|
|
|
160 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
SHA-1 |
|
SHA-1 |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
||||||||
160 |
|
CV1 |
|
|
|
|
||||||||||
Добавление |
значения |
длины: |
К сообщению добавляется 64-битовый блок – 64-битовое число без знака (наиболее значимый байт идет первым) и содержит значение длины исходного сообщения (перед добавлением заполнителя).
|
|
|
|
|
|
512 бит |
|
|
|
|
|
512 бит |
|||||||||
. . . |
|
|
|
|
|
|
|
|
|
. . . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yq |
|
|
|
|
|
YL-1 |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
512 бит |
|
|
|
|
|
|
|
512 бит |
||||||
|
160 |
|
|
|
|
|
|
|
160 |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
SHA-1 |
|
|
|
|
|
SHA-1 |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
CVq |
|
|
CVL-1 |
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
Добавление битов заполнителя: |
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
160 – |
|
|||||||||||||||
|
Длина сообщения =448mod512, |
|
|
|
|
битовый |
|
||||||||||||||
|
число бит от 1 до 512. |
|
|
|
|
|
|
профиль |
|
||||||||||||
|
Пример: M=448, |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
M=448mod512=960mod512=448 |
|
|
|
|
|
|
|
|
|
|
||||||||||
|
-> 512 бит добавляется |
|
|
|
|
|
|
|
|
|
|
|
|
Обработка одного 512-битового блока в SHA-1 (функция сжатия SHA-1)
Yq |
|
|
|
|
|
|
|
|
|
|
CVq |
|
|
|
|
||
|
512 |
32 |
|
|
160 |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
A |
|
|
B |
|
|
C |
|
D |
|
E |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
f1, K, W[0…19] |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
20 шагов |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
B |
|
C |
|
D |
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
f2, K, W[20…39] |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
20 шагов |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
B |
|
C |
|
D |
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
f3, K, W[40…59] |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
20 шагов |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
B |
|
C |
|
D |
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
f4, K, W[60…79] |
|
|
||||||||
|
|
|
|
|
|
|
|
|
20 шагов |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 t 19 |
|
|
+ |
+ |
+ |
+ |
+ |
Сложение (+) |
|
160 |
|
|
|
|
|
|
|
выполняется по |
|
CVq+1 |
|
|
модулю 232 |
|
|
|
|
Значения констант |
|
|
|
|
|
|
||
Номер |
Шестнадцатеричное |
Целая часть числа |
|||||||
шага |
представление |
|
|
|
|
|
|
|
|
0 t 19 |
Кt=5A827999 |
|
30 |
|
|
|
|
|
|
20 |
3 |
||||||||
|
|
|
|||||||
|
Кt=6ED9EBA1 |
|
30 |
|
|
|
|
|
|
20 t 39 |
20 |
2 |
|||||||
|
|
||||||||
|
Кt=8F1BBCDC |
2030 |
|
|
|
|
|||
40 t 59 |
5 |
||||||||
60 t 79 |
Кt=CA62C1D6 |
2030 |
|
|
|
||||
10 |
Вывод: работу алгоритма SHA-1 можно представить формулами:
CV0=IV, CVq+1=SUM32(CVq, ABCDEq), MD=CVL, где,
IV – начальное значение буфера ABCDE;
ABCDEq – выход последнего раунда обработки q-го 512-
битового блока сообщения;
L – общее число блоков сообщения (с учетом битов заполнителя и полей длины сообщения );
SUM32 – сложение по модулю 23,выполняемое отдельно для каждого слова пары вводимых значений;
MD – выходное значение профиля сообщения;
Инициализация буфера IV
слово A: 01 23 45 67
слово B: 89 AB CD EF
слово C: FE DC BA 98
слово D: 76 54 |
32 10 |
слово E: C3 D2 |
E1 F0 |
Пять 32-битовых регистров
|
Элементарная операция SHA |
|
|
Функция сжатия SHA-1 |
|
|
|
|
|
|
||||||
|
|
(один шаг раунда) |
|
|
|
|
|
|
|
|
|
|
|
|
||
A |
B |
C |
D |
E |
Каждый раунд имеет вид: |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
A, B, C, D, E <- (E+f(t, B,C,D)+S5(A)+Wt+Kt),A, S30(B),C,D, |
|
|
|||||||||
|
|
|
|
|
где, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A, B, C, D, E – пять слов буфера, |
|
|
|
|
|
|
|
|
|||
|
|
ft |
|
+ |
t |
– номер шага, от 0 до 79; |
|
|
|
|
|
|
|
|
||
|
|
|
f(t, B,C,D) – примитивная логическая функция для шага t; |
|
|
|
|
|||||||||
|
|
|
|
|
Sk |
– циклический сдвиг влево (вращение) 32-битового |
|
|
|
|||||||
|
|
|
|
|
аргумента на k битов; |
|
|
|
|
|
|
|
|
|
||
S |
5 |
|
|
+ |
Wt |
– 32-битовое слово, извлеченное из текущего 512-битового |
|
|||||||||
|
|
|
|
блока ввода; |
|
|
|
|
|
|
|
|
||||
|
|
|
|
Kt |
Kt |
|
|
|
|
|
|
|
|
|||
|
|
|
|
– добавляемая константа, используется 4 различных |
|
|
|
|||||||||
|
S30 |
|
|
+ |
значения; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
– сложение по модулю 232; |
Значение функции |
|
|
|
||||||||
|
|
|
|
Wt |
|
Шаг |
|
Функция |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
|
0 t 19 |
f1=f(t, B, C, D) |
(B C) (B D) |
|
|
|
|
||||
|
|
|
|
|
|
20 t 39 |
f2=f(t, B, C, D |
B C D |
|
|
|
|
|
|||
A |
B |
C |
D |
E |
|
40 t 59 |
f3=f(t, B, C, D |
(B C) (B D) (C D) |
|
|
||||||
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
60 t 79 |
f4=f(t, B, C, D |
B C D |
|
|
|
|
|
|||
|
|
512 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yq |
|
W0 W8 W2 W13 |
Wt-16 Wt-14 Wt-8 Wt-3 |
W63 W65 W71 W76 |
|
|
|
|
|
|
|
|||
|
|
|
|
+ |
|
+ |
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
W =S1(W |
t-16 |
+W |
t-14 |
+W |
+W |
t-3 |
) |
|
|
|
|
|
. . . |
|
. . . |
|
t |
|
t-8 |
|
|
|||
W0 |
W1 |
. . . |
W15 |
W16 |
Wt |
W79 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|||||||
Создание последовательности ввода из 80 слов для обработки одного блока в SHA-1 |
|
|
|
|
|
|
|
|
Сравнение хэш-алгоритмов
|
MD5 |
ГОСТ 3411-97 |
SHA-1 |
RIPEMD-160 |
Длина |
128 |
256 |
160 |
160 |
профиля |
|
|
|
|
Базовая длина |
512 |
256 |
512 |
512 |
обрабатываемог |
|
|
|
|
о сообщения |
|
|
|
|
Число шагов |
64 |
80 |
80 |
160 |
|
(4 раунда по |
|
(4 раунда по |
(5 спаренных |
|
16 шагов) |
|
20 шагов) |
раундов по 16 |
|
|
|
|
шагов) |
Max длина |
произвольная |
произвольная |
264-1 битов |
264-1 битов |
сообщения |
|
|
|
|
Число |
4 |
Базовое |
4 |
5 |
примитивных |
|
преобразование |
|
|
функция |
|
блочный |
|
|
|
|
симметричный |
|
|
|
|
шифр |
|
|
Число |
64 |
|
4 |
9 |
аддитивных |
|
|
|
|
констант |
|
|
|
|