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

Как ГОСТ защищает соединение OpenVPN

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

Управляющий канал TLS

Управляющий канал обеспечивает проверку сертификата удалённой стороны, безопасный обмен служебными сообщениями и установление ключей для канала данных. На развёрнутом в НАЙС.ОС стенде этот канал использует TLS 1.3, набор TLS_AES_256_GCM_SHA384 и сертификат сервера с RSA 2048. Это обычный TLS-профиль, он не использует ГОСТ для аутентификации сервера и шифрования самого TLS.

При такой конфигурации ГОСТ применяется для полезного VPN-трафика, а не автоматически для всего TLS. Для ГОСТ-сертификатов и ГОСТ-TLS нужна отдельная криптографическая конфигурация сервера и клиентов. Разделы о выпуске ключей доступны в OpenSSL, о ГОСТ в TLS — в руководстве по TLS.

Канал пользовательских данных

Здесь передаются пакеты внутри VPN. В используемом профиле:

Задача Алгоритм и назначение
Шифрование kuznyechik-cbc — 256-битный ключ, 128-битный размер блока
Контроль подлинности id-tc26-gost3411-12-256 — HMAC с 256-битной хэш-функцией Стрибог
Защита двух направлений Независимые ключи приёма и передачи; в журнале выводятся отдельные строки Incoming/Outgoing
Согласование data-ciphers — список разрешённых алгоритмов передачи данных

CBC — режим блочного шифра, а не режим с аутентификацией AEAD. Поэтому для защиты целостности и аутентификации в этом профиле требуется отдельный HMAC. Параметр auth не заменяет параметр data-ciphers.

Как это увидеть в журнале

Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384
Outgoing Data Channel: Cipher 'kuznyechik-cbc' initialized with 256 bit key
Outgoing Data Channel: Using 256 bit message hash 'id-tc26-gost3411-12-256' for HMAC authentication
Incoming Data Channel: Cipher 'kuznyechik-cbc' initialized with 256 bit key
Incoming Data Channel: Using 256 bit message hash 'id-tc26-gost3411-12-256' for HMAC authentication

Это образец реального журнала НАЙС.ОС с удалёнными идентифицирующими сведениями. Для своей установки используйте журнал клиента или сервера того соединения, которое проверяете, а не только параметры конфигурационного файла.

Важное отличие от ГОСТ в ядре

OpenVPN работает с алгоритмами OpenSSL в пользовательском пространстве. Встроенный ГОСТ в ядре НАЙС.ОС предоставляет Kernel Crypto API другим системным потребителям. Наличие kuznyechik в /proc/crypto не является необходимым доказательством работы OpenVPN и само по себе не гарантирует, что OpenVPN использует модуль ядра. Подробности в ГОСТ в ядре.

Когда можно говорить о работающем ГОСТ-VPN

Для подтверждения необходимы успешное установление соединения, сообщения о kuznyechik-cbc и HMAC на обоих направлениях, получение адреса туннеля и реальная передача трафика. Проверка только openvpn --show-ciphers означает доступность алгоритма, а не факт его выбора клиентом.

Первоисточник: OpenVPN — режимы согласования алгоритмов канала данных.