В CDN Cloudflare внедрена поддержка ESNI для шифрования имени хоста в HTTPS-трафике

Компания Cloudflare сообщила о реализации в своей сети доставки контента поддержки TLS-расширения ESNI (Encrypted Server Name Indication), обеспечивающего шифрование данных о хосте, запрашиваемом в рамках HTTPS-соединения.

До сих пор для организации работы на одном IP-адресе нескольких HTTPS-сайтов применялось расширение SNI, осуществляющее передачу имени хоста в открытом виде в сообщении ClientHello, передаваемом до установки шифрованного канала связи. Подобная особенность даёт возможность на стороне интернет-провайдера или владельца точки беспроводного доступа выборочно фильтровать HTTPS-трафик и анализировать какие сайты открывает пользователь, что не позволяет добиться полной конфиденциальности при применении HTTPS.

ESNI устраняет этот недостаток и полностью исключает утечку сведений о запрашиваемом сайте при анализе HTTPS-соединений. В сочетании с обращением через сеть доставки контента применение ESNI даёт возможность скрыть от провайдера и IP-адрес запрашиваемого ресурса. Системы инспектирования трафика будут видеть только обращения к CDN и не смогут применить блокировку без подмены TLS-сеанса, в случае которой в браузере пользователя будет показано соответствующее уведомление о подмене сертификата. Возможным каналом утечки остаётся DNS, но для скрытия обращения к DNS клиентом может применяться DNS-over-HTTPS или DNS-over-TLS.

На стороне клиента экспериментальная поддержка ESNI реализована в ночных сборках Firefox, а также в библиотеках BoringSSL (используется в Chromium), NSS (используется в Firefox) и picotls (используется в http-сервере h2o). При использовании ESNI имя хоста как и в SNI передаётся в сообщении ClientHello, но содержимое поля server_name зашифровано. Для шифрования используется секрет, вычисленный на основе ключей сервера и клиента. Для расшифровки перехваченного или полученного значения поля ESNI необходимо знать закрытый ключ клиента или сервера (плюс открытые ключи сервера или клиента). Информация об открытых ключах передаётся для серверного ключа в DNS с использованием TXT-поля »_esni», а для клиентского ключа в сообщении ClientHello. Расшифровка также возможна при помощи согласованного в процессе установки TLS-соединения общего секрета, известного только клиенту и серверу.

0_1537853995.png

©  OpenNet