Процесс зашифрования данных M в схеме PBES2 осуществляется следующим образом:
- выбирается случайное значение S размерности от 8 до 32 байт. Рекомендуемая размерность - 32 байта;
- выбирается число итераций c в зависимости от условий эксплуатации и длины пароля (рекомендуемые значения приведены в приложении А);
- устанавливается значение dkLen=32;
- ключ шифрования данных DK вычисляется с помощью функции диверсификации согласно алгоритму из раздела 4 с использованием параметров S, c, dkLen, то есть DK=PBKDF2(P, S, c, 32);
- значение ukm выбирается случайно равновероятно из множества , где n принимает значение 12 или 16 байт в зависимости от выбранного алгоритма шифрования. Для обработки каждого отдельного сообщения на одном начальном ключе используется уникальное значение ukm:
ГОСТ Р 34.12-2015 "Магма" | n=12; |
ГОСТ Р 34.12-2015 "Кузнечик" | n=16; |
- устанавливается значение синхропосылки 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 принимают следующие значения: