Белорусская криптография в OpenSSL
Поддержка белорусской криптографии была добавлена в OpenSSL 1.1.1 Сергеем Агиевичем посредством библиотеки bee2evp
.
bee2evp
– это движок для OpenSSL, который реализует:
- алгоритмы шифрования (СТБ 34.101.31);
- алгоритмы имитозащиты (СТБ 34.101.31, СТБ 34.101.47);
- алгоритмы одновременного шифрования и имитозащиты (СТБ 34.101.31);
- алгоритмы хэширования (СТБ 34.101.31, СТБ 34.101.77);
- алгоритм преобразования ключа (СТБ 34.101.31);
- алгоритм проверки параметров эллиптической кривой (СТБ 34.101.45);
- алгоритм генерации личного и открытого ключей (СТБ 34.101.45);
- алгоритм проверки открытого ключа (СТБ 34.101.45);
- алгоритмы электронной цифровой подписи (СТБ 34.101.45);
- алгоритмы транспорта ключа (СТБ 34.101.45);
- алгоритм построения ключа по паролю (СТБ 34.101.45).
Момент сборки я не стану описывать ибо он подробно описан в репозитории библиотеки.
Генерация ключа и сертификата (CSR)
Генерация параметров
Параметры бывают для 256/384/512 бит, генерируются очень просто посредством команды:
openssl genpkey -genparam -algorithm bign -pkeyopt params:bign-curve<кол-во бит>v1 -engine bee2evp
В отличии от ГОСТ'а тут всегда надо указывать движок ибо без этого команды не работают.
Генерация ключа
Для генерации ключа необходимо на вход передать параметры которые мы сгенерировали ранее, воспользуется командой:
openssl genpkey -engine bee2evp -paramfile файл параметров -pkeyopt enc_params:specified -pkeyopt enc_params:cofactor
Мы получаем ключ в чистом виде
Теперь нам необходимо защитить наш ключ с помощью пароля и алгоритма belt-kwp256
и belt-hmac
:
openssl pkcs8 -engine bee2evp -in ключ -topk8 -v2 belt-kwp256 -v2prf belt-hmac -iter 10000
Генерация сертификата (CSR)
Для генерации сертификата или запроса нам потребуется указать openssl движок, файл ключа то что сертификат будет хранить значения в UTF-8:
openssl req -engine bee2evp -new -x509 -utf8 -nameopt multiline,utf8 -key зашифрованный ключ
Данная команда выдаст самоподписный сертификат, для создания запроса уберите -x509
.
Развертывание ЦС и автоматизация
В плане автоматизации речь пойдет об упрощении процедуры создания приватных ключей ибо имхо она слишком растянутая, зачем мне отдельно создавать параметры ключа и его открытую версию, когда можно сразу получить шифрованную версию.