Фильтрация HTTPS SNI
Фильтрация HTTPS SNI в интернет-цензуре
Фильтрация HTTPS SNI — это метод ограничения доступа к определённым веб-сайтам или веб-сервисам на основе их доменных имён. Она работает за счёт анализа поля Server Name Indication (SNI) в процессе TLS-рукопожатия, где клиент указывает домен, к которому хочет подключиться. Эта фильтрация реализуется с использованием специализированного оборудования с функцией глубокой проверки пакетов (DPI), которое анализирует сетевой трафик на детализированном уровне, включая зашифрованные HTTPS-пакеты.
Фильтрация SNI эффективна, потому что поле SNI в TLS-рукопожатии обычно передаётся в незашифрованном виде, даже если остальная часть трафика зашифрована. Это позволяет системе фильтрации определить целевой домен и заблокировать соединение до завершения процесса шифрования.
Типичные ошибки, которые вы можете встретить в браузере при фильтрации SNI:
- ERR_CONNECTION_RESET: Соединение с сервером было неожиданно прервано. Часто возникает из-за проблем с сетью, ограничений фаервола или преднамеренной блокировки с помощью DPI или аналогичных технологий.
- ERR_CONNECTION_CLOSED: Соединение с сервером было успешно установлено, но затем закрыто, обычно сервером или из-за сетевых перебоев.
- ERR_CONNECTION_REFUSED: Сервер активно отклонил попытку подключения, часто потому, что сервер отключён, IP-адрес заблокирован или установлен фаервол.
- ERR_SSL_DECRYPT_ERROR_ALERT: Проблема с расшифровкой данных SSL/TLS во время соединения. Может быть вызвана несоответствием алгоритмов шифрования, недействительными сертификатами или вмешательством (например, DPI анализирует зашифрованный трафик).
- ERR_SSL_HANDSHAKE_NOT_COMPLETED: Неудача при завершении SSL/TLS-рукопожатия. Может быть связана с несовместимостью протоколов, проблемами с сертификатами или перехватом трафика системами фильтрации.
- (иногда) Ошибка сертификата HTTPS: Возникает из-за проблем с сертификатом HTTPS, таких как истечение срока действия, недоверенный удостоверяющий центр или несоответствие между доменом и сертификатом. Может также происходить из-за изменения сертификата при перехвате трафика.
Эти блокировки могут быть обнаружены с помощью некоторых программ для проверки цензуры (см. SOFTWARE TOOLKITS), таких как:
- OONI Probe
- RIPE Atlas с двумя измерениями: одно с оригинальным доменным именем и другое с другим, подключающимся к тому же IP-адресу.
- Скрипт blockcheck.sh из приложения “zapret”.
А также вручную, путём подключения к одному и тому же сайту с использованием разных доменных имен в запросе HTTPS:
- Откройте “Командную строку” (Windows) / Терминал (Linux, macOS).
- Введите
curl -v https://example.com
. - Введите
curl -v https://completely.different.website.com -k --connect-to ::domain.name.of.the.website.com
.
Интерпретация результатов:
- Если команда #3 успешна, а #2 нет, это указывает на фильтрацию SNI. На шаге 3 доменное имя было переписано на “completely.different.website.com”, но подключение происходило к тому же IP-адресу оригинального сайта.
Решения для обхода:
- VPN/Прокси.
- (иногда) ПО для обхода DPI: GoodbyeDPI, zapret, ByeDPI, SpoofDPI, PowerTunnel.
Регионы:
- Китай
- Россия
- Туркменистан
- Иран