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

Рабочий профиль «Кузнечик» и «Стрибог»

В НАЙС.ОС применяется совместимый криптографический профиль OpenVPN, который использует «Кузнечик» для шифрования VPN-пакетов и «Стрибог-256» для их аутентификации.

Параметры канала данных

Добавьте в конфигурацию сервера и клиента:

# Шифр пользовательского трафика
cipher kuznyechik-cbc

# HMAC со Стрибогом-256
auth id-tc26-gost3411-12-256

# Строгий список согласуемых шифров
# Шифр канала данных задаёт именно data-ciphers.
data-ciphers kuznyechik-cbc

# Совместимость с клиентами, которым требуется резервное значение
data-ciphers-fallback kuznyechik-cbc

Не отключайте аутентификацию пакетов

Режим CBC не является AEAD. Сохраните параметр auth на обеих сторонах и проверьте строки HMAC authentication после подключения. Не подменяйте этот профиль сочетанием auth none и CBC.

Зачем указан cipher

В современных TLS-конфигурациях OpenVPN параметр cipher не выбирает согласуемый алгоритм; эту задачу решает data-ciphers. cipher оставляют только для определённых сценариев совместимости. В документируемом подключении присутствовали оба параметра, однако успешное согласование обеспечивается общим значением data-ciphers.

Зачем нужен fallback

В работающем профиле НАЙС.ОС указано data-ciphers-fallback kuznyechik-cbc. Этот параметр предусмотрен для старых клиентов, не умеющих полноценно согласовывать шифр. Для современных клиентов основным механизмом остаётся data-ciphers; при создании нового профиля fallback можно не добавлять без необходимости.

Поддерживаемые алгоритмы OpenVPN

В системном OpenVPN НАЙС.ОС доступны в том числе:

kuznyechik-cbc
kuznyechik-cfb
kuznyechik-ofb
gost89
gost89-cbc
gost89-cnt
gost89-cnt-12
magma-cbc

Для использования в канале VPN-данных необходимо проверять ограничения, которые openvpn --show-ciphers указывает рядом с каждым названием. Метка TLS client/server mode only имеет значение; доступность шифра в OpenSSL не делает его допустимым параметром data-ciphers.

Проверка согласования

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

После соединения:

journalctl -u openvpn-client@cloud.ru.service --no-pager -n 150   | grep -Ei 'Control Channel|Data Channel|HMAC|Initialization'

Замените имя клиентской службы на используемое у вас. Для сервера аналогично используется openvpn-server@server-gost.service.

Почему DCO здесь не применяется

DCO — ускоренная обработка трафика вне обычного пользовательского пути OpenVPN. В стандартной реализации DCO предусмотрен ограниченный набор поддерживаемых алгоритмов, прежде всего AEAD. «Кузнечик-CBC» с отдельным HMAC не входит в этот набор. Работа VPN подтверждена без необходимости DCO; наличие [DCO] в строке компиляции OpenVPN само по себе не означает использование ускоренного пути.

Если при изменении настроек появляется конфликт с DCO, для тестового профиля допустимо использовать disable-dco, предварительно проверив поддержку параметра установленным OpenVPN.

Проверка профиля на двух узлах · Диагностика