Что такое REALITY?
У туннелей, прячущихся внутри TLS, есть повторяющаяся слабость: сертификат и доменное имя, которые они предъявляют. REALITY — конструкция, которая убирает эту слабость тем, что вообще не имеет собственного сертификата.
Какую проблему решает REALITY
Обычному туннелю, завёрнутому в TLS, нужны домен и сертификат. Это требование порождает цепочку мелких признаков, ни один из которых не смертелен сам по себе, но вместе они делают конечную точку опознаваемой.
- Домен зарегистрирован, а регистрация — это публичная запись с датой, регистратором и нередко общим шаблоном с другими доменами, созданными для той же цели.
- Публично доверенные сертификаты публикуются в журналах Certificate Transparency, доступных для поиска кому угодно. История сертификатов домена не является приватной.
- Домен должен разрешаться в адрес конечной точки, так что эти двое навсегда связаны в DNS.
- Имя хоста называется открытым текстом в рукопожатии, значит его можно сверить со списком.
- И самое решающее: если система сама подключится к конечной точке без действительных учётных данных, наивный сервер поведёт себя так, как не повёл бы себя ни один обычный веб-сервер.
Каждый пункт можно смягчить: взять состарившийся домен, удостоверяющий центр с меньшим вниманием к себе, держать домен вне публичных списков. Ни один нельзя устранить, потому что сервер, держащий собственный сертификат для собственного домена, по определению является отдельной сущностью, которую можно найти.
Основная идея
REALITY выворачивает задачу наизнанку. Вместо того чтобы получать сертификат, который затем приходится делать безобидным, он заимствует личность настоящего, постороннего, популярного сайта — а когда кто-то без действительных учётных данных подключается, отдаёт ему этот самый настоящий сайт.
Клиент называет настоящий сайт
Он открывает рукопожатие TLS, называя легитимный высокопосещаемый домен, выбранный оператором. Для наблюдателя это обычный визит на обычный сайт.
Сервер ретранслирует к этому настоящему сайту
Конечная точка пересылает рукопожатие подлинному адресату, так что возвращающийся сертификат — настоящий сертификат этого сайта, корректно подписанный и с реальной историей в Certificate Transparency. Для туннеля сертификат не выпускался никогда.
Авторизованный клиент подтверждает себя внутри рукопожатия
Клиент, владеющий ключом оператора, встраивает аутентификационное значение в поля, которые рукопожатие несёт и так. Ни дополнительного сообщения, ни лишнего раунда: наблюдатель видит только обычный обмен.
Пути расходятся
Распознав действительного клиента, сервер берёт сессию на себя и несёт туннель. Увидев что-либо иное — браузер, сканер, зонд, — он продолжает ретрансляцию, и посетитель просто попадает на настоящий сайт.
Что это убирает
| Признак | Результат |
|---|---|
| Поиск в Certificate Transparency | Искать нечего — сертификат не выпускался. |
| История регистрации домена | Принадлежит заимствованному сайту, а не оператору. |
| Имя хоста в рукопожатии | Называет популярный сайт, блокировать который дорого. |
| Проверка действительности сертификата | Проходит — это настоящий сертификат настоящего сайта. |
| Активное зондирование | Зонд попадает на настоящий сайт и не видит ничего необычного. |
| Репутация адреса конечной точки | Без изменений. REALITY этим не занимается. |
| Анализ объёма и тайминга трафика | Без изменений. Большой устойчивый поток к одному адресу остаётся большим устойчивым потоком. |
Две последние строки важны. REALITY — сильный ответ на опознание по рукопожатию и по зондированию. Он ничего не делает с адресом, попавшим в список блокировки по другим причинам, и ничего — со статистическим анализом того, сколько трафика и куда идёт. Любое описание, представляющее его как полное решение, преувеличивает.
Ограничения и честные оговорки
- Выбор заимствованного сайта имеет большое значение. Он должен быть достаточно популярным, чтобы трафик к нему не выделялся, правдоподобным адресатом с точки зрения этой сети и достижимым с конечной точки. Неудачный выбор сам становится признаком.
- Есть и этическая сторона: имя заимствованного сайта используется без его участия. Он не несёт трафика от вашего имени сверх тех рукопожатий, которые и так был готов обслуживать, но стоит прямо сказать, что конструкция делает именно это.
- Она не защищает от оператора, который заблокирует заимствованный сайт целиком, и от сети, пропускающей только явный список адресов.
- Как и все подобные конструкции, это ответ существующим сегодня классификаторам. Исследования в области обнаружения не останавливаются, как и ответ на них.
Разумно думать о REALITY как о существенном повышении стоимости опознания конечной точки, а не как о невидимости. Он убедительно закрывает сертификатное и зондирующее направления. Те, которые он не закрывает, остаются открытыми.
Частые вопросы
Нужен ли REALITY собственный домен?
Нет, и в этом суть. Он завершает рукопожатие на настоящем стороннем сайте и предъявляет его подлинный сертификат, так что регистрировать домен не нужно и в журналах прозрачности искать нечего.
REALITY — это то же самое, что domain fronting?
Нет. Domain fronting использовал расхождение между именем хоста в рукопожатии TLS и именем в HTTP-запросе внутри него, и крупные провайдеры эту возможность закрыли. В REALITY такого расхождения нет: рукопожатие действительно идёт к названному сайту, и неаутентифицированные посетители действительно на него попадают.
Можно ли обнаружить REALITY?
Он убирает сертификатный и зондирующий пути опознания — те самые, на которые опирается большинство систем фильтрации. Он не убирает репутацию адреса и статистический анализ трафика, так что он повышает стоимость обнаружения, а не устраняет саму возможность.