БИБЛИОТЕКА НОРМАТИВНЫХ ДОКУМЕНТОВ

ГОСТ Р 34.12-2015. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Блочные шифры

Приложение А

(справочное)

 

КОНТРОЛЬНЫЕ ПРИМЕРЫ

 

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

В данном приложении двоичные строки из V*, длина которых кратна 4, записываются в шестнадцатеричном виде, а символ конкатенации ("||") опускается, то есть, строка ГОСТ Р 34.12-2015. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Блочные шифры будет представлена в виде

 

ar - 1ar - 2...a0,

 

где ГОСТ Р 34.12-2015. Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Блочные шифры, i = 0, 1, ..., r - 1. Соответствие между двоичными строками длины 4 и шестнадцатеричными строками длины 1 задается естественным образом (таблица А.1). Преобразование, ставящее в соответствие двоичной строке длины 4r шестнадцатеричную строку длины r, и соответствующее обратное преобразование для простоты записи опускаются.

 

Таблица А.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 Алгоритм блочного шифрования с длиной блока n = 128 бит

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

S(ffeeddccbbaa99881122334455667700) = b66cd8887d38e8d77765aeea0c9a7efc,

S(b66cd8887d38e8d77765aeea0c9a7efc) = 559d8dd7bd06cbfe7e7b262523280d39,

S(559d8dd7bd06cbfe7e7b262523280d39) = 0c3322fed531e4630d80ef5c5a81c50b,

S(0c3322fed531e4630d80ef5c5a81c50b) = 23ae65633f842d29c5df529c13f5acda.

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

R(00000000000000000000000000000100) = 94000000000000000000000000000001,

R(94000000000000000000000000000001) = a5940000000000000000000000000000,

R(a5940000000000000000000000000000) = 64a59400000000000000000000000000,

R(64a59400000000000000000000000000) = 0d64a594000000000000000000000000.

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

L(64a59400000000000000000000000000) = d456584dd0e3e84cc3166e4b7fa2890d,

L(d456584dd0e3e84cc3166e4b7fa2890d) = 79d26221b87b584cd42fbc4ffea5de9a,

L(79d26221b87b584cd42fbc4ffea5de9a) = 0e93691a0cfc60408b7b68f66b513c13,

L(0e93691a0cfc60408b7b68f66b513c13) = e6a8094fee0aa204fd97bcb0b44b8580.

А.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.

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

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

 

a = 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.

 

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

В настоящем контрольном примере расшифрование производится при значениях итерационных ключей из А.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.

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

 

a = X[K1]S-1L-1X[K2]...S-1L-1X[K10](b) =

= 1122334455667700ffeeddccbbaa9988.

 

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

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

t(fdb97531) = 2a196f34,

t(2a196f34) = ebd9f03a,

t(ebd9f03a) = b039bb3d,

t(b039bb3d) = 68695433.

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

g[87654321](fedcba98) = fdcbc20c,

g[fdcbc20c](87654321) = 7e791a4b,

g[7e791a4b](fdcbc20c) = c76549ec,

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

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

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

 

K = ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9

fafbfcfdfeff.

 

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

K1 = ffeeddcc,

K2 = bbaa9988,

K3 = 77665544,

K4 = 33221100,

K5 = f0f1f2f3,

K6 = f4f5f6f7,

K7 = f8f9fafb,

K8 = fcfdfeff,

K9 = ffeeddcc,

K10 = bbaa9988,

K11 = 77665544,

K12 = 33221100,

K13 = f0f1f2f3,

K14 = f4f5f6f7,

K15 = f8f9fafb,

K16 = fcfdfeff,

K17 = ffeeddcc,

K18 = bbaa9988,

K19 = 77665544,

K20 = 33221100,

K21 = f0f1f2f3,

K22 = f4f5f6f7,

K23 = f8f9fafb,

K24 = fcfdfeff,

K25 = fcfdfeff,

K26 = f8f9fafb,

K27 = f4f5f6f7,

K28 = f0f1f2f3,

K29 = 33221100,

K30 = 77665544,

K31 = bbaa9988,

K32 = ffeeddcc.

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

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

 

a = fedcba9876543210,

 

тогда

(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]...G[K1](a1, a0) = 4ee901e5c2d8ca3d.

 

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

В настоящем контрольном примере расшифрование производится при значениях итерационных ключей из А.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, b14337a5),

G[K3]...G[K32](b1, b0) = (b14337a5, 28da3b14),

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

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

 

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