OpenVPN: архитектура VPN на основе TLS
Изучите, как OpenVPN использует TLS для канала управления и настраиваемые шифры для канала передачи данных.
«OpenVPN: архитектура VPN на основе TLS» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Двухканальная архитектура OpenVPN
OpenVPN использует два отдельных канала: управляющий канал и канал данных. Управляющий канал отвечает за аутентификацию, установку сеанса и обмен конфигурацией с использованием TLS. Канал данных передаёт фактический VPN-трафик, зашифрованный симметричным шифром, согласованным через управляющий канал. Такое разделение позволяет OpenVPN использовать всю экосистему TLS для управления ключами.
Управляющий канал: TLS для согласования ключей
Управляющий канал OpenVPN устанавливает полноценный сеанс TLS. Обе стороны проходят аутентификацию с помощью сертификатов X.509, подписанных общей CA. TLS обеспечивает обмен ключами, проверку сертификатов и согласование параметров шифра канала данных. Поскольку TLS поддерживает ECDHE, управляющий канал обеспечивает прямую секретность: ключи канала данных нельзя восстановить по перехваченному сеансу даже при наличии ключа CA.
Шифрование канала данных
Шифрование канала данных согласовывается через управляющий канал TLS. В OpenVPN 2.4 и более поздних версиях по умолчанию используется AES-256-GCM — шифр AEAD, обеспечивающий конфиденциальность и целостность одной операцией. В более ранних версиях отдельно использовались AES-256-CBC и HMAC-SHA256. Режимы AEAD предпочтительнее, поскольку устраняют необходимость в отдельной проверке MAC и противостоят атакам с оракулом дополнения.
tls-crypt: обёртка с предварительно согласованным ключом
Параметр tls-crypt помещает весь сеанс TLS, включая приветствие клиента, внутрь симметричного конверта с аутентификацией HMAC, используя предварительно согласованный ключ. Это означает, что неаутентифицированные клиенты не могут даже начать рукопожатие TLS: их начальные пакеты молча отбрасываются. Такой механизм защищает сервер OpenVPN от атак DDoS с усилением на основе TLS и скрывает сам факт работы VPN-сервера.
tls-auth и tls-crypt
Более старый параметр tls-auth добавляет тег HMAC к пакетам управляющего канала TLS, но не шифрует их. Это предотвращает внедрение пакетов, однако по-прежнему раскрывает наблюдателям рукопожатие TLS. tls-crypt шифрует и аутентифицирует оболочку управляющего канала, обеспечивая защиту от DoS и противодействие анализу трафика. В настоящее время рекомендуется использовать tls-crypt; параметр tls-auth считается устаревшим и заменяется на tls-crypt-v2.
Аутентификация клиентов на основе сертификатов
OpenVPN аутентифицирует клиентов с помощью сертификатов X.509, подписанных центром сертификации VPN. Каждый клиент получает уникальные сертификат и закрытый ключ. Сервер проверяет цепочку сертификатов и при необходимости проверяет список отозванных сертификатов (CRL), чтобы отклонить отозванные сертификаты. Отзыв сертификата немедленно прекращает доступ клиента, в отличие от систем на основе PSK, где смена ключа затрагивает всех клиентов.
Транспорт UDP и TCP
OpenVPN может работать поверх UDP (вариант по умолчанию и рекомендуемый вариант) или TCP. UDP позволяет избежать проблемы TCP поверх TCP, при которой потеря пакета вызывает повторную передачу и на уровне TCP, и на уровне приложения VPN, что существенно снижает производительность. Однако некоторые сети блокируют UDP. Запуск OpenVPN через TCP-порт 443 позволяет обходить межсетевые экраны, разрешающие только трафик HTTPS, но ухудшает производительность при потерях пакетов.
Режимы интерфейса tun и tap
OpenVPN работает в режиме tun (маршрутизация) или tap (мост). Режим tun создаёт сетевой интерфейс IP типа «точка — точка» и маршрутизирует IP-пакеты между клиентом и сетью VPN. Режим tap создаёт интерфейс Ethernet-моста, передающий кадры Ethernet, включая широковещательные кадры и протоколы, не использующие IP. Режим tun эффективнее и подходит для большинства сценариев VPN; режим tap нужен для объединения сетевых сегментов в мост или для протоколов, не использующих IP.
Директивы push для настройки клиентов
Серверы OpenVPN могут автоматически передавать подключающимся клиентам директивы конфигурации. К распространённым директивам push относятся push "route 10.0.0.0 255.0.0.0" (добавить маршрут на клиенте), push "dhcp-option DNS 10.0.0.1" (установить DNS-сервер) и push "redirect-gateway def1" (направить весь трафик клиента через VPN). Это централизует управление настройками клиентов без изменения отдельных конфигурационных файлов клиентов.
Прямая секретность в OpenVPN
OpenVPN обеспечивает прямую секретность с помощью TLS ECDHE (эфемерного Диффи — Хеллмана на эллиптических кривых) в управляющем канале. Для каждого сеанса TLS используется новая эфемерная пара ключей, поэтому ключ сеанса нельзя вывести из долгосрочного закрытого ключа сертификата сервера. Даже если сегодня перехватить зашифрованный трафик, а позже получить сертификат сервера, расшифровать прошлые сеансы всё равно не удастся.
Отказ от слабых шифров в OpenVPN 2.5 и более поздних версиях
В OpenVPN 2.5 шифр Blowfish (BF-CBC), ранее использовавшийся по умолчанию, объявлен устаревшим. BF-CBC использует размер блока 64 бита и уязвим к атакам дней рождения SWEET32 в длительных сеансах. В современных версиях OpenVPN по умолчанию используется AES-256-GCM. В OpenVPN 2.5 также объявлены устаревшими шифры без AEAD в канале данных и ужесточены требования к минимальной версии TLS: поддержка TLS 1.0 и 1.1 прекращена.
Управляющий канал и канал данных OpenVPN
Какова основная функция управляющего канала OpenVPN?
Итоги архитектуры OpenVPN
Итоги по OpenVPN: управляющий канал использует TLS для аутентификации и согласования шифра, канал данных использует согласованный шифр AEAD (по умолчанию AES-256-GCM), tls-crypt оборачивает TLS, предотвращая неаутентифицированные рукопожатия, ECDHE обеспечивает прямую секретность, аутентификация клиентов выполняется на основе сертификатов с отзывом через CRL, для производительности предпочтителен UDP, а для сценариев IP-маршрутизации предпочтителен режим tun.
Часто задаваемые вопросы
Урок «OpenVPN: архитектура VPN на основе TLS» бесплатный?
Да — полный текст урока «OpenVPN: архитектура VPN на основе TLS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «OpenVPN: архитектура VPN на основе TLS»?
Изучите, как OpenVPN использует TLS для канала управления и настраиваемые шифры для канала передачи данных. Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «OpenVPN: архитектура VPN на основе TLS»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- IPsec: протоколы IKEv2, ESP и AH
- WireGuard: VPN на основе ChaCha20 и Curve25519
- OpenVPN: архитектура VPN на основе TLS
- Сравнение протоколов VPN: безопасность и производительность