Криптография
October 30, 2022

Белорусская криптография в OpenSSL

Доступные алгоритмы в bee2evp

Поддержка белорусской криптографии была добавлена в 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.

Развертывание ЦС и автоматизация

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

Продолжение следует...