Симметричное ГОСТ-шифрование: Кузнечик, Магма, режимы¶
Канонический источник: Канонические параметры и ограничения: Кузнечик, Магма, CTR, CBC, MGM. Эта статья описывает работу установленного OpenSSL.
НАЙС.ОС предоставляет симметричные ГОСТ-алгоритмы через OpenSSL. Симметричное шифрование использует один секретный ключ для шифрования и расшифрования. Это отличается от ГОСТ Р 34.10, который предназначен для электронной подписи.
Выбор алгоритма¶
| Шифр | Размер блока | Размер ключа | Для чего используется |
|---|---|---|---|
| Кузнечик, ГОСТ Р 34.12-2015 | 128 бит | 256 бит | Современные криптографические профили |
| Магма, ГОСТ Р 34.12-2015 | 64 бита | 256 бит | Совместимые протоколы и стандартизованные профили |
| ГОСТ 28147-89 | 64 бита | 256 бит | Совместимость с существующими решениями |
Блочный шифр сам по себе не определяет режим обработки данных. Для длинных сообщений используются CBC, CTR, CFB, ACPKM и другие режимы, предусмотренные протоколом.
1. Посмотреть доступные шифры¶
openssl list -cipher-algorithms | grep -Ei 'kuznyechik|magma|gost'
openssl enc -list | grep -Ei 'kuznyechik|magma|gost'
openssl enc поддерживает не каждую современную конструкцию, доступную через EVP. Для ACPKM/OMAC и контейнеров PFX используйте подходящий API или команду формата контейнера.
2. Демонстрационное шифрование файла¶
На лабораторной машине используйте пароль, запрашиваемый OpenSSL интерактивно:
printf 'Секретный тестовый файл\n' > plaintext.txt
openssl enc -kuznyechik-cbc -salt -pbkdf2 \
-in plaintext.txt -out ciphertext.bin
openssl enc -d -kuznyechik-cbc -pbkdf2 \
-in ciphertext.bin -out recovered.txt
cmp plaintext.txt recovered.txt
Этот пример используется, когда шифр присутствует в списке openssl enc -list, а парольная KDF поддерживает выбранный модуль. Для коммерческого формата зашифрованного файла согласуйте и зафиксируйте соление, IV, KDF, число итераций и механизм аутентификации данных.
3. Проверка на подмену¶
CBC и CTR не обеспечивают аутентификацию. Нельзя принимать успешно расшифрованный файл как подлинный только по отсутствию ошибок OpenSSL. Используйте отдельную подпись или проверенную комбинацию шифрования и MAC.
Совпавшие хэши подтверждают совпадение байтов, но не происхождение шифртекста от доверенного отправителя.
4. ACPKM и OMAC¶
ACPKM применяется для периодического обновления ключевого материала внутри определённого режима работы блочного шифра. OMAC — алгоритм контроля целостности/подлинности с общим секретным ключом. В профилях PKCS#12 имена включают, например, kuznyechik-ctr-acpkm и kuznyechik-ctr-acpkm-omac.
Параметры ACPKM и OMAC должны соответствовать формату получателя; выбирать произвольную комбинацию в прикладном протоколе нельзя.
5. Режимы и длина IV¶
Размер IV определяется размером блока и режимом шифрования. Для Кузнечика блок имеет длину 16 байт; для Магмы — 8 байт. IV не обязательно должен оставаться секретным, но требования к уникальности и повторному использованию зависят от режима. Повторять пару ключ+IV в CTR нельзя.
6. Рекомендации для приложений¶
В приложении предпочтителен EVP: он отделяет бизнес-логику от конкретного криптографического провайдера. Для больших файлов и обменных контейнеров выбирайте описанный стандартом формат и добавляйте аутентификацию. Для переноса ключа и сертификата используйте PFX, а не самодельный зашифрованный файл.
Далее: алгоритмы, PKCS#12, хэши и MAC.