0Pricing
Cryptology Academy · Урок

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 — локальная установка не требуется.

Все уроки этого курса

  1. IPsec: протоколы IKEv2, ESP и AH
  2. WireGuard: VPN на основе ChaCha20 и Curve25519
  3. OpenVPN: архитектура VPN на основе TLS
  4. Сравнение протоколов VPN: безопасность и производительность
← Назад к Cryptology Academy