Information technology. Cryptographic data security. Block ciphers

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

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

ГОСТ Р
34.
12-
2015

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

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

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

Москва

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

2018

Предисловие

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

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

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

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

5 ПЕРЕИЗДАНИЕ. Октябрь 2018 г.

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

Введение

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

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

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

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

ГОСТ Р 34.12-2015

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

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

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

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

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 *

-

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

Vs

-

множество всех двоичных строк длины s, где s - целое неотрицательное число;

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

U × W

-

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

|A|

-

число компонент (длина) строки  (если A - пустая строка, то |A| = 0);

A||B

-

конкатенация строк , т.е. строка из V|A|+|B|, в которой подстрока с большими номерами компонент из V|A| совпадает со строкой A, а подстрока с меньшими номерами компонент из V|B| совпадает со строкой B;

 

-

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

 

-

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

 

-

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

 

-

операция сложения в кольце ;

 

-

конечное поле GF(2)[x]/p(x), где ; элементы поля  представляются целыми числами, причем элементу  соответствует число z0 + 2∙z1 + ... + 27z7, где , i = 0, 1, ..., 7, и θ обозначает класс вычетов по модулю p(x), содержащий x;

 

-

биективное отображение, сопоставляющее элементу кольца  его двоичное представление, т.е. для любого элемента , представленного в виде  где  i = 0, 1, …, s-1, выполнено равенство Vecs(z) = zs-1 ||...|| z1 || z0;

 

-

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

 

-

биективное отображение, сопоставляющее двоичной строке из V8 элемент поля  следующим образом: строке , i = 0, 1, ..., 7, соответствует элемент ;

 

-

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

ΦΨ

-

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

Φs

-

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

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

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

Примечания

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

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

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

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

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

В качестве нелинейного биективного преобразования выступает подстановка π = Vec8 π′ Int8: V8 →V8, где . Значения подстановки π′ записаны ниже в виде массива π′ = (π′(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 Линейное преобразование

Линейное преобразование задается отображением , которое определяется следующим образом:

(1)

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

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

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

X[k]: V128V128

,

где k, a  V128;

(2)

S: V128V128

S(a) = S(a15 ||...|| a0) = π(a15) ||... || π(а0),

где , аi  V8, i = 0, 1, ..., 15;

(3)

S-1: V128V128

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

S-1(a) = S-1(a15 || ... || а0) = π-1(а15)|| ... || π-1(а0),

где а = а15 || ... ||а0  V128, аi  V8, i = 0, 1, ..., 15;

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

(4)

R: V128V128

R(a) = R(a15 || ... || а0) = (а15, ..., а0)|| а15 || ... || а1

где а = а15 || ... ||а0  V128, аi  V8, i = 0, 1, ..., 15;

(5)

L: V128V128

L(a) = R16(a),

где а  V128,

(6)

R-1: V128V128

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

R-1(a) = R-1(а15 ||... || а0) = а14 || а13 ||... || а0 || (а14, а13 ,..., а0, а15),

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

(7)

L-1: V128V128

L-1(а) = (R-1)16(а),

где а  V128

(8)

F[k]: V128 × V128V128 × V128

,

где k, а0, а1  V128.

(9)

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

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

Сi = L(Vec128(i)), i = 1, 2, ..., 32.

(10)

Итерационные ключи Ki  V128, i = 1, 2,..., 10 вырабатываются на основе ключа K = k255 ||... || k0  V256, ki  V1, i = 0, 1, ..., 255 и определяются равенствами:

K1 = k255 ||... || k128;

K2 = k127 ||... || k0;

(11)

(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 Алгоритм зашифрования

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

,

(12)

где a  V128.

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

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

,

(13)

где a  V128.

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

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

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

В качестве нелинейного биективного преобразования выступают подстановки , где , i = 0, 1, ..., 7. Значения подстановок πi′ записаны ниже в виде массивов πi′ = (πi′(0), πi′(1), ... , πi′ (15)), i = 0, 1, ... ,7:

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

πi′ = (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: V32V32

t(a) = t(a7 || ... || а0) = π77) || ... || a0(а0),

где а = а7 || ... || а0  V32, аi  V4, i = 0, 1, ... ,7;

(14)

g[k]: V32V32

 

где k, а  V32,

(15)

G[k]: V32 × V32V32 × V32

 

где k, a0, a1,  V32;

(16)

G*[k]: V32 × V32V64

 

где k, a0, a1  V32.

(17)

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

Итерационные ключи Ki  V32, i = 1, 2, ..., 32 вырабатываются на основе ключа K = k255 ||... || k0  V256, ki  V1, i = 0, 1, ..., 255 и определяются равенствами:

 

K1 = k255 ||... || k224

(18)

 

K2 = k223 ||... || k192

 

K3 = k191 ||... || k160

 

K4 = k159 ||... || k128

 

K5 = k127 ||... || k96

 

K6 = k95 ||... || k64

 

K7 = k63 ||... || k32

 

Ki+8 = Ki, i = 1, 2, …, 8

 

Ki+16 = Ki, i = 1, 2, …, 8

 

Ki+24 = K9-i, i = 1, 2, …, 8

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

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

Алгоритм зашифрования в зависимости от значений итерационных ключей Ki  V32, i = 1, 2, ..., 32 реализует подстановку , заданную на множестве V64 в соответствии с равенством

,

(19)

где а = а1 || а0  V64, а0, а1,  V32.

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

Алгоритм расшифрования в зависимости от значений итерационных ключей Ki  V32, i = 1, 2, ..., 32 реализует подстановку , заданную на множестве V64 в соответствии с равенством

,

(20)

где а = а1 || а0  V64, а0, а1,  V32.

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

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

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

ar-1ar-2a0,

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

Таблица A.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

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

A.1.1 Преобразование S

S(ffeeddccbbaa99881122334455667700) = b66cd8887d38e8d77765aeea0c9a7efc,

S(b66cd8887d38e8d77765aeea0c9a7efc) = 559d8dd7bd06cbfe7e7b262523280d39,

S(559d8dd7bd06cbfe7e7b262523280d39) = 0c3322fed531e4630d80ef5c5a81c50b,

S(0c3322fed531e4630d80ef5c5a81c50b) = 23ae65633f842d29c5df529c13f5acda.

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

R(00000000000000000000000000000100) = 94000000000000000000000000000001,

R(94000000000000000000000000000001) = a5940000000000000000000000000000,

R(5940000000000000000000000000000) = 6459400000000000000000000000000,

R(64a59400000000000000000000000000) = 0d64a594000000000000000000000000.

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

L(64а59400000000000000000000000000) = d456584dd0e3e84cc3166e4b7fa2890d,

L(d456584dd0e3e84cc3166e4b7fa2890d) = 79d26221b87b584cd42fbc4ffea5de9a,

L(79d26221b87b584cd42fbc4ffea5de9a) = 0e93691a0cfc60408b7b68f66b513c13,

L(0е93691a0cfc60408b7b68f66b513c13) = e6a8094fee0aa204fd97bcb0b44b8580.

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

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

K = 8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef.

K1= 8899aabbccddeeff0011223344556677,

K2 = fedcba98765432100123456789abcdef.

C1 = 6ea276726c487ab85d27bd10dd849401,

X[C1](K1) = e63bdcc9a09594475d369f2399d1f276,

SX[C1](K1) = 0998ca37a7947aabb78f4a5ae81b748a,

LSX[C1](K1) = 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.

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

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

а = 1122334455667700ffeeddccbbaa9988,

тогда

X[K1](a) = 99bb99ff99bb99ffffffffffffffffff,

SX[K1](a) = e87de8b6e87de8b6b6b6b6b6b6b6b6b6,

LSX[K1](a) = e297b686e355b0a1cf4a2f9249140830,

LSX[K2]LSX[K1](a) = 285e497a0862d596b36f4258a1c69072,

LSX[K3] ... LSX[K1](a) = 0187a3a429b567841ad50d29207cc34e,

LSX[K4] ... LSX[K1](a) = ec9bdba057d4f4d77c5d70619dcad206,

LSX[K5] ... LSX[K1](a) = 1357fd11de9257290c2a1473eb6bcde1,

LSX[K6] ... LSX[K1](a) = 28ae31e7d4c2354261027ef0b32897df,

LSX[K7] ... LSX[K1](a) = 07e223d56002c013d3f5e6f714b86d2d,

LSX[K8] ... LSX[K1](a) = cd8ef6cd97e0e092a8e4cca61b38bf65,

LSX[K9] ... LSX[K1](a) = 0d8e40e4a800d06b2f1b37ea379ead8e.

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

b = X[K10]LSX[K9] ... LSX[K1](a) = 7f679d90bebc24305a468d42b9d4edcd.

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

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

b = 7f679d90bebc24305a468d42b9d4edcd,

тогда

X[K10](b) = 0d8e40e4a800d06b2f1b37ea379ead8e,

L-1X[K10](b) = 8a6b930a52211b45c5baa43ff8b91319,

S-1L-1X[K10](b)= 76ca149eef27d1b10d17e3d5d68e5a72,

S-1L-1X[K9]S-1L-1X[K10](b) = 5d9b06d41b9d1d2d04df7755363e94a9,

S-1L-1X[K8] … S-1L-1X[K10](b) = 79487192aa45709c115559d6e9280f6e,

S-1L-1X[K7] … S-1L-1X[K10](b) = ae506924c8ce331bb918fc5bdfb195fa,

S-1L-1X[K6] … S-1L-1X[K10](b) = bbffbfc8939eaaffafb8e22769e323aa,

S-1L-1X[K5] … S-1L-1X[K10](b) = 3cc2f07cc07a8bec0f3ea0ed2ae33e4a,

S-1L-1X[K4] … S-1L-1X[K10](b) = f36f01291d0b96d591e228b72d011c36,

S-1L-1X[K3] … S-1L-1X[K10](b) = 1c4b0c1e950182b1ce696af5c0bfc5df,

S-1L-1X[K2] … S-1L-1X[K10](b) = 99bb99ff99bb99ffffffffffffffffff.

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

а = X[K1]S-1L-1X[K2] ... S-1L-1X[K10](b) = 1122334455667700ffeeddccbbaa9988.

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

A.2.1 Преобразование t

t(fdb97531) = 2a196f34,

t(2a196f34) = ebd9f03a,

t(ebd9f03a) = b039bb3d,

t(b039bb3d) = 68695433.

A.2.2 Преобразование g

g[87654321](fedcba98) = fdcbc20c,

g[fdcbc20c](87654321) = 7e791a4b,

g[7e791a4b](fdcbc20c) = c76549ec,

g[c76549ec](7e791a4b) = 9791c849.

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

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

K = ffeeddccbbaa99887766554433221100f0flf2f3f4f5f6f7f8f9fafbfcfdfeff.

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

K1 = ffeeddcc,

K9 = ffeeddcc,

K17 = ffeeddcc,

K25 = fcfdfeff,

K2 = bbaa9988,

K10 = bbaa9988,

K18 = bbaa9988,

K26 = f8f9fafb,

K3 = 77665544,

K11 = 77665544,

K19 = 77665544,

K27 = f4f5f6f7,

K4 = 33221100,

K12 = 33221100,

K20 = 33221100,

K28 = f0f1f2f3,

K5 = f0f1f2f3,

K13 = f0f1f2f3,

K21 = f0f1f2f3,

K29 = 33221100,

K6 = f4f5f6f7,

K14 = f4f5f6f7,

K22 = f4f5f6f7,

K30 = 77665544,

K7 = f8f9fafb,

K15 = f8f9fafb,

K23 = f8f9fafb,

K31 = bbaa9988,

K8 = fcfdfeff,

K16 = fcfdfeff,

K24 = fcfdfeff,

K32 = ffeeddcc.

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

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

а = fedcba9876543210,

тогда

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

G[K1](a1, а0) = (76543210, 28da3b14),

G[K2]G[K1](a1, а0) = (28da3b14, b14337а5),

G[K3] … G[K1](a1, а0) = (b14337а5, 633a7c68),

G[K4] … G[K1](a1, а0) = (633a7c68, ea89c02c),

G[K5] … G[K1](a1, а0) = (ea89c02c, 11fe726d),

G[K6] … G[K1](a1, а0) = (11fe726d, ad0310a4),

G[K7] … G[K1](a1, а0) = (ad0310a4, 37d97f25),

G[K8] … G[K1](a1, а0) = (37d97f25, 46324615),

G[K9] … G[K1](a1, а0) = (46324615, ce995f2a),

G[K10] … G[K1](a1, а0) = (ce995f2a, 93c1f449),

G[K11] … G[K1](a1, а0) = (93c1f449, 4811c7ad),

G[K12] … G[K1](a1, а0) = (4811c7ad, c4b3edca),

G[K13] … G[K1](a1, а0) = (c4b3edca, 44ca5ce1),

G[K14] … G[K1](a1, а0) = (44ca5ce1, fef51b68),

G[K15] … G[K1](a1, а0) = (fef51b68, 2098cd86),

G[K16] … G[K1](a1, а0) = (2098cd86, 4f15b0bb),

G[K17] … G[K1](a1, а0) = (4f15b0bb, e32805bc),

G[K18] … G[K1](a1, а0) = (e32805bc, e7116722),

G[K19] … G[K1](a1, а0) = (e7116722, 89cadf21,

G[K20] … G[K1](a1, а0) = (89cadf21, bac8444d),

G[K21] … G[K1](a1, а0) = (bac8444d, 11263a21),

G[K22] … G[K1](a1, а0) = (11263a21, 625434c3),

G[K23] … G[K1](a1, а0) = (625434c3, 8025c0a5),

G[K24] … G[K1](a1, а0) = (8025c0a5, b0d66514),

G[K25] … G[K1](a1, а0) = (b0d66514, 47b1d5f4),

G[K26] … G[K1](a1, а0) = (47b1d5f4, c78e6d50),

G[K27] … G[K1](a1, а0) = (c78e6d50, 80251e99),

G[K28] … G[K1](a1, а0) = (80251e99, 2b96eca6),

G[K29] … G[K1](a1, а0) = (2b96eca6, 05ef4401),

G[K30] … G[K1](a1, а0) = (05ef4401, 239a4577),

G[K31] … G[K1](a1, а0) = (239a4577, c2d8ca3d).

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

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

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

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

b = 4ee901e5c2d8ca3d,

тогда

(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, b14337а5),

G[K3] … G[K32](b1, b0) = (b14337а5, 28da3b14),

G[K2] … G[K32](b1, b0) = (28da3b14 ,76543210).

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

a =G*[K1]G[K2] ... G[K32](b1, b0) = fedcba9876543210.

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

__________

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

[1]

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

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

[2]

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

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

[3]

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

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

 

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