Listener bat TLS 1.3ra igotzeak aldatzen du behatzaile batek irakur dezakeena, baina ez bertsio-zenbakiak iradokitzen duen adina. ClientHello oraindik bidaiatzen du edozein zifratze negoziatu aurretik, eta konexio arrunt batean eskatutako zerbitzari-izena testu hutsean dago han. Encrypted Client Hello da hura ezkutatzen duen mekanismoa, eta bere baldintza propioak dituen hedapen bereizia da. Egin lau urrats hauek bi portaeretako bat suposatzen duen politika idatzi aurretik.

Zer erakusten duen esku-emateak benetan

TLS 1.3(e)k zerbitzariaren ziurtagiria eta ServerHello-ren ondoren datorren esku-ematearen zatirik handiena zifratzen ditu. Bezeroak lehenengo bidaltzen duen guztia babes horretatik kanpo geratzen da, giltzak oraindik ez baitira existitzen. Zerbitzari-izenaren adierazpena lehen hegaldi horren parte da, eta horregatik behatzaile pasibo batek oraindik irakur dezake ezer apurtu gabe.

ECH zehaztapenak, RFC 9849, hau aldatzen du barneko ClientHello bat zifratuz lankidetzan aritzen den zerbitzari batentzat. Kanpoko esku-ematea mantendu egiten da eta sareak ikus dezakeen izen publiko bat darama, beraz hedapenak oraindik kanpoko identitate bat behar du bitartekariek ulertzeko modukoa. Kanpoko izen hori da jendeak galdu ohi duena konexioa anonimo bihurtzea espero duenean. Estalki-izen bat da, ez izen ezkutu bat, eta edozein bezala ebatzi eta autentifikatu behar da.

Ezerk ez du entrega-bidea ezkutatzen hemendik. Iturburu- eta helburu-helbideak, atakak, pakete-tamainak eta denborak beha daitezke oraindik, eta horiek sarritan gehiago esaten dute nor ari den hitz egiten izenak baino. Izen-ebazpena eta aplikazio-mailako harremanak beste geruza bat dira, bakoitza bere ikusgaitasunarekin.

Irakurri ClientHello bat suposatu beharrean

ServerHello-ko bertsioak ez dizu esaten bezeroak zer bidali zuen. Begiratu lehen hegaldiari zuzenean, axola zaizun behatzailea adierazten duen posizio batetik.

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

Lehen komandoak esku-emate bat egiten du eta negoziatutako parametroak erakusten ditu, protokolo-bertsioa eta eskatu duzun izena barne. Bigarrenak konexio erreal baten lehen paketeak harrapatzen ditu, eta hirugarrenak SNI eremua ateratzen du harrapaketa horretatik. Eremua beteta badago, emulatu duzun behatzaileak irakur dezake.

Harrapatu bereizita bezeroaren aldean eta bidean, biak bat ez datozenean, tokiko harrapaketak middlebox batek geroago berridazten edo baztertzen duen izen bat erakuts baititzake. Harrapatu TLS bera amaitzen ez duen ostalari batetik ere, amaitzen duen proxyak testu hutsa ikusten baitu diseinuz eta ezer ez baitu frogatzen sareak ikusten duenari buruz.

Hartu ECH luzapena aldarrikapen gisa, ez froga gisa

ClientHello batean ECH luzapena ikusteak ez du esan nahi konexioak ECH erabili zuenik. Bezeroek GREASE ECH bidaltzen dute konfigurazio erabilgarririk ez dutenean, hain zuzen haien esku-emateak uniformeak izan daitezen. Luzapena han dago, barneko hello hazia da, eta benetako izena oraindik irakurgarria da.

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'

Lehen komandoak erakusten du jatorriak HTTPS baliabide-erregistro bat argitaratzen duen ECH konfigurazio-parametro batekin, eta horrela ikasten dute bezeroek giltza. Bigarrenak esku-ematearen egoera-informazioa bilatzen du, nahiz eta bezero baten arrakasta-mezua froga sendoagoa den. Onarpena da garrantzitsuena: giltza parekidea ez duen zerbitzari batek ezin du barneko hello deszifratu, eta konexioak atzera egiten du.

Egiaztatu bezeroa ere, nabigatzaileen euskarria eta konfigurazioa bertsioaren eta plataformaren arabera aldatzen baitira. „Nabigatzaile modernoek ECH erabiltzen dute“ oinarritzat duen politika flota bati buruzko susmoa da, ez zure flotari buruzko egitatea. Inbentariatu benetan konektatzen diren bertsioak, eta gero probatu bakoitzeko bat. Uneko mahaigaineko nabigatzailetik funtzionatzen duen orri berak ezer ezkutatu ez dezake sare bereko bezero zaharrago batetik.

Idatzi behatzailearen esparrua politikan

Zehaztu non esertzen den behatzailea eta zer den ikusgai puntu horretan, kontrol batek zertan oinarritu daitekeen erabaki aurretik. Nabigatzaile baten eta webgune baten arteko konexioak, kanpoko VPN garraioak eta TLS amaitzen duen proxyak bakoitzak egitate-multzo desberdin bat uzten dute agerian, eta posizio batentzat idatzitako araua nekez transferitzen da garbi beste batera.

Kontrol bat SNI irakurtzearen mende badago, probatu inplementatutako bezeroek nola jokatzen duten ECH eskuragarri dagoenean eta ez dagoenean. Ondoren erregistratu bateragarritasun-ondorioa, isilka bat etortzeari uzten dion iragazkia inoiz inplementatu ez zen iragazkia baino okerragoa baita.

Azkenik, mantendu ziurgabetasuna erregistroan. Aspaldiko baieztapen unibertsal bat berriago batekin ordezkatzeak hutsune bera uzten du beste protokolo-izen baten azpian, eta hurrengo berrikusleak berdin sinetsiko du.

Erlazionatutako artikuluak