Перейти к содержанию

OpenSSL, ГОСТ Engine и Provider для OpenVPN

OpenVPN в НАЙС.ОС собран с библиотекой OpenSSL. Через её EVP-интерфейс он получает реализации криптографических алгоритмов, которые используются в канале данных. ГОСТ-компоненты НАЙС.ОС расширяют OpenSSL российскими шифрами и хэш-функциями.

Проверка OpenSSL

openssl version -a
openssl list -providers
openssl list -cipher-algorithms | grep -Ei 'kuznyechik|magma|gost89'
openssl list -digest-algorithms | grep -Ei 'gost|tc26'

В НАЙС.ОС в списках видны, в частности:

Тип Примеры названий OpenSSL
Блочное шифрование kuznyechik-cbc, kuznyechik-ctr, magma-cbc
Современные режимы kuznyechik-mgm, magma-mgm, kuznyechik-ctr-acpkm
Хэширование id-tc26-gost3411-12-256, id-tc26-gost3411-12-512
Совместимость gost89, gost89-cbc, id-GostR3411-94

Список OpenSSL шире, чем список режимов, которые OpenVPN принимает для data-ciphers. Например, появление kuznyechik-mgm среди алгоритмов OpenSSL не означает автоматического наличия этого варианта в openvpn --show-ciphers.

Engine и Provider

В НАЙС.ОС доступны два исторически разных механизма расширения OpenSSL: Engine и Provider. При этом для пользователя OpenVPN важнее не вид выбранного механизма, а реально доступные операции EVP и согласованные алгоритмы в журнале.

openvpn --show-ciphers | grep -Ei 'kuz|gost|magma'
openvpn --show-digests | grep -Ei 'gost|tc26'

openssl list -providers показывает состояние отдельного процесса openssl, а не внутреннее состояние уже запущенного сервиса OpenVPN. Поэтому для проверки VPN дополнительно обязательны сообщения реального подключения.

Обновления криптографических компонентов НАЙС.ОС расширяют доступные возможности; после обновления перечитайте --show-ciphers и --show-digests и пройдите приёмочные тесты.

Как соотносятся режимы TLS и канала данных

OpenVPN задаёт data-ciphers для IP-трафика. Параметры tls-cipher и tls-ciphersuites относятся к управляющему TLS и работают в разных версиях TLS. Для ГОСТ-TLS недостаточно указать kuznyechik-cbc: необходим совместимый TLS-набор, соответствующие ключи, подписи и сертификаты обеих сторон.

См. OpenSSL: Engine и Provider и ГОСТ-TLS.

Upstream: gost-engine, OpenVPN manual.