Добавляем поддержку ГОСТ для openssl в Fedora

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

Введение

Начиная с openssl версии 1.1 пользователи могут загружать не входящие в поставку данной библиотеки криптографические модули. Для поддержки российской криптографии был реализован gost-engine.

В настоящее время gost-engine распространяется под модифицированной лицензией BSD  и уже доступен в основном репозитории Fedora, внутри пакета openssl-gost-engine.

Шаг 1. Установка пакета

Установим openssl-gost-engine из репозиториев:

sudo dnf install openssl-gost-engine

Шаг 2. Настройка OpenSSL

OpenSSL с настройках по умолчанию не загружает нестандартные модули, поэтому нам необходимо вручную отредактировать его главный файл конфигурации /etc/pki/tls/openssl.cnf и внести соответствующие правки:

sudoedit /etc/pki/tls/openssl.cnf

Найдём в данном файле строку:

ssl_conf = ssl_module

После неё добавим следующее:

engines = custom_engines

[ custom_engines ]

gost = gost_module

[ gost_module ]

engine_id = gost
dynamic_path = /usr/lib64/engines-1.1/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

Здесь /usr/lib64/engines-1.1/gost.so — полный путь к установленному модулю ГОСТ. Для 32-битных систем он будет иным — /usr/lib/engines-1.1/gost.so.

Изменения вступают в силу после перезапуска всех приложений, использующих OpenSSL.

Шаг 3. Проверка работы

Проверим работу OpenSSL с поддержкой ГОСТ посредством запуска теста производительности симметричного алгоритма шифрования ГОСТ-89:

openssl speed -evp gost89

Если всё было сделано верно, мы увидим результат его работы.

5 commentaries to post

  1. Пакет openssl-gost-engine был добавлен в репозитории Fedora, поэтому статья обновлена. Удалена необходимость ручной сборки.

  2. GOST любовно выпилен в 30ке майнтейнерами в некоторых пакетах (типа softhsm) и , главное — в fedora-crypto-policies ( не добавив / вернув GOST , с ходу местами не «заведется» ). В 31 добавлен модуль GOST в policies, но там «от балды» похоже пока — те не факт что в релизе сразу будет работать без бубна ( да и то нужно будет не забыть поставить профиль DEFAULT:GOST и пройтись update-crypto-policies )

    1. Он никогда не добавлялся в конфигурацию по умолчанию, т.к. противоречит экспортным ограничениям на строгую криптографию США (компания Red Hat расположена в данной стране), а также имеет закрытую реальную таблицу перестановок.

      После установки пакета с gost-engine его нужно вручную прописывать в файлах конфигурации.

  3. В openssl 3.0:

    Added CMS support for the Russian GOST algorithms.

    Т.е. с переходом на openssl 3.x — как думаете везде полноценно будет работать ГОСТ?

    1. Поддержка GOST была добавлена в OpenSSL CMS, который используется для подписи и шифрования документов и электронных писем.

      Это не отменяет обязательности установки gost-engine. Последний, кстати, недавно обновился и поддерживает OpenSSL 3.0.

Обсуждение закрыто.