Надоградња слушаоца на TLS 1.3 мења шта посматрач може да прочита, али не онолико колико сугерише број верзије. ClientHello и даље путује пре него што се договори било какво шифровање, а у обичној вези тражено име сервера стоји тамо у чистом тексту. Encrypted Client Hello је механизам који га скрива, и то је засебно увођење са сопственим предусловима. Извршите ова четири корака пре него што напишете политику која претпоставља једно од два понашања.

Шта руковање заиста открива

TLS 1.3 шифрује серверов сертификат и већину руковања које следи након ServerHello. Све што клијент пошаље прво остаје изван те заштите, јер кључеви још не постоје. Ознака имена сервера део је тог првог лета, зато је пасивни посматрач још може прочитати без да ишта разбије.

Спецификација ECH, RFC 9849, то мења шифровањем унутрашњег ClientHello за сервер који сарађује. Спољашње руковање остаје и носи јавно име које мрежа може да види, па увођење и даље треба спољни идентитет који има смисла посредницима. То спољашње име је део који људи пропусте кад очекују да веза постане анонимна. То је покривно име, а не скривено, и мора да се разреши и аутентификује као и свако друго.

Ништа од овога не скрива пут доставе. Изворна и одредишна адреса, портови, величине пакета и време остају видљиви, и они често говоре више о томе ко говори него име. Разрешавање имена и односи на нивоу апликације су још један слој, сваки са сопственом видљивошћу.

Прочитајте ClientHello уместо да претпостављате

Верзија у ServerHello не говори вам шта је клијент послао. Погледајте први лет директно, са позиције која представља посматрача који вас занима.

openssl s_client -connect app.plant.example:443 -servername app.plant.example -tls1_3 </dev/null> 2>/dev/null | head -20
sudo tcpdump -ni eth0 -c 40 'tcp port 443' -w /tmp/tls.pcap
tshark -r /tmp/tls.pcap -Y 'tls.handshake.extensions_server_name' -T fields -e tls.handshake.extensions_server_name

Прва наредба изводи руковање и приказује договорене параметре, укључујући верзију протокола и име које сте затражили. Друга снима прве пакете стварне везе, а трећа извлачи поље SNI из тог снимка. Ако је поље попуњено, посматрач који сте опонашали може га прочитати.

Снимајте одвојено на страни клијента и на путу кад се то двоје не слаже, јер локални снимак може показати име које посредник касније препише или одбаци. Снимајте и са хоста који сам не завршава TLS, будући да прокси који завршава види чисти текст по дизајну и ништа не доказује о томе шта мрежа види.

Третирајте ECH проширење као тврдњу, не као доказ

Видети ECH проширење у ClientHello не значи да је веза користила ECH. Клијенти шаљу GREASE ECH кад немају употребљиву конфигурацију, управо да би њихова руковања изгледала једнолико. Проширење је присутно, унутрашњи hello је мамац, а стварно име је још читљиво.

dig +short HTTPS app.plant.example
openssl s_client -connect app.plant.example:443 -tls1_3 -status </dev/null> 2>/dev/null | grep -i -E 'ech|status_request'

Прва наредба показује да ли извор објављује HTTPS запис ресурса са параметром конфигурације ECH, а то је начин на који клијенти уче кључ. Друга тражи информације о стању руковања, иако је клијентова порука о успеху јачи доказ. Прихватање је оно што је важно: сервер који нема одговарајући кључ не може да дешифрује унутрашњи hello, и веза се враћа назад.

Проверите и клијента, јер се подршка прегледача и конфигурација разликују према верзији и платформи. Политика изграђена на „савремени прегледачи користе ECH“ нагађање је о флоти, а не чињеница о вашој флоти. Пописом обухватите верзије које се заиста повезују, затим тестирајте по једну од сваке. Иста страница која ради из актуелног стоног прегледача можда неће ништа сакрити од старијег клијента у истој мрежи.

Упишите обим посматрача у политику

Наведите где посматрач седи и шта је на том месту видљиво пре него што одлучите на шта контрола може да се ослони. Веза прегледача са сајтом, спољни VPN транспорт и прокси који завршава TLS откривају сваки другачији скуп чињеница, а правило написано за једну позицију ретко се чисто преноси на другу.

Ако контрола зависи од читања SNI-ја, тестирајте како се понашају уведени клијенти кад је ECH доступан и кад није. Затим забележите последицу за компатибилност, јер је филтер који тихо престане да се подудара гори од онога који никада није уведен.

Напослетку, задржите несигурност у запису. Замена старе универзалне тврдње новијом оставља исту празнину под другим именом протокола, и следећи рецензент ће у њу веровати једнако чврсто.

Повезани чланци