TLS-отпечаток и пост-квантовый переход: чем себя выдаёт мнимый браузер
Маскировка под браузер — основа большинства современных транспортов. Логика понятна: если рукопожатие выглядит как рукопожатие Chrome, отличить его от Chrome трудно. Проблема в том, что рукопожатие Chrome — движущаяся цель. Оно меняется с каждой версией, и в 2025 году изменилось так сильно, что старые имитации стали заметнее оригинала.
За 2025 год под этой логикой сместилась почва, и многие конфигурации об этом не знают.
Что такое отпечаток рукопожатия?#
При установке защищённого соединения клиент отправляет сообщение, в котором перечисляет свои возможности: версии протокола, наборы шифров, расширения, поддерживаемые группы, предпочтения по прикладным протоколам.
Этот набор — и порядок его элементов — различается между реализациями. Из него вычисляется компактный отпечаток; известные схемы такого хеширования применяются наблюдателями уже несколько лет.
Отсюда следствие, известное всем, кто настраивал маскировку: подделать только имя запрашиваемого сайта недостаточно. Имя может быть безупречным, а набор расширений выдавать библиотеку, которой ни один браузер не пользуется.
Ровно для этого существуют библиотеки, воспроизводящие рукопожатия распространённых браузеров. Транспорты вроде REALITY опираются на них и позволяют выбрать, каким браузером представляться.
Что изменилось в 2025 году#
Пост-квантовый обмен ключами перестал быть экспериментом и стал большинством.
По данным годового обзора Cloudflare Radar, доля пост-квантового человеческого веб-трафика выросла с 29% в начале 2025 года до примерно 52% к началу декабря. Гибридная схема добавляет к сообщению клиента заметный объём — порядка тысячи с лишним байт.
Это меняет расстановку. Раньше отсутствие пост-квантового обмена было нормой, а его наличие — редкостью. Теперь наоборот.
Клиент, заявляющий современный Chrome, но не предлагающий пост-квантовый обмен, противоречив сам себе. Заявленный браузер обещает то, чего в рукопожатии нет. Это рассогласование не требует расшифровки и видно из первого же сообщения.
Проверять поэтому нужно не имя выбранного профиля, а фактическое содержимое рукопожатия. Профиль с названием современного браузера, собранный библиотекой годичной давности, даёт как раз ту комбинацию, которой в природе не встречается.
Побочный эффект: рукопожатие перестало помещаться в пакет#
Дополнительная тысяча байт имеет неожиданное следствие.
Сообщение клиента теперь часто не помещается в один сегмент и разбивается на два. Это нормальное поведение большинства современного трафика.
Ирония в том, что разбиение первого сообщения на несколько сегментов годами применялось как приём обхода примитивных фильтров, не собиравших поток. Сегодня это не уловка, а норма — и её отсутствие само стало отклонением.
Полезно проверять и обратное: собирает ли промежуточное оборудование такое разбитое сообщение. Оборудование, ожидающее рукопожатие в одном пакете, может повести себя непредсказуемо на трафике, который стал массовым.
Разбор: как выглядит рассогласование#
Наблюдателю не нужно ничего расшифровывать. Достаточно сопоставить два поля из одного сообщения.
СОГЛАСОВАННЫЙ КЛИЕНТ
заявленный браузер: Chrome 131
группы обмена: X25519MLKEM768, X25519, secp256r1
размер сообщения: ~1 700 байт, два сегмента
└── совпадает с популяцией ✓
РАССОГЛАСОВАННЫЙ КЛИЕНТ
заявленный браузер: Chrome 131 ← обещает пост-квантовый обмен
группы обмена: X25519, secp256r1 ← но его НЕ предлагает
размер сообщения: ~600 байт, один сегмент
└── такого Chrome не существует ✗
Проверка стоит наблюдателю одного сравнения полей. Она не требует ни расшифровки, ни статистики, ни накопления истории — рассогласование видно в первом же сообщении соединения.
Именно это делает его дорогим для маскировки: дешёвая проверка применяется массово.
Числовой пример: как сместилась популяция#
Соотношение изменилось за один год, и вместе с ним изменилось, что считать аномалией.
| Начало 2025 | Конец 2025 | |
|---|---|---|
| Доля пост-квантового трафика | 29% | 52% |
| Клиент с пост-квантовым обменом | меньшинство | большинство |
| Клиент без него, заявляющий современный браузер | обычное дело | аномалия |
Обратите внимание, что изменилась не сила проверки, а фон. Тот же самый клиент, который в начале 2025 года выглядел совершенно обычно, к концу года стал выделяться — не изменившись ни на байт.
Отсюда общее правило, применимое далеко за пределами этого случая: отпечаток устаревает не тогда, когда его вычислили, а тогда, когда меняется популяция, среди которой он должен теряться.
Отпечаток — это не только рукопожатие#
Второе распространённое заблуждение: считать, что совпадение отпечатка рукопожатия закрывает вопрос.
Наблюдаемых слоёв больше:
| Слой | Решается выбором профиля рукопожатия? |
|---|---|
| Набор и порядок расширений | да |
| Размеры записей после рукопожатия | нет |
| Поведение прикладного протокола | нет |
| Форма пачек и паузы между ними | нет |
| Репутация адреса назначения | нет |
| Дополнительная задержка от промежуточного узла | нет |
Библиотека воспроизведения рукопожатий закрывает первую строку. Остальные остаются, и исследования последних лет показывают, что классификация всё чаще опирается именно на них.
Отсюда смещение задачи: скопировать не рукопожатие браузера, а наблюдаемое поведение браузерного сеанса целиком — при этом не обрушив пропускную способность до неприемлемой.
Гигиена библиотек#
Отдельная тема, которую легко упустить за архитектурными рассуждениями.
Библиотеки воспроизведения рукопожатий — обычный код с обычными дефектами. В 2026 году в популярной библиотеке были опубликованы уязвимости, среди которых рассогласование в профилях, воспроизводящих Chrome: при определённых условиях выбиралась комбинация параметров, которую настоящий Chrome выбрать не может.
Дефект такого рода не ломает соединение. Он делает его опознаваемым — то есть ровно то, против чего библиотека применяется.
Практический вывод: версия библиотеки воспроизведения отпечатков относится к параметрам безопасности, а не к деталям сборки. Устаревшая версия воспроизводит браузер, которого больше нет.
Что проверять#
Короткий список для тех, кто настраивает маскировку:
Соответствует ли фактическое рукопожатие заявленному браузеру. Проверяется захватом и сравнением с настоящим браузером текущей версии, а не по названию профиля.
Присутствует ли пост-квантовый обмен, если профиль представляется современным браузером. Его отсутствие — самостоятельный признак.
Не устарела ли библиотека воспроизведения. Смотреть на опубликованные уязвимости, а не только на дату релиза.
Согласованы ли слои между собой. Заявленный в заголовках клиент должен соответствовать отпечатку рукопожатия. Расхождение между ними — дешёвая для наблюдателя проверка.
Сводка: что заявлено, что отправлено, как выглядит#
| Клиент заявляет | Что отправляет на самом деле | Как выглядит наблюдателю |
|---|---|---|
| современный браузер | постквантовый обмен ключами | как большинство, ничем не выделяется |
| современный браузер | классический обмен ключами | рассогласование: версия и поля не сходятся |
| устаревшую версию | поля той же устаревшей версии | согласованно, но редко и потому заметно |
| ничего конкретного | собственный набор библиотеки | отдельная категория, опознаётся сразу |
Опасна именно вторая строка: она возникает сама собой, когда конфигурацию не трогали, а популяция вокруг изменилась.
Вывод#
Маскировка под браузер остаётся рабочим подходом, но она перестала быть настройкой «выбрать профиль и забыть».
Популяция браузеров меняется, и отпечаток годичной давности воспроизводит браузер, которого больше не существует. Пост-квантовый переход — самый заметный пример такого сдвига, но не последний: любая массовая смена в поведении браузеров создаёт то же расхождение.
Из этого следует практика, а не разовое действие: отпечаток проверяется против текущей популяции, а не против той, для которой профиль писался.
Термины#
- Отпечаток рукопожатия - устойчивый набор полей и их порядка в начале защищённого соединения, по которому опознаётся клиентская библиотека.
- Постквантовый обмен ключами - алгоритм согласования ключа, устойчивый к квантовому противнику; к 2025 году стал массовым в браузерах.
- Рассогласование версии - состояние, когда заявленная версия клиента не совпадает с набором полей, который эта версия должна отправлять.
FAQ: частые вопросы#
Почему имитация браузера перестала работать?#
Потому что оригинал изменился. Отпечаток без постквантового обмена ключами теперь выделяется на фоне популяции, а не сливается с ней.
Достаточно ли обновить библиотеку?#
Обычно да, но проверять надо результат: совпадение заявленной версии с фактическим набором полей, а не номер версии в настройках.
Отпечаток — это только рукопожатие?#
Нет. К нему добавляются поведение после установления соединения, порядок запросов и параметры транспортного уровня.
Что читать дальше#
- Почему «выглядит случайно» не значит «выглядит нормально»
- Тихие отказы: когда отвергает сервер
- Гайд по Xray-core
- Пройдите маршрут от настройки до диагностики в VPN-гайдах GigaTap.
- Выберите следующий шаг с помощью помощника VPN start.
- Импорт профиля под конкретное устройство — в хабе настройки клиентов.