Uvidět slovo TLS v popisu VPN a usoudit, že webová proxy tomuto provozu porozumí, je běžná zkratka. Uvnitř tohoto protokolu si protějšky vyměňují vlastní pakety a TLS běží jako součást jednoho kanálu v rámci této výměny. Užitečný obsah, na kterém uživateli záleží, putuje v jiném formátu zpráv, a proto se obojí nikdy neshoduje s běžnou relací HTTPS.

Obal přichází první

Každý paket tunelu začíná vlastní hlavičkou protokolu: typem zprávy, identifikátorem klíče a u transportu bajtového proudu délkovým prefixem, který označuje, kde paket končí. Čtenář, který tento obal neparsuje, nemůže vědět, kde začíná další pole.

outer transport (UDP datagram or TCP stream)
  -> OpenVPN header (opcode, key id, length where needed)
    -> control message (reliability wrapper, TLS exchange)
    -> data message (protected inner packet)

Tento náčrt je mapa, nikoli bajtová tabulka, protože přesná pole závisí na typu zprávy, i když první oktet vždy společně balí opkód a identifikátor klíče. Hádání typu zprávy z čísla portu je způsob, jakým dekodéry nakonec špatně pojmenují to, co vidí. Pro diagnostiku je důležité pořadí: transport, pak obal protokolu, pak jeden ze dvou druhů práce. Přečtěte si obal, než si uděláte jakýkoli názor na to, co následuje. Dekodér, který začne na špatném místě, vytváří sebevědomý nesmysl.

Vrstva spolehlivosti patří protokolu

Řídicí zprávy potřebují uspořádané doručení s potvrzením a protokol to sám zajišťuje potvrzeními a opětovnými přenosy. Potvrzení může přijít jako samostatná zpráva nebo cestovat s jinou řídicí zprávou, což dělá stopy nepravidelnými pro každého, kdo očekává jednu čistou výměnu.

Výhodou je, že TLS handshake dostane spolehlivého nositele, i když je vnější transport UDP. Cenou je, že jeden datagram může obsahovat jen část tohoto rozhovoru, takže jeho zpracování jako samostatného TLS záznamu vytváří nesmysl. Opětovné sestavení musí proběhnout na vrstvě protokolu. Proto zachycený paket málokdy vypadá jako kompletní krok handshake.

Přepnutí vnějšího transportu na TCP tuto vrstvu neodstraní. Spolehlivý transport znamená méně opětovných přenosů na úrovni protokolu, ne že zmizí rámování nebo že se provoz stane HTTP.

Datové pakety používají jiný formát

Jakmile relace existuje, užitečný obsah přichází jako datové zprávy nesoucí vnitřní IP pakety nebo Ethernetové rámce. Jsou chráněny vlastními klíči a vlastním zpracováním a nejsou TLS aplikačními záznamy v žádném smyslu, který by TLS knihovna přijala.

Toto oddělení je vidět v konfiguraci: řídicí kanál a datový kanál mají oddělená nastavení šifry, takže řádek logu pojmenovávající jeden neříká nic o druhém. Číst silnou řídicí šifru jako důkaz silné datové šifry je běžná chyba ve zprávách.

Držte z vysvětlení i související mylnou představu. TLS není kanál s veřejným klíčem sedící vedle symetrického datového kanálu, protože TLS sám chrání své záznamy symetricky, jakmile jsou klíče ustanoveny. Skutečný rozdíl je role a formát paketu, ne to, jaký druh kryptografie každá strana používá.

Proč HTTPS proxy nemůže pomoci

Proxy, které ukončuje TLS, očekává proud TLS záznamů a v něm aplikační protokol. Řídicí kanál tohoto protokolu je nesen uvnitř vlastního rámování se vrstvou spolehlivosti kolem něj, takže ukončující proxy čte toto rámování jako poškozený vstup.

Transparentní forwarder, který předává bajty nebo datagramy bez jejich interpretace, může fungovat, pokud nepřepisuje ani znovu nesestavuje proud. Otázka, kterou je třeba položit u každého prostředníka, je, zda předává skutečný transport a rámování, ne zda někde podporuje TLS. Zeptejte se na to, než strávíte večer nad pravidly proxy. Většina selhání je zde architektonická, ne chybějící nastavení.

Jak správně číst stopu

Očekávejte nejprve řídicí výměnu, potom mnohem větší počet datových zpráv, obojí na jednom transportu. Pokud se řídicí fáze dokončí a datová fáze se zasekne, závada se týká klíčů, směrování nebo filtrování datové cesty, ne handshake. Zachyťte několik datových zpráv a zkontrolujte, zda vůbec opouštějí klienta. Toto jediné pozorování půlí hledání.

Historické popisy metod klíčů v dokumentaci protokolu neznamenají, že dané vydání stále podporuje každý starý formát. Zkontrolujte verzi, kterou spouštíte, než postavíte očekávání na odstavci, který popisuje, jak věci fungovaly dříve.

Související články