# Fidelity TLS Front Profile ## Обзор Этот документ описывает, как Telemt переиспользует захваченное TLS-поведение в FakeTLS server flight и как проверять результат на реальной инсталляции. Когда включена TLS front emulation, Telemt может собирать полезное серверное TLS-поведение выбранного origin и использовать его в emulated success path. Цель здесь не в побайтном копировании origin, а в уменьшении устойчивых synthetic признаков и в том, чтобы emitted server flight был структурно ближе к захваченному profile. ## Зачем нужно это изменение Проект уже умеет собирать полезное серверное TLS-поведение в пути TLS front fetch: - `change_cipher_spec_count` - `app_data_record_sizes` - `ticket_record_sizes` До этого изменения эмулятор использовал только часть этой информации. Из-за этого оставался разрыв между захваченным поведением origin и тем FakeTLS server flight, который реально уходил на провод. ## Что реализовано - Эмулятор теперь воспроизводит наблюдаемое значение `ChangeCipherSpec` из полученного `behavior_profile`. - Эмулятор теперь воспроизводит наблюдаемые размеры ticket-like tail ApplicationData records, когда доступны raw или merged TLS profile data. - Эмулятор теперь сохраняет больше структуры профилированного encrypted flight, а не схлопывает его в более маленькую synthetic форму. - Для профилей без raw TLS behavior по-прежнему сохраняется прежний synthetic fallback. - Операторский `tls_new_session_tickets` по-прежнему работает как дополнительный fallback, если профиль не даёт достаточного количества tail records. ## Практическая польза - Снижается различимость между профилированным origin TLS-поведением и эмулируемым TLS-поведением. - Уменьшается шанс устойчивых server-flight fingerprint, вызванных фиксированным CCS count или полностью synthetic tail record sizes. - Уже собранные TLS profile data используются лучше, без изменения MTProto logic, KDF routing или transport architecture. ## Ограничения Этот механизм не ставит целью сделать Telemt побайтно идентичным origin server. Он также не меняет: - MTProto business logic; - поведение KDF routing; - общую transport architecture. Практическая цель уже: - использовать больше уже собранных profile data; - уменьшить fixed synthetic behavior в server flight; - сохранить валидный FakeTLS success path, одновременно меняя форму emitted traffic на проводе. ## Цели валидации - Корректное количество эмулируемых `ChangeCipherSpec` records. - Корректное воспроизведение наблюдаемых ticket-tail record sizes. - Отсутствие регрессии в существующем ALPN и payload-placement behavior. ## Как проверять результат Рекомендуемая валидация состоит из двух слоёв: - focused unit и security tests для CCS-count replay и ticket-tail replay; - сравнение реальных packet capture для выбранного origin и успешной FakeTLS session. При проверке на сети ожидаемый результат такой: - валидный FakeTLS и MTProto success path сохраняется; - форма раннего encrypted server flight меняется, когда доступно более богатое profile data; - изменение видно на проводе без изменения MTProto logic и transport architecture. Такая проверка нужна для подтверждения того, что уже собранные TLS profile data используются лучше. Она не предназначена для доказательства побайтной эквивалентности с реальным origin server. ## Как проверить на реальной инсталляции Самая сильная практическая проверка — side-by-side trace comparison между: - реальным TLS origin server, используемым как `mask_host`; - Telemt FakeTLS success-path connection для того же SNI; - при необходимости capture от разных Telemt builds или configurations. Смысл сравнения состоит в том, чтобы посмотреть на форму server flight: - порядок records; - количество `ChangeCipherSpec` records; - количество и группировку ранних encrypted `ApplicationData` records; - размеры tail или continuation `ApplicationData` records. ## Рекомендуемое окружение Для самой чистой проверки лучше использовать Linux host или Docker container. Рекомендуемый setup: 1. Один экземпляр Telemt. 2. Один реальный HTTPS origin как `mask_host`. 3. Один Telegram client, настроенный на `ee` proxy link для Telemt instance. 4. `tcpdump` или Wireshark для анализа capture. ## Пошаговая процедура проверки ### 1. Подготовить origin 1. Выберите реальный HTTPS origin. 2. Установите и `censorship.tls_domain`, и `censorship.mask_host` в hostname этого origin. 3. Убедитесь, что прямой TLS request работает: ```bash openssl s_client -connect ORIGIN_IP:443 -servername YOUR_DOMAIN