- ключ DK вычисляют как конкатенацию байтовых строк T(i) с последующим усечением полученной последовательности до длины dkLen выходной последовательности:
![]() Контрольные примеры для различных значений параметров приведены в приложении Б.
В данном разделе описана схема шифрования данных PBES2 на ключе DK с использованием ГОСТ Р 34.12-2015 в режиме CTR-ACPKM согласно Р 1323565.1.017-2018.
Процесс зашифрования данных M в схеме PBES2 осуществляется следующим образом:
- выбирается случайное значение S размерности от 8 до 32 байт. Рекомендуемая размерность - 32 байта;
- выбирается число итераций c в зависимости от условий эксплуатации и длины пароля (рекомендуемые значения приведены в приложении А);
- устанавливается значение dkLen = 32;
- ключ шифрования данных DK вычисляется с помощью функции диверсификации согласно алгоритму из раздела 4 с использованием параметров S, c, dkLen, то есть DK = PBKDF2(P, S, c, 32);
- значение ukm выбирается случайно равновероятно из множества Bn, где n принимает значение 12 или 16 байт в зависимости от выбранного алгоритма шифрования. Для обработки каждого отдельного сообщения на одном начальном ключе используется уникальное значение ukm:
- устанавливается значение синхропосылки S' = ukm[1..n-8];
- для алгоритмов id-gostr3412-2015-magma-ctracpkm и id-gostr3412-2015-kuznyechik-ctracpkm данные зашифровываются в соответствии с ГОСТ Р 34.12-2015 в режиме CTR-ACPKM согласно Р 1323565.1.017-2018, в качестве начального ключа используется значение DK, в качестве синхропосылки - значение S';
- для алгоритмов id-gostr3412-2015-magma-ctracpkm-omac и id-gostr3412-2015-kuznyechik-ctracpkm-omac данные зашифровываются в соответствии с ГОСТ Р 34.12-2015 в режиме CTR-ACPKM согласно Р 1323565.1.017-2018 на ключе DK с использованием ukm следующим образом:
а) из ключа DK с использованием алгоритма KDF_TREE_GOSTR3411_2012_256 согласно Р 50.1.113-2016 вырабатывается два ключа:
1) ключ шифрования сообщения K(1);
2) ключ имитозащиты K(2);
входные параметры для алгоритма KDF_TREE_GOSTR3411_2012_256 принимают следующие значения:
Kin = DK
label = "kdf tree"
seed = ukm[n-7..n]
R = 1;
б) с использованием ключа имитозащиты K(2), выработанного из DK, осуществляется вычисление имитовставки mac для открытых данных M в соответствии с ГОСТ Р 34.12-2015 в режиме выработки имитовставки согласно ГОСТ Р 34.13-2015. Значение имитовставки mac добавляется в конец открытых данных;
в) полученная строка M||mac зашифровывается с использованием ключа шифрования K(1), выработанного из DK в соответствии с ГОСТ Р 34.12-2015 в режиме CTR-ACPKM согласно Р 1323565.1.017-2018, с начальным значением S' согласно выбранному алгоритму шифрования;
- параметры S, c, ukm сохраняют в качестве параметров алгоритмов в соответствии с разделом 7.
Процесс расшифрования данных C с использованием параметров S, c, ukm в схеме PBES2 осуществляется следующим образом:
- устанавливается значение dkLen = 32;
- ключ расшифрования данных DK вычисляется с помощью функции диверсификации согласно алгоритму из раздела 4 с использованием параметров S, c, dkLen, то есть DK = PBKDF2(P, S, c, 32);
- устанавливается значение синхропосылки S' = ukm[1..n-8], где n - размерность ukm в байтах;
- для алгоритмов id-gostr3412-2015-magma-ctracpkm и id-gostr3412-2015-kuznyechik-ctracpkm данные расшифровываются в соответствии с ГОСТ Р 34.12-2015 в режиме CTR-ACPKM согласно Р 1323565.1.017-2018 на ключе DK с начальным значением S';
- для алгоритмов id-gostr3412-2015-magma-ctracpkm-omac и id-gostr3412-2015-kuznyechik-ctracpkm-omac данные расшифровываются в соответствии с ГОСТ Р 34.12-2015 в режиме CTR-ACPKM согласно Р 1323565.1.017-2018 на ключе DK с использованием ukm следующим образом:
а) из ключа DK с использованием алгоритма KDF_TREE_GOSTR3411_2012_256 согласно Р 50.1.113-2016 вырабатывается два ключа:
1) ключ шифрования сообщения K(1);
2) ключ имитозащиты K(2);
входные параметры для алгоритма KDF_TREE_GOSTR3411_2012_256 принимают следующие значения:
Kin = DK
label = "kdf tree"
seed = ukm[n-7..n]
R = 1;
б) с использованием ключа K(1), выработанного из DK, осуществляется расшифрование данных C в соответствии с ГОСТ Р 34.12-2015 в режиме CTR-ACPKM согласно Р 1323565.1.017-2018. Расшифрованные данные M' представляются в виде конкатенации данных M' = M||mac, где длина данных mac определяется исходя из выбранного алгоритма шифрования;
в) для полученных расшифрованных данных M с помощью ключа имитозащиты K(2), выработанного из DK, осуществляется вычисление имитовставки в соответствии с ГОСТ Р 34.12-2015 в режиме выработки имитовставки согласно ГОСТ Р 34.13-2015;
г) вычисленное значение имитовставки сравнивается с полученным значением mac. При несовпадении размеров или значений сообщение считается искаженным.
В данном разделе описана схема PBMAC1 вычисления контрольной суммы передаваемых данных на основе функции HMAC_GOSTR3411.
Процесс вычисления контрольной суммы в схеме PBMAC1 выглядит следующим образом:
- выбирается случайное значение S размерности от 8 до 32 байт. Рекомендуемая размерность - 32 байта;
- выбирается число итераций c в зависимости от условий эксплуатации и длины пароля (рекомендуемые значения приведены в приложении А);
- устанавливается значение dkLen не менее 32 байт. Значение dkLen выбирается в зависимости от выбранного механизма защиты, использующего выработку ключа из пароля;
- вычисляется последовательность K с помощью функции диверсификации согласно алгоритму из раздела 4 с использованием параметров S, c, dkLen, то есть K = PBKDF2(P, S, c, dkLen);
- для получения контрольной суммы вычисляется ключ DK путем усечения последовательности K до 32 байт следующим образом:
;- осуществляется процесс вычисления контрольной суммы с использованием в качестве алгоритма вычисления контрольной суммы функции HMAC_GOSTR3411 на ключе DK;
- параметры S, c сохраняют в качестве параметров алгоритмов в соответствии с разделом 7.3.
Процесс проверки контрольной суммы с использованием параметров S, c в данной схеме PBMAC1 выглядит следующим образом:
- устанавливается значение dkLen не менее 32 байт. Значение dkLen выбирается в зависимости от выбранного механизма защиты, использующего выработку ключа из пароля;
- вычисляется последовательность K с помощью функции диверсификации согласно алгоритму из раздела 4 с использованием параметров S, c, dkLen, то есть K = PBKDF2(P, S, c, dkLen);
- для получения контрольной суммы вычисляется ключ DK путем усечения последовательности K до 32 байт следующим образом:
;- осуществляется процесс вычисления контрольной суммы в соответствии с выбранным алгоритмом вычисления контрольной суммы на ключе DK;
- исходная и полученная контрольные суммы сравниваются между собой. При несовпадении размеров или значений сообщение считается искаженным.
rsadsi OBJECT IDENTIFIER ::=
{
iso(1) member-body(2) us(840) 113549
}
pkcs OBJECT IDENTIFIER ::={ rsadsi 1 }
pkcs-5 OBJECT IDENTIFIER ::={ pkcs 5 }
Объектный идентификатор для схемы PBKDF2:
id-PBKDF2 OBJECT IDENTIFIER ::={ pkcs-5 12}
Параметры алгоритма:
id-tc26-hmac-gost-3411-12-512 OBJECT IDENTIFIER ::=
{
iso(1) member-body(2) ru(643) reg7(7)
tk26(1) algorithms(1) hmac(4) 512(2)
}
PBKDF2-params ::= SEQUENCE
{
salt CHOICE
{
specified OCTET STRING,
otherSource AlgorithmIdentifier {{PBKDF2- SaltSources}
},
iterationCount INTEGER (1..MAX),
keyLength INTEGER (32..MAX) OPTIONAL,
prf AlgorithmIdentifier {{PBKDF2-PRFs}}
}
Поля структуры PBKDF2-params имеют следующий смысл:
- salt - поле должно содержать значение синхропосылки S', представленное в виде OCTET STRING;
- iterationCount - число итераций алгоритма c;
- keyLength - размер ключа в байтах; размер ключа в рамках схемы PBES2 может отсутствовать, так как всегда равен 32. В рамках схемы PBMAC1 он должен быть не менее 32 байт и должен всегда присутствовать, так как функция HMAC_GOSTR3411 имеет переменный размер ключа;
- prf - идентификатор и параметры алгоритма псевдослучайной функции. Значение идентификатора должно быть равным идентификатору id-tc26-hmac-gost-3411-12-512, параметры алгоритма принимают значение NULL.
Объектный идентификатор для схемы PBES2:
id-PBES2 OBJECT IDENTIFIER ::={ pkcs-5 13 }
Параметры алгоритма:
PBES2-params ::= SEQUENCE
{
keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},
encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}
}
- Поля структуры PBES2-params имеют следующий смысл:
- keyDerivationFunc - идентификатор и параметры алгоритма выработки парольного ключа PBKDF2 с параметрами в соответствии с 7.1;
- encryptionScheme - идентификатор и параметры алгоритма шифрования.
В соответствии с Р 1323565.1.025-2019 идентификатор алгоритма шифрования ГОСТ Р 34.12-2015 должен принимать одно из следующих значений:
id-gostr3412-2015-magma-ctracpkm OBJECT IDENTIFIER ::=
{
iso(1) member-body(2) ru(643) rosstandart(7) tc26(1)
algorithms(1) cipher(5) gostr3412-2015-magma(1) mode-ctracpkm(1)
}
При использовании идентификатора id-gostr3412-2015-magma-ctracpkm шифрование осуществляется в соответствии с ГОСТ Р 34.12-2015 ("Магма") в режиме CTR-ACPKM согласно Р 1323565.1.017-2018. При этом длина блока гаммы s, приведенная в Р 1323565.1.017-2018, равна 64 бита.
id-gostr3412-2015-magma-ctracpkm-omac OBJECT IDENTIFIER ::=
{
iso(1) member-body(2) ru(643) rosstandart(7) tc26(1)
algorithms(1) cipher(5) gostr3412-2015-magma(1) mode-ctracpkm-omac(2)
}
При использовании идентификатора id-gostr3412-2015-magma-ctracpkm-omac вычисление имитовставки осуществляется в соответствии с ГОСТ Р 34.12-2015 ("Магма") в режиме выработки имитовставки согласно ГОСТ Р 34.13-2015 (размер имитовставки - 64 бита), а шифрование осуществляется в соответствии с ГОСТ Р 34.12-2015 ("Магма") в режиме CTR-ACPKM согласно Р 1323565.1.017-2018. При этом длина блока гаммы s, приведенная в Р 1323565.1.017-2018, равна 64 бита.
id-gostr3412-2015-kuznyechik-ctracpkm OBJECT IDENTIFIER ::=
{
iso(1) member-body(2) ru(643) rosstandart(7) tc26(1)
algorithms(1) cipher(5) gostr3412-2015-kuznyechik(2) mode-ctracpkm(1)
}
При использовании идентификатора id-gostr3412-2015-kuznyechik-ctracpkm шифрование осуществляется в соответствии с ГОСТ Р 34.12-2015 ("Кузнечик") в режиме CTR-ACPKM согласно Р 1323565.1.017-2018. При этом длина блока гаммы s, приведенная в Р 1323565.1.017-2018, равна 128 бит.
id-gostr3412-2015-kuznyechik-ctracpkm-omac OBJECT IDENTIFIER ::=
{
iso(1) member-body (2) ru(643) rosstandart(7) tc26(1)
algorithms(1) cipher(5) gostr3412-2015-kuznyechik(2) mode-ctracpkm-omac(2)
}
При использовании идентификатора id-gostr3412-2015-kuznyechik-ctracpkm-omac вычисление имитовставки осуществляется в соответствии с ГОСТ Р 34.1-2015 ("Кузнечик") в режиме выработки имитовставки согласно ГОСТ Р 34.13-2015 (размер имитовставки - 128 бит), а шифрование осуществляется в соответствии с ГОСТ Р 34.12-2015 ("Кузнечик") в режиме CTR-ACPKM согласно Р 1323565.1.017-2018. При этом длина блока гаммы s, приведенная в Р 1323565.1.017-2018, равна 128 бит.
Размер секции в режиме CTR-ACPKM выбирается в зависимости от условий эксплуатации для конкретных решений с учетом рекомендаций приложения В Р 1323565.1.017-2018. Например, в Р 1323565.1.025-2019 определены размеры секций для некоторых форматов сообщений.
Параметры представлены следующей структурой:
Gost3412-15-Encryption-Parameters ::= SEQUENCE
{
ukm OCTET STRING
}
Поле ukm структуры Gost3412-15-Encryption-Parameters имеет следующий смысл: ukm - ключевой материал пользователя UKM. Параметр является обязательным и должен содержать n байт. В зависимости от алгоритма n принимает следующие значения для алгоритмов на основе блочного шифра:
Объектный идентификатор для схемы PBMAC1:
id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14 }
Параметры алгоритма:
PBMAC1-params ::= SEQUENCE
{
keyDerivationFunc AlgorithmIdentifier {{PBMAC1-KDFs}},
messageAuthScheme AlgorithmIdentifier {{PBMAC1-MACs}},
}
Поля структуры PBMAC1-params имеют следующий смысл:
- keyDerivationFunc - идентификатор и параметры алгоритма выработки парольного ключа в соответствии с 7.1;
- messageAuthScheme - идентификатор и параметры алгоритма HMAC_GOSTR3411.
При выработке ключевой информации с использованием пароля пользователя необходимо выполнять следующие условия:
- для разных пользователей и для разных сессий одного пользователя необходимо гарантировать уникальность выбора значений синхропосылки S, которые должны выбираться по схеме равновероятного выбора без возвращения из множества Bn, где n = 8, ..., 32;
- для разных пользователей и для разных сессий одного пользователя необходимо гарантировать, что значение c является одинаковым;
- выбор параметров PBKDF2 должен исключать совпадение ключей, предназначенных для выполнения различных криптографических преобразований;
- для обработки каждого отдельного сообщения на одном начальном ключе необходимо гарантировать уникальность значения ukm.
(справочное)
Зависимость длины пароля P и числа итераций c, обеспечивающая эффективную длину ключа в 256 бит, представленная в таблице А.1, получена в предположении, что значение S выбирается по схеме равновероятного выбора без возвращения из множества B32, а символы пароля выбираются случайно, независимо и равновероятно из алфавита мощностью в 156 символов.
Таблица А.1
алгоритма выработки ключа из пароля
В случае необходимости использования других значений параметров требуется проведение дополнительных исследований, подтверждающих уровень безопасности защищаемой информации.
Допустимое количество ключей, вырабатываемых из одного пароля, в зависимости от длины синхропосылки, приведено в таблице А.2.
Таблица А.2
Соответствие между длиной синхропосылки и допустимым
количеством ключей, вырабатываемых из одного пароля
(справочное)
Данные тестовые вектора сформированы по аналогии с тестовыми векторами из [2].
Input:
P = "password" (8 octets)
S = "salt" (4 octets)
c = 1
dkLen = 64
DK = 64 77 0a f7 f7 48 c3 b1 c9 ac 83 1d bc fd 85 c2
61 11 b3 0a 8a 65 7d dc 30 56 b8 0c a7 3e 04 0d
28 54 fd 36 81 1f 6d 82 5c c4 ab 66 ec 0a 68 a4
90 a9 e5 cf 51 56 b3 a2 b7 ee cd db f9 a1 6b 47
Input:
P = "password" (8 octets)
S = "salt" (4 octets)
c = 2
dkLen = 64
DK = 5a 58 5b af df bb 6e 88 30 d6 d6 8a a3 b4 3a c0
0d 2e 4a eb ce 01 c9 b3 1c 2c ae d5 6f 02 36 d4
d3 4b 2b 8f bd 2c 4e 89 d5 4d 46 f5 0e 47 d4 5b
ba c3 01 57 17 43 11 9e 8d 3c 42 ba 66 d3 48 de
Input:
P = "password" (8 octets)
S = "salt" (4 octets)
c = 4096
dkLen = 64
DK = e5 2d eb 9a 2d 2a af f4 e2 ac 9d 47 a4 1f 34 c2
03 76 59 1c 67 80 7f 04 77 e3 25 49 dc 34 1b c7
86 7c 09 84 1b 6d 58 e2 9d 03 47 c9 96 30 1d 55
df 0d 34 e4 7c f6 8f 4e 3c 2c da f1 d9 ab 86 c3
Input:
P = "password" (8 octets)
S = "salt" (4 octets)
c = 16777216
dkLen = 64
DK = 49 e4 84 3b ba 76 e3 00 af e2 4c 4d 23 dc 73 92
de f1 2f 2c 0e 24 41 72 36 7c d7 0a 89 82 ac 36
1a db 60 1c 7e 2a 31 4e 8c b7 b1 e9 df 84 0e 36
ab 56 15 be 5d 74 2b 6c f2 03 fb 55 fd c4 80 71
Input:
P = "passwordPASSWORDpassword" (24 octets)
S = "saltSALTsaltSALTsaltSALTsaltSALTsalt" (36 octets)
c = 4096
dkLen = 100
DK = b2 d8 f1 24 5f c4 d2 92 74 80 20 57 e4 b5 4e 0a
07 53 aa 22 fc 53 76 0b 30 1c f0 08 67 9e 58 fe
4b ee 9a dd ca e9 9b a2 b0 b2 0f 43 1a 9c 5e 50
f3 95 c8 93 87 d0 94 5a ed ec a6 eb 40 15 df c2
bd 24 21 ee 9b b7 11 83 ba 88 2c ee bf ef 25 9f
33 f9 e2 7d c6 17 8c b8 9d c3 74 28 cf 9c c5 2a
2b aa 2d 3a
Input:
P = "pass\0word" (9 octets)
S = "sa\0lt" (5 octets)
c = 4096
dkLen = 64
DK = 50 df 06 28 85 b6 98 01 a3 c1 02 48 eb 0a 27 ab
6e 52 2f fe b2 0c 99 1c 66 0f 00 14 75 d7 3a 4e
16 7f 78 2c 18 e9 7e 92 97 6d 9c 1d 97 08 31 ea
78 cc b8 79 f6 70 68 cd ac 19 10 74 08 44 e8 30
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/prikaz/59/r_46703.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||