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

(утв. Приказом Росстандарта от 07.08.2012 N 216-СТ)
Редакция от 07.08.2012 — Действует с 01.01.2013

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

ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ

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

ФУНКЦИЯ ХЭШИРОВАНИЯ

Information technology. Cryptographic data security. Hash-function

ГОСТ Р 34.11-2012

Дата введения
1 января 2013 года

Предисловие

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

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

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

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

3. Утвержден и введен в действие Приказом Федерального агентства по техническому регулированию и метрологии от 7 августа 2012 г. N 216-ст.

4. Взамен ГОСТ Р 34.11-94.

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

Введение

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

Стандарт разработан взамен ГОСТ Р 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]

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

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. Обозначения

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

множество всех двоичных векторов-строк конечной размерности (далее - векторы), включая пустую строку;
|A|размерность (число компонент) вектора (если A - пустая строка, то |A| = 0);
множество всех n-мерных двоичных векторов, где n - целое неотрицательное число; нумерация подвекторов и компонент вектора осуществляется справа налево, начиная с нуля;
операция покомпонентного сложения по модулю 2 двух двоичных векторов одинаковой размерности;
A||Bконкатенация векторов A, , т.е. вектор из в котором левый подвектор из совпадает с вектором A, а правый подвектор из совпадает с вектором B;
конкатенация n экземпляров вектора A;
кольцо вычетов по модулю ;
(операция сложения в кольце ;
биективное отображение, сопоставляющее элементу кольца его двоичное представление, т.е. для любого элемента z кольца , представленного вычетом , где , j = 0, ..., n - 1, выполнено равенство ;
отображение, обратное отображению , т.е. ;
отображение, ставящее в соответствие вектору , , вектор ;
a: = bоперация присваивания переменной a значения b;
произведение отображений, при котором отображение действует первым;
Mдвоичный вектор, подлежащий хэшированию, , ;
функция хэширования, отображающая вектор (сообщение) M в вектор (хэш-код) H(M);
IVинициализационный вектор функции хэширования, .

4. ОБЩИЕ ПОЛОЖЕНИЯ

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

5. ЗНАЧЕНИЯ ПАРАМЕТРОВ

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

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

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

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

, (1)

где .

Значения подстановки записаны ниже в виде массива :

.

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

Значения перестановки , заданной на множестве , записаны ниже в виде массива :

.

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

Линейное преобразование l множества двоичных векторов задается умножением справа на матрицу A над полем GF(2), строки которой записаны ниже последовательно в шестнадцатеричном виде. Строка матрицы с номером j, j = 0, ..., 63, записанная в виде , где , i = 0, ..., 15, есть .

8e20faa72ba0b47047107ddd9b505a38ad08b0e0c3282d1cd8045870ef14980e
6c022c38f90a4c073601161cf205268d1b8е0b0е798с13c883478b07b2468764
a011d380818e8f405086e740ce47c9202843fd2067adea1014aff010bdd87508
0ad97808d06cb40405e23c0468365a028c711e02341b2d0146b60f011a83988e
90dab52a387ae76f486dd4151c3dfdb924b86a840e90f0d2125c354207487869
092e94218d243cba8a174a9ec8121e5d4585254f64090fa0accc9ca9328a8950
9d4df05d5f661451c0a878a0a1330aa660543c50de970553302a1e286fc58ca7
18150f14b9ec46dd0c84890ad27623e00642ca05693b9f700321658cba93c138
86275df09ce8aaa8439da0784e745554afc0503c273aa42ad960281e9d1d5215
e230140fc080298471180a8960409a42b60c05ca30204d215b068c651810a89e
456c34887a3805b9ac361a443d1c8cd2561b0d22900e46692b838811480723ba
9bcf4486248d9f5dc3e9224312c8c1a0effa11af0964ee50f97d86d98a327728
e4fa2054a80b329c727d102a548b194e39b008152acb82279258048415eb419d
492c024284fbaec0aa16012142f35760550b8e9e21f7a530a48b474f9ef5dc18
70a6a56e2440598e3853dc371220a2471ca76e95091051ad0edd37c48a08a6d8
07e095624504536c8d70c431ac02a736c83862965601dd1b641c314b2b8ee083

Здесь в одной строке записаны четыре строки матрицы A, при этом в строке с номером i, i = 0, ..., 15, записаны строки матрицы A с номерами 4i + j, j = 0, ..., 3, в следующем порядке (слева направо):

.

Результат умножения вектора на матрицу A есть вектор :

, (2)
где

для всех i = 0, ..., 63.

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

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

6. ПРЕОБРАЗОВАНИЯ

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

, , k, ; (3)

, , (4)

где , , i = 0, ..., 63;

, , (5)

где , , i = 0, ..., 63;

, , (6)

где , , i = 0, ..., 7.

7. ФУНКЦИЯ СЖАТИЯ

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

, , (7)

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

, (8)

где .

Значения , i = 1 , ..., 13, вычисляются следующим образом:

; (9)

, i = 2, ..., 13. (10)

Для краткости вместо будем использовать обозначение .

8. ПРОЦЕДУРА ВЫЧИСЛЕНИЯ ХЭШ-ФУНКЦИИ

Исходными данными для процедуры вычисления хэш-кода H(M) является подлежащее хэшированию сообщение и .

Алгоритм вычисления функции H состоит из следующих этапов.

8.1. Этап 1

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

1.1. h := IV,

1.2. ;

1.3. ;

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

8.2. Этап 2

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

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

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

2.2. Вычислить подвектор сообщения M: M = M'||m. Далее выполнить последовательность вычислений:

2.3. .

2.4. .

2.5. .

2.6. M := M'.

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

8.3. Этап 3

3.1. .

3.2. .

3.3. .

3.4. .

3.5. .

3.6., для функции хэширования с длиной хэш-кода 512 бит;
 , для функции хэширования с длиной хэш-кода 256 бит.

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

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

Приложение А
(справочное)

КОНТРОЛЬНЫЕ ПРИМЕРЫ

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

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

А.1. Пример 1

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

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

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

;

;

.

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

Вычисляется значение .

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

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

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

Затем выполняется преобразование E (K, m):

Итерация 1   
         
         
        
         
        
         
        
         
        
         
        
         
        
         
        
         
        
         
Итерация 2
         
         
        
         
Итерация 3
         
         
        
         
Итерация 4
         
         
        
         
Итерация 5
         
         
        
         
Итерация 6
         
         
        
         
Итерация 7
         
         
        
         
Итерация 8
         
         
        
         
Итерация 9
         
         
        
         
Итерация 10
         
         
        
         
Итерация 11
         
         
        
         
Итерация 12
         
         
        
         
Итерация 13
         
         
        

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

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

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

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

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

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

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

;

;

.

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

Вычисляется значение .

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

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

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

Затем выполняется преобразование E (K, m):

Итерация 1   
         
         
        
         
        
         
        
         
        
         
        
         
        
         
        
         
        
         
Итерация 2
         
         
        
         
Итерация 3
         
         
        
         
Итерация 4
         
         
        
         
Итерация 5
         
         
        
         
Итерация 6
         
         
        
         
Итерация 7
         
         
        
         
Итерация 8
         
         
        
         
Итерация 9
         
         
        
         
Итерация 10
         
         
        
         
Итерация 11
         
         
        
         
Итерация 12
         
         
        
         
Итерация 13
         
         
        

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

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

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

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

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

А.2. Пример 2

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

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

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

;

;

.

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

Вычисляется значение .

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

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

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

Затем выполняется преобразование E (K, m):

Итерация 1   
         
         
        
         
        
         
        
         
        
         
        
         
        
         
        
         
        
         
Итерация 2
         
         
        
         
Итерация 3
         
         
        
         
Итерация 4
         
         
        
         
Итерация 5
         
         
        
         
Итерация 6
         
         
        
         
Итерация 7
         
         
        
         
Итерация 8
         
         
        
         
Итерация 9
         
         
        
         
Итерация 10
         
         
        
         
Итерация 11
         
         
        
         
Итерация 12
         
         
        
         
Итерация 13
         
         
        

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

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

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

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

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

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

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

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

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

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

;

;

.

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

Вычисляется значение .

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

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

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

Затем выполняется преобразование E (K, m):

Итерация 1   
         
         
        
         
        
         
        
         
        
         
        
         
        
         
        
         
        
         
Итерация 2
         
         
        
         
Итерация 3
         
         
        
         
Итерация 4
         
         
        
         
Итерация 5
         
         
        
         
Итерация 6
         
         
        
         
Итерация 7
         
         
        
         
Итерация 8
         
         
        
         
Итерация 9
         
         
        
         
Итерация 10
         
         
        
         
Итерация 11
         
         
        
         
Итерация 12
         
         
        
         
Итерация 13
         
         
        

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

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

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

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

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

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

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

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

БИБЛИОГРАФИЯ <*>

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

[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. Хэш-функции с использованием алгоритма шифрования n-битными блоками (Information technology - Security techniques - Hash-functions- Part 2: Hash-functions using an n-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)