Купить систему ГАРАНТ Получить демо-доступ Узнать стоимость Информационный банк Подобрать комплект Семинары

Национальный стандарт РФ ГОСТ Р 34.11-2012 "Информационная технология. Криптографическая защита информации. Функция хэширования" (утв. приказом Федерального агентства по техническому регулированию и метрологии от 7 августа 2012 г. N 216-ст)

Введение

 

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

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

 

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

 

V*

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

|A|

размерность (число компонент) вектора (если А - пустая строка, то |А| = 0);

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

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

A||B

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

конкатенация n экземпляров вектора А;

кольцо вычетов по модулю ;

 

/---\
|-+-|         операция сложения в кольце Z   ;
\---/                                     2n

 

биективное отображение, сопоставляющее элементу кольца его двоичное представление, т.е. для любого элемента z кольца , представленного вычетом , где , j = 0, ..., n - 1, выполнено равенство ;

отображение, обратное отображению , т.е. ;

отображение, ставящее в соответствие вектору , , вектор ;

a: = b

операция присваивания переменной а значения b;

произведение отображений, при котором отображение действует первым;

М

двоичный вектор, подлежащий хэшированию, , ;

функция хэширования, отображающая вектор (сообщение) М в вектор (хэш-код) Н(М);

IV

инициализационный вектор функции хэширования, .

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

 

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

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

 

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

 

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

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 Линейное преобразование множества двоичных векторов

 

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

 

8e20faa72ba0b470

47107ddd9b505a38

ad08b0e0c3282d1c

d8045870ef14980e

6c022c38f90a4c07

3601161cf205268d

1b8e0b0e798c13c8

83478b07b2468764

a011d380818e8f40

5086e740ce47c920

2843fd2067adea10

14aff010bdd87508

0ad97808d06cb404

05e23c0468365a02

8c711e02341b2d01

46b60f011a83988e

90dab52a387ae76f

486dd4151c3dfdb9

24b86a840e90f0d2

125c354207487869

092e94218d243cba

8a174a9ec8121e5d

4585254f64090fa0

accc9ca9328a8950

9d4df05d5f661451

c0a878a0a1330aa6

60543c50de970553

302a1e286fc58ca7

18150f14b9ec46dd

0c84890ad27623e0

0642ca05693b9f70

0321658cba93c138

86275df09ce8aaa8

439da0784e745554

afc0503c273aa42a

d960281e9d1d5215

e230140fc0802984

71180a8960409a42

b60c05ca30204d21

5b068c651810a89e

456c34887a3805b9

ac361a443d1c8cd2

561b0d22900e4669

2b838811480723ba

9bcf4486248d9f5d

c3e9224312c8c1a0

effa11af0964ee50

f97d86d98a327728

e4fa2054a80b329c

727d102a548b194e

39b008152acb8227

9258048415eb419d

492c024284fbaec0

aa16012142f35760

550b8e9e21f7a530

a48b474f9ef5dc18

70a6a56e2440598e

3853dc371220a247

1ca76e95091051ad

0edd37c48a08a6d8

07e095624504536c

8d70c431ac02a736

c83862965601dd1b

641c314b2b8ee083

 

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

4i + 0, 4i + 1, 4i + 2, 4i + 3.

 

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

 

, (2)

 

где

 

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

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

 

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

 = b1085bda1ecadae9ebcb2f81c0657c1f2f6a76432e45d016714eb88d7585c4fc 4b7ce09192676901a2422a08a460d31505767436cc744d23dd806559f2a64507;

 = 6fa3b58aa99d2f1a4fe39d460f70b5d7f3feea720a232b9861d55e0f16b50131 9ab5176b12d699585cb561c2db0aa7ca55dda21bd7cbcd56e679047021b19bb7;

 = f574dcac2bce2fc70a39fc286a3d843506f15e5f529c1f8bf2ea7514b1297b7b d3e20fe490359eb1c1с93a376062db09c2b6f443867adb31991e96f50aba0ab2;

 = ef1fdfb3e81566d2f948e1a05d71e4dd488e857e335c3c7d9d721cad685e353f a9d72c82ed03d675d8b71333935203be3453eaa193e837f1220cbebc84e3d12e;

 = 4bea6bacad4747999a3f410c6ca923637f151c1f1686104a359e35d7800fffbd bfcd1747253af5a3dfff00b723271a167a56a27ea9ea63f5601758fd7c6cfe57;

 = ae4faeae1d3ad3d96fa4c33b7a3039c02d66c4f95142a46c187f9ab49af08ec6 cffaa6b71c9ab7b40af21f66c2bec6b6bf71c57236904f35fa68407a46647d6e;

 = f4c70e16eeaac5ec51ac86febf240954399ec6c7e6bf87c9d3473e33197a93c9  0992abc52d822c3706476983284a05043517454ca23c4af38886564d3a14d493;

 = 9b1f5b424d93c9a703e7aa020c6e41414eb7f8719c36de1e89b4443b4ddbc49a f4892bcb929b069069d18d2bd1a5c42f36acc2355951a8d9a47f0dd4bf02e71e;

 = 378f5a541631229b944c9ad8ec165fde3a7d3a1b258942243cd955b7e00d0984 800a440bdbb2ceb17b2b8a9aa6079c540e38dc92cb1f2a607261445183235adb;

 = abbedea680056f52382ae548b2e4f3f38941e71cff8a78db1fffe18a1b336103 9fe76702af69334b7a1e6c303b7652f43698fad1153bb6c374b4c7fb98459ced;

 = 7bcd9ed0efc889fb3002c6cd635afe94d8fa6bbbebab07612001802114846679 8a1d71efea48b9caefbacd1d7d476e98dea2594ac06fd85d6bcaa4cd81f32d1b;

 = 378ee767f11631bad21380b00449b17acda43c32bcdf1d77f82012d430219f9b 5d80ef9d1891cc86e71da4aa88e12852faf417d5d9b21b9948bc924af11bd720.

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

 

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

 

, , ; (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 Процедура вычисления хэш-функции

 

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

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

 

8.1 Этап 1

 

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

1.1 h: = IV;

1.2 ;

1.3 ;

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

8.2 Этап 2

 

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

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

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

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

2.3 .

                               /---\
     2.4 N: = Vec    (lnt   (N)|-+-|512).
                 512     512   \---/
                                          /---\
     2.5 Sigma: =  Vec     (lnt    (Sigma)|-+-|lnt    (m)).
                      512     512         \---/   512

2.6 M: = M'.

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

8.3 Этап 3

 

3.1 .

3.2 .

                                /---\
     3.3 N: =  Vec    (lnt   (N)|-+-||M|).
                  512     512   \---/
                                        /---\
     3.4 Sigma: = Vec    (lnt    (Sigma)|-+-|lnt    |m|).
                     512     512        \---/   512

3.5 .

3.6

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

 

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

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

 

[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)

 

______________________________

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

Откройте актуальную версию документа прямо сейчас или получите полный доступ к системе ГАРАНТ на 3 дня бесплатно!

Получить доступ к системе ГАРАНТ

Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.


Национальный стандарт РФ ГОСТ Р 34.11-2012 "Информационная технология. Криптографическая защита информации. Функция хэширования" (утв. приказом Федерального агентства по техническому регулированию и метрологии от 7 августа 2012 г. N 216-ст)


Текст ГОСТа приводится по официальному изданию Стандартинформ, 2013 г.


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


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


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


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


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


Текст ГОСТа приводится с учетом поправки, опубликованной в ИУС "Национальные стандарты", 2018, N 6