Задумывались ли вы когда-нибудь, что когда вы посещаете веб-сайт XXXHub поздно ночью, пакеты сетевых данных, отправленные вашим компьютером/мобильным телефоном, перехватываются кем-то в узле в середине сети, таким образом зная, что вы посетили XXXHub.
Вы можете сказать, что теперь, когда используется HTTPS, весь онлайн-контент зашифрован и не виден другим.
Но чего вы можете не знать, так это того, что даже если используется HTTPS, передаваемый контент только шифруется, но все равно можно узнать, какой веб-сайт вы просматриваете.
Есть два способа узнать, какой сайт вы посещаете.
Прежде чем официально получить доступ к веб-сайту, обычно происходит процесс разрешения доменного имени для преобразования доменного имени XXXHub в IP-адрес для последующей связи, и этот процесс обычно не шифруется. Поэтому, когда я вижу, что вы запросили поведение DNS для XXXHub, я знаю, что в следующий раз вы собираетесь просмотреть этот веб-сайт.
Чтобы избежать обнаружения поведения Интернета через DNS, в настоящее время существует два относительно зрелых решения, а именно DNS через TLS (сокращенно DoT) и DNS через HTTPS (сокращенно DoH).
DoT похож на HTTPS, изменяя процесс разрешения DNS с исходной передачи открытого текста UDP на соединение TLS на основе TCP, тем самым скрывая содержимое запросов и ответов DNS.
DoH легче понять. Он напрямую выполняет операцию разрешения доменного имени через HTTPS вместо использования традиционных сообщений DNS, но для получения результатов использует GET/POST.
Подробную информацию о двух вышеупомянутых технологиях можно найти в последних документах RFC:
DoT: https://datatracker.ietf.org/doc/html/rfc7858 DoH: https://datatracker.ietf.org/doc/html/rfc8484
Многие люди могут знать о DNS, но немногие знают о SNI.
HTTPS на самом деле представляет собой HTTP+TLS/SSL. Перед передачей гипертекста HTTP происходит процесс установления связи TLS/SSL для обмена секретными ключами для шифрования последующего контента.
На этом этапе установления связи будет показано, какой веб-сайт вы посещаете. Например, я подключаюсь к Baidu Maps через HTTPS и использую Wireshark, чтобы получить пакет, и вижу:
Видите ли, в первом пакете TLS-рукопожатия — Client Hello, выдается какой сайт вы хотите посетить!
Это SNI, полное имя — «Индикация имени сервера». Клиент использует его, чтобы указать, какое доменное имя он хочет запросить.
Зачем здесь это поле?
Представьте, что у вас есть два доменных имени, a.com и b.com, и два файла сертификата, A и B, которые были выданы соответственно. Эти два доменных имени разрешены для одного и того же облачного сервера и имеют один и тот же IP-адрес. Это вполне возможно. Теперь есть HTTPS-соединение. Если не указано доменное имя, которое он хочет запросить, как сервер узнает, какой сертификат вернуть браузеру? Если сертификат неправильный, связь не будет продолжена.
Но этот парень из SNI продаст информацию о веб-сайте, который вы хотите посетить.
Есть ли способ скрыть это, чтобы никто об этом не узнал?
Именно об этом главном герое мы и поговорим сегодня: CloudFlare разработала новую технологию — Encrypted Client Hello, или сокращенно ECH.
Как видно из полного английского названия, он шифрует сообщение Client Hello при рукопожатии TLS!
Как это делается?
На самом деле это несложно сказать. Он разделяет исходное сообщение Client Hello на две части. Одна называется внешним SNI и содержит неконфиденциальную информацию (например, номер версии TLS), а другая — внутренним SNI, которая содержит конфиденциальную информацию, например доменное имя сайта здесь.
Затем такой запрос отправляется на сайт cloudflare-ech.com, который его расшифровывает. Внешний мир увидит только то, что вы посещаете Cloudflare, но не ваш истинный пункт назначения.
Звучит немного сложно, но на самом деле это похоже на прокси. Cloudflare играет роль прокси. Вы сообщаете ему адрес веб-сайта, который хотите посетить, и он завершает последующую связь.
Я видел эту новость на Weibo о магнате ИТ-технологий Жуане Ифэне. В разделе комментариев есть разные мнения по поводу этой технологии.
Некоторые настроены скептически:
Некоторые люди подтверждают его положительные эффекты:
Появился еще один комментарий:
Разве это не эквивалентно этому?
Теперь есть DoT/DoH для защиты процесса DNS-запроса, ECH для сокрытия веб-сайта, который вы хотите посетить, и HTTPS для шифрования передаваемого вами веб-контента. Он действительно защищает весь процесс, а другие узлы в сети теоретически никогда не могут быть защищены. снова видел. Что ты делал в Интернете?
Заметьте, я говорю об узлах в сети. Если терминал заглох, то это еще зря.
Что вы думаете об этой технологии? Есть ли практическое значение?