Компания Mozilla обяви, че включва за потребителите на стабилната версия на Firefox поддръжка на механизма ECH (Encrypted Client Hello), който продължава развитието на технологията ESNI (Encrypted Server Name Indication) и е предназначен за криптиране на информацията относно параметрите на TLS сесиите, като например заявеното домейн име. Първоначално кодът за работа с ECH беше добавен в издаването на Firefox 85, но беше деактивиран по подразбиране. Поддръжката на ECH в Chrome започна постепенно да се активира, започвайки от издаването на Chrome 115.
Тъй като освен свързването с сървър изтичането на информация за заявените домейни става чрез DNS, за пълна защита освен ECH е необходимо използването на технологията DNS over HTTPS или DNS over TLS за криптиране на DNS трафика. Firefox няма да използва ECH без активиране на DNS over HTTPS в настройките. Можете да проверите поддръжката на ECH в браузъра на тази страница.
Един от факторите за активиране по подразбиране на поддръжката на ECH в Firefox стана включването преди няколко дни от компанията Cloudflare на поддръжка на ECH в своята мрежа за доставка на съдържание. От практическа страна, тъй като данните за заявените хостове при използване на ECH са скрити от анализа, за филтрирането и блокирането на нежелани сайтове, използващи CDN Cloudflare, сега е необходимо блокиране на цялата мрежа Cloudflare, блокиране на всички заявки с ECH или организация на прихващане на HTTPS с помощта на фалшиви коренови сертификати на системата на потребителя.
Първоначално за организиране на работата на един IP адрес на няколко HTTPS сайта се използваше TLS разширението SNI, при което името на заявения хост се посочваше в съобщението ClientHello, изпращано преди установяването на криптирания канал за комуникация. Тази особеност позволяваше на ранния етап от обработката на връзката да разпределя заявките по виртуални хостове, но също така позволяваше на страната на интернет доставчика селективно да филтрира HTTPS трафика и да анализира кои сайтове отваря потребителят, което не позволяваше постигането на пълна конфиденциалност при използването на HTTPS.
За решаването на този проблем и предотвратяването на изтичането на информация за заявения сайт по-късно беше предложена разширение ESNI, реализирано с криптиране на данните с име на хоста. По време на внедряването на ESNI стана ясно, че предложеният механизъм не обхваща всички възможни източници на изтичане на данни за хоста и неговото приложение не е достатъчно за осигуряване на пълна конфиденциалност на HTTPS сесиите. В частност, при възобновяване на предишно установена сесия името на домейна открито продължаваше да бъде посочвано в параметрите на TLS разширението PSK (Pre-Shared Key). Освен това, опитите за внедряване на ESNI откриха проблеми със съвместимостта и мащабируемостта, които пречеха на широкоразпространението на ESNI.
С оглед на откритите недостатъци на ESNI, беше разработен нов универсален механизъм ECH, който допуска криптиране на параметрите на всякакви TLS разширения. Технически основната разлика между ECH и ESNI е, че вместо отделни полета се криптира веднага цялото съобщение ClientHello. ECH предвижда разделяне на ClientHello на две отделни съобщения — криптирано съобщение ClientHelloInner (SNI Inner) и некриптирано основно съобщение ClientHelloOuter (SNI Outer). В некриптираното SNI Outer се предават не засягащи конфиденциалността данни, като версия на TLS и списък на използваните шифри, както и общото име на домейна, което не съвпада с фактическото име на заявения домейн. Например, за всички клиенти на Cloudflare в некриптираното SNI Outer се посочва общ хост „cloudflare-ech.com“, а фактическото име на заявения хост се предава в криптираното SNI Inner и не е достъпно за анализ.

ECH също използва различна схема за разпространение на ключа за криптиране — информацията за публичния ключ се предава в DNS записи HTTPSSVC, а не в записи тип TXT. За получаване и криптиране на ключа се прилага автентифицирано крайно криптиране, основаващо се на механизма HPKE (Hybrid Public Key Encryption). ECH също така поддържа безопасно повторно предаване на ключа от сървъра, което може да се прилага в случай на ротация на ключовете на сървър и за решаване на проблемите при получаване на остарели ключове от кеша на DNS.
Източник: opennet.ru
