ГОСТ Р 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 битов;
- шифрующее преобразование - зашифрование 64-битных подслов слова
- перемешивающее преобразование результата шифрования.
5.1 Генерация ключей
Рассмотрим
Пусть |
| |
где
Обозначают
Используют преобразование
слова
где
Для генерации ключей необходимо использовать следующие исходные данные:
- слова
- параметры: слова
При вычислении ключей реализуется следующий алгоритм:
1 Присвоить значения
2 Выполнить вычисление
3 Присвоить
4 Проверить условие
При положительном исходе перейти к шагу 7. При отрицательном - перейти к шагу 5.
5 Выполнить вычисление
6 Перейти к шагу 3.
7 Конец работы алгоритма.
5.2 Шифрующее преобразование
На данном этапе осуществляется зашифрование 64-битных подслов слова
Для шифрующего преобразования необходимо использовать следующие исходные данные:
и набор ключей
Реализуют алгоритм зашифрования и получают слова
В результате данного этапа образуется последовательность
5.3 Перемешиваюшее преобразование
На данном этапе осуществляется перемешивание полученной последовательности с применением регистра сдвига.
Исходными данными являются:
слова
Пусть отображение
преобразует слово
в слово
Тогда в качестве значения шаговой функции хэширования принимается слово
где
6 ПРОЦЕДУРА ВЫЧИСЛЕНИЯ ХЭШ-ФУНКЦИИ
Исходными данными для процедуры вычисления значения функции
Процедура вычисления функции
Алгоритм вычисления функции
Этап 1
Присвоить начальные значения текущих в
еличин
1.1
1.2
1.3
1.4
1.5 Переход к этапу 2
Этап 2
2.1 Проверить условие
При положительном исходе перейти к этапу 3.
В противном случае выполнить последовательность вычислений:
2.2
2.3
2.4
2.5
2.6
2.7
2.8 Конец работы алгоритма
Этап 3
3.1 Вычислить подслово
3.2
3.3
3.4
3.5
3.6 Перейти к этапу 2.
Значение величины
Проверочные примеры для вышеизложенной процедуры вычисления хэш-функции приведены в приложении А.
ПРИЛОЖЕНИЕ А
(справочное)
ПРОВЕРОЧНЫЕ ПРИМЕРЫ
Заполнение узлов замены
А.1 Использование алгоритма ГОСТ 28147
В качестве шифрующего преобразования в приводимых ниже примерах используется алгоритм ГОСТ 28147 в режиме простой замены.
При этом заполнение узлов замены
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | |
|
|
|
|
|
|
|
|
|
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 |
Осуществляют зашифрование 64-битных подслов блока
Блок
Блок
Блок
Блок
Получают
= | 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. Пусть необходимо выполнить хэширование сообщения
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 |
Текст документа сверен по:
М.: Издательство стандартов, 1994