Народный

Протоколы

REALITY — handshake-протокол маскировки VPN под HTTPS

Ядро технологии маскировки трафика, при которой VPN-сервер проксирует TLS-handshake на whitelisted чужой сайт и подменяет ответ — для DPI трафик неотличим от обычного HTTPS к крупному легитимному ресурсу.

Определение

REALITY — это handshake-протокол, разработанный командой Project X (xray-core) в 2023 году, который защищает VPN-серверы от детекции через подмену TLS-handshake: сервер прозрачно проксирует первоначальный handshake к whitelisted чужому домену (например, microsoft.com), а к легитимному клиенту с правильным секретом возвращает свой ответ. Это самостоятельный криптографический протокол, отдельный от VLESS, который можно (в теории) использовать с любым прокси-протоколом — но на практике сейчас используется почти исключительно в связке с VLESS + XTLS Vision.

REALITY заменил предыдущее решение «настоящий TLS + Let’s Encrypt сертификат + nginx fallback», которое страдало от cert-fingerprinting и нагрузки на nginx.

Как работает

REALITY эксплуатирует асимметрию между легитимным TLS-клиентом и VPN-клиентом: оба видят один ClientHello, но только VPN-клиент знает секрет и может авторизоваться. Алгоритм:

  1. Конфигурация сервера. Админ выбирает «target»-домен (whitelisted, на whitelist’е ТСПУ или GFW): microsoft.com, apple.com, cloudflare.com, gateway.icloud.com. Указывает его как dest в xray-конфиге. Также генерирует пару X25519 ключей (public/private).
  2. Клиентский ClientHello. Клиент шлёт TLS-handshake к VPN-серверу. В extension key_share он встраивает специальный X25519 public-key, который ДВОЙСТВЕННО валиден: с точки зрения TLS это нормальная ECDHE-нумера, с точки зрения REALITY это «marker» — сервер видит, что в нижних битах закодирован authentication-tag.
  3. Серверная проверка. Сервер декодирует tag из key_share. Если tag валиден (выведен из server_private_key + client_short_id) — это VPN-клиент. Если нет — это случайный TLS-клиент или active probing.
  4. Branching:
    • VPN-клиент. Сервер генерирует свой TLS-ответ (ServerHello + сертификат от target-домена, валидный потому что server заранее получил его реальную копию через handshake к microsoft.com). Подменяет ответ и переходит в XTLS Vision flow.
    • Не-VPN-клиент / probe. Сервер прозрачно проксирует handshake на настоящий microsoft.com и возвращает реальный ответ Microsoft. Probe видит сертификат Microsoft и не понимает, что это VPN-сервер.
  5. Authentication. В REALITY нет паролей в trafic’е — handshake-секрет проверяется одним RTT через X25519-обмен.

Защита от MITM. Server подменяет сертификат для VPN-клиента. Чтобы это не выглядело как cert-spoofing, клиент НЕ проверяет цепочку — он проверяет только X25519-marker от сервера в ServerHello. Безопасность поддерживается за счёт того, что только сервер с private-key может правильно ответить.

Применение в России 2026

REALITY — текущий золотой стандарт обхода ТСПУ. Причины:

  • Защита от active probing. ТСПУ не может проверить, VPN ли это, не зная private-key. При probe-запросе сервер показывает реальный сайт-цель.
  • SNI = microsoft.com. SNI-блокировка ничего не даёт — Microsoft в whitelist всегда.
  • JA3 = Chrome. uTLS на стороне клиента эмулирует JA3 настоящего Chrome.
  • Без Let’s Encrypt. Не нужен реальный домен с сертификатом для VPS, что упрощает setup и убирает один OPSEC-leak (домен в Let’s Encrypt CT log публичен).

Что НЕ защищает:

  • Statistical fingerprinting. Если ТСПУ видит, что 90% трафика к whitelist’у Microsoft идёт на ваш IP — это статистическая аномалия. Решение — использовать редкие whitelisted-домены, ротация.
  • IP-block. Если ваш VPS IP попал в IP-blacklist (по другим причинам) — REALITY не поможет.
  • TLS-in-TLS detection. REALITY покрывает только handshake. Без Vision пользовательский TLS-трафик внутри туннеля может детектироваться. Поэтому связка REALITY + Vision — обязательна.

Setup на стороне клиента. URL формат:

vless://uuid@server:443?security=reality&pbk=<public-key>&fp=chrome&sni=microsoft.com&sid=<short-id>&type=tcp&flow=xtls-rprx-vision

Юзеру: при выборе VPN провайдера для РФ ключевые маркеры качества — REALITY + Vision + ротация target-доменов + uTLS. Если в импорт-ссылке нет security=reality — VPN не выдержит ТСПУ.

Связанные термины

VLESS Reality — основной протокол, использующий REALITY. VLESS — базовый прокси-уровень. XTLS Vision — flow для зашифрованного inner-стрима. Active probing — атака, против которой REALITY проектировался. TLS 1.3 — основа handshake.

Источники