VLESS Reality
VLESS Reality прячет VPN-соединение в TLS 1.3-рукопожатие реального сайта, и проверяющий видит этот сайт. Как это работает, ограничения и роль в Colitu.
VLESS Reality — второй режим, который Colitu Adaptive Connect пробует на Android и iOS, и один из TCP-режимов, которые на Windows и Linux упорядочиваются по времени подключения. Он сочетает VLESS — лёгкий прокси-протокол — и Reality — слой TLS-маскировки — и рассчитан на сети с глубокой инспекцией пакетов (DPI).
Что это такое
Обе части созданы в Project X (Xray), открытом сетевом инструментарии, и его командой XTLS.
- VLESS — минимальный прокси-протокол без состояния. Запрос содержит версию, идентификатор пользователя (UUID), команду и адрес назначения. Сам VLESS ничего не шифрует и полагается на нижний слой.
- Reality — этот нижний слой: реализация TLS 1.3, которой не нужен собственный сертификат. Во время рукопожатия сервер представляется реальным сторонним сайтом.
- XTLS Vision — режим потока (flow), который Colitu включает для VLESS Reality. Он решает проблему «TLS внутри TLS», о которой ниже.
Как это работает
- Настройка. На сервере задан реальный сайт-цель, пара ключей X25519 и короткие идентификаторы (short ID). Приложение получает открытый ключ, short ID и имя сайта-цели от панели Colitu по зашифрованному каналу.
- ClientHello. Приложение начинает рукопожатие TLS 1.3 так, будто браузер заходит на сайт-цель: в поле SNI указано имя этого сайта, а TLS-отпечаток через библиотеку uTLS повторяет Chrome.
- Скрытая аутентификация. Приложение вычисляет общий секрет из своего эфемерного ключа X25519 и открытого ключа сервера. С его помощью оно шифрует небольшой блок аутентификации (в том числе short ID и метку времени) в поле session ID сообщения ClientHello, где обычно лежат случайные байты.
- Решение сервера. Если блок верен, сервер сам завершает рукопожатие TLS 1.3 с временным сертификатом, привязанным к общему секрету, — приложение может его проверить. Если блок неверен, сервер побайтно передаёт соединение настоящему сайту-цели.
- Туннель. После рукопожатия запросы VLESS идут внутри сессии TLS 1.3 с потоком Vision.
Благодаря шагу 4 любой, кто подключается без ключа, — включая активный зонд, — общается с настоящим сайтом, получает его настоящий сертификат и видит его настоящие страницы.
XTLS Vision и «TLS внутри TLS»
Почти всё, что вы делаете в интернете, уже идёт по HTTPS, поэтому внутри VPN-туннеля обычно есть вторая TLS-сессия. Вложенный TLS создаёт узнаваемый рисунок размеров пакетов и задержек, особенно во время внутреннего рукопожатия. Vision распознаёт внутренний TLS, дополняет первые пакеты, чтобы размыть этот рисунок, а затем передаёт уже зашифрованные внутренние данные без повторного шифрования. Это уменьшает и заметность, и нагрузку на процессор. Vision нужен «сырой» TCP-поток, поэтому Colitu использует его для VLESS Reality, но не для VLESS XHTTP.
Зачем Colitu использует VLESS Reality
Классической TLS-маскировке нужны собственный домен и сертификат VPN, которые можно занести в список и заблокировать по имени, а при зондировании сервер может себя выдать. Reality убирает оба слабых места: собственного сертификата, который можно заблокировать, нет, а зонд видит настоящий сайт. В сетях, где DPI активно ищет VPN-трафик, это делает VLESS Reality одним из режимов, которые труднее всего отличить от обычного HTTPS.
Где он силён
- Сети с DPI: отпечаток как у браузера, рукопожатие реального стороннего сайта и никакого собственного сертификата.
- Сети, где заблокирован UDP: режим работает поверх TCP, поэтому подключается там, где Hysteria2 не может.
- Активное зондирование: зонды перенаправляются на настоящий сайт.
- Стабильный проводной интернет и Wi-Fi: при малых потерях TCP работает хорошо, а Vision держит накладные расходы низкими.
Ограничения и когда он не лучший выбор
- TCP на каналах с потерями. В мобильной сети или плохом Wi-Fi с большими потерями он замедляется, как любой TCP-протокол; Hysteria2 там обычно быстрее.
- Долгие одиночные соединения. Некоторые сети обрывают долгоживущие TCP-соединения или через какое-то время замедляют их. Для этого случая есть VLESS XHTTP.
- Несоответствие можно заметить. SNI называет один сайт, а IP-адрес принадлежит другой сети. Фильтры, которые сравнивают одно с другим или блокируют по IP-адресу, всё равно могут повлиять на соединение.
- Вечных гарантий нет. Системы фильтрации развиваются, и метод, который работает сегодня, завтра могут научиться распознавать. Поэтому у Colitu наготове ещё четыре режима.
Как его использует Adaptive Connect
На Android и iOS VLESS Reality идёт вторым, сразу после Hysteria2: это первый выбор, когда оказывается, что UDP заблокирован или непригоден. На Windows и Linux он соревнуется с другими TCP-режимами по измеренному времени подключения. Если рукопожатие не проходит или туннель не передаёт трафик во время проверки, приложение идёт дальше (на мобильных — к VLESS XHTTP, затем к Trojan и Shadowsocks 2022) и отодвигает неудачную попытку назад.
Безопасность и шифрование
- Шифрование: рукопожатие TLS 1.3 с обменом ключами X25519; трафик защищён AEAD-шифрами TLS 1.3.
- Проверка сервера: приложение принимает сервер, только если рукопожатие доказывает владение закрытым ключом, соответствующим открытому ключу Reality. Посредник без этого ключа не может выдать себя за сервер.
- Проверка клиента: два уровня — блок аутентификации Reality (ключ и short ID) и идентификатор пользователя VLESS, входящий в собственные данные подключения каждого устройства.
- Обращение с ключами: ключи, short ID и сайт-цель передаются приложению в зашифрованном виде и нигде не публикуются. На серверах Colitu у каждого режима VLESS своя пара ключей Reality, поэтому их можно менять независимо.
- Без журналов доступа: см. страницу безопасности.
Источники
Попробуйте
VLESS Reality уже есть во всех приложениях Colitu; приложение само выбирает его, когда этого требует сеть. Скачайте Colitu или посмотрите список локаций.