ГОСТ Р 34.11-2012. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования
Актуально на 30.10.2026.
Как цитировать: "ГОСТ Р 34.11-2012. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования". ГОСТ Р 34.11-2012. https://bukva.ai/docs/gost-r-34-11-2012
(утв. и введен в действие Приказом Росстандарта от 07.08.2012 № 216-ст)
Примечание
Текст данного документа приведен с учетом поправки, опубликованной в «ИУС», № 6, 2018. Документ введен в действие с 1 января 2013 года. Взамен ГОСТ Р 34.11-94.
ИСТОРИЯ ИЗМЕНЕНИЙ НОРМАТИВНО-ТЕХНИЧЕСКИХ АКТОВ
flowchart LR n0["ГОСТ Р 34.11-94"]:::rst click n0 "https://bukva.ai/docs/standart-154" "ГОСТ Р 34.11-94. Государственный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования (принят и введен в действие Пост" n1["ГОСТ Р 34.11-2012"]:::doc click n1 "https://bukva.ai/docs/gost-r-34-11-2012" "ГОСТ Р 34.11-2012. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования (утв. и введен в действие Приказо" n0 --> n1 classDef rst fill:#FFEBEB,stroke:#8B0000,color:#000; classDef doc fill:#EBFFEB,stroke:#006400,color:#000; classDef notEnt fill:#FFFFEB,stroke:#FF8C00,color:#000;
Утвержден и введен в действие
Приказом Федерального агентства
по техническому регулированию
и метрологии
от 7 августа 2012 г. № 216-ст
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
Information technology. Cryptographic data security. Hash-function
Предисловие
Цели и принципы стандартизации в Российской Федерации установлены Федеральным законом от 27 декабря 2002 г. № 184-ФЗ «О техническом регулировании», а правила применения национальных стандартов Российской Федерации — ГОСТ Р 1.0-2004 «Стандартизация в Российской Федерации. Основные положения».
Сведения о стандарте
1. Разработан Центром защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества «Информационные технологии и коммуникационные системы» (ОАО «ИнфоТеКС»).
2. Внесен Техническим комитетом по стандартизации ТК 26 «Криптографическая защита информации».
3. Утвержден и введен в действие Приказом Федерального агентства по техническому регулированию и метрологии от 7 августа 2012 г. № 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 Термины и определения
| Заполнение (padding): приписывание дополнительных бит к строке бит. |
|---|
| [ИСО/МЭК 10118-1, статья 3.9] |
| Инициализационный вектор (initializing value): вектор, определенный как начальная точка работы функции хэширования. |
|---|
| [ИСО/МЭК 10118-1, статья 3.7] |
| Сообщение (message): строка бит произвольной конечной длины. |
|---|
| [ИСО/МЭК 14888-1, статья 3.10] |
Примечание. В настоящем стандарте понятия «строка бит длиной L» и «двоичный вектор-строка размерности L» считаются тождественными.
| Хэш-код (hash-code): строка бит, являющаяся выходным результатом хэш-функции. |
|---|
| [ИСО/МЭК 14888-1, статья 3.6] |
Примечание. В настоящем стандарте в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины «хэш-функция», «криптографическая хэш-функция», «функция хэширования» и «криптографическая функция хэширования» являются синонимами.
| Электронная цифровая подпись (signature); ЭЦП: строка бит, полученная в результате процесса формирования подписи. |
|---|
| [ИСО/МЭК 14888-1, статья 3.12] |
Примечание. В настоящем стандарте в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины «электронная подпись», «цифровая подпись» и «электронная цифровая подпись» являются синонимами.
3.2 Обозначения
В настоящем стандарте используются следующие обозначения:
4. ОБЩИЕ ПОЛОЖЕНИЯ
Настоящий стандарт определяет две функции хэширования H:V^{*} \rightarrow V_{n} с длинами хэш-кода n = 512 бит и n = 256 бит.
5. ЗНАЧЕНИЯ ПАРАМЕТРОВ
5.1 Инициализационные векторы
Значение инициализационного вектора IV для функции хэширования с длиной хэш-кода 512 бит равно 0^{512} . Значение инициализационного вектора IV для функции хэширования с длиной хэш-кода 256 бит равно (00000001)^{64} .
5.2 Нелинейное биективное преобразование множества двоичных векторов
где \pi':\mathbb{Z}_{2^{8}} \rightarrow \mathbb{Z}_{2^{8}} .
5.3 Перестановка байт
Значения перестановки \tau , заданной на множестве {0, ..., 63}, записаны ниже в виде массива \tau = (\tau(0),\tau(1),...,\tau(63)) :
5.4 Линейное преобразование множества двоичных векторов
Линейное преобразование l множества двоичных векторов V_{64} задается умножением справа на матрицу A над полем GF(2), строки которой записаны ниже последовательно в шестнадцатеричном виде. Строка матрицы с номером j, j = 0, ..., 63, записанная в виде a_{j,15}...a_{j,0} , где a_{j,i} \in \mathbb{Z}_{16} , i = 0, ..., 15, есть Vec_{4}(a_{j,15})||...||Vec_{4}(a_{j,0}) .
Здесь в одной строке записаны четыре строки матрицы A, при этом в строке с номером i, i = 0, ..., 15, записаны строки матрицы A с номерами 4i + j, j = 0, ..., 3, в следующем порядке (слева направо):
Результат умножения вектора b = b_{63}...b_{0} \in V_{64} на матрицу A есть вектор c \in V_{64} :
c = b_{63}(Vec_{4}(a_{0,15})||...||Vec_{4}(a_{0,0}))...b_{0}(Vec_{4}(a_{63,15})||...||Vec_{4}(a_{63,0})),(2)
5.5 Итерационные константы
Итерационные константы записаны в шестнадцатеричном виде. Значение константы, записанное в виде a_{127}...a_{0} , где a_{i} \in \mathbb{Z}_{16} , i = 0, ..., 127, есть Vec_{4}(a_{127})||...||Vec_{4}(a_{0}) :
6. ПРЕОБРАЗОВАНИЯ
При вычислении хэш-кода H(M) сообщения M \in V^{*} используются следующие преобразования:
X[k]:V_{512} \rightarrow V_{512} , $Xk = ka$ , k, a \in V_{512};(3)
S:V_{512} \rightarrow V_{512} , S(a) = S(a_{63}||...||a_{0}) = \pi(a_{63}||...||\pi(a_{0}),(4)
где a = a_{63}||...||a_{0} \in V_{512} , a_{i} \in V_{8} , i = 0, ..., 63;
P:V_{512} \rightarrow V_{512} , P(a) = P(a_{63}||...||a_{0}) = a_{\tau(63)}||...||a_{\tau(0)},(5)
L:V_{512} \rightarrow V_{512} , L(a) = L(a_{7}||...||a_{0}) = l(a_{7})||...||l(a_{0}),(6)
где a = a_{7}||...||a_{0} \in V_{512} , a_{i} \in V_{64} , i = 0, ..., 7.
7. ФУНКЦИЯ СЖАТИЯ
Значение хэш-кода сообщения M \in V^{*} вычисляется с использованием итерационной процедуры. На каждой итерации вычисления хэш-кода используется функция сжатия:
значение которой вычисляется по формуле
g_{N}(h,m) = E(LSP(hN),m)hm,(8)
где $E(K,m) = X[K_{13}]LPSX[K_{12}]...LPSX[K_{2}]LPSXK_{1}$ .
Для краткости вместо g_{0^{512}} будем использовать обозначение g_{0} .
8. ПРОЦЕДУРА ВЫЧИСЛЕНИЯ ХЭШ-ФУНКЦИИ
Исходными данными для процедуры вычисления хэш-кода H(M) является подлежащее хэшированию сообщение M \in V^{*} и IV \in V_{512} - \text{инициализаторный вектор} .
8.1 Этап 1
1.3. \sum : = 0^{512} \in V_{512} ;
1.4 Перейти к этапу 2.
8.2 Этап 2
2.1 Проверить условие |M| < 512.
При положительном исходе перейти к этапу 3.
В противном случае выполнить последовательность вычислений по 2.2 - 2.7.
2.2 Вычислить подвектор m \in V_{512} сообщения M: M = M'||m. Далее выполнить последовательность вычислений:
2.5. \sum : = Vec_{512}(Int_{512}(\sum)(Int_{512}(m)) .
2.6 M := M'.
2.7 Перейти к шагу 2.1.
8.3 Этап 3
3.3. N: = Vec_{512}(Int_{512}(N)(|M|) .
3.4. \sum : = Vec_{512}(Int_{512}(\sum)(Int_{512}(m)) .
3.7 Конец работы алгоритма
Значение величины h, полученное на шаге 3.6, является значением функции хэширования H(M).
Данное Приложение носит справочный характер и не является частью настоящего стандарта.
Векторы из V^{*} записываются в шестнадцатеричном виде. Вектор A \in V_{4n} , записанный в виде a_{n - 1}...a_{0} , где a_{i} \in \mathbb{Z}_{16} , i = 0, ..., n — 1, есть Vec_{4}(a_{n - 1})||...||Vec_{4}(a_{0}) .
А.1.1. Для функции хэширования с длиной хэш-кода 512 бит
Длина сообщения |M_{1}| = 504<512 , поэтому происходит заполнение неполного блока:
73635343332313039383736353433323130393837363534333
2313039383736353433323130.
Вычисляется значение K: = LPS(hN) = LPS(0^{512}) .
Затем выполняется преобразование E (K, m):
Результат выполнения преобразования g_{N}(h,m) :
h = fd102cf8812ccb1191ea34af21394f3817a86641445aa9a626488
adb33738ebd2754f6908cbbbac5d3ed0f522c50815c954135793fb1f5
d905fee4736b3bdae2.
Изменяются значения переменных № и \sum :
N = 00000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000
000000000000000001f8,
Результат выполнения преобразования g_{0}(h,N) :
h = 5c881fd924695cf196c2e4fec20d14b642026f2a0b1716
ebaabb7067d4d597523d2db69d6d3794622147a14f19a66e7f9037e1d
662d34501a8901a5de7771d7c.
a7b76f830ad00fa1fbae42b1285c0352f227524bc9ab16254288dd6863
А.1.2. Для функции хэширования с длиной хэш-кода 256 бит
Длина сообщения |M_{1}| = 504<512 , поэтому происходит заполнение неполного блока:
m: = 013231303938373635343332313039383736353433323130
3938373635343332313039383736353433323130393837363534333
2313039383736353433323130.
Результат выполнения преобразования g_{N}(h,m) :
h = e3bbadbf78af3264c9137127608aa510de90ba4d3075665844965
fb611dbb1998d48552a0c0ce6bcba71bc802a4f5b2d2a07b12c22e
25794178570341096fdc7.
Изменяются значения переменных № и \sum :
N = 0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
000000000000000001f8,
Результат выполнения преобразования g_{0}(h,N) :
h = 70f22bada4cfe18a6a56ec4b3f328cd40db8e1bf8a9d5f711d5 efab11191279d715aab7648d07eddbf87dc79c80516e6ffcbcf5678 b0ac29ea00fa85c8173cc6.
Результат выполнения преобразования g_{0}(h, \sum) :
h = 00557be5e584fd52a449b16b0251d05d27f94ab76cbaa6da890b59 d8ef1e159d2088e482e2acf564e0e9795a51e4dd261f3f667985a2 fcc40ac8631faca1709a.
Хэш-кодом сообщения M_{1} является значение:
H(M_{1}) = 00557be5e584fd52a449b16b0251d05d27f94ab76cbaa6da890b59d8ef1\text{е}159d.
Пусть необходимо вычислить хэш-код сообщения
Длина сообщения |M_{2}| = 576>512 , поэтому сначала преобразуется часть сообщения
fff0eeec20f120faf2fee5e2202ce8f6f3ede220e8e6eee1e8f0f2d
Результат выполнения преобразования g_{N}(h,m) :
h = cd7f602312faa465e3bb4ccd9795395de2914e938f10f8e127b
7ac459b0c517b98ef779ef7c7a46aa7843b8889731f482e5d221e8
e2cea852e816cdac407c7af.
Изменяются значения переменных № и \sum :
N = 000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
00000000000000000200,
Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока.
m: = 000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000
1fbe2e5f0eee3c820.
Результат выполнения преобразования g_{N}(h,m) :
07818095f1df70661e8b84d0706811cf92dffb8f96e61493 dc382795c6ed7a17b64685902cbdc878e.
Изменяются значения переменных № и \sum :
N = 00000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000
0000000000000240,
Результат выполнения преобразования g_{0}(h,N) :
h = 4deb6649ffa5caf4163d9d3f9967fbbd6eb3da68f916b6a09f41
f2518b81292b703dc5d74e1ace5bcd3458af43bb456e837326088
f2b5df14bf83997a0b1ad8d.
Результат выполнения преобразования g_{0}(h, \sum) :
h = 28fbc9bada033b1460642bdcddb90c3fb3e56c497ccd0f62b8a2
ad4935e85f037613966de4ee00531ae60f3b5a47f8dae06915d5
f2f194996fcabf2622e6881e.
Хэш-кодом сообщения M_{2} является значение:
А.2.2. Для функции хэширования с длиной хэш-кода 256 бит
Длина сообщения |M_{2}| = 576>512 , поэтому сначала преобразуется часть сообщения
m: = fbeafaebef20fffbf0e1e0f0f520e0ed20e8ece0ebe5f0f2f120
fff0eeec20f120faf2fee5e2202ce8f6f3ede220e8e6eee1e8f0f2
d1202ce8f0f2e5e220e5d1.
Вычисляется значение K: = LPS(hN) = LPS((00000001)^{64}) .
Затем выполняется преобразование E (K, m):
Результат выполнения преобразования g_{N}(h,m) :
h = 203cc15dd55fcaa5b7a3bd98fb2408a67d5b9f33a80bb50540852
b204265a2c1aaca5efe1d8d51b2e1636e34f5becc077d930114
fefaf176b69c15ad8f2b6878.
Изменяются значения переменных № и \sum :
N = 0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000
0000000000000000000200,
Длина оставшейся части сообщения меньше 512, поэтому происходит заполнение неполного блока:
m = 000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
0001fbe2e5f0eee3c820.
Результат выполнения преобразования g_{N}(h,m) :
h = a69049e7bd076ab775bc2873af26f098c538b17e39a5c027
d532f0a2b3b56426c96b285fa297b9d39ae6afd8b9001d97bb718a65
fcc53c41b4ebf4991a617227.
Изменяются значения переменных № и \sum :
N = 0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
00000000000000000240,
Результат выполнения преобразования g_{0}(h,N) :
h = aee3bd55ea6f387bcf28c6dcbdbbfb3ddacc67dcc13dbd8d548
c6bf808111d4b75b8e74d2afae960835ae6a5f03575559c9fd839783
ffcd5cf99bd61566b4818.
Результат выполнения преобразования g_{0}(h, \sum) :
h = 508f7e553c06501d749a66fc28c6cac0b005746d97537fa85d9
e40904efed29dc345e53d7f84875d5068e4eb743f0793d673f09741f
9578471fb2598cb35c230.
Хэш-кодом сообщения M_{2} является значение:
H(M_{2}) = 508f7e553c06501d749a66fc28c6cac0b005746d97537fa85d9e40904efed29d.
<*> Оригиналы международных стандартов ИСО/МЭК находятся во ФГУП «Стандартинформ» Федерального агентства по техническому регулированию и метрологии.
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)
------------------------------------------------------------------











































































































































































