ГОСТ Engine и Provider: как выбрать интерфейс¶
OpenSSL предоставляет приложениям криптографические реализации через несколько API. В НАЙС.ОС доступны модули gost.so (ENGINE) и gostprov.so (Provider). Для оператора это чаще всего означает два способа загрузки ГОСТ и некоторые различия в поведении криптографических форматов.
Engine — привычные команды работы с ключами¶
ENGINE применяется в классических сценариях openssl genpkey, openssl req, openssl dgst, X.509 и PKCS#12. В НАЙС.ОС режим ГОСТ подключается системной конфигурацией OpenSSL.
Первая команда проверяет загрузку модуля и перечисляет предоставляемые классы алгоритмов. -vvvv печатает управляющие команды ENGINE.
Provider — расширяемый механизм OpenSSL¶
Для приложений, использующих интерфейс Provider, ГОСТ загружается через gostprov.so. Команды перечисления доступны через OpenSSL:
openssl list -providers -verbose
openssl list -digest-algorithms -provider gostprov -provider default
openssl list -cipher-algorithms -provider gostprov -provider default
При явно заданных Provider подключайте и default, если приложению нужны стандартные алгоритмы, случайные числа или операции кодирования из этого провайдера.
Сравнение¶
| Вопрос | Engine | Provider |
|---|---|---|
| Как загружается | Конфигурация ENGINE | Конфигурация providers / -provider |
| Основной файл | gost.so |
gostprov.so |
| Создание ГОСТ-ключей и подписи | EVP + ENGINE | EVP + keymgmt/signature |
| ГОСТ-хэши и блочные шифры | Да | Да |
| PKCS#12 | Команды Engine; современный формат зависит от функций реализации | Поддержка современного PBE также использует взаимодействие с libcrypto |
| CMS и старые протоколы | Традиционный путь EVP/ENGINE | Отдельные сценарии зависят от интеграции OpenSSL с Provider |
| Новые приложения | Через абстракции EVP | Основной расширяемый интерфейс OpenSSL |
Не смешивайте две конфигурации без необходимости: сначала выберите один профиль и проверьте им весь сценарий от создания ключа до импорта получателем.
Сравнение профилей в изоляции¶
Создайте два файла конфигурации по инструкции, затем выполните диагностику, не изменяя глобальные настройки сервера:
OPENSSL_CONF="$HOME/gost-lab/engine.cnf" \
openssl engine -t -c gost
OPENSSL_CONF="$HOME/gost-lab/provider.cnf" \
openssl list -providers -verbose
Если приложение продолжает использовать собственный OPENSSL_CONF, разберитесь, какой конфигурационный файл реально читается процессом. Глобальная настройка и окружение отдельной службы могут различаться.
Что использовать для разных задач¶
Для создания ГОСТ-ключа и подписи начните с системного режима НАЙС.ОС и команд genpkey/dgst. Для исследования нового поставщика алгоритмов, а также чтения специфичных контейнеров PFX КриптоПро, используйте изолированный Provider-профиль. Для интеграции с приложением предпочтительны универсальные вызовы EVP вместо прямого обращения к внутренним структурам ENGINE.
Upstream: README.gost, README.prov.md, README.pkcs12.md.