ГОСТ 34.12-2018. Межгосударственный стандарт. Информационная технология. Криптографическая защита информации. Блочные шифры
(введен в действие Приказом Росстандарта от 04.12.2018 № 1061-ст)
Примечание
Документ включен в Перечень стандартов и рекомендаций в области информационной безопасности, применяемых в рамках реализации цифровой повестки Евразийского экономического союза (Рекомендация Коллегии Евразийской экономической комиссии от 12.03.2019 № 9). Текст данного документа приведен с учетом поправок, опубликованных в «ИУС», № 4, 2019; № 1, 2021. Документ введен в действие с 1 июня 2019 года. Взамен ГОСТ 28147-89 в части раздела 1 «Структурная схема алгоритма криптографического преобразования»
ИСТОРИЯ ИЗМЕНЕНИЙ НОРМАТИВНО-ТЕХНИЧЕСКИХ АКТОВ
flowchart LR n0["ГОСТ 28147-89"]:::rst click n0 "https://bukva.ai/docs/gost-28147-89" "ГОСТ 28147-89. Государственный стандарт Союза ССР. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования (утв. и введен в действие Пост" n1["ГОСТ 34.12-2018"]:::doc click n1 "https://bukva.ai/docs/standart-gost-34-12-2018" "ГОСТ 34.12-2018. Межгосударственный стандарт. Информационная технология. Криптографическая защита информации. Блочные шифры (введен в действие Приказом Росстандарта от 04.12.2018 N" 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;
Введен в действие Приказом Федерального агентства по техническому регулированию и метрологии от 4 декабря 2018 г. № 1061-ст
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
Information technology. Cryptographic data security. Block ciphers
Дата введения 1 июня 2019 года
Цели, основные принципы и основной порядок проведения работ по межгосударственной стандартизации установлены в ГОСТ 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)
Настоящий стандарт содержит описание алгоритмов блочного шифрования, которые применяются в криптографических методах защиты информации.
Необходимость разработки стандарта вызвана потребностью в создании блочных шифров с различными длинами блока, соответствующих современным требованиям к криптографической стойкости и эксплуатационным качествам.
Настоящий стандарт терминологически и концептуально увязан с международными стандартами ИСО/МЭК 10116 [1] и стандартами серии ИСО/МЭК 18033 [2], [3].
Примечание — Основная часть стандарта дополнена приложением А «Контрольные примеры».
Настоящий стандарт определяет алгоритмы базовых блочных шифров, которые применяются в криптографических методах обработки и защиты информации, в том числе для обеспечения конфиденциальности, аутентичности и целостности информации при ее передаче, обработке и хранении в автоматизированных системах.
Определенные в настоящем стандарте алгоритмы криптографического преобразования предназначены для аппаратной или программной реализации, удовлетворяют современным криптографическим требованиям и по своим возможностям не накладывают ограничений на степень секретности защищаемой информации.
Стандарт рекомендуется использовать при создании, эксплуатации и модернизации систем обработки информации различного назначения.
2 Термины, определения и обозначения
2.1 Термины и определения
В настоящем стандарте применены следующие термины с соответствующими определениями:
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 x W — прямое (декартово) произведение множества U и множества W;
|A| — число компонент (длина) строки A \in V^{*} (если A — пустая строка, то |A| = 0);
A||B — конкатенация строк A,B \in V^{*} , т.е. строка из V|A|+|B|, в которой подстрока с бо́льшими номерами компонент из V|A| совпадает со строкой A, а подстрока с меньшими номерами компонент из V|B| совпадает со строкой B;
AŒ_{11} — циклический сдвиг строки A \in V_{32} на 11 компонент в сторону компонент, имеющих бо́льшие номера;
- операция покомпонентного сложения по модулю 2 двух двоичных строк одинаковой длины;
\mathbb{Z}_{2^{s}} — кольцо вычетов по модулю 2s;
- операция сложения в кольце \mathbb{Z}_{2^{32}} ;
F — конечное поле GF(2)[x]/p(x), где p(x) = x^{8} + x^{7} + x^{6} + x + 1 \in GF(2)[x] ; элементы поля F представляются целыми числами, причем элементу z_{0} + z_{1} \cdot \theta + ... + z_{7} \cdot \theta^{7} \in F соответствует число z0 + 2·z1 +...+ 27·z7, где {}_{z_{i} \in}{_{0,1}} , i = 0, 1, ..., 7, и \theta обозначает класс вычетов по модулю p(x), содержащий x;
Vec_{s}:\mathbb{Z}_{2^{s}} \rightarrow V_{s} — биективное отображение, сопоставляющее элементу кольца \mathbb{Z}_{2^{s}} его двоичное представление, т.е. для любого элемента z \in \mathbb{Z}_{2^{s}} , представленного в виде z = z0 + 2·z1 +...+ 2s-1·zs-1, где {}_{z_{i} \in}{_{0,1}} , i = 0, 1, ..., s — 1, выполнено равенство Vecs(z) = zs-1||...||z1||z0;
Int_{s}:V_{s} \rightarrow \mathbb{Z}_{2^{s}} — отображение, обратное к отображению Vecs, т.е. Int_{s} = Vec_{s}^{- 1} ;
\Delta:V_{8} \rightarrow F — биективное отображение, сопоставляющее двоичной строке из V8 элемент поля F следующим образом: строке z7||...||z1||z0, {}_{z_{i} \in}{_{0,1}} , i = 0, 1, ..., 7 соответствует элемент z_{0} + z_{1} \cdot \theta + ... + z_{7} \cdot \theta^{7} \in F ;
\nabla:F \rightarrow V_{8} — отображение, обратное к отображению \Delta , т.е. \nabla = \Delta^{- 1} ;
\Phi\Psi — композиция отображений, при которой отображение \Psi действует первым;
\Phi^{s} — композиция отображений \Phi^{s - 1} и \Phi , причем \Phi^{1} = \Phi .
В настоящем стандарте приведено описание двух базовых блочных шифров с длинами блоков n = 128 бит и n = 64 бит и длинами ключей k = 256 бит.
1 На описанный в настоящем стандарте шифр с длиной блока n = 128 бит можно ссылаться как на блочный шифр «Кузнечик» («Kuznechik»).
2 На описанный в настоящем стандарте шифр с длиной блока n = 64 бит можно ссылаться как на блочный шифр «Магма» («Magma»).
4 Алгоритм блочного шифрования с длиной блока n = 128 бит
4.1 Значения параметров
4.1.1 Нелинейное биективное преобразование
В качестве нелинейного биективного преобразования выступает подстановка \pi = Vec_{8}\pi\prime Int_{8}:V_{8} \rightarrow V_{8} , где \pi\prime:\mathbb{Z}_{2^{8}} \rightarrow \mathbb{Z}_{2^{8}} . Значения подстановки \pi\prime записаны ниже в виде массива \pi\prime = (\pi\prime(0),\pi\prime(1),...,\pi\prime(255)) :
\pi\prime = (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 Линейное преобразование
Линейное преобразование задается отображением l:V_{8}^{16} \rightarrow V_{8} , которое определяется следующим образом:
для любых a_{i} \in V_{8} , i = 0, 1, ..., 15, где операции сложения и умножения осуществляются в поле F , а константы являются элементами поля в указанном ранее смысле.
4.2 Преобразования
При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:
4.3 Алгоритм развертывания ключа
Алгоритм развертывания ключа использует итерационные константы C_{i} \in V_{128} , i = 1, 2, ..., 32, которые определены следующим образом:
Ci = L(Vec128(i)), i = 1, 2, ..., 32. (10)
Итерационные ключи K_{i} \in V_{128} , i = 1, 2, ..., 10, вырабатываются на основе ключа K = k_{255}||...||k_{0} \in V_{256} , k_{i} \in V_{1} , i = 0, 1, ..., 255, и определяются равенствами:
(K2i+1, K2i+2) = F[C8(i-1)+8]...F[C8(i-1)+1](K2i-1, K2i), i = 1, 2, 3, 4.
4.4 Базовый алгоритм шифрования
4.4.1 Алгоритм зашифрования
Алгоритм зашифрования в зависимости от значений итерационных ключей K_{i} \in V_{128} , i = 1, 2, ..., 10, реализует подстановку E_{K_{1},...,K_{10}} , заданную на множестве V128 в соответствии с равенством
$E_{K_{1},...,K_{10}}(a) = X[K_{10}]LSX[K_{9}]...LSX[K_{2}]LSXK_{1}$ , (12)
4.4.2 Алгоритм расшифрования
Алгоритм расшифрования в зависимости от значений итерационных ключей K_{i} \in V_{128} , i = 1, 2, ..., 10, реализует подстановку D_{K_{1},...,K_{10}} , заданную на множестве V128 в соответствии с равенством
$D_{K_{1},...,K_{10}}(a) = X[K_{1}]S^{- 1}L^{- 1}X[K_{2}]...S^{- 1}L^{- 1}X[K_{9}]S^{- 1}L^{- 1}XK_{10}$ , (13)
5 Алгоритм блочного шифрования с длиной блока n = 64 бит
5.1 Значения параметров
5.1.1 Нелинейное биективное преобразование
В качестве нелинейного биективного преобразования выступают подстановки \pi_{i} = Vec_{4}\pi\prime_{i}Int_{4}:V_{4} \rightarrow V_{4} , где \pi\prime_{i}:\mathbb{Z}_{2^{4}} \rightarrow \mathbb{Z}_{2^{4}} , i = 0, 1, ..., 7. Значения подстановок \pi\prime_{i} записаны ниже в виде массивов \pi\prime_{i} = (\pi\prime_{i}(0),\pi\prime_{i}(1),...,\pi\prime_{i}(15)) , i = 0, 1, ..., 7:
\pi\prime_{0} = (12,4,6,2,10,5,11,9,14,8,13,7,0,3,15,1) ;
\pi_{1}\prime = (6,8,2,3,9,10,5,12,1,14,4,7,11,13,0,15) ;
\pi\prime_{2} = (11,3,5,8,2,15,10,13,14,1,7,4,12,9,6,0) ;
\pi\prime_{3} = (12,8,2,1,13,4,15,6,7,0,10,5,3,14,9,11) ;
\pi\prime_{4} = (7,15,5,10,8,1,6,13,0,9,3,14,11,4,2,12) ;
\pi\prime_{5} = (5,13,15,6,9,2,12,10,11,7,8,1,4,3,14,0) ;
\pi\prime_{6} = (8,14,2,5,6,9,1,12,15,4,11,0,13,10,3,7) ;
\pi\prime_{7} = (1,7,14,13,0,5,8,3,4,15,10,6,9,12,11,2) .
5.2 Преобразования
При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:
| t:V_{32} \rightarrow V_{32} | t(a) = t(a_{7}\|\|...\|\|a_{0}) = \pi_{7}(a_{7})\|\|...\|\|\pi_{0}(a_{0}) , где a = a_{7}\|\|...\|\|a_{0} \in V_{32} , a_{i} \in V_{4} , i = 0, 1, ..., 7; |
(14) |
|---|---|---|
| g[k]:V_{32} \rightarrow V_{32} | $gk = (t(Vec_{32}(Int_{32}(a)(Int_{32}(k))))Œ_{11}$ , где k,a \in V_{32} ; |
(15) |
| G[k]:V_{32} \times V_{32} \rightarrow V_{32} \times V_{32} | $Gk = (a_{0},gka_{1})$ , где k,a_{0},a_{1} \in V_{32} ; |
(16) |
| G^{*}[k]:V_{32} \times V_{32} \rightarrow V_{64} | $G^{*}k = (gka_{1})||a_{0}$ , где k,a_{0},a_{1} \in V_{32} . |
(17) |
5.3 Алгоритм развертывания ключа
Итерационные ключи K_{i} \in V_{32} , i = 1, 2, ..., 32, вырабатываются на основе ключа K = k_{255}||...||k_{0} \in V_{256} , k_{i} \in V_{1} , i = 0, 1, ..., 255, и определяются равенствами:
Ki+24 = K9-i, i = 1, 2, ..., 8.
5.4 Базовый алгоритм шифрования
5.4.1 Алгоритм зашифрования
Алгоритм зашифрования в зависимости от значений итерационных ключей K_{i} \in V_{32} , i = 1, 2, ..., 32, реализует подстановку E_{K_{1},...,K_{32}} , заданную на множестве V64 в соответствии с равенством
$E_{K_{1},...,K_{32}}(a) = G^{*}[K_{32}]G[K_{31}]...G[K_{2}]GK_{1}$ , (19)
где a = a_{1}||a_{0} \in V_{64} , a_{0},a_{1} \in V_{32} .
5.4.2 Алгоритм расшифрования
Алгоритм расшифрования в зависимости от значений итерационных ключей K_{i} \in V_{32} , i = 1, 2, ..., 32, реализует подстановку D_{K_{1},...,K_{32}} , заданную на множестве V64 в соответствии с равенством
$D_{K_{1},...,K_{32}}(a) = G^{*}[K_{1}]G[K_{2}]...G[K_{31}]GK_{32}$ , (20)
где a = a_{1}||a_{0} \in V_{64} , a_{0},a_{1} \in V_{32} .
Настоящее приложение носит справочный характер и не является частью нормативных положений настоящего стандарта.
В настоящем приложении двоичные строки из V*, длина которых кратна 4, записываются в шестнадцатеричном виде, а символ конкатенации («||») опускается, т.е. строка a \in V_{4r} будет представлена в виде
где {}_{a_{i} \in}{_{0,1,...,9,a,b,c,d,e,f}} , i = 0, 1, ..., r — 1. Соответствие между двоичными строками длины 4 и шестнадцатеричными строками длины 1 задается естественным образом (см. таблицу А.1). Преобразование, ставящее в соответствие двоичной строке длины 4r шестнадцатеричную строку длины r, и соответствующее обратное преобразование для простоты записи опускаются.
Соответствие между двоичными и шестнадцатеричными строками
А.2 Алгоритм блочного шифрования с длиной блока n = 128 бит
S(ffeeddccbbaa99881122334455667700) = b66cd8887d38e8d77765aeea0c9a7efc,
S(b66cd8887d38e8d77765aeea0c9a7efc) = 559d8dd7bd06cbfe7e7b262523280d39,
S(559d8dd7bd06cbfe7e7b262523280d39) = 0c3322fed531e4630d80ef5c5a81c50b,
S(0c3322fed531e4630d80ef5c5a81c50b) = 23ae65633f842d29c5df529c13f5acda.
R(00000000000000000000000000000100) = 94000000000000000000000000000001,
R(94000000000000000000000000000001) = a5940000000000000000000000000000,
R(05940000000000000000000000000000) = 64059400000000000000000000000000,
R(64a59400000000000000000000000000) = 0d64a594000000000000000000000000.
L(64a59400000000000000000000000000) = d456584dd0e3e84cc3166e4b7fa2890d,
L(d456584dd0e3e84cc3166e4b7fa2890d) = 79d26221b87b584cd42fbc4ffea5de9a,
L(79d26221b87b584cd42fbc4ffea5de9a) = 0e93691a0cfc60408b7b68f66b513c13,
L(0e93691a0cfc60408b7b68f66b513c13) = e6a8094fee0aa204fd97bcb0b44b8580.
А.2.4 Алгоритм развертывания ключа
В настоящем контрольном примере ключ имеет значение:
K = 8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef.
K1 = 8899aabbccddeeff0011223344556677,
K2 = fedcba98765432100123456789abcdef.
C1 = 6ea276726c487ab85d27bd10dd849401,
XC1 = e63bdcc9a09594475d369f2399d1f276,
SXC1 = 0998ca37a7947aabb78f4a5ae81b748a,
LSXC1 = 3d0940999db75d6a9257071d5e6144a6,
F[C1](K1, K2) = (c3d5fa01ebe36f7a9374427ad7ca8949, 8899aabbccddeeff0011223344556677).
C2 = dc87ece4d890f4b3ba4eb92079cbeb02,
F[C2]F[C1](K1, K2) = (37777748e56453377d5e262d90903f87, c3d5fa01ebe36f7a9374427ad7ca8949).
C3 = b2259a96b4d88e0be7690430a44f7f03,
F[C3]...F[C1](K1, K2) = (f9eae5f29b2815e31f11ac5d9c29fb01, 37777748e56453377d5e262d90903f87).
C4 = 7bcd1b0b73e32ba5b79cb140f2551504,
F[C4]...F[C1](K1, K2) = (e980089683d00d4be37dd3434699b98f, f9eae5f29b2815e31f11ac5d9c29fb01).
C5 = 156f6d791fab511deabb0c502fd18105,
F[C5]...F[C1](K1, K2) = (b7bd70acea4460714f4ebe13835cf004, e980089683d00d4be37dd3434699b98f).
C6 = a74af7efab73df160dd208608b9efe06,
F[C6]...F[C1](K1, K2) = (1a46ea1cf6ccd236467287df93fdf974, b7bd70acea4460714f4ebe13835cf004).
C7 = c9e8819dc73ba5ae50f5b570561a6a07,
F[C7]...F[C1](K1, K2) = (3d4553d8e9cfec6815ebadc40a9ffd04, 1a46ea1cf6ccd236467287df93fdf974).
C8 = f6593616e6055689adfba18027aa2a08,
(K3, K4) = F[C8]...F[C1](K1, K2) = (db31485315694343228d6aef8cc78c44, 3d4553d8e9cfec6815ebadc40a9ffd04).
Итерационные ключи Ki, i = 1, 2, ..., 10, принимают следующие значения:
K1 = 8899aabbccddeeff0011223344556677,
K2 = fedcba98765432100123456789abcdef,
K3 = db31485315694343228d6aef8cc78c44,
K4 = 3d4553d8e9cfec6815ebadc40a9ffd04,
K5 = 57646468c44a5e28d3e59246f429f1ac,
K6 = bd079435165c6432b532e82834da581b,
K7 = 51e640757e8745de705727265a0098b1,
K8 = 5a7925017b9fdd3ed72a91a22286f984,
K9 = bb44e25378c73123a5f32f73cdb6e517,
K10 = 72e9dd7416bcf45b755dbaa88e4a4043.
В настоящем контрольном примере зашифрование проводится при значениях итерационных ключей из А.2.4. Пусть открытый текст, подлежащий зашифрованию, равен
a = 1122334455667700ffeeddccbbaa9988,
XK1 = 99bb99ff99bb99ffffffffffffffffff,
SXK1 = e87de8b6e87de8b6b6b6b6b6b6b6b6b6,
LSXK1 = e297b686e355b0a1cf4a2f9249140830,
LSX[K2]LSXK1 = 285e497a0862d596b36f4258a1c69072,
LSX[K3]...LSXK1 = 0187a3a429b567841ad50d29207cc34e,
LSX[K4]...LSXK1 = ec9bdba057d4f4d77c5d70619dcad206,
LSX[K5]...LSXK1 = 1357fd11de9257290c2a1473eb6bcde1,
LSX[K6]...LSXK1 = 28ae31e7d4c2354261027ef0b32897df,
LSX[K7]...LSXK1 = 07e223d56002c013d3f5e6f714b86d2d,
LSX[K8]...LSXK1 = cd8ef6cd97e0e092a8e4cca61b38bf65,
LSX[K9]...LSXK1 = 0d8e40e4a800d06b2f1b37ea379ead8e.
Результатом зашифрования является шифртекст
b = X[K10]LSX[K9]...LSXK1 = = 7f679d90bebc24305a468d42b9d4edcd.
В настоящем контрольном примере расшифрование проводится при значениях итерационных ключей из А.2.4. Пусть шифртекст, подлежащий расшифрованию, равен шифртексту, полученному в А.2.5:
b = 7f679d90bebc24305a468d42b9d4edcd,
XK10 = 0d8e40e4a800d06b2f1b37ea379ead8e,
L-1XK10 = 8a6b930a52211b45c5baa43ff8b91319,
S-1L-1XK10 = 76ca149eef27d1b10d17e3d5d68e5a72,
S-1L-1X[K9]S-1L-1XK10 = 5d9b06d41b9d1d2d04df7755363e94a9,
S-1L-1X[K8]...S-1L-1XK10 = 79487192aa45709c115559d6e9280f6e,
S-1L-1X[K7]...S-1L-1XK10 = ae506924c8ce331bb918fc5bdfb195fa,
S-1L-1X[K6]...S-1L-1XK10 = bbffbfc8939eaaffafb8e22769e323aa,
S-1L-1X[K5]...S-1L-1XK10 = 3cc2f07cc07a8bec0f3ea0ed2ae33e4a,
S-1L-1X[K4]...S-1L-1XK10 = f36f01291d0b96d591e228b72d011c36,
S-1L-1X[K3]...S-1L-1XK10 = 1c4b0c1e950182b1ce696af5c0bfc5df,
S-1L-1X[K2]...S-1L-1XK10 = 99bb99ff99bb99ffffffffffffffffff.
Результатом расшифрования является открытый текст
a = X[K1]S-1L-1X[K2]...S-1L-1XK10 = = 1122334455667700ffeeddccbbaa9988.
А.3 Алгоритм блочного шифрования с длиной блока n = 64 бит
g87654321 = fdcbc20c,
gfdcbc20c = 7e791a4b,
g7e791a4b = c76549ec,
gc76549ec = 9791c849.
А.3.3 Алгоритм развертывания ключа
В настоящем контрольном примере ключ имеет значение:
K = ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff.
Итерационные ключи Ki, i = 1, 2, ..., 32, принимают следующие значения:
В настоящем контрольном примере зашифрование проводится при значениях итерационных ключей из А.3.3. Пусть открытый текст, подлежащий зашифрованию, равен
(a1, a0) = (fedcba98, 76543210),
G[K1](a1, a0) = (76543210, 28da3b14),
G[K2]G[K1](a1, a0) = (28da3b14, b14337a5),
G[K3]...G[K1](a1, a0) = (b14337a5, 633a7c68),
G[K4]...G[K1](a1, a0) = (633a7c68, ea89c02c),
G[K5]...G[K1](a1, a0) = (ea89c02c, 11fe726d),
G[K6]...G[K1](a1, a0) = (11fe726d, ad0310a4),
G[K7]...G[K1](a1, a0) = (ad0310a4, 37d97f25),
G[K8]...G[K1](a1, a0) = (37d97f25, 46324615),
G[K9]...G[K1](a1, a0) = (46324615, ce995f2a),
G[K10]...G[K1](a1, a0) = (ce995f2a, 93c1f449),
G[K11]...G[K1](a1, a0) = (93c1f449, 4811c7ad),
G[K12]...G[K1](a1, a0) = (4811c7ad, c4b3edca),
G[K13]...G[K1](a1, a0) = (c4b3edca, 44ca5ce1),
G[K14]...G[K1](a1, 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[K20]...G[K1](a1, a0) = (89cadf21, bac8444d),
G[K21]...G[K1](a1, a0) = (bac8444d, 11263a21),
G[K22]...G[K1](a1, a0) = (11263a21, 625434c3),
G[K23]...G[K1](a1, a0) = (625434c3, 8025c0a5),
G[K24]...G[K1](a1, a0) = (8025c0a5, b0d66514),
G[K25]...G[K1](a1, a0) = (b0d66514, 47b1d5f4),
G[K26]...G[K1](a1, a0) = (47b1d5f4, c78e6d50),
G[K27]...G[K1](a1, a0) = (c78e6d50, 80251e99),
G[K28]...G[K1](a1, a0) = (80251e99, 2b96eca6),
G*[K29]...G[K1](a1, a0) = (2b96eca6, 05ef4401),
G[K30]...G[K1](a1, a0) = (05ef4401, 239a4577),
G[K31]...G[K1](a1, a0) = (239a4577, c2d8ca3d).
Результатом зашифрования является шифртекст
b = G*[K32]G[K31]...GK1 = 4ee901e5c2d8ca3d.
В настоящем контрольном примере расшифрование проводится при значениях итерационных ключей из А.3.3. Пусть шифртекст, подлежащий расшифрованию, равен шифртексту, полученному в предыдущем пункте:
(b1, b0) = (4ee901e5, c2d8ca3d),
G[K32](b1, b0) = (c2d8ca3d, 239a4577),
G[K31]G[K32](b1, b0) = (239a4577, 05ef4401),
G[K30]...G[K32](b1, b0) = (05ef4401, 2b96eca6),
G[K29]...G[K32](b1, b0) = (2b96eca6, 80251e99),
G[K28]...G[K32](b1, b0) = (80251e99, c78e6d50),
G[K27]...G[K32](b1, b0) = (c78e6d50, 47b1d5f4),
G[K26]...G[K32](b1, b0) = (47b1d5f4, b0d66514),
G[K25]...G[K32](b1, b0) = (b0d66514, 8025c0a5),
G[K24]...G[K32](b1, b0) = (8025c0a5, 625434c3),
G[K23]...G[K32](b1, b0) = (625434c3, 11263a21),
G[K22]...G[K32](b1, b0) = (11263a21, bac8444d),
G[K21]...G[K32](b1, b0) = (bac8444d, 89cadf21),
G[K20]...G[K32](b1, b0) = (89cadf21, e7116722),
G[K19]...G[K32](b1, b0) = (e7116722, e32805bc),
G[K18]...G[K32](b1, b0) = (e32805bc, 4f15b0bb),
G[K17]...G[K32](b1, b0) = (4f15b0bb, 2098cd86),
G[K16]...G[K32](b1, b0) = (2098cd86, fef51b68),
G[K15]...G[K32](b1, b0) = (fef51b68, 44ca5ce1),
G[K14]...G[K32](b1, b0) = (44ca5ce1, c4b3edca),
G[K13]...G[K32](b1, b0) = (c4b3edca, 4811c7ad),
G[K12]...G[K32](b1, b0) = (4811c7ad, 93c1f449),
G[K11]...G[K32](b1, b0) = (93c1f449, ce995f2a),
G[K10]...G[K32](b1, b0) = (ce995f2a, 46324615),
G[K9]...G[K32](b1, b0) = (46324615, 37d97f25),
G[K8]...G[K32](b1, b0) = (37d97f25, ad0310a4),
G[K7]...G[K32](b1, b0) = (ad0310a4, 11fe726d),
G[K6]...G[K32](b1, b0) = (11fe726d, ea89c02c),
G[K5]...G[K32](b1, b0) = (ea89c02c, 633a7c68),
G[K4]...G[K32](b1, b0) = (633a7c68, b14337a5),
G[K3]...G[K32](b1, b0) = (b14337a5, 28da3b14),
G[K2]...G[K32](b1, b0) = (28da3b14, 76543210).
Результатом расшифрования является открытый текст
a = G*[K1]G[K2]...GK32 = fedcba9876543210.
Примечание - Оригиналы международных стандартов ИСО/МЭК находятся в национальных (государственных) органах по стандартизации <*> государств, принявших настоящий стандарт.
<*> В Российской Федерации оригиналы международных стандартов ИСО/МЭК находятся в Федеральном информационном фонде стандартов.
(1)