Товары в корзине: 0 шт Оформить заказ
Стр. 1 

15 страниц

304.00 ₽

Купить ГОСТ Р 34.12-2015 — бумажный документ с голограммой и синими печатями. подробнее

Распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль"

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

Способы доставки

  • Срочная курьерская доставка (1-3 дня)
  • Курьерская доставка (7 дней)
  • Самовывоз из московского офиса
  • Почта РФ

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

 Скачать PDF

Переиздание. Октябрь 2018 г.

Оглавление

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

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

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

4 Алгоритм блочного шифрования с длиной блока n = 128 бит

5 Алгоритм блочного шифрования с длиной блока n = 64 бит

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

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

 
Дата введения01.01.2016
Добавлен в базу01.02.2017
Актуализация01.01.2021

Этот ГОСТ находится в:

Организации:

19.06.2015УтвержденФедеральное агентство по техническому регулированию и метрологии749-ст
РазработанОАО ИнфоТеКС
ИзданСтандартинформ2016 г.
ИзданСтандартинформ2018 г.

Information technology. Cryptographic data security. Block ciphers

Стр. 1
стр. 1
Стр. 2
стр. 2
Стр. 3
стр. 3
Стр. 4
стр. 4
Стр. 5
стр. 5
Стр. 6
стр. 6
Стр. 7
стр. 7
Стр. 8
стр. 8
Стр. 9
стр. 9
Стр. 10
стр. 10
Стр. 11
стр. 11
Стр. 12
стр. 12
Стр. 13
стр. 13
Стр. 14
стр. 14
Стр. 15
стр. 15

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ

ГОСТР

34.12—

2015

НАЦИОНАЛЬНЫЙ

СТАНДАРТ

РОССИЙСКОЙ

ФЕДЕРАЦИИ

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

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

Блочные шифры

Издание официальное


Москва

Стандартинформ

2016


Предисловие

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

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

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

4    ВВЕДЕН ВПЕРВЫЕ

Правила применения настоящего стандарта установлены в ГОСТ Р 1.0-2012 (раздел 8). Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)

© Стандартинформ, 2016

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

А.1.4 Алгоритм развертывания ключа

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

К = 8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef.

К, = 8899aabbccddeeff0011223344556677,

К2 = fedcba98765432100123456789abcdef.

С-, = 6ea276726c487ab85d27bd10dd849401,

X[Ci](Ki) = e63bdcc9a09594475d369f2399d1f276,

SX[Ci](Ki) = 0998ca37a7947aabb78f4a5ae81b748a,

LSX[Ci](Ki) = 3d0940999db75d6a9257071d5e6144a6,

F[C1](/<1,/<2) =

= (c3d5fa01ebe36f7a9374427ad7ca8949, 8899aabbccddeeff0011223344556677).

C2 = dc87ece4d890f4b3ba4eb92079cbeb02,

F[C2]F[C,](K,:K2) =

= (37777748e56453377d5e262d90903f87, c3d5fa01 ebe36f7a9374427ad7ca8949).

C3 = b2259a96b4d88e0be7690430a44f7f03,

F[C3]...F[C1](/<1,/<2) =

= (f9eae5f29b2815e31 fl 1 ac5d9c29fb01, 37777748e56453377d5e262d90903f87).

C4 = 7bcd1b0b73e32ba5b79cb140f2551504,

F[C4]...F[C1](/<1,/<2) =

= (e980089683d00d4be37dd3434699b98f, f9eae5f29b2815e31 fl 1 ac5d9c29fb01).

C5 = 156f6d791 fab511 deabb0c502fd18105,

F[C5]...F[C1](/<1,/<2) =

= (b7bd70acea4460714f4ebe13835cf004, e980089683d00d4be37dd3434699b98f).

C6 = a74af7efab73df160dd208608b9efe06,

F[C6]...F[C1](/<1,/<2) =

= (1 a46ea1 cf6ccd236467287df93fdf974, b7bd70acea4460714f4ebe13835cf004).

C7 = O9e8819dc73ba5ae50f5b570561a6a07,

F[C7]...F[Ci](KbK2) =

= (3d4553d8e9cfec6815ebadc40a9ffd04, 1a46ea1cf6ccd236467287df93fdf974).

C8 = f6593616e6055689adfba18027aa2a08,

(K3,K4) = F[Ca]...F[C,](KbK2) =

= (db31485315694343228d6aef8cc78c44, 3d4553d8e9cfec6815ebadc40a9ffd04).

Итерационные ключи К), /= 1,2, .... 10 принимаютследующие значения:

Кл = 8899aabbccddeeff0011223344556677,

К2 = fedcba98765432100123456789abcdef,

К3 = db31485315694343228d6aef8cc78c44,

К4 = 3d4553d8e9cfec6815ebadc40a9ffd04,

К5 = 57646468c44a5e28d3e59246f429f1ac,

К6 = bd079435165c6432b532e82834da581b,

K7 = 51e640757e8745de705727265a0098b1,

Kq = 5a7925017b9fdd3ed72a91a22286f984,

Kg = bb44e25378c73123a5f32f73cdb6e517,

K10 = 72e9dd7416bcf45b755dbaa88e4a4043.

A. 1.5 Алгоритм зашифрования

В настоящем контрольном примере зашифрование производится при значениях итерационных ключей из А.1.4. Пусть открытый текст, подлежащий зашифрованию, равен

а = 1122334455667700ffeeddccbbaa9988,

тогда

SX[K|](a) = e87de8b6e87de8b6b6b6b6b6b6b6b6b6,

LSX[K^](a) = е297Ь686е355Ь0а1 cf4a2f9249140830, LSX[K2]LSX[Ki](a) = 285e497a0862d596b36f4258a1c69072, LSX[K3]...LSX[Ki](a) = 0187a3a429b567841ad50d29207cc34e, LSX[K4]...LSX[Ki](a) = ec9bdba057d4f4d77c5d70619dcad206, LSX[K5]...LSX[Ki](a) = 1357fd11de9257290c2a1473eb6bcde1,

8

ГОСТ P 34.12—2015

LSX[K6]...LSX[K-l](a) = 28ae31e7d4c2354261027ef0b32897df,

LSX[K7]...LSX[K-l](a) = 07e223d56002c013d3f5e6f714b86d2d,

LSX[K8]...LSX[K-l](a) = cd8ef6cd97e0e092a8e4cca61 b38bf65,

LSX[K9]...LSX[K-l](a) = 0d8e40e4a800d06b2f1 b37ea379ead8e.

Результатом зашифрования является шифртекст

b =X[Kw]LSX[K9]...LSX[Ki](a) = 7f679d90bebc24305a468d42b9d4edcd.

A. 1.6 Алгоритм расшифрования

В настоящем контрольном примере расшифрование производится при значениях итерационных ключей из А. 1.4. Пусть шифртекст, подлежащий расшифрованию, равен шифртексту, полученному в предыдущем пункте:

b = 7f679d90bebc24305a468d42b9d4edcd,

тогда

Х[КЮ]{Ь) = 0d8e40e4a800d06b2f1b37ea379ead8e,

^Х[КЮ](Ь) = 8a6b930a52211b45c5baa43ff8b91319,

S"1L"1X[/<io](b) = 76ca149eef27d1b10d17e3d5d68e5a72,

S'1 L^XIKq]^ и'х[Кю](Ь) = 5d9b06d41b9d1d2d04df7755363e94a9,

S'1r1X[/<8]...S-1r1X[/<1o](b) = 79487192aa45709c115559d6e9280f6e,

S'1r1X[K7]...S'1r1X[/<1o](b) = ae506924c8ce331 bb918fc5bdfb195fa,

S'1r1X[K6]...S'1r1X[/<1o](b) = bbffbfc8939eaaffafb8e22769e323aa,

S"1 L^X[K8]... S'1 L~^ X[Kw](b) = 3cc2f07cc07a8bec0f3ea0ed2ae33e4a,

S'1 LAX[K4].. . S'1 L'1X[/<1o](b) = f36f01291 d0b96d591 e228b72d011 c36,

S"1 L'^X[Kg]... S'1 L''1 X[Kfo](b) = 1c4b0c1e950182b1ce696af5c0bfc5df,

Результатом расшифрования является открытый текст

а = X[Ki ]S-1 L~^X[K2]... S"1 L'^X[Ki0](b) = 1122334455667700ffeeddccbbaa9988.

A.2 Алгоритм блочного шифрования с длиной блока п = 64бит А.2.1 Преобразование t

t{ fdb97531) = 2a196f34, f(2a196f34) = ebd9f03a, f(ebd9f03a) = b039bb3d, f(b039bb3d) = 68695433.

A.2.2 Преобразование g g[87654321 ](fedcba98) = fdcbc20c, g[fdcbc20c](87654321) = 7e791a4b, g[7e791a4b](fdcbc20c) = c76549ec, g[c76549ec](7e791 a4b) = 9791 c849.

A.2.3 Алгоритм развертывания ключа В настоящем контрольном примере ключ имеет значение:

К = ffeeddccbbaa9988776655443322110OfOfl f2f3f4f5f6f7f8f9fafbfcfdfeff.

Итерационные ключи /<„/=1,2,..., 32 принимают следующие значения:

К-1 = ffeeddcc,

Кд = ffeeddcc,

/<17 = ffeeddcc,

/<25 = fcfdfeff,

/<2 = ЬЬаа9988,

К ю = bbaa9988,

/<i8 = bbaa9988,

/<26 = f8f9fafb.

К3 = 77665544,

Кц = 77665544,

/<19 = 77665544,

/<27 = f4f5f6f7,

К4 = 33221100,

K12 = 33221100,

/<20 = 33 221100,

/<28 = f0f1f2f3,

К5 = f0f1f2f3,

Kig = f0f1f2f3,

/<21 = f0f1f2f3,

/<29 = 33 221100,

К6 = f4f5f6f7,

Ku = f4f5f6f7,

/<22 = f4f5f6f7,

/<зо = 77665544,

К7 = f8f9fafb,

Kig = f8f9fafb,

K23 = f8f9fafb,

/<3i = bbaa9988,

К8 = fcfdfeff.

/<i6 = fcfdfeff,

/<24 = fcfdfeff,

/<32 = ffeeddcc.

А.2.4 Алгоритм зашифрования

В настоящем контрольном примере зашифрование производится при значениях итерационных ключей из А.2.3. Пусть открытый текст, подлежащий зашифрованию, равен

а = fedcba9876543210,

тогда

(а-1, а0) = (fedcba98, 76543210),

G[Ki](ab а0) = (76543210, 28da3b14),

G[K2]G[/<i](ai, а0) = (28da3b14, Ы4337а5),

G[K3]...G[K^, а0) = (Ы4337а5, 633а7с68),

9

G[K4]...G[Ki](ab a0) = (633a7c68, ea89c02c),

G[K5]...G[Ki](ab a0) = (ea89c02c, 11fe726d),

G[K6]...G[Ki](ab a0) = (11fe726d, ad0310a4),

G[K7]...G[K1](a1, a0) = (ad0310a4, 37d97f25),

G[Ka]...G[K^](ab a0) = (37d97f25, 46324615),

G[K9]...G[Ki](ab a0) = (46324615, ce995f2a),

G[K10]...G[K1](a1, a0) = (ce995f2a, 93c1f449),

G[K11]...G[/<1](a1, a0) = (93c1f449, 4811c7ad),

G[K12]...G[K1](a1, a0) = (4811c7ad, c4b3edca),

G[Ki3]...G[Ki](ai, a0) = (c4b3edca, 44ca5ce1),

G[K14]...G[Ki](ai, a0) = (44ca5ce1, fef51b68),

G[K15]...G[K1](a1, a0) = (fef51b68, 2098cd86),

G[K16]...G[K1](a1, a0) = (2098cd86, 4f15b0bb),

G[K17]...G[K1](a1, a0) = (4f15b0bb, e32805bc),

G[K18]...G[K1](a1, a0) = (e32805bc, e7116722),

G[K19]...G[K1](a1, a0) = (e7116722, 89cadf21),

G[/<20]...G[/<i](ai, a0) = (89cadf21, bac8444d),

G[K2i]... G[Ki ](ai, a0) = (bac8444d, 11263a21),

G[K22]...G[Ki](ai, a0) = (11263a21, 625434c3),

G[K23]...G[Ki](ai, a0) = (625434c3, 8025c0a5),

Ф^Е-ФиКа-ь a0) = (8025c0a5, b0d66514),

G[K25]...G[Ki](ai, a0) = (b0d66514, 47b1d5f4),

G[K26]... G[Ki ](ai, a0) = (47b1d5f4, c78e6d50),

G[K27]...G[K1](a1, a0) = (c78e6d50, 80251 e99),

G[K2a]...G[Ki](ab a0) = (80251 e99, 2b96eca6), в[к29]...в[к1](а1, a0) = (2b96eca6, 05ef4401),

G[K30]...G[K1](a1, a0) = (05ef4401, 239a4577),

G[K3i\...G[Ki]{ab a0) = (239a4577, c2d8ca3d).

Результатом зашифрования является шифртекст

b = G*[K32]G[K31]...G[K1](a1, a0) = 4ee901e5c2d8ca3d.

A.2.5 Алгоритм расшифрования

В настоящем контрольном примере расшифрование производится при значениях итерационных ключей из А.2.3. Пусть шифртекст, подлежащий расшифрованию, равен шифртексту, полученному в предыдущем пункте:

b = 4ee901e5c2d8ca3d,

тогда

(Ь-1, b0) = (4ее901е5, c2d8ca3d),

G[K32]{bb b0) = (c2d8ca3d, 239a4577), G[K^]G[Ka2]{bb b0) = (239a4577, 05ef4401), G[/<3o]...G[/<32](b1, b0) = (05ef4401,2b96eca6), G[K29]...G[K32](bb b0) = (2b96eca6, 80251 e99), G[K2a]...G[K32](bb b0) = (80251 e99, c78e6d50), G[K27]...G[Ka2]{bb b0) = (c78e6d50, 47b1d5f4), G[K26]... G[K32](b1, b0) = (47b1d5f4, b0d66514), G[K25]...G[Ka2]{bb b0) = (b0d66514, 8025c0a5), G[K24]...G[K32](b1, b0) = (8025c0a5, 625434c3), G[/<23]...G[/<32](b1, b0) = (625434c3, 11263a21), G[K22]...G[Ka2]{bb b0) = (11263a21, bac8444d), G[K21 ]... G[K32](b1, b0) = (bac8444d, 89cadf21), G[K20]...G[Ka2]{bb b0) = (89cadf21, e7116722), G[/<19]...G[/<32](b1, b0) = (e7116722, e32805bc), G[Kla]...G[K32]{bb b0) = (e32805bc, 4f15b0bb), GlK^l^GlK^lb-^, b0) = (4f15b0bb, 2098cd86), G[TC16]... G[7C32](b1, b0) = (2098cd86, fef51b68), G[K15\...G[K32]{bb b0) = (fef51b68, 44ca5ce1), G[Ki4], .. G[K32](bi, b0) = (44ca5ce1, c4b3edca), G[K13],.. G[K32](b-\, b0) = (c4b3edca, 4811 c7ad), G[K12]...G[/<32](b1, b0) = (4811c7ad, 93c1f449), G[K11]...G[/<32](b1, b0) = (93c1f449, ce995f2a), G[/<io]...G[/<32](bi, b0) = (ce995f2a, 46324615), G[K9]...G[K32]{bb b0) = (46324615, 37d97f25), G[Ka]...G[K32](bb b0) = (37d97f25, ad0310a4), G[K7]...G[K32]{bb b0) = (ad0310a4, 11fe726d), G[K6]...G[K32]{bb b0) = (11 fe726d, ea89c02c), G[K5]...G[K32]{bb b0) = (ea89c02c, 633a7c68),

10

ГОСТ P 34.12—2015


G[K4]...G[K32]{bb b0) = (633a7c68, Ы4337а5),

G[K3]...G[K32]{bb b0) = (Ы4337а5, 28da3b14),

G[K2]...G[K32]{bb b0) = (28da3b14, 76543210).

Результатом расшифрования является открытый текст

а = G*[Ki]G[K2]...G[K32]{bb b0) = fedcba9876543210.

11


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


[1] ИСО/МЭК 10116:2006 (ISO/IEC 10116:2006)


[2] ИСО/МЭК 18033-1:2005 (ISO/IEC 18033-1:2005)


[3] ИСО/МЭК 18033-3:2010 (ISO/IEC 18033-3:2010)


Информационные технологии. Методы обеспечения безопасности. Режимы работы дляп-битовых блочных шифров (Information technology — Security techniques — Modes of operation for an л-bit block cipher)

Информационные технологии. Методы и средства обеспечения безопасности. Алгоритмы шифрования. Часть 1. Общие положения (Information technology — Security techniques — Encryption algorithms — Part 1: General)

Информационные технологии. Методы и средства обеспечения безопасности. Алгоритмы шифрования. Часть 3. Блочные шифры (Information technology — Security techniques — Encryption algorithms — Part 3: Block ciphers)


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


УДК 681.3.06:006.354    ОКС    35.040

Ключевые слова:    информационная    технология,    криптографическая    защита    информации,

симметричный криптографический метод, зашифрование, расшифрование, блочный шифр, ключ


Редактор И.А. Сериков Корректор М.В. Бучная Компьютерная верстка Е.И. Мосур

Подписано в печать 08.02.2016. Формат 60х841/в.

Уел. печ. л. 1,86. Тираж 43 экз. Зак. 257.

Подготовлено на основе электронной версии, предоставленной разработчиком стандарта


ФГУП «СТАНДАРТИНФОРМ»

123995 Москва, Гранатный пер., 4. www.gostinfo.ru    info@gostinfo.ru


ГОСТ P 34.12—2015

Введение

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

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

Настоящий стандарт терминологически и концептуально увязан с международными стандартами ИСО/МЭК 10116 [1] и серии ИСО/МЭК 18033 [2], [3].

Примечание — Основная часть стандарта дополнена приложением А.

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

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

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

Блочные шифры

Information technology. Cryptographic data security.

Block ciphers

Дата введения — 2016—01—01

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

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

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

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

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

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

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

2.1.1 _

алгоритм зашифрования (encryption algorithm): Алгоритм, реализующий зашифрование, т.е.

преобразующий открытый текст в шифртекст.

[ИСО/МЭК 18033-1, статья 2.19]_

2.1.2_

алгоритм расшифрования (decryption algorithm): Алгоритм, реализующий расшифрование, т.е. преобразующий шифртекст в открытый текст.

[ИСО/МЭК 18033-1, статья 2.14]_

2.1.3 _

базовый блочный шифр (basic block cipher): Блочный шифр, реализующий при каждом фиксированном значении ключа одно обратимое отображение множества блоков открытого текста фиксированной длины в блоки шифртекста такой же длины._

2.1.4

блок (block): Строка бит определенной длины.

[ИСО/МЭК 18033-1, статья 2.6]_

2.1.5 _

блочный шифр (block cipher): Шифр из класса симметричных криптографических методов, в котором алгоритм зашифрования применяется к блокам открытого текста для получения блоков шифртекста.

[ИСО/МЭК 18033-1, статья 2.7]_

Примечание — В настоящем стандарте установлено, что термины «блочный шифр» и «алгоритм блочного шифрования» являются синонимами.

Издание официальное

2.1.6_

зашифрование (encryption): Обратимое преобразование данных с помощью шифра, которое формирует шифртекст из открытого текста.

[ИСО/МЭК 18033-1, статья 2.18]_

2.1.7 _

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

2.1.8 _

ключ (key): Изменяемый параметр в виде последовательности символов, определяющий криптографическое преобразование.

[ИСО/МЭК 18033-1, статья 2.21]_

Примечание — В настоящем стандарте рассматриваются ключи только в виде последовательности двоичных символов (битов).

2.1.9 _

открытый текст (plaintext): Незашифрованная информация.

[ИСО/МЭК 10116, статья 3.11]_

2.1.10 _

развертывание ключа (key schedule): Вычисление итерационных ключей из ключа шифра.

2.1.11

расшифрование (decryption): Операция, обратная к зашифрованию.

[ИСО/МЭК 18033-1, статья 2.13]_

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

2.1.12_

симметричный криптографический метод (symmetric cryptographic technique): Криптографический метод, использующий один и тот же ключ для преобразования, осуществляемого отправителем, и преобразования, осуществляемого получателем.

[ИСО/МЭК 18033-1, статья 2.32]_

2.1.13 _

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

[ИСО/МЭК 18033-1, статья 2.20]_

2.1.14 _

шифртекст (ciphertext): Данные, полученные в результате зашифрования открытого текста с целью скрытия его содержания.

[ИСО/МЭК 10116, статья 3.3]_

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

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

V*    —    множество всех двоичных строк конечной длины, включая пустую

строку;

1/s    —    множество всех двоичных строк длины s, где s — целое неотрица

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

U*W    —    прямое (декартово) произведение множества U и множества И/;

|Д    —    число компонент (длина) строкиДе\/*(если А — пустая строка, то

\А\ = 0);

Д||В    —    конкатенация строк Д Be V, т.е. строка из\^Л| + |В|, в которой подстрока с

большими номерами компонент из\/|Л| совпадает со строкой А, а подстрока с меньшими номерами компонент из V\B\ совпадает со строкой В;

ГОСТ P 34.12—2015


Д<«ц


F


Vecs: Z2S —>■ Vs


lnts: \/s —> Z2S A: Va F


V: F -> Vs ФФ

Ф8


циклический сдвиг строки Ae V32 на 11 компонент в сторону компонент, имеющих большие номера;

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

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

конечное поле GF(2)[x]/p(x), где р(х) = х8 + х7 + х6 + х + 1 eGF(2)[x]; элементы поля F представляются целыми числами, причем элементу z0 + z-i ■ 0 + ... + z7 ■ 97eFсоответствует числоz0 + 2 ■ Zy + ... + 27 ■ z7, гдег, е {0, 1}, /= 0, 1, .... 7 и 0 обозначает класс вычетов по модулю р(х), содержащий х;

биективное отображение, сопоставляющее элемент у кольца Z2s его двоичное представление, т. е. для любого элемента z е Z2s, представленного    в    виде    z    = z0 + 2 ■ Z! + ... + 2s"1 ■ zs _ 1,

где г-, 6 {0, 1}, / = 0, 1.....s -1,    выполнено

равенство Vecs(z) = =zs.1||...||z1||z0;

отображение, обратное к отображению Vecs, т.е. Ints = VeCg1;

биективное отображение, сопоставляющее двоичной строке

из Vs элемент    поля    F    следующим    образом:

строке z71|...||z1 ||z0,z, е {0,1}, / = 0,1, ..., 7 соответствует

элемент z0 + +z1 ■ в + ... + z7 ■ в7е F;

отображение, обратное к отображению Д, T.e.V = Д'1;

композиция отображений, при которой отображение Ф действует

первым;

композиция отображений 0s'1 и 0, причем 01 = 0.


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

В настоящем стандарте приведено описание двух базовых блочных шифров с длинами блоков п = 128 бит и п = 64 бит и длинами ключей к = 256бит.

Примечания

1    На описанный в настоящем стандарте шифр с длиной блока л =128 бит можно ссылаться как на блочный шифр «Кузнечик» («Kuznyechik»).

2    На описанный в настоящем стандарте шифр с длиной блока п = 64 бит можно ссылаться как на блочный шифр «Магма» («Magma»).

4    Алгоритм блочного шифрования с длиной блока п = 128 бит

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

4.1.1    Нелинейное биективное преобразование

В качестве нелинейного биективного преобразования выступает подстановка тт = Vec8TT'lnt8: Vs —> Vs, где тг': Z2a —> Z2a. Значения подстановки тг' записаны ниже в виде массива тт' = (тт'(0), тт'(1).....тт'(255)):

тт' = (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).


3


4.1.2    Линейное преобразование

Линейное преобразование задается отображением t \f§ —> \/8, которое определяется следующим образом:

/(ai5,...,ao) = V(148 ■ Д(а15) + 32 ■ А(а^4) + 133 ■ A(ai3) + 16 ■ Д(а^2) +

+ 194 ■ Д(ац) + 192 ■ Д(а10) + 1 ■ Д(а9) + 251 ■ Д(а8) + 1 ■ Д(а7) + 192 ■ Д(а6) +    (1)

+194 ■ Д(а5) + 16 ■ Д(а4) + 133 ■ Д(а3) + 32 ■ Д(а2) + 148 ■ Д^) + 1 ■ Д(а0))

для любых а,е \/8,/= 0, 1, ...,15, где операции сложения и умножения осуществляются в полег, а константы являются элементами поля в указанном ранее смысле.

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

При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:

т- ^128    ^128    Х[к](а)    =    к® а,    (2)

S: ^128 Цгв


S(a) = S(a15||...||a0) = TT(a15)||...||TT(a0),

где а = а15||...||а„ е У128, а, е V8, / = 0,1.....15;


(3)


S'1: \/128 -> \/128    преобразование, обратное к преобразованию S, которое может (4)

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

S^a) = S1(a15||...||ao) = тт"115)||...||тг10),

где а = а15||...||а„ е \/128, а, £ V8, /= 0, 1.....15,

тг1 — подстановка, обратная к подстановке тг;

R- ^128 ~> ^128    ^(а) = ^(a15ll-"llao) = ^1а15 ао) 11 а1511 ■ ■ ■ 11а1 >    (3)

где а = а15||...||а0 е \/128. а/ е \/8, / = 0, 1, ..., 15;


Ца) = R16(a),    (6)

где а е \/128;

преобразование, обратное к преобразованию R, которое может (7) быть вычислено, например, следующим образом:

R\a) = R 115||...||а0) =

= а14||а1з11- Пао11^а14. а13> ■■■> ао. ais).

где а = а15||...||а0 6 \/128, а,е V8, /= 0, 1, ..., 15;

L'1(a) = (R-1)16(a), где а е \/Л28,

F [/<](а1, а0) = (Z_SX[/c](a-,) © а0, а,),    (9)

где /с, а0, а! е \/128.


L■ ^128 —> ^128 R 1: ^128 ~> ^128


L 1 : V^8 —► ^128 F[/(]: Ц28х^128 -

У128х ^128


где к,ае У128;

4.3 Алгоритм развертывания ключа

Алгоритм развертывания ключа использует итерационные константы С, е \/128,/= 1,2, ..., 32, которые определены следующим образом:

С, = L(Vec128(/)), / = 1,2, ..., 32.    (10)

Итерационные ключи К, е \/128,/= 1,2, ..., 10, вырабатываются на основе ключа К = =/<25511-•• И^о е V256, к, е 1/,, /= 0,1, ..., 255 и определяются равенствами:

^1 - ^25511-11^128;

^=*12711-11*6;    (11)

(/^2/+ 1 > /^2/+ 2) = F [^8(/-1) +    [^8(/-1) + l)(^2/-1 > *2/)> / - 1.2, 3, 4.

4.4 Базовый алгоритм шифрования

4.4.1 Алгоритм зашифрования

Алгоритм зашифрования в зависимости от значений итерационных ключей KjE V128, i= 1,2, ..., 10, реализует подстановку EKl Kl0, заданную на множестве \/128 в соответствии с равенством

4

ГОСТ Р 34.12-2015

Ек1 к10(а) = X[K10]LSX[K9]...LSX[K2]LSX[K1](a),

(12) где а £ 1/-128-

4.4.2 Алгоритм расшифрования

Алгоритм расшифрования в зависимости от значений итерационных ключей К, еЦ28,/= 1,2,    10    реализует    подстановку    DKl    Kl0,    заданную    на    множестве    1/128    в

соответствии с равенством

DKl к10(а) =    JS'1 /.-1Х[К2]... S'1 ^Х[Кд JS'1 Г^К^Ка),    (13)

где а 6 \/128.

5 Алгоритм блочного шифрования с длиной блока п = 64 бит

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

5.1.1    Нелинейное биективное преобразование

В качестве нелинейного биективного преобразования выступают подстановки тт, = Vec^/lnt,: V4 —> V4, где тт/: Z24 —> 12л, / = 0,1,    7. Значения подстановок тт/

записаны ниже в виде массивов тт/ = (тт/(0), тт/(1),    тт/(15)),    /=    0,1,    7:

тт0' = (12, 4, 6, 2, 10, 5, 11, 9, 14, 8, 13, 7, 0, 3, 15, 1); тт,' = (6, 8, 2, 3, 9, 10, 5, 12, 1, 14, 4, 7, 11,13, 0, 15); тт2' = (11,3, 5, 8, 2, 15, 10, 13, 14, 1,7,4, 12, 9,6,0); тт3' = (12, 8,    2,    1, 13, 4, 15, 6, 7,    0,    10, 5, 3, 14, 9, 11);

тт4' = (7, 15,    5,    10, 8, 1,6, 13, 0,    9,    3, 14, 11,4, 2, 12);

тт5' = (5, 13,    15, 6, 9, 2, 12, 10, 11,    7, 8, 1,4, 3, 14, 0);

тт6' = (8, 14,    2,    5,6, 9, 1, 12, 15,    4,    11,0, 13, 10, 3, 7);

тт7' = (1,7, 14, 13, 0, 5, 8, 3, 4, 15, 10, 6, 9, 12, 11,2).

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

При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:

t\ V32 —> \/з2

t{a) = f(a7||...||a0) = тт77)||...||тт00),

где а = а7||...||а0 £ V22, а,£ V4, /= 0, 1, ..., 7;

(14)

\/32 —> \/32

SW(a) = (f(Vec32(lnt32(a) Ш lnt32(A))))<«11,

гд6 к, а е \/з2ш,

(15)

G[/c]: 1/32 х V/32 —> И32х Ц32

G[k](a-i, а„) = (а„, дИ(а0) ® а^, где k, 3q, э-\ £ \/32;

(16)

G>]: 1/32х\/з2 -> Цз4

®*И(а1, а„) = (дИ(а0) ® а^Цао, где к, а0, а! £ \/32.

(17)

5.3 Алгоритм развертывания ключа

Итерационные ключи К, е V32, / = 1,2, ..., 32, вырабатываются    на основе ключа

К = = k255\\...\\k0 е V256, kj £ Vb i= 0, 1, ..., 255 и определяются равенствами:

Ki = к255\\...\\к224,

к2 = а22з11 ■ ■ ■ 11^192;

К3 = Aigi ||... Ц/Cieo;

К4 = ^15э|| ■ ■ ■ 11^128;

^5 = ^12711 ■■ ■ И^Эб!

^6 = ^ЭбП-" 11^64!    (18)

К7 = ^6з11---11^32;

К8 = /C3iM...||A0;

К, + 8 = К,, / = 1,2, ..., 8;

К)+16 = К/,/ = 1,2, ..., 8;

5

Kl + 2A = K9_„i='l,2,

5.4 Базовый алгоритм шифрования

5.4.1    Алгоритм зашифрования

Алгоритм    зашифрования    в    зависимости    от    значений    итерационных    ключей

KjE \/Ъ2, /= 1,2,    32 реализует подстановку Ек Кз2, заданную на множестве V64 в соответствии с

равенством

Ек,.....к32(а) = G*[K32]G[K31]...G[K2]G[K1](a1, а0),    (19)

гдеа = а1||а0б V64, а3, э, е V22

5.4.2    Алгоритм расшифрования

Алгоритм    расшифрования    в    зависимости    от    значений    итерационных    ключей

К,- е V32, / = 1,2..... 32 реализует подстановку DKl Кз2, заданную на множестве V64 в соответствии с

равенством

DKl.....к32(а) = G*[K1]G[K2]...G[K31]G[K32](a1, а0),    (20)

где а = а, ||а0 £ Vq4, а3, a, s V22.

6

ГОСТ Р 34.12-2015

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

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

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

В данном приложении двоичные строки из V*, длина которых кратна 4, записываются в шестнадцатеричном виде, а символ конкатенации ("||") опускается, то есть, строка as V4r будет представлена в виде

аг_^аг_2...а0,

где а/ £ {0, 1, ..., 9, a, b, с, d, е, f}, / = 0, 1, ..., г-1.Соответствие между двоичными строками длины 4 и шестнадцатеричными строками длины 1 задается естественным образом (таблица А.1). Преобразование, ставящее в соответствие двоичной строке длины 4г шестнадцатеричную строку длины г, и соответствующее обратное преобразование для простоты записи опускаются.

Таблица А.1 — Соответствие между двоичными и шестнадцатеричными строками

0000

0

0001

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

8

1001

9

1010

a

1011

b

1100

c

1101

d

1110

e

1111

f

А.1 Алгоритм блочного шифрования с длиной блока п = 128 бит А.1.1 Преобразование S

S(ffeeddccbbaa99881122334455667700) = b66cd8887d38e8d77765aeea0c9a7efc, S(b66cd8887d38e8d77765aeea0c9a7efc) = 559d8dd7bd06cbfe7e7b262523280d39, S(559d8dd7bd06cbfe7e7b262523280d39) = 0c3322fed531 e4630d80ef5c5a81 c50b, S(0c3322fed531e4630d80ef5c5a81c50b) = 23ae65633f842d29c5df529c13f5acda.

A. 1.2 Преобразование/?

R(00000000000000000000000000000100) = 94000000000000000000000000000001, R(94000000000000000000000000000001) = a5940000000000000000000000000000, R(a5940000000000000000000000000000)=64a59400000000000000000000000000, R(64a59400000000000000000000000000) = 0d64a594000000000000000000000000.

A.1.3 Преобразование/.

Ц64а59400000000000000000000000000) = d456584dd0e3e84cc3166e4b7fa2890d, Z.(d456584dd0e3e84cc3166e4b7fa2890d) = 79d26221b87b584cd42fbc4ffea5de9a, Z.(79d26221b87b584cd42fbc4ffea5de9a) = 0e93691 a0cfc60408b7b68f66b513d 3, Z.(0e93691a0cfc60408b7b68f66b513c13) = e6a8094fee0aa204fd97bcb0b44b8580.

7