A TLS 1.3 továbbra is nyílt szövegben küldi a szervernevet
A TLS 1.3 titkosítja a kézfogást, de az SNI-t nem. Olvasson ClientHello-t, ellenőrizze a valódi ECH-elfogadást, és rögzítse, mit láthat még egy megfigyelő.
Egy listener TLS 1.3-ra frissítése megváltoztatja, mit olvashat egy megfigyelő, de nem annyival, amennyit a verziószám sugall. A ClientHello még mindig elindul, mielőtt bármilyen titkosítás létrejönne, és egy hétköznapi kapcsolatban a kért szervernév ott áll nyílt szövegben. Az Encrypted Client Hello az a mechanizmus, amely elrejti, és ez külön üzembe helyezés, saját előfeltételekkel. Hajtsa végre ezt a négy lépést, mielőtt olyan szabályzatot írna, amely bármelyik viselkedést feltételezi.
Mit tár fel valójában a kézfogás
A TLS 1.3 titkosítja a szerver tanúsítványát és a ServerHello-t követő kézfogás nagy részét. Minden, amit a kliens elsőként küld, ezen a védelemen kívül marad, mert a kulcsok még nem léteznek. A szervernév-jelzés része ennek az első körnek, ezért egy passzív megfigyelő még mindig olvashatja anélkül, hogy bármit feltörne.
Az ECH-specifikáció, RFC 9849, ezt azzal változtatja meg, hogy egy belső ClientHello-t titkosít egy együttműködő szerver számára. A külső kézfogás megmarad, és olyan nyilvános nevet hordoz, amelyet a hálózat láthat, így az üzembe helyezésnek továbbra is szüksége van egy külső identitásra, amely értelmes a köztes felek számára. Ez a külső név az a rész, amelyet az emberek kihagynak, amikor azt várják, hogy a kapcsolat névtelenné válik. Ez egy fedőnév, nem rejtett név, és ugyanúgy fel kell oldódnia és hitelesítenie kell magát, mint bármely másnak.
Ezek egyike sem rejti el a kézbesítési útvonalat. A forrás- és célcímek, a portok, a csomagméretek és az időzítés megfigyelhető marad, és ezek gyakran többet mondanak arról, ki beszél, mint a név. A névfeloldás és az alkalmazásszintű kapcsolatok még egy réteg, mindegyik saját láthatósággal.
Olvassunk ClientHello-t feltételezés helyett
A ServerHello-ban lévő verzió nem mondja meg, mit küldött a kliens. Nézze meg közvetlenül az első kört, olyan pozícióból, amely azt a megfigyelőt képviseli, amelyik Önt érdekli.
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
Az első parancs végrehajt egy kézfogást, és megmutatja az egyeztetett paramétereket, beleértve a protokollverziót és a kért nevet. A második egy valódi kapcsolat első csomagjait rögzíti, a harmadik pedig kinyeri az SNI mezőt ebből a rögzítésből. Ha a mező ki van töltve, az Ön által utánozott megfigyelő olvashatja.
Rögzítsen külön a kliens oldalon és az útvonalon, amikor a kettő nem egyezik, mert egy helyi rögzítés olyan nevet mutathat, amelyet egy middlebox később átír vagy eldob. Rögzítsen olyan hosztról is, amely maga nem fejezi be a TLS-t, mivel a befejező proxy tervezésénél fogva nyílt szöveget lát, és semmit sem bizonyít arról, mit lát a hálózat.
Az ECH-kiterjesztést állításként kezeljük, nem bizonyítékként
Ha ECH-kiterjesztést látunk egy ClientHello-ban, az nem jelenti azt, hogy a kapcsolat ECH-t használt. A kliensek GREASE ECH-t küldenek, amikor nincs használható konfigurációjuk, épp hogy a kézfogásaik egységesnek tűnjenek. A kiterjesztés jelen van, a belső hello csali, és a tényleges név továbbra is olvasható.
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'
Az első parancs megmutatja, hogy az eredet közzétesz-e olyan HTTPS-erőforrásrekordot, amelynek ECH-konfigurációs paramétere van, és így tanulják meg a kliensek a kulcsot. A második a kézfogás állapotinformációit keresi, bár egy kliens sikerüzenete az erősebb bizonyíték. Az elfogadás számít: az a szerver, amely nem rendelkezik a megfelelő kulccsal, nem tudja visszafejteni a belső hello-t, és a kapcsolat visszaesik.
Ellenőrizze a klienst is, mert a böngészőtámogatás és a konfiguráció verzió és platform szerint eltér. A „modern böngészők ECH-t használnak” elvre épülő szabályzat egy flottáról szóló találgatás, nem tény az Ön flottájáról. Vegye számba a ténylegesen csatlakozó verziókat, majd teszteljen egyet-egyet mindegyikből. Ugyanaz az oldal, amely egy jelenlegi asztali böngészőből működik, lehet, hogy semmit sem rejt el egy régebbi klienstől ugyanabban a hálózatban.
Írja bele a szabályzatba a megfigyelő hatókörét
Határozza meg, hol ül a megfigyelő, és mi látható azon a ponton, mielőtt eldönti, mire támaszkodhat egy kontroll. Egy böngésző webhelyhez való kapcsolata, egy külső VPN-transzport és egy TLS-t befejező proxy mind más tényhalmazt tár fel, és az egyik pozícióra írt szabály ritkán vihető át tisztán egy másikra.
Ha egy kontroll az SNI olvasásától függ, tesztelje, hogyan viselkednek a telepített kliensek, amikor az ECH elérhető, és amikor nem. Ezután rögzítse a kompatibilitási következményt, mert egy szűrő, amely csendben abbahagyja az egyezést, rosszabb, mint amelyiket soha nem telepítettek.
Végül tartsa meg a bizonytalanságot a nyilvántartásban. Egy régi egyetemes állítás újabbal való helyettesítése ugyanazt a rést hagyja meg egy másik protokollnév alatt, és a következő bíráló ugyanolyan határozottan fog hinni benne.