ГОСТ Р 34.11-2012 Информационная технология (ИТ). Криптографическая защита информации. Функция хэширования.

 

ГОСТ Р 34.11-2012

 

Группа П85

 

      

     

НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

 

 

 Информационная технология

 

 КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ

 

 Функция хэширования

 

 Information technology. Cryptographic data security. Hash-function

ОКС 35.040

ОКСТУ 5002

Дата введения 2013-01-01

 

      

     

Предисловие

Цели и принципы стандартизации в Российской Федерации установлены Федеральным законом от 27 декабря 2002 г. N 184-ФЗ "О техническом регулировании", а правила применения национальных стандартов Российской Федерации - ГОСТ Р 1.0-2004 "Стандартизация в Российской Федерации. Основные положения"

 

Сведения о стандарте

 

1 РАЗРАБОТАН Центром защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества "Информационные технологии и коммуникационные системы" (ОАО "ИнфоТеКС")

 

2 ВНЕСЕН Техническим комитетом по стандартизации ТК 26 "Криптографическая защита информации"

 

3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 7 августа 2012 г. N 216-ст

 

4 ВЗАМЕН ГОСТ Р 34.11-94

 

Информация об изменениях к настоящему стандарту публикуется в ежегодно издаваемом информационном указателе "Национальные стандарты", а текст изменений и поправок - в ежемесячно издаваемых информационных указателях "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячно издаваемом информационном указателе "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет

 

ВНЕСЕНА поправка, опубликованная в ИУС N 6, 2018 год      

 

 

 Введение

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

 

Стандарт разработан взамен ГОСТ Р 34.11-94. Необходимость разработки настоящего стандарта вызвана потребностью в создании хэш-функции, соответствующей современным требованиям к криптографической стойкости и требованиям стандарта ГОСТ Р 34.10-2012 к электронной цифровой подписи.

 

Настоящий стандарт терминологически и концептуально увязан с международными стандартами ИСО 2382-2 [1], ИСО/МЭК 9796 [2-3], серии ИСО/МЭК 14888 [4-7] и серии ИСО/МЭК 10118 [8-11].*

 

Примечание - Основная часть стандарта дополнена одним приложением:

 

Приложение А (справочное) Контрольные примеры.

 

 

      1 Область применения

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

 

Определенная в настоящем стандарте функция хэширования используется при реализации систем электронной цифровой подписи на базе асимметричного криптографического алгоритма по ГОСТ Р 34.10-2012.

 

Стандарт рекомендуется использовать при создании, эксплуатации и модернизации систем обработки информации различного назначения.

 

 

      2 Нормативные ссылки

В настоящем стандарте использованы нормативные ссылки на следующие стандарты:

 

ГОСТ Р 34.10-2012 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи

 

Примечание - При пользовании настоящим стандартом целесообразно проверить действие ссылочных стандартов в информационной системе общего пользования - на официальном сайте Федерального агентства Российской Федерации по техническому регулированию и метрологии в сети Интернет или по ежегодно издаваемому информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по соответствующим ежемесячно издаваемым информационным указателям, опубликованным в текущем году. Если ссылочный стандарт заменен (изменен), то при пользовании настоящим стандартом следует руководствоваться заменяющим (измененным) стандартом. Если ссылочный стандарт отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.

 

 

      3 Термины, определения и обозначения

В настоящем стандарте применены следующие термины с соответствующими определениями.

 

 

      3.1 Термины и определения

3.1.1

 

 

заполнение (padding): Приписывание дополнительных бит к строке бит.

 

 

[ИСО/МЭК 10118-1, статья 3.9]

 

3.1.2

 

 

инициализационный вектор (initializing value): Вектор, определенный как начальная точка работы функции хэширования.

 

 

[ИСО/МЭК 10118-1, статья 3.7]

 

3.1.3

 

 

сообщение (message): Строка бит произвольной конечной длины.

 

 

[ИСО/МЭК 14888-1, статья 3.10]

 

3.1.4

 

 

функция сжатия
(round-function): Итеративно используемая функция, преобразующая строку бит длиной
и полученную на предыдущем шаге строку бит длиной
в строку бит длиной
.
 

[ИСО/МЭК 10118-1, статья 3.10]

 

Примечание - В настоящем стандарте понятия "строка бит длиной
" и "двоичный вектор-строка размерности
" считаются тождественными.
 

3.1.5

 

 

хэш-код (hash-code): Строка бит, являющаяся выходным результатом хэш-функции.

 

 

[ИСО/МЭК 14888-1, статья 3.6]

 

3.1.6

 

 

хэш-функция (collision-resistant hash-function): Функция, отображающая строки бит в строки бит фиксированной длины и удовлетворяющая следующим свойствам:

 

 

1) по данному значению функции сложно вычислить исходные данные, отображаемые в это значение;

 

 

2) для заданных исходных данных сложно вычислить другие исходные данные, отображаемые в то же значение функции;

 

 

3) сложно вычислить какую-либо пару исходных данных, отображаемых в одно и то же значение.

 

 

[ИСО/МЭК 14888-1, статьи 3.2, 3.7]

 

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

 

3.1.7

 

 

электронная цифровая подпись (signature); ЭЦП: Строка бит, полученная в результате процесса формирования подписи.

 

 

[ИСО/МЭК 14888-1, статья 3.12]

 

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

 

 

      3.2 Обозначения

В настоящем стандарте используются следующие обозначения:

 

 

 

*
 

множество всех двоичных векторов-строк конечной размерности (далее - векторы), включая пустую строку;

 
размерность (число компонент) вектора
* (если
- пустая строка, то
0);
 
 
множество всех
-мерных двоичных векторов, где
- целое неотрицательное число; нумерация подвекторов и компонент вектора осуществляется справа налево, начиная с нуля;
 
 

операция покомпонентного сложения по модулю 2 двух двоичных векторов одинаковой размерности;

 
конкатенация векторов
,
*, т.е. вектор из
, в котором левый подвектор из
, совпадает с вектором
, а правый подвектор из
совпадает с вектором
;
 
 
конкатенация
экземпляров вектора
;
 
 

     

кольцо вычетов по модулю 2
;
 
 
операция сложения в кольце
;
 
 

     

биективное отображение, сопоставляющее элементу кольца
его двоичное представление, т.е. для любого элемента
кольца
, представленного вычетом
, где
,
0, ...,
, выполнено равенство
;
 
 
отображение, обратное отображению
, т.е.
;
 
 
отображение, ставящее в соответствие вектору
,
, вектор
;
 
 
операция присваивания переменной
значения
;
 
 
произведение отображений, при котором отображение
действует первым;
 
 
двоичный вектор, подлежащий хэшированию,
*,
;
 
 
функция хэширования, отображающая вектор (сообщение)
в вектор (хэш-код)
;
 
 
инициализационный вектор функции хэширования,
.
 

 

 

      4 Общие положения

Настоящий стандарт определяет две функции хэширования
с длинами хэш-кода
512 бит и
256 бит.
 

      5 Значения параметров

 

 

      5.1 Инициализационные векторы

Значение инициализационного вектора
для функции хэширования с длиной хэш-кода 512 бит равно 0
. Значение инициализационного вектора
для функции хэширования с длиной хэш-кода 256 бит равно (00000001 )
.
 

      5.2 Нелинейное биективное преобразование множества двоичных векторов

Нелинейное биективное преобразование множества двоичных векторов
задается подстановкой
 
,                                            (1)
 
где
.
 
Значения подстановки
записаны ниже в виде массива
:
 
(252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, 77, 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, 95, 193, 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, 1, 142, 79, 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, 127, 212, 211, 31, 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, 162, 253, 58, 206, 204, 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, 19, 71, 156, 183, 93, 135, 21, 161, 150, 41, 16, 123, 154, 199, 243, 145, 120, 111, 157, 158, 178, 177, 50, 117, 25, 61, 255, 53, 138, 126, 109, 84, 198, 128, 195, 189, 13, 87, 223, 245, 36, 169, 62, 168, 67, 201, 215, 121, 214, 246, 124, 34, 185, 3, 224, 15, 236, 222, 122, 148, 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, 167, 151, 96, 115, 30, 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, 173, 69, 70, 146, 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, 7, 88, 179, 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, 225, 27, 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, 32, 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, 182).
 

      5.3 Перестановка байт

Значения перестановки
, заданной на множестве {0, ..., 63}, записаны ниже в виде массива
:
 
(0, 8, 16, 24, 32, 40, 48, 56, 1,9, 17, 25, 33, 41, 49, 57, 2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59, 4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61, 6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63).
 

      5.4 Линейное преобразование множества двоичных векторов

Линейное преобразование
множества двоичных векторов
задается умножением справа на матрицу
над полем
, строки которой записаны ниже последовательно в шестнадцатеричном виде. Строка матрицы с номером
,
0,...,63, записанная в виде
, где
,
0,...,15, есть
.
 
 

           

Здесь в одной строке записаны четыре строки матрицы
, при этом в строке с номером
,
0,...,15, записаны строки матрицы
с номерами
,
0,...,3, в следующем порядке (слева направо):
 
,
,
,
.
 
Результат умножения вектора
на матрицу
есть вектор
:
 
, (2)
 
где
 
для всех
0,...,63.
 

      5.5 Итерационные константы

Итерационные константы записаны в шестнадцатеричном виде. Значение константы, записанное в виде
, где
,
0,...,127, есть
:
 

           

 

          

 

      6 Преобразования

При вычислении хэш-кода
сообщения
* используются следующие преобразования:
 
,
,
,
;                    (3)
 

     

,
,           (4)
 
где
,
,
0, ..., 63;
 
,
,            (5)
 
где
,
,
0, …, 63;
 
,
,             (6)
 
где
,
,
0, ..., 7.
 

      7 Функция сжатия

Значение хэш-кода сообщения
* вычисляется с использованием итерационной процедуры. На каждой итерации вычисления хэш-кода используется функция сжатия:
 

,
,                                (7)
 

значение которой вычисляется по формуле

,                            (8)
 
где
.
 
Значения
,
1 ,...,13, вычисляются следующим образом:
 
;                                                         (9)
 

     

,
2, ..., 13.                               (10)
 
Для краткости вместо
будем использовать обозначение
.
 

      8 Процедура вычисления хэш-функции

Исходными данными для процедуры вычисления хэш-кода
является подлежащее хэшированию сообщение
* и
-инициализационный вектор.
 
Алгоритм вычисления функции
состоит из следующих этапов.
 

      8.1 Этап 1

Присвоить начальные значения текущих величин:

 

1.1
;
 
1.2
;
 
1.3
;
 

1.4 Перейти к этапу 2.

 

 

      8.2 Этап 2

2.1 Проверить условие
512.
 

При положительном исходе перейти к этапу 3.

 

В противном случае выполнить последовательность вычислений по 2.2-2.7.

 

2.2 Вычислить подвектор
сообщения
. Далее выполнить последовательность вычислений:
 
2.3
.
 
2.4
 
2.5
 
2.6
.
 

2.7 Перейти к шагу 2.1.

 

      8.3 Этап 3

3.1
.
 
3.2
.
 
3.3  
.
 
3.4
.
 

(Поправка. ИУС N 6-2018).     

3.5
.
 
3.6
 

3.7 Конец работы алгоритма

 

Значение величины
, полученное на шаге 3.6, является значением функции хэширования
.
 

Приложение А

(справочное)

 

      

Контрольные примеры

Данное приложение носит справочный характер и не является частью настоящего стандарта.

 

Векторы из
* записываются в шестнадцатеричном виде. Вектор
, записанный в виде
, где
,
0, ...,
, есть
.
 

А.1 Пример 1

 

Необходимо вычислить хэш-код сообщения

 

 

А.1.1 Для функции хэширования с длиной хэш-кода 512 бит

 

Присваиваются значения:

 

;
 

     

;
 

     

.
 
Длина сообщения
, поэтому происходит заполнение неполного блока:
 
 

          

Вычисляется значение
.
 
После преобразования
:
 
 

           

Затем выполняется преобразование
:
 

Итерация 1

 

 

           

 

           

Итерация 2

 

 

Итерация 3

 

 

Итерация 4

 

 

Итерация 5

 

 

Итерация 6    

 

 

Итерация 7

 

 

Итерация 8

 

 

Итерация 9

 

 

Итерация 10

 

 

Итерация 11

 

 

Итерация 12

 

 

Итерация 13

 

 
Результат выполнения преобразования
:
 
 

           

Изменяются значения переменных
и
:
 
 

           

Результат выполнения преобразования
:
 
 

           

Результат выполнения преобразования
:
 
 

           

Хэш-кодом сообщения
является значение
 
 

           

A.1.2 Для функции хэширования с длиной хэш-кода 256 бит

 

Присваиваются значения:

 

;
 

     

;
 

     

.
 
Длина сообщения
, поэтому происходит заполнение неполного блока:     
 
 

                

Вычисляется значение
.
 
После преобразования
:
 
 

           

   после преобразования
:
 
 

           

Затем выполняется преобразование
:
 

Итерация 1

 

 

           

Итерация 2

 

 

Итерация 3

 

 

           

Итерация 4

 

 

           

Итерация 5

 

 

           

Итерация 6

 

 

           

Итерация 7

 

 

           

Итерация 8

 

 

           

Итерация 9

 

 

           

Итерация 10

 

 

           

Итерация 11

 

 

           

Итерация 12

 

 

           

Итерация 13

 

 

           

Результат выполнения преобразования
:
 
 

           

Изменяются значения переменных
и
:
 
 

           

Результат выполнения преобразования
:
 
 

           

Результат выполнения преобразования
:
 
 

           

Хэш-кодом сообщения
является значение:
 
 

           

A.2 Пример 2

 

Пусть необходимо вычислить хэш-код сообщения

 

 

           

А.2.1 Для функции хэширования с длиной хэш-кода 512 бит

 

Присваиваются значения:

 

;
 

     

;
 

     

.
 
Длина сообщения
, поэтому сначала преобразуется часть сообщения
 
 

           

Вычисляется значение
.
 
После преобразования
:
 
 

           

после преобразования
:
 
 
после преобразования
:
 
 
Затем выполняется преобразование
:
 

Итерация 1

 

 
 

                

Итерация 2

 

 

           

Итерация 3

 

 

           

Итерация 4

 

 

           

Итерация 5

 

 

           

Итерация 6

 

 

           

Итерация 7

 
 

               

Итерация 8

 

 

           

Итерация 9

 

 

           

Итерация 10

 

 

           

Итерация 11

 

 

                

Итерация 12

 

 

           

Итерация 13

 

 

           

Результат выполнения преобразования
:
 
 

           

Изменяются значения переменных
и
:
 
 

           

Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока.

 

 

           

Результат выполнения преобразования
:
 
 

           

Изменяются значения переменных
и
:
 
 

           

Результат выполнения преобразования
:
 
 

           

Результат выполнения преобразования
:
 
 

           

Хэш-кодом сообщения
является значение:
 
 

           

A.2.2 Для функции хэширования с длиной хэш-кода 256 бит

 

Присваиваются значения:

 

;
 

     

;
 

     

.
 
Длина сообщения
, поэтому сначала преобразуется часть сообщения
 
 

           

Вычисляется значение
.
 
После преобразования
:
 
 
после преобразования
:
 
 
после преобразования
:
 
 

           

Затем выполняется преобразование
:
 

Итерация 1

 

 

          

 

            

Итерация 2

 

 

           

Итерация 3

 

 

           

Итерация 4

 

 

           

Итерация 5

 

 

           

Итерация 6

 

 

           

Итерация 7

 

 

           

Итерация 8

 

 

           

Итерация 9

 

 
 

           

Итерация 10

 

 

           

Итерация 11

 

 

           

Итерация 12

 

 

           

Итерация 13

 

 

           

Результат выполнения преобразования
:
 
 

           

Изменяются значения переменных
и
:
 
 

           

Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока:

 

 

           

Результат выполнения преобразования
:
 
 

           

Изменяются значения переменных
и
:
 
 

           

Результат выполнения преобразования
:
 
 

           

Результат выполнения преобразования
:
 
 

           

Хэш-кодом сообщения
является значение:
 
 

 Библиография*

_______________

* Оригиналы международных стандартов ИСО/МЭК находятся во ФГУП "Стандартинформ" Федерального агентства по техническому регулированию и метрологии.

 

 

 

 

[1]

ИСО 2382-2:1976

(ISO 2382-2:1976)

Системы обработки информации. Словарь. Часть 2. Арифметические и логические операции (Data processing - Vocabulary - Part 2: Arithmetic and logic operations)

[2]

ИСО/МЭК 9796-2:2010

(ISO/IEC 9796-2:2010)

Информационные технологии. Методы обеспечения безопасности. Схемы цифровой подписи, обеспечивающие восстановление сообщений. Часть 2. Механизмы на основе целочисленной факторизации (Information technology - Security techniques - Digital signatures with appendix - Part 2: Integer factorization based mechanisms)

[3]

ИСО/МЭК 9796-3:2006

(ISO/IEC 9796-3:2006)

Информационные технологии. Методы обеспечения безопасности. Схемы цифровой подписи, обеспечивающие восстановление сообщений. Часть 3. Механизмы на основе дискретного логарифма (Information technology - Security techniques - Digital signature schemes giving message recovery - Part 3: Discrete logarithm based mechanisms)

[4]

ИСО/МЭК 14888-1:2008

(ISO/IEC 14888-1:2008)

Информационные технологии. Методы защиты. Цифровые подписи с приложением. Часть 1. Общие положения (Information technology - Security techniques - Digital signatures with appendix - Part 1: General)

[5]

ИСО/МЭК 14888-2:2008

(ISO/IEC 14888-2:2008)

Информационные технологии. Методы защиты. Цифровые подписи с приложением. Часть 2. Механизмы, основанные на разложении на множители (Information technology - Security techniques - Digital signatures with appendix - Part 2: Integer factorization based mechanisms)

[6]

ИСО/МЭК 14888-3:2006

(ISO/IEC 14888-3:2006)

Информационные технологии. Методы защиты. Цифровые подписи с приложением. Часть 3. Механизмы на основе дискретного логарифма (Information technology - Security techniques - Digital signatures with appendix - Part 3: Discrete logarithm based mechanisms)

[7]

ИСО/МЭК 14888-3:2006/Изм. 1:2010

(ISO/IEC 14888-3:2006/Amd 1:2010)

Информационные технологии. Методы защиты. Цифровые подписи с приложением. Часть 3. Механизмы на основе дискретного логарифма. Изменение 1. Алгоритм русской цифровой подписи эллиптической кривой, алгоритм цифровой подписи Шнорра, алгоритм цифровой подписи Шнорра для эллиптической кривой, и полный алгоритм цифровой подписи Шнорра для эллиптической кривой (Information technology - Security techniques - Digital signatures with appendix - Part 3: Discrete logarithm based mechanisms. Amendment 1. Elliptic Curve Russian Digital Signature Algorithm, Schnorr Digital Signature Algorithm, Elliptic Curve Schnorr Digital Signature Algorithm, and Elliptic Curve Full Schnorr Digital Signature Algorithm)

[8]

ИСО/МЭК 10118-1:2000

(ISO/IEC 10118-1:2000)

Информационные технологии. Методы защиты информации. Хэш-функции. Часть 1. Общие положения (Information technology - Security techniques - Hash-functions - Part 1: General)

[9]

ИСО/МЭК 10118-2:2010

(ISO/IEC 10118-2:2010)

Информационные технологии. Методы защиты информации. Хэш-функции. Часть 2. Хэш-функции с использованием алгоритма шифрования
-битными блоками (Information technology - Security techniques - Hash-functions - Part 2: Hash-functions using an
-bit block cipher)
 

[10]

ИСО/МЭК 10118-3:2004

(ISO/IEC 10118-3:2004)

Информационные технологии. Методы защиты информации. Хэш-функции. Часть 3. Выделенные хэш-функции (Information technology - Security techniques - Hash-functions - Part 3: Dedicated hash-functions)

[11]

ИСО/МЭК 10118-4:1998

(ISO/IEC 10118-4:1998)

Информационные технологии. Методы защиты информации. Хэш-функции. Часть 4. Хэш-функции с применением арифметики в остаточных классах (Information technology - Security techniques - Hash-functions - Part 4: Hash-functions using modular arithmetic)

 

Чат GPT

Вверх