Trojan
Trojan прячет VPN-трафик в стандартное соединение TLS 1.3 с настоящим сертификатом, поэтому оно похоже на HTTPS. Как он устроен, ограничения и роль в Colitu.
Trojan — четвёртый режим, который Colitu Adaptive Connect пробует на Android и iOS, и один из TCP-режимов, которые на Windows и Linux упорядочиваются по времени подключения. Его идея проста: не придумывать новую маскировку, а использовать настоящую. Сервер Trojan — это TLS-сервер с действительным сертификатом, а трафик Trojan — обычный TLS.
Что это такое
Протокол Trojan представил открытый проект trojan-gfw, в документации которого он полностью описан. Сегодня существует много независимых реализаций; на серверах Colitu Trojan работает на sing-box — открытой универсальной прокси-платформе. Trojan опирается на TLS, у Colitu — на его актуальную версию TLS 1.3 (RFC 8446), и добавляет поверх лишь очень простой формат запроса.
Как это работает
- Приложение открывает TCP-соединение и выполняет стандартное TLS-рукопожатие с доменным именем сервера. Оно проверяет настоящий сертификат сервера — тот же, что у Hysteria2, выпущенный через ACME.
- В первых данных внутри TLS приложение отправляет SHA-224-хеш своего пароля в шестнадцатеричном виде, перевод строки и короткий запрос: команду (открыть TCP-соединение или передавать UDP), адрес и порт назначения и ещё один перевод строки.
- Если хеш принадлежит известному пользователю, сервер открывает запрошенное соединение и передаёт данные в обе стороны.
- Если нет, протокол устроен так, чтобы сервер себя не выдал. Исходная реализация trojan-gfw передаёт такие соединения обычному веб-серверу, и проверяющий получает то же, что показал бы любой HTTPS-сайт.
- UDP-трафик передаётся пакетами с заголовками внутри того же TLS-потока.
Зачем Colitu использует Trojan
- Другой способ маскировки. Reality заимствует сторонний сайт, а Trojan использует собственный домен сервера и настоящий сертификат. Фильтру, нацеленному на рукопожатия в стиле Reality — например, имя известного сайта на постороннем IP-адресе, — здесь не за что зацепиться.
- TLS-резерв, когда UDP заблокирован. Если Hysteria2 не подключается, а режимы на основе Reality выделяются фильтром, Trojan даёт ещё один путь через обычный TLS.
- Простота и зрелость. Протокол небольшой, хорошо изучен и широко реализован.
Где он силён
- Сети, где заблокирован UDP, например некоторые гостиничные, офисные и университетские: Trojan нужен только TCP.
- Сети, которые выделяют Reality: его рукопожатие — обычное TLS-рукопожатие для собственного имени сервера с сертификатом публичного удостоверяющего центра.
- Обычный стандартный TLS: до и вокруг TLS-сессии нет никакого необычного обрамления.
Ограничения и когда он не лучший выбор
- Собственные имя и адрес. Домен и сертификат принадлежат серверу. Если их вычислят, их можно заблокировать по имени или IP-адресу — с Reality это сложнее.
- «TLS внутри TLS». У Trojan нет аналога XTLS Vision, поэтому рисунок вложенных TLS-рукопожатий может оставаться заметным для продвинутого DPI.
- TLS-отпечаток клиента. Протокол Trojan не задаёт отпечаток как у браузера; то, как выглядит рукопожатие, зависит от реализации, а некоторые фильтры смотрят именно на это.
- TCP на каналах с потерями. В мобильной сети или плохом Wi-Fi он замедляется, как любой TCP-протокол; Hysteria2 там обычно быстрее.
- UDP поверх TCP. Звонки и игры внутри TCP-потока страдают при потерях: следующие пакеты ждут, пока дойдёт потерянный.
Как его использует Adaptive Connect
На Android и iOS Trojan идёт четвёртым — после Hysteria2, VLESS Reality и VLESS XHTTP. Он используется, когда UDP заблокирован, а оба режима на основе Reality не подключаются или не проходят проверку трафика. После Trojan остаётся только Shadowsocks 2022. На Windows и Linux Trojan упорядочивается вместе с другими TCP-режимами по измеренному времени подключения, поэтому в некоторых сетях его пробуют сразу после Hysteria2.
Безопасность и шифрование
- Шифрование: TLS 1.3 защищает всю сессию, включая хеш пароля и адрес назначения.
- Проверка сервера: настоящий сертификат публичного удостоверяющего центра, который выпускается и продлевается автоматически через ACME и проверяется приложением. Без него посредник не может выдать себя за сервер.
- Проверка клиента: пароль входит в собственные данные подключения каждого устройства и никогда не передаётся открыто — только в виде хеша внутри TLS.
- Обращение с ключами: данные подключения передаются приложению в зашифрованном виде и нигде не публикуются.
- Без журналов доступа: см. страницу безопасности.
Источники
Попробуйте
Trojan уже есть во всех приложениях Colitu как один из пяти режимов — с вашей стороны ничего настраивать не нужно. Скачайте Colitu или посмотрите список локаций.