Купить ГОСТ 34.12-2018 — бумажный документ с голограммой и синими печатями. подробнее
Цена на этот документ пока неизвестна. Нажмите кнопку "Купить" и сделайте заказ, и мы пришлем вам цену.
Распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль"
Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.
Определяет алгоритмы базовых блочных шифров, которые применяются в криптографических методах обработки и защиты информации, в том числе для обеспечения конфиденциальности, аутентичности и целостности информации при ее передаче, обработке и хранении в автоматизированных системах. Определенные в стандарте алгоритмы криптографического преобразования предназначены для аппаратной или программной реализации, удовлетворяют современным криптографическим требованиям и по своим возможностям не накладывают ограничений на степень секретности защищаемой информации. Стандарт рекомендуется использовать при создании, эксплуатации и модернизации систем обработки информации различного назначения.
1 Область применения
2 Термины, определения и обозначения
2.1 Термины и определения
2.2 Обозначения
3 Общие положения
4 Алгоритм блочного шифрования с длиной блока n = 128 бит
4.1 Значения параметров
4.2 Преобразования
4.3 Алгоритм развертывания ключа
4.4 Базовый алгоритм шифрования
5 Алгоритм блочного шифрования с длиной блока n = 64 бит
5.1 Значения параметров
5.2 Преобразования
5.3 Алгоритм развертывания ключа
5.4 Базовый алгоритм шифрования
Приложение А (справочное) Контрольные примеры
Библиография
Дата введения | 01.06.2019 |
---|---|
Добавлен в базу | 01.02.2020 |
Актуализация | 01.01.2021 |
29.11.2018 | Утвержден | Межгосударственный Совет по стандартизации, метрологии и сертификации | 54 |
---|---|---|---|
04.12.2018 | Утвержден | Федеральное агентство по техническому регулированию и метрологии | 1061-ст |
Разработан | ОАО ИнфоТеКС | ||
Издан | Стандартинформ | 2018 г. |
Чтобы бесплатно скачать этот документ в формате PDF, поддержите наш сайт и нажмите кнопку:
МЕЖГОСУДАРСТВЕННЫЙ СОВЕТ ПО СТАНДАРТИЗАЦИИ, МЕТРОЛОГИИ И СЕРТИФИКАЦИИ
(МГС)
INTERSTATE COUNCIL FOR STANDARDIZATION, METROLOGY AND CERTIFICATION
(ISC)
МЕЖГОСУДАРСТВЕННЫЙ
СТАНДАРТ
ГОСТ
34.12—
2018
Издание официальное
Москва Стандартмнформ 2018 |
Цели, основные принципы и основной порядок проведения работ по межгосударственной стандартизации установлены в ГОСТ 1.0-2015 «Межгосударственная система стандартизации. Основные положения» и ГОСТ 1.2-2015 «Межгосударственная система стандартизации. Стандарты межгосударственные. правила и рекомендации по межгосударственной стандартизации. Правила разработки, принятия. обновления и отмены»
Сведения о стандарте
1 РАЗРАБОТАН Центром защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества «Информационные технологии и коммуникационные системы» (ОАО «ИнфоТеКС»)
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 26 «Криптографическая защита информации»
3 ПРИНЯТ Межгосударственным советом по метрологии, стандартизации и сертификации (протокол от 29 ноября 2018 г. № 54)
За принятие проголосовали: | |||||||||||||||
|
4 Приказом Федерального агентства по техническому регулированию и метрологии от 4 декабря 2018 г. № 1061-ст межгосударственный стандарт ГОСТ 34.12-2018 введен в действие в качестве национального стандарта Российской Федерации с 1 июня 2019 г.
5 Настоящий стандарт подготовлен на основе применения ГОСТ Р 34.12-2015
6 ВЗАМЕН ГОСТ 28147-89 в части раздела 1 «Структурная схема алгоритма криптографического преобразования»
Информация об изменениях к настоящему стандарту публикуется в ежегодном информационном указателе «Национальные стандарты», а текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячном информационном указателе «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
©Стандартинформ. оформление. 2018
В Российской Федерации настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии
К7 ~ *6зГ1*32:
Кв = *3lll "IV
Км-К,.1ш\г.....8;
*/♦16= */•' = **.....8;
к^«-к^./-и.....8.
5.4 Базовый алгоритм шифрования
-.32.
(19)
..32.
(20)
5.4.1 Алгоритм зашифрования
Алгоритм зашифрования в зависимости от значений итерационных ключей К,е У32, / = 1.2,. реализует подстановку к^, заданную на множестве в соответствии с равенством
ек,.....к32(в) = <5*[Кз2К5[К31]...С[К21С1К1Кв1.^).
где а = а,|а0 е V^. а0. а, е V32.
5.4.2 Алгоритм расшифрования
Алгоритм расшифрования в зависимости от значений итерационных ключей К(е У32. / = 12.. реализует подстановку Кз?. заданную на множестве в соответствии с равенством
DKy .K32(a)=G*[/<1|G[K2)...G[K31lG[K32)(a1.a0).
где а = а,|а0е V^. а0. а, е У32.
Приложение А (справочное)
Контрольные примеры
А.1 Общие положения
Настоящее приложение носит справочный характер и не является частью нормативных положений настоящего стандарта
В настоящем приложении двоичные строки из V*. длина которых кратна 4. записываются в шестнадцатеричном виде, а символ конкатенации ("||”) опускается, т е строка а е V4r будет представлена в виде
®г-1вг-2- %
где а,е {0Л....9, а. Ь. с. d.e, f}. / = ОД....г-l. Соответствие между двоичными строками длины 4 и шестнадцатеричными строками длины 1 задается естественным образом (см таблицу А 1) Преобразование, ставящее в соответствие двоичной строке длины 4г шестнадцатеричную строку длины г, и соответствующее обратное преобразование для простоты записи опускаются
Таблица А1 — Соответствие между двоичными и шестнадцатеричными строками | ||||||||||||||||||||||||||||||||||||||||
|
А.2 Алгоритм блочного шифрования с длиной блока п- 128 бит А.2.1 Преобразование S
S(ffeeddccbbaa99S81122334455667700) = b66cd8887d38e8d77765aeea0c9a7efc. S(b66cd8887d38e8d77765aeea0c9a7efc) = 559d8dd7bd06cbfe7e7b262523280d39. S(559d8dd7bd06cbfe7e7b262523280d39) = 0c3322fed53le4630d80ef5c5a8lc50b, S(0c3322fed531e4630d80ef5c5a81c50b) = 23ae65633f842d29c5df529c13f5acda.
A.2.2 Преобразование R
tf(00000000000000000000000000000100) = 94000000000000000000000000000001. ft(94000000000000000000000000000001) = 35940000000000000000000000000000. Ж05940000000000000000000000000000) = 64059400000000000000000000000000. R(64a59400000000000000000000000000) = 0d64a594000000000000000000000000. A.2.3 Преобразование L
L(64a59400000000000000000000000000) = d456584dd0e3e84cc3166e4b7fa2890d, L(d456584dd0e3e84cc3166e4b7fa2890d) = 79d26221b87b584cd42fbc4ffea5de9a. Z.(79d26221b87b584cd42fbc4ffea5de9a) = 0e93691a0cfc60408b7b68f66b513c13. Z.(0e93691a0cfc60408b7b68f66b513c13) = e6a8094fee0aa204fd97bcb0b44b8580.
A.2.4 Алгоритм развертывания ключа
В настоящем контрольном примере ключ имеет значение
К = 8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef.
= 8899aabbccddeeff0011223344556677.
К2 = fedcba98765432100123456789abcdef.
С, = 6ea276726c487ab85d27bd10dd849401,
Х(С,КК,)« e63bdcc9a095944 75d369f2399d 1 f276.
SXICjKK,) = 0998ca37a7947aabb78f4a5ae81 b748a,
LSX(C1](K,)= 3d0940999db75d6a9257071d5e6144a6.
F[C,](K1a K2) = (C3d5fa01ebe36f7a9374427ad7ca8949. 8899aabbccddeeff0011223344556677).
C2 = dc87ece4d890f4b3ba4eb92079cbeb02,
FIC^JF^KK,. K2) = (37777748e56453377d5e262d90903f87. C3d5fa01ebe36f7a9374427ad7ca8949).
C3 = b2259a96b4d88e0be7690430a44f7f03,
F[C3)... FiqKK,. K2) = (f9eae5(29b2815e31f11ac5d9c29fb01.37777748e56453377d5e262d90903f87). C4 = 7bcd1b0b73e32ba5b79cb140f2551504.
F[C4)...F(C1](K1, K2) = (e980089683d00d4be37dd3434699b98f. f9eae5f29b2815e31f11ac5d9c29fb01). C5 = 156f6d791fab511deabb0c502fd18105.
F[CS)... FiCflKy K2) = (b7bd70acea4460714f4ebe13835cf004. e980089683d00d4be37dd3434699b98f). C6 = a74af7efab73df 160dd208608b9efe06.
F[C6]... FjqKK,. K2) = (1a46ea1cf6ccd236467287df93fdf974. b7bd70acea4460714f4ebe13835cf004). Cj = C9e8819dc73ba5ae50f5b570561a6a07.
F[C,)...F[C,)(K1.K2) = (3d4553d8e9cfec6815ebadc40a9ffd04.1a46ea1cf6ccd236467287df93fdf974),
C8 = f65936l6e6055689adfba18027aa2a08,
(K3.K4) = F[Ce)...F[C1)(K1.K2) =
(db31485315694343228d6aef8cc78c44,3d4553d8e9cfec6815ebadc40a9ffd04).
Итерационные ключи К,, / = 1.2.....10. принимают следующие значения
К, = 8899aabbccddeeff0011223344556677,
К2 = fedcba98765432100123456789abcdef.
К3 = db31485315694343228d6aef8cc78c44,
К4 = 3d4553d8e9cfec6815ebadc40a9ffd04.
К5 = 57646468c44a5e28d3e59246f429f 1 ас.
К6 = bd079435165c6432bS32e82834da581b,
К7 = 51e640757e8745de705727265a0098b1.
К8 = 5а7925017b9fdd3ed72a91a22286f984.
Х9 = ЬЬ44е25378с73123a5f32f73cdb6e517.
К10 = 72e9dd7416bcf45b755dbaa88e4a4043.
А.2.5 Алгоритм зашифрования
В настоящем контрольном примере зашифрование проводится при значениях итерационных ключей из А.2.4. Пусть открытый текст, подлежащий зашифрованию, равен
а = 1122334455667700ffeeddccbbaa9988,
тогда
Х[К,Кв) = 99bb99f199bb99ffffffffflffWW.
SX[K,](a) = e87de8b6e87de8b6b6b6b6b6b6b6b6b6, LSX[KJ{a) = е297Ь686е355Ь0а 1 cf4a2f9249140830. LSX[K2]LSX[KJ(a) = 285e497a0862d596b36f4258a1c69072.
LSX[K3)...LSX[KJ(a) = 0187a3a429b567841ad50d29207cc34e.
LSX[K4]...LSX[K,Ka) = ec9bdba057d4f4d77c5d70619dcad206.
LSX[Kb)...LSX[Ki](a) = 1357fd11de9257290c2a1473eb6bcde1.
LSX[K6]...LSX[KJ{a) = 28ae31e7d4c2354261027ef0b32897df,
LSX[K7)...LSX[K^a) = 07e223d56002c013d3f5e6f714b86d2d.
LSX[K6)...LSX[KJ[a) = Cd8ef6cd97e0e092a8e4cca61b38bf65.
LSX[Kg)... LSX(K,)(e) = 0d8e40e4a800d06b2f 1 b37ea379ead8e.
Результатом зашифрования является шифртекст
b=XIK10JLSX[Kel...LSX[K1Ke) = 7f679d90bebc24305a468d42b9d4edcd A.2.6 Алгоритм расшифрования
В настоящем контрольном примере расшифрование проводится при значениях итерационных ключей из А.2 4 Пусть шифртекст, подлежащий расшифрованию, равен шифртексту, полученному в А 2.5:
Ь = 7f679d90bebc24305a468d42b9d4edcd.
тогда
X[K10)(b)= 0d8e40e4a800d06b2f1 b37ea379ead8e.
1-~'Х[Кю]{Ь) = 8a6b930a52211b45c5baa43ff8b91319.
S-1L-,X[K10Kb)= 76ca149eef27d1b10d17e3d5d68e5a72,
S"1L",XlK^lS",L"1X[K10](b) = 5d9b06d41b9d1d2d04df7755363e94a9, S-'L-'X[K6)...S-'L-'X[Kw](b) = 79487192aa45709c115559d6e9280f6e,
S-'L-'X\K71... S-V’Xl^Q Kb) = ae506924c8ce331bb918fc5bdfb195fa. S-'L-'X[Ke)...S-'L-'X[Kw]{b) = bbffbfc8939eaaffaf b8e22769e323aa. S-1L-,X[K5)...S-,Z.-1X[K10](b) = 3cc2f07cc07a8bec0f3ea0ed2ae33e4a, S'1L-1X[K4]...S"1L“1X[K10Kb) = f36f01291 d0b96d591 e228b72d011 c36. S“1L"1X[K3)...S",Z."1X[K10l(b) = 1c4b0c1e950182Mce696af5c0bfc5df, S"1L-,X[K2)...S-1Z.-1X[K10](b) = 9 9 b b 99ff99 b b99ff ff f fffff ffffffff.
Результатом расшифрования является открытый текст
а= X(K1)S-1/.-,X(K2]...S-,L-1X(K10l(b) = 1122334455667700ffeeddccbbaa9988. А.З Алгоритм блочного шифрования с длиной блока п * 64 бит А.3.1 Преобразование t f(fdb97531) = 2a196f34,
7(2a196f34) = ebd9f03a, f(ebd9f03a) = b039bb3d.
/(W)39bb3d) = 88695433.
A.3.2 Преобразование g g[87654321 J(fedcba98) = fdcbc20c, g(fdcbc20c](87654321) = 7e791a4b. g[7e791 a4b)(fdcbc20c) = c76549ec. g(c76549ec]{7e791a4b) = 9791 c849.
A.3.3 Алгоритм развертывания ключа
В настоящем контрольном примере ключ имеет значение:
К = Meeddccbbaa99887766554433221100f0f1f2f3»4f5f6f7f8f9fafbfcfdfeff
Итерационные ключи К(. /' = 12. .. 32, принимают следующие значения:
K, = ffeeddcc. K2 = bbaa9988. K3 = 77665544, K4 =33221100, K5 = fOf 1f2f3. Ke = (4f5f6f7, K7 = f8f9fafb, K8 = fcfdfeff.
K9 = ffeeddcc. K10 = bbaa9988, K„ =77665544. K12 =33221100, K13 = fOf 1 f2f3. K14 = f4f5f6f7, K15 = f8f9fafb, K16 = fcfdfeff.
Kv = ffeeddcc. K18 = bbaa9988, K|g = 77665544, Kjo =33221100. K21=fOf1f2f3. K22 = f4f5f6f7. K23 = f8f9fafb. K24 = fcfdfeff.
K26 = fcfdfeff. K26 = f8f9fafb. K27 = f4f5f6f7. K28 = f0f1f2f3,
= 33221100, Kjо = 77665544, K31= bbaa9988, K32= ffeeddcc.
А.3.4 Алгоритм зашифрования
В настоящем контрольном примере зашифрование проводится при значениях итерационных ключей из А. 3.3.
(а,. ^>) = (fedcba98. 76543210).
G[K})(ay г^)= (76543210. 28da3b14). GlKjJGl/CjKa,. Oq) = (28da3b14. Ь14337а5). G(K3]...G(K1)(a1. a,,) = (M4337a5.633a7c68). G(K4)...GlK^a,. a0) = (633a7c68, ea89c02c). G[K$)...G(K1Ka1. «о) = (ea89c02c. 11fe726d). G[K6) . Gl^Ka,. /*>) = (11fe726d. ad0310a4). G[K7) . GI^Ka,. До) = (ad0310a4. 37d97f25). GlKgJ . GfK^a,. До) = (37d97f25. 46324615). G[Ke)...G(K1)(a1. До) = (46324615. ce995f2a). G(K10].. Gt^Ka,. a0) = (ce995f2a. 93c1f449). GlK^l. -Gt^Kfij. ^,) = (93c1f449.4811c7ad). G[Ku)...G[KJ(a,. До) =(4811c7ad. c4b3edca), GlK^)...G[KAY.ay До) = (c4b3edca. 44ca5ce1). G(Ki4)...GlKiKa,. До) = (44ca5ce1. fef51b68). G[K}S)...G[Ky)(av До) = (fef51b68, 2098cd86). GIK^J.-Gt^Ka,. До) = (2098cd86. 4f15b0bb). G[K„\...G{K^a^. До) = (4f15b0bb. e32805bc). G[K18]...G(K1Ka1, До) = (e32805bc. e7116722). G^gl . Gl^Ka,. a0) *(e7116722. 89cadf21). GlK^l-.G^Ka,. /*>) = (89cadf21. bac8444d). GI^J- .G^Ka,. a0) = (bac8444d. 11263a21). GIK22)...G[K1Ka1. До) = (11263a21. 625434c3). G(K23)...GI^Ka,. До) = (625434c3.8025c0a5). G(K24l ..G[K1l(a1. До) = (8025c0a5. bOd66514). G(K251....GfKfKa,. До) = (bOd66514.47b1d5f4).
GPfe]-..G[K,Xa,. Oq) = (47b1d5f4. c78e6d50). 6(K27J...G(K1Kal> Bq) = (c78e6d50. 80251e99). GlK^J . GI^Ka,. До) = (80251e99. 2b96eca6).
G*[K29)...G[KiKa,. ^,) = (2Ь96еса6. 05ef4401).
GlKx)...G{K^][a^, ^) = (05ef440i. 239a4577).
6tK3i]...G(/C|Ka|. Sq) = (239a4577. c2d8ca3d).
Результатом зашифрования является шифртекст
b=G*[K32JG(K31]...G[K1](a1.at,) = 4ee901e5c2d8ca3d.
A.3.5 Алгоритм расшифрования
В настоящем контрольном примере расшифрование проводится при значениях итерационных ключей из А 3 3 Пусть шифртекст, подлежащий расшифрованию, равен шифртексту. полученному в предыдущем пункте
Ь=4ee901e5c2d8ca3d.
тогда
(6,. Ьц) = (4ее901е5. c2d8ca3d).
G(K32)(/>,, fijj) = (c2d8ca3d. 239a4577),
G[K^\GlK32](by b^) = (239a4577. 05ef4401).
G(K30]...GlK32Kb1.1%) = (05ef4401.2b96eca6),
GfK^]...GIK^Kft,. Ьц) = (2b96eca6.80251e99).
G(K28)...GIK^Kft,. Ьц) = (80251 e99. c78e6d50),
GIK27]...G[K32](b1. bo) = (c78e6d50. 47b1d5f4).
GfK^]...G[K32]{ft|. bo) = (47b1d5(4, b0d66514).
G(K25]...GIK^Kft,. fc*,) = (b0d66514. 8025c0a5),
GIK24]...G(K32](b1. i\,) = (8025c0a5.625434c3).
GlKttJ .GlKjjKft,. bo) = (625434c3.11263a21).
GIK^)...G(K32l(b|. fy) = (11263a21. bac8444d).
GIK21]...GtK32](bv bo) = (bac8444d, 89cad(21).
GfK20]...G(K32](6|. bo) = (89cadf21. e7116722),
GIK19]...G(K32J(b,. bo) = (67116722. e32805bc).
GlK^J.-GlK^Kb,. b0) = (e32805bc. 4(15b0bb).
GlK^J .-GlK^Kb,. bo) = (4(15b0bb, 2098cd86).
G(K16)...G[K32](6j . b0) = (2098cd86. fe(51b68).
GlK^l-.-GlK^Kb,. (\)) = (fefSI b68. 44ca5ce1).
GlKu)...G[K32){bv b0) = (44ca5ce1. c4b3edca). в[К^]...в[К32Щ. t>o) = (c4b3edca. 4811c7ad).
G(K12]...G[K32Kft,. V = (4811c7ad. 93c1f449). в[Ки] .в[К32Щ. bo) = (93CK449. ce995(2a).
G(/C10J...G(K32Kb1. b0) = (ce995(2a. 46324615).
G|K9]...G[K32Kft1. bo) = (46324615. 37d97f25).
G(Ke)...GtK^Kb,. bo) = (37d97f25. ad0310a4).
G[K7) .G[K32)(by bo) = (ad0310a4.11fe726d).
G(K6)...G(K32Kb,. = (11fe726d, ea89c02c),
GtK5)...GJK32Kb,. i^) = (ea89c02c. 633a7c68),
Gl^J. -GlK^Kb,. Ь*,) = (633a7c68, Ы433785).
G[K3]...G[K32){bv bo) = (M4337a5. 28da3b14),
G(K2)...GIK32Kbv^) =(28da3M4. 76543210).
Результатом расшифрования является открытый текст
в = G*[K1)G(K2)...G(K32)(b1.(\)) = fedcba9876543210.
Библиография
Примечание — Оригиналы международных стандартов ИСО/МЭК находятся в национальных (государственных) органах по стандартизации* государств, принявших настоящий стандарт
[1] ИСО/МЭК 10116 2017 (ISO/1EC 10116 2017)
(2) ИСО/МЭК 18033-1:2015 (ISO/1EC 18033-1 2015)
(3) ИСО/МЭК 18033-3:2010 (ISO/IEC 18033-3 2010)
Информационная технология Методы и средства обеспечения безопасности Режимы работы при использовании алгоритмов кодирования для режима л-разрядного блочного шифрования (Information technology — Security techniques — Modes of operation for an л-blt 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
Ключевые слова: информационная технология, криптографическая защита информации, симметричный криптографический метод, зашифрование, расшифрование, блочный шифр, ключ
БЗ 1—2019/63
Редактор Л В Коретникова Технический редактор В Н Прусакова Корректор Е Р Ароян Компьютерная верстка Ю В Поповой
Сдано в набор 05.12 2018 Подписано в печать 09 01 2019. Формат 60 « 84’/8 Гарнитура Ариал.
Услпечл. 1.86 Уч-мадл. 1.49
Подготовлено на основе электронной версии, предоставленной разработчиком стандарта
ИД кЮрислруденция». 115419. Москва, ул Орджоникидзе. 11. www junsizdat ru y-book@mail ru
Создано в единичном исполнении ФГУП «СТАНДАРТИНФОРМ» для комплектования Федерального информационного фонда стандартов. 117418 Москва. Нахимовский пр-т, д 31. к 2 wwwgostinfo ru mfo@gostinfo ru
1 Область применения..................................................................1
2 Термины, определения и обозначения...................................................1
2.1 Термины и определения...........................................................1
2.2 Обозначения.....................................................................2
3 Общие положения....................................................................3
4 Алгоритм блочного шифрования с длиной блока п - 128 бит.................................3
4.1 Значения параметров..............................................................3
4.2 Преобразования..................................................................4
4.3 Алгоритм развертывания ключа.....................................................4
4.4 Базовый алгоритм шифрования.....................................................4
5 Алгоритм блочного шифрования с длиной блока п = 64 бит..................................5
5.1 Значения параметров..............................................................5
5.2 Преобразования..................................................................5
5.3 Алгоритм развертывания ключа.....................................................5
5.4 Базовый алгоритм шифрования.....................................................6
Приложение А (справочное) Контрольные примеры..........................................7
Библиография........................................................................12
Настоящий стандарт содержит описание алгоритмов блочного шифрования, которые применяются в криптографических методах защиты информации.
Необходимость разработки стандарта вызвана потребностью в создании блочных шифров с различными длинами блока, соответствующих современным требованиям к криптографической стойкости и эксплуатационным качествам.
Настоящий стандарт терминологически и концептуально увязан с международными стандартами ИСО/МЭК 10116 [1] и стандартами серии ИСО/МЭК 18033 [2]. (3J.
Примечание — Основная часть стандарта дополнена приложением А «Контрольные примеры»
| ||||||
(ИУС N*4 2010 г.) |
Information technology Cryptographic data security Block ciphers
Дата введения — 2019—06—01
Настоящий стандарт определяет алгоритмы базовых блочных шифров, которые применяются в криптографических методах обработки и защиты информации, в том числе для обеспечения конфиденциальности, аутентичности и целостности информации при ее передаче, обработке и хранении в автоматизированных системах.
Определенные в настоящем стандарте алгоритмы криптографического преобразования предназначены для аппаратной или программной реализации, удовлетворяют современным криптографическим требованиям и по своим возможностям не накладывают ограничений на степень секретности защищаемой информации.
Стандарт рекомендуется использовать при создании, эксплуатации и модернизации систем обработки информации различного назначения.
В настоящем стандарте применены следующие термины с соответствующими определениями:
2.1.1 алгоритм зашифрования (encryption algorithm): Алгоритм, реализующий зашифрование, т. е. преобразующий открытый текст в шифртекст.
Примечание — Адаптировано из ИСО/МЭК 18033-1 [2}
2.1.2 алгоритм расшифрования (decryption algorithm): Алгоритм, реализующий расшифрование, т. е. преобразующий шифртекст в открытый текст.
Примечание — Адаптировано из ИСО/МЭК 18033-1 (2)
2.1.3 базовый блочный шифр (basic block cipher): Блочный шифр, реализующий при каждом фиксированном значении ключа одно обратимое отображение множества блоков открытого текста фиксированной длины в блоки шифртекста такой же длины.
2.1.4 блок (block): Строка бит определенной длины.
Примечание — Адаптировано из ИСО/МЭК 18033-1 (2)
2.1.5 блочный шифр (block cipher): Шифр из класса симметричных криптографических методов, в котором алгоритм зашифрования применяется к блокам открытого текста для получения блоков шифртекста.
Примечания
1 Адаптировано из ИСО/МЭК 18033-1 [2].
2 В настоящем стандарте установлено, что термины «блочный шифр» и «алгоритм блочного шифрования» являются синонимами
Издание официальное
2.1.6 зашифрование (encryption): Обратимое преобразование данных с помощью шифра, которое формирует шифртекст из открытого текста.
Примечание — Адаптировано из ИСО/МЭК 18033-1 [2]
2.1.7 итерационный ключ (round key): Последовательность символов, вычисляемая в процессе развертывания ключа шифра и определяющая преобразование на одной итерации блочного шифра.
2.1.8 ключ (key): Изменяемый параметр в виде последовательности символов, определяющий криптографическое преобразование.
Примечания
1 Адаптировано из ИСО/МЭК 18033-1 [2]
2 В настоящем стандарте рассматриваются ключи только в виде последовательности двоичных символов (битов)
2.1.9 открытый текст (plaintext): Незашифрованная информация.
Примечание — Адаптировано из ИСО/МЭК 10116 (1)
2.1.10 развертывание ключа (key schedule): Вычисление итерационных ключей из ключа шифра.
2.1.11 расшифрование (decryption): Операция, обратная к зашифрованию.
При мечания
1 Адаптировано из ИСО/МЭК 18033-1 [2]
2 В настоящем стандарте в целях сохранения терминологической преемственности по отношению к нормативным документам, действующим на территории государства, принявшего настоящий стандарт, и опубликованным ранее на русском языке научно-техническим изданиям применяется термин «шифрование», объединяющий операции, определенные терминами «зашифрование» и «расшифрование» Конкретное значение термина «шифрование» определяется в зависимости от контекста упоминания
2.1.12 симметричный криптографический метод (symmetric cryptographic technique): Криптографический метод, использующий один и тот же ключ для преобразования, осуществляемого отправителем, и преобразования, осуществляемого получателем.
Примечание — Адаптировано из ИСО/МЭК 18033-1 (2)
2.1.13 шифр (cipher): Криптографический метод, используемый для обеспечения конфиденциальности данных, включающий алгоритм зашифрования и алгоритм расшифрования.
Примечание — Адаптировано из ИСО/МЭК 18033-1 (2)
2.1.14 шифртекст (ciphertext): Данные, полученные в результате зашифрования открытого текста в целях скрытия его содержания.
Примечание — Адаптировано из ИСО/МЭК 10116 (1)
2.2 Обозначения
В настоящем стандарте применены следующие обозначения:
V* — множество всех двоичных строк конечной длины, включая пустую строку;
Vs — множество всех двоичных строк длины s. где s — целое неотрицательное число; нумерация подстрок и компонент строки осуществляется справа налево, начиная с нуля;
U*W — прямое (декартово) произведение множества U и множества W,;
[А| — число компонент (длина) строки Ае \Л (если А — пустая строка, то [А| = 0);
А\\В — конкатенация строк A. Be V. т. е. строка из V\a\+\b\' в которой подстрока с большими номерами компонент из У|Л| совпадает со строкой А, а подстрока с меньшими номерами компонент из Vв совпадает со строкой 8;
А^г^—циклический сдвиг строки Ае V32 на 11 компонент в сторону компонент, имеющих большие номера;
® — операция покомпонентного сложения по модулю 2 двух двоичных строк одинаковой длины;
Z2« — К0ЛЬЧ° вычетов по модулю 2s;
Ш — операция сложения в кольце Z^;
F — конечное поле GF(2)(xl/p(x), где p(x)=xa + x7 + x6+x + 1eGF(2)(x); элементы поля F представляются целыми числами, причем элементу z0 + z, 9 +... + z7 07€ У соответствует число z0+2 z1+...+27 z7, где z^e{0.1}, /=0.1.....7, и 0 обозначает класс вычетов по модулю
р(х), содержащий х;
Vecs:Z2, -»VS — биективное отображение, сопоставляющее элементу кольца Z^ его двоичное представление, т. е. для любого элемента zeZ^. представленного в виде
z=z0 + 2 z1+...+2s"1 zs_v где z,e {0. 1}. /=0.1.....s-\ выполнено равенство
Vecs(z) = zi_1|..Jz1|z0; lnts: VS->Z2S — отображение, обратное к отображению Уес5. т. е. Ints= Vec"1;
Д: V8 ->У — биективное отображение, сопоставляющее двоичной строке из Ve элемент поля
F следующим образом: строке z7|...|z1|z0. zye{0.1}. /=0Л....7 соответствует элемент z0+ z, 0 + ... + z7 -07е F*.
V: ?->V8 — отображение, обратное к отображению Д. т. е. V=A-1;
ФТ — композиция отображений, при которой отображение ‘Р действует первым;
Ф* — композиция отображений «l*5-1 и Ф. причем «I»1 = Ф.
В настоящем стандарте приведено описание двух базовых блочных шифров с длинами блоков л = 128 бит и п = 64 бит и длинами ключей к = 256 бит.
Примечания
1 На описанный в настоящем стандарте шифр с длиной блока п = 128 бит можно ссылаться как на блочный шифр «Кузнечик» («Kuznechik»)
2 На описанный в настоящем стандарте шифр с длиной блока п = 64 бит можно ссылаться как на блочный шифр «Магма» («Magma»).
4.1 Значения параметров
4.1.1 Нелинейное биективное преобразование
В качестве нелинейного биективного преобразования выступает подстановка n=Vec8rt'lnt8:Vg->Vg. где ji'iZ^-^Z^. Значения подстановки л' записаны ниже в виде массива /с'= (я'(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).
4.1.2 Линейное преобразование
Линейное преобразование задается отображением /: У816 ->\/8. которое определяется следующим образом:
/(ai5.....a0)=V(148 - Д(а15)+32-Д(а14)+133- Д(а13)+16 Д(а12) +
+194 • д(а1,) +192 Д(а10)+1 • Д(ад)+251 • Д(ад)+1 • Д(а7)+192 Д(а6) + (1)
+194 • д(а5)+16 • Д(а4)+133 • Д(а3) + 32 ■ д(а2) +148 Д(а1) +1 • Д(а0))
для любых а(е VQ, / =0.1..... 15. где операции сложения и умножения осуществляются в поле У, а константы являются элементами поля в указанном ранее смысле.
4.2 Преобразования
^128 “^гв S~1; ^128 ^128
При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:
Х[к](а)=к®а, (2)
где /с,аеУ128;
S(a) =S(alf)| jag) ~я(з15)|| |n(e0). (3)
где а = а15|...|а0е\/128. a(eVe, /=0Д...Д5;
преобразование, обратное к преобразованию S, которое может быть вычислено, например, следующим образом:
S-1(a) = S-1(a15|...|ab) = Jr1(a15)|...|«-1(a0). (4)
где а = а15|...|а0еУ128. a,eV8. / = 0Д.... 15. я-1 — подстановка, обратная к подстановке л;
R(a) = R(a,51 I«о) = /(a,5.....a0 )|a, 51|.. ,| a,. (5)
L:V\28~*Vy2e
где a = a15|...|a0e V128, a,eV8. /-0Д ....15;
L{a) = fi16(a). (6)
где a e V12B;
R 1:V/128“> ^128
преобразование, обратное к преобразованию R, которое может быть вычислено, например, следующим образом:
R-1(a) = ^ lao) = ei4 |®i31-- Нао|/^а14-^13.....ao>ais)- ^
где a = a15|...|a0€V’128. а/€Ув. / = 0.1.... 15;
^•^128->^128
L~1(a) = (R-1)16(a). (8)
F(/f): У128хУ128-^128 x ^128
где а е V12e;
F [к ](а1. а0) = (LSX[k)(a^)® а0. а1). (9)
где /г.ао.а^и,^.
4.3 Алгоритм развертывания ключа
Алгоритм развертывания ключа использует итерационные константы С-е V128, / = 1, 2..... 32. которые определены следующим образом:
С, = L(Vec128(/)), / = г 2.....32. (10)
Итерационные ключи Kie^128- 10. вырабатываются на основе ключа
К = ^2551 1^о€ ''гбб1 Ц. I = ОД.....255. и определяются равенствами:
*1 = ^2SSI'••1*128:
К2~ к\21|—|*0: (^)
(*2I+V K2U2) = FlC8(-1HKK2>-1. K2i). / = t Z 3. 4.
4.4 Базовый алгоритм шифрования
4.4.1 Алгоритм зашифрования
Алгоритм зашифрования в зависимости от значений итерационных ключей К, е V128, / = 1.2.....10.
реализует подстановку Ек< k^q, заданную на множестве У128 в соответствии с равенством
ЕКу.....KJa)=X[K,0]LSX[K9)..±SXlK2\LSX[K,](al (12)
где а е У128.
4
Алгоритм расшифрования в зависимости от значений итерационных ключей К(е Ц20, / = 12 10.
реализует подстановку DK^ K)q. заданную на множестве V128 в соответствии с равенством
0Ki Ki0(a)=X(K1]S-1L-1X[K2)...S-1L-1X[K9]S-V1X[K10 ](а). (13)
где а е \/128.
В качестве нелинейного биективного преобразования выступают подстановки тг, = Vec4Jt'lnt4: V4-> VA, где Z^. / = 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. I 14. 4. 7. I 13. 0. 15); я2 = (11. 3. 5. 8. 2, 15. 10. 13. 14. \ 7. 4. 12. 9. 6. 0); к3 =(12. 8. 2. 1. 13. 4. 15. 6. 7. 0. 10. 5. 3. 14. 9. 11); я; = (7. 15. 5. 10. 8. I 6. 13. 0. 9. 3. 14. 11. 4. 2 12); *5 =(5. 13. 15. 6. 9. 2. 12. 10. 11. 7. 8. X 4. 3. 14. 0); Kg = (8. 14. 2. 5. 6. 9. I 12. 15. 4. 11 0. 13. 10. 3. 7); *7=0. 7. 14. 13. 0. 5. 8. 3. 4. 15. 10. 6. 9. 12. 11. 2).
(14)
(15)
(16) (17)
t(a) = f(a71. ||а0) = я7(а7)| ||я0Ц))' где а = а7|...|а0е У32, а,е\/4, / = 0Л....7; g[/c](a) = (f(Vec32(lnt32(a)ffllnt32(/c)))) 4К,Г где fc.ae V32;
G[/rKa1.a0) = (a0.fir[fc](a0)®a1). где к.а0.а} e V32;
G*[*l(av а0) = (g(/f](a0)® а,)1а0. где /г.а0,а1 е V32.
д[к): У32-> У32 G [к]: У32 х У32 -» V32 х V32
При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:
Итерационные ключи К(е V32, / = 1.2,... .32. вырабатываются на основе ключа К = ^255! 1^ое ^25б1 */€ Ц’' ~ 6.1.... 255. и определяются равенствами:
*1 = *2551" •4*224 •
К2 = к223 \кУ92;
*3 = *19ll"4*160:
^4 = *1591” 4*128*
KS “ *127^4*96:
*6 = *951* "I *64: