ГОСТ Р 34.11-94. ИТ. Криптографическая защита информации. Функция хэширования.
ГОСТ Р 34.11-94
Группа П85
ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИИнформационная технология
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
Функция хэширования
Information technology.
Cryptographic Data Security.
Hashing functionОКСТУ 5002Дата введения 1995-01-01
Предисловие
1 РАЗРАБОТАН Главным управлением безопасности связи Федерального агентства правительственной связи и информации и Всероссийским научно-исследовательским институтом стандартизации
ВНЕСЕН Техническим комитетом по стандартизации ТК 22 "Информационная технология" и Федеральным агентством правительственной связи и информации
2 ПРИНЯТ И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 23.05.94 N 154
3 ВВЕДЕН ВПЕРВЫЕ
ВВЕДЕНИЕ
Расширяющееся применение информационных технологий при создании, обработке, передаче и хранении документов требует в определенных случаях сохранения конфиденциальности их содержания, обеспечения полноты и достоверности.
Одним из эффективных направлений защиты информации является криптография (криптографическая защита), широко применяемая в различных сферах деятельности в государственных и коммерческих структурах.
Криптографические методы защиты информации являются объектом серьезных научных исследований и стандартизации на национальных, региональных и международных уровнях.
Настоящий стандарт определяет процедуру вычисления хэш-функции для любой последовательности двоичных символов.
Функция хэширования заключается в сопоставлении произвольного набора данных в виде последовательности двоичных символов и его образа фиксированной небольшой длины, что позволяет использовать эту функцию в процедурах электронной цифровой подписи для сокращения времени подписывания и проверки подписи. Эффект сокращения времени достигается за счет вычисления подписи только под образом подписываемого набора данных.
1 ОБЛАСТЬ ПРИМЕНЕНИЯ
Настоящий стандарт определяет алгоритм и процедуру вычисления хэш-функции для любой последовательности двоичных символов, которые применяются в криптографических методах обработки и защиты информации, в том числе для реализации процедур электронной цифровой подписи (ЭЦП) при передаче, обработке и хранении информации в автоматизированных системах.
Определенная в настоящем стандарте функция хэширования используется при реализации систем электронной цифровой подписи на базе асимметричного криптографического алгоритма по ГОСТ Р 34.10.
2 НОРМАТИВНЫЕ ССЫЛКИ
В настоящем стандарте использованы ссылки на следующие стандарты:
ГОСТ 28147-89 Системы обработки информации. Защита криптографическая. Алгоритмы криптографического преобразования.
ГОСТ Р 34.10-94 Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма.
3 ОБОЗНАЧЕНИЯ
В настоящем стандарте используются следующие обозначения:
. Чтение слов и нумерация знаков алфавита (символов) осуществляются справа налево (номер правого символа в слове равен единице, второго справа - двум и т.д.).
, .
4 ОБЩИЕ ПОЛОЖЕНИЯ
Для определения хэш-функции необходимы:
5 ШАГОВАЯ ФУНКЦИЯ ХЭШИРОВАНИЯ
Алгоритм вычисления шаговой функции хэширования включает в себя три части, реализующие последовательно:
- генерацию ключей - слов длины 256 битов;
- перемешивающее преобразование результата шифрования.
5.1 Генерация ключей
Пусть |
|
, |
Для генерации ключей необходимо использовать следующие исходные данные:
При вычислении ключей реализуется следующий алгоритм:
1 Присвоить значения
2 Выполнить вычисление
При положительном исходе перейти к шагу 7. При отрицательном - перейти к шагу 5.
5 Выполнить вычисление
6 Перейти к шагу 3.
7 Конец работы алгоритма.
5.2 Шифрующее преобразование
Для шифрующего преобразования необходимо использовать следующие исходные данные:
Реализуют алгоритм зашифрования и получают слова
В результате данного этапа образуется последовательность
5.3 Перемешиваюшее преобразование
На данном этапе осуществляется перемешивание полученной последовательности с применением регистра сдвига.
Исходными данными являются:
Пусть отображение
преобразует слово
в слово
Тогда в качестве значения шаговой функции хэширования принимается слово
6 ПРОЦЕДУРА ВЫЧИСЛЕНИЯ ХЭШ-ФУНКЦИИ
Этап 1
Присвоить начальные значения текущих величин
1.5 Переход к этапу 2
Этап 2
При положительном исходе перейти к этапу 3.
В противном случае выполнить последовательность вычислений:
2.8 Конец работы алгоритма
Этап 3
3.6 Перейти к этапу 2.
Проверочные примеры для вышеизложенной процедуры вычисления хэш-функции приведены в приложении А.
ПРИЛОЖЕНИЕ А
(справочное)
ПРОВЕРОЧНЫЕ ПРИМЕРЫ
А.1 Использование алгоритма ГОСТ 28147
В качестве шифрующего преобразования в приводимых ниже примерах используется алгоритм ГОСТ 28147 в режиме простой замены.
|
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
D |
4 |
6 |
7 |
5 |
E |
4 |
1 |
F |
B |
B |
C |
D |
8 |
B |
A |
2 |
D |
4 |
A |
7 |
A |
1 |
4 |
9 |
3 |
0 |
1 |
0 |
1 |
1 |
D |
C |
2 |
4 |
5 |
3 |
7 |
5 |
0 |
A |
6 |
D |
5 |
7 |
F |
2 |
F |
8 |
3 |
D |
8 |
6 |
A |
5 |
1 |
D |
9 |
4 |
F |
0 |
7 |
4 |
9 |
D |
8 |
F |
2 |
A |
E |
8 |
9 |
0 |
3 |
4 |
E |
E |
2 |
6 |
9 |
2 |
A |
6 |
A |
4 |
F |
3 |
B |
10 |
3 |
E |
8 |
9 |
6 |
С |
8 |
1 |
11 |
E |
7 |
5 |
E |
C |
7 |
1 |
C |
12 |
6 |
6 |
9 |
0 |
B |
6 |
0 |
7 |
13 |
B |
8 |
C |
3 |
2 |
0 |
7 |
F |
14 |
8 |
2 |
F |
B |
5 |
9 |
5 |
5 |
15 |
C |
C |
E |
2 |
3 |
B |
9 |
3 |
А.2 Представление векторов
Последовательности двоичных символов будем записывать как строки шестнадцатеричных цифр, в которых каждая цифра соответствует четырем знакам ее двоичного представления.
А.3 Примеры вычисления значения хэш-функции
В качестве стартового вектора хэширования принимают, например, нулевой вектор
|
= |
00000000 |
00000000 |
00000000 |
00000000 |
|
|
00000000 |
00000000 |
00000000 |
00000000 |
А.3.1 Пусть необходимо выполнить хэширование сообщения
|
= |
73657479 |
62203233 |
3D687467 |
6Е656С20 |
|
|
2С656761 |
7373656D |
20736920 |
73696854 |
Выполняют присвоение начальных значений:
текста
|
= |
73657479 |
62203233 |
3D687467 |
6Е656С20 |
|
|
2С656761 |
7373656D |
20736920 |
73696854 |
хэш-функции
|
= |
00000000 |
00000000 |
00000000 |
00000000 |
|
|
00000000 |
00000000 |
00000000 |
00000000 |
суммы блоков текста
|
= |
00000000 |
00000000 |
00000000 |
00000000 |
|
|
00000000 |
00000000 |
00000000 |
00000000 |
длина текста
|
= |
00000000 |
00000000 |
00000000 |
00000000 |
|
|
00000000 |
00000000 |
00000000 |
00000100 |
Так как длина сообщения, подлежащего хэшированию, равна 256 битам (32 байтам),
|
= |
00000000 |
00000000 |
00000000 |
00000000 |
|
|
00000000 |
00000000 |
00000000 |
00000100 |
|
= |
73657479 |
62203233 |
3D687467 |
6Е656С20 |
|
|
2С656761 |
7373656D |
20736920 |
73696854, то |
нет необходимости дописывать текущий блок нулями,
|
= |
73657479 |
62203233 |
3D687467 |
6Е656С20 |
|
|
2С656761 |
7373656D |
20736920 |
73696854 |
Вырабатывают ключи
|
= |
733D2C20 |
65686573 |
74746769 |
79676120 |
|
|
626Е7373
|
20657369 |
326С6568 |
33206D54 |
|
= |
110C733D |
0D166568 |
130E7474 |
06417967 |
|
|
1D00626E
|
161A2065 |
090D326C |
4D393320 |
|
= |
80B111F3 |
730DF216 |
850013F1 |
C7E1F941 |
|
|
620C1DFF
|
3ABAE91A |
3FA109F2 |
F513B239 |
|
= |
A0E2804E |
FF1B73F2 |
ECE27A00 |
E7B8C7E1 |
|
|
EE1D620C |
AC0CC5BA |
A804C05E |
A18B0AEC |
Получают
|
= |
E7860419 |
0D2A562D |
8D345899 |
00FF0E28 |
|
|
5203ЕВС8 |
5D9BCFFD |
42АВВССЕ |
32ВС0В1В |
Выполняют перемешивающее преобразование с применением регистра сдвига и получают
|
= |
CF9A8C65 |
505967А4 |
68А03В8С |
42DE7624 |
|
|
D99С4124 |
883DA687 |
561C7DE3 |
3315С034 |
|
= |
CF68D956 |
9АА09С1С |
8C3B417D |
658C24E3 |
|
|
50428833
|
59DE3D15 |
6776А6С1 |
A4248734 |
|
= |
8FCF68D9 |
809AА09С |
3С8С3В41 |
C7658C24 |
|
|
ВВ504288
|
2859DE3D |
666676А6 |
B3A42487 |
|
= |
4E70CF97 |
3С8065А0 |
853С8СС4 |
57389А8С |
|
|
CABB50BD
|
E3D7A6DE |
D1996788 |
5CB35B24 |
|
= |
584E70CF |
С53С8065 |
48853С8С |
1657389A |
|
|
EDCABB50
|
78E3D7A6 |
EED19867 |
7F5CB35B |
|
= |
66B70F5E |
F163F461 |
468А9528 |
61D60593 |
|
|
Е5ЕС8А37
|
3FD42279 |
3CD1602D |
DD783Е86 |
|
= |
2В6ЕС233 |
С7ВС89Е4 |
2АВС2692 |
5FEA7285 |
|
|
DD3848D1 |
С6АС997А |
24F74E2B |
09A3AEF7 |
|
= |
5817F104 |
0BD45D84 |
B6522F27 |
4AF5B00B |
|
|
А531В57А
|
9C8FDFCA |
BB1EFCC6 |
D7A517A3 |
|
= |
Е82759Е0 |
C278D950 |
15СС523С |
FC72EBB6 |
|
|
D2C73DA8
|
19А6САС9 |
3E8440F5 |
C0DDB65A |
|
= |
77483AD9 |
F7C29CAA |
EB06D1D7 |
841BCAD3 |
|
|
FBC3DAA0
|
7CB555F0 |
D4968080 |
0A9E56BC |
|
= |
А 1157965 |
2D9FBC9C |
088С7СС2 |
46FB3DD2 |
|
|
7684ADCB
|
FA4ACA06 |
53EFF7D7 |
C0748708 |
|
= |
2AEBFA76 |
A85FB57D |
6F164DE9 |
2951A581 |
|
|
С31Е7435 |
4930FD05 |
1F8A4942
|
550A582D |
|
= |
FAFF37A6 |
15A81669 |
2CFF3EF8 |
B68CA247 |
|
|
E09525F3 |
9F811983 |
2ЕВ81975 |
D366C4B1 |
Таким образом, результат хеширования есть
|
= |
FAFF37A6 |
15A81669 |
1CFF3EF8 |
B68CA247 |
|
|
E09525F3 |
9F811983 |
2ЕВ81975 |
D366C4B1 |
А.3.2. Пусть необходимо выполнить хэширование сообщения
= 7365
|
74796220 |
3035203D |
20687467 |
6Е656С20 |
73616820 |
65676173 |
|
73656D20 |
6С616Е69 |
6769726F |
20656874 |
2065736F |
70707553 |
Так как длина сообщения, подлежащего хэшированию, равна 400 битам (50 байтам), то разбивают сообщение на два блока и второй (старший) блок дописывают нулями. В процессе вычислений получают:
ШАГ 1
|
= |
00000000 |
00000000 |
00000000 |
00000000 |
|
|
00000000 |
00000000 |
00000000 |
00000000 |
|
= |
73616820 |
65676173 |
73656D20 |
6С616Е69 |
|
|
|
6769726F
|
20656874 |
2065736F |
70707553 |
|
|
= |
73736720 |
61656965 |
686D7273 |
20206F6F |
|
|
|
656С2070
|
67616570 |
616E6875 |
73697453 |
|
|
= |
14477373 |
0С0С6165 |
1F01686D |
4F002020 |
|
|
|
4С50656С
|
04156761 |
061D616E |
1D277369 |
|
|
= |
CBFF14B8 |
6D04F30C |
96051FFE |
DFFFB000 |
|
|
|
35094CAF
|
72F9FB15 |
7CF006E2 |
AB1AE227 |
|
|
= |
ЕВАССВ00 |
F7006DFB |
Е5Е16905 |
B0B0DFFF |
|
|
|
ВА1С3509
|
FD118DF9 |
F61B830F |
F8C554E5 |
|
|
= |
FF41797C |
EEAADAC2 |
43C9B1DF |
2E14681C |
|
|
|
EDDC2210
|
1EE1ADF9 |
FA67E757 |
DAFE3AD9 |
|
|
= |
F0CEEA4E |
368B5A60 |
C63D96C1 |
E5B51CD2 |
|
|
|
A93BEFBD |
2634F0AD |
CBBB69CE |
ED2D5D9A |
ШАГ 2
|
= |
F0CEEA4E |
368B5A60 |
C63D96C1 |
Е5В51СD2 |
|
|
A93BEFBD |
2634F0AD |
CBBB69CE |
ED2D5D9A |
|
= |
00000000 |
00000000 |
00000000 |
00007365 |
|
|
74796220 |
3035203D |
20687467 |
6E656C20 |
|
= |
F0C6DDEB |
CE3D42D3 |
EA968D1D |
4EC19DA9 |
|
|
36Е51683
|
8ВВ50148 |
5A6FD031 |
60В790ВА |
|
= |
16А4С6А9 |
F9DF3D3B |
E4FC96EF |
5309C1BD |
|
|
FB68E526
|
2CDBB534 |
FE161C83 |
6F7DD2C8 |
|
= |
C49D846D |
1780482С |
9086887F |
C48C9186 |
|
|
9DCB0644
|
D1E641E5 |
A02109AF |
9D52C7CF |
|
= |
BDB0C9F0 |
756Е9131 |
E1F290EA |
50E4CBB1 |
|
|
1CAD9536
|
F4E4B674 |
99F31E29 |
70C52AFA |
|
= |
62А07ЕА5 |
EF3C3309 |
2СЕ1В076 |
173D48CC |
|
|
6881ЕВ66
|
F5C7959F |
63FCA1F1 |
D33C31B8 |
|
= |
95ВЕА0ВЕ |
88D5AA02 |
FE3C9D45 |
436CE821 |
|
|
В8287СВ6 |
2СВС135В |
3E339EFE |
F6576CA9 |
ШАГ 3
|
= |
95BEA0BE |
88D5AA02 |
FE3C9D45 |
436CE821 |
|
|
В8287СВ6 |
2СВС135В |
3E339EFE |
F6576СА9 |
|
= |
00000000 |
00000000 |
00000000 |
00000000 |
|
|
00000000 |
00000000 |
00000000 |
00000190 |
|
= |
95FEB83E |
ВЕ3С2833 |
A09D7C9E |
BE45B6FE |
|
|
88432CF6
|
D56CBC57 |
AAE8136D |
02215В39 |
|
= |
8695FEB8 |
1ВВЕ3С28 |
E2A09D7C |
48ВE45В6 |
|
|
DA88432C
|
EBD56CBC |
7FABE813 |
F292215B |
|
= |
В9799501 |
141В413С |
1ЕЕ2А062 |
0СВ74145 |
|
|
6FDA88BC
|
D0142A6C |
FА80АА16 |
15F2FDB1 |
|
= |
94В97995 |
7D141B41 |
С21ЕЕ2А0 |
040СВ741 |
|
|
346FDA88
|
46D0142A |
BDFA81AA |
DC1562FD |
|
= |
D42336E0 |
2А0А6998 |
6С65478А |
3D08A1B9 |
|
|
9FDDFF20
|
4808Е863 |
94FD9D6D |
F776A7AD |
|
= |
47E26AFD |
3Е7278А1 |
7D473785 |
06140773 |
|
|
A3D97E7E |
А744СВ43 |
08АА4С24 |
3352С745 |
ШАГ 4
|
= |
47E26AFD |
3Е7278А1 |
7D473785 |
06140773 |
|
|
A3D97E7E
|
А744СВ43 |
08АА4С24 |
3352С745 |
|
= |
73616820 |
65676173 |
73656D20 |
6061E1CE |
|
|
DBE2D48F
|
509A88B1 |
40CDE7D6 |
DED5E173 |
|
= |
340E7848 |
83223B67 |
025AAAAB |
DDA5F1F2 |
|
|
5B6AF7ED
|
1575DE87 |
19E64326 |
D2BDF236 |
|
= |
03DC0ED0 |
F4CD26BC |
8B595F13 |
F5A4A55E |
|
|
А8В063СВ
|
ED3D7325 |
6511662А |
7963008D |
|
= |
C954EF19 |
D0779A68 |
ED37D3FB |
7DA5ADDC |
|
|
4A9D0277
|
78ЕF765В |
С4731191 |
7ЕВВ21В1 |
|
= |
6D12BC47 |
D9363D19 |
1Е3С696F |
28F2DC02 |
|
|
F2137F37
|
64Е4С18В |
69CCFBF8 |
EF72B7E3 |
|
= |
790DD7A1 |
066544ЕА |
2829563С |
3C39D781 |
|
|
25EF9645
|
EE2C05DD |
A5ECAD92 |
2511A4D1 |
|
= |
0852F562 |
3B89DD57 |
AEB4781F |
E54DF14E |
|
|
EAFBC135 |
0613763А |
0D770AA6 |
57ВА1А47 |
Таким образом, результат хэширования есть
|
= |
0852F562 |
3B89DD57 |
AEB4781F |
E54DF14E |
|
|
EAFBC135 |
0613763А |
0D770AA6 |
57ВА1А47 |