TLS keliauja valdymo kanalo viduje, o ne visu tuneliu
Mazgai keičiasi savo paketais, o TLS veikia valdymo mainų viduje. Tarpinė serveris, suprantantis HTTPS, neįsivaizduoja, kas tai per srautas.
Pamatyti žodį TLS VPN apraše ir padaryti išvadą, kad žiniatinklio tarpinė serveris supras šį srautą, yra įprastas trumpinys. Šio protokolo viduje mazgai keičiasi savo paketais, o TLS veikia kaip vieno kanalo dalis tame maine. Vartotojui svarbus naudingasis krūvis keliauja kitu pranešimų formatu, todėl abu niekada nesutampa su įprasta HTTPS sesija.
Pirmiausia ateina vokas
Kiekvienas tunelio paketas prasideda savo protokolo antrašte: pranešimo tipu, rakto identifikatoriumi ir, baitų srauto transporte, ilgio priešdėliu, kuris žymi, kur paketas baigiasi. Skaitytojas, kuris neanalizuoja to voko, negali žinoti, kur prasideda kitas laukas.
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)
Šis eskizas yra žemėlapis, o ne baitų lentelė, nes tikslūs laukai priklauso nuo pranešimo tipo, nors pirmasis oktetas visada kartu supakuoja operacijos kodą ir rakto identifikatorių. Pranešimo tipo spėjimas iš prievado numerio yra būdas, kuriuo dekoderiai galiausiai neteisingai įvardija tai, ką mato. Diagnostikai svarbi tvarka: transportas, tada protokolo vokas, tada vienas iš dviejų darbo tipų. Perskaitykite voką prieš sudarydami nuomonę apie tai, kas seka. Dekoderis, pradedantis ne ten, kur reikia, sukuria pasitikinčią nesąmonę.
Patikimumo sluoksnis priklauso protokolui
Valdymo pranešimams reikia tvarkingo, patvirtinto pristatymo, o protokolas tai užtikrina pats patvirtinimais ir pakartotiniais perdavimais. Patvirtinimas gali atkeliauti kaip savas pranešimas arba keliauti su kitu valdymo pranešimu, todėl pėdsakai atrodo netaisyklingi tiems, kurie tikisi vieno švaraus maino.
Privalumas tas, kad TLS rankos paspaudimas gauna patikimą nešiklį net kai išorinis transportas yra UDP. Kaina ta, kad vienas datagramas gali turėti tik dalį to pokalbio, todėl traktuojant jį kaip savarankišką TLS įrašą gaunama nesąmonė. Perrinkimas turi įvykti protokolo sluoksnyje. Štai kodėl užfiksuotas paketas retai atrodo kaip visas rankos paspaudimo žingsnis.
Išorinio transporto pakeitimas į TCP šio sluoksnio nepašalina. Patikimas transportas reiškia mažiau pakartotinių perdavimų protokolo lygmenyje, o ne tai, kad rėminimas išnyksta ar srautas tampa HTTP.
Duomenų paketai naudoja kitą formatą
Kai sesija egzistuoja, naudingasis krūvis ateina kaip duomenų pranešimai, kurie neša vidinius IP paketus arba Ethernet rėmus. Jie apsaugoti savo raktais ir savo apdorojimu, ir jie nėra TLS programos įrašai jokia prasme, kurią priimtų TLS biblioteka.
Šis atskyrimas matomas konfigūracijoje: valdymo kanalas ir duomenų kanalas turi atskirus šifravimo nustatymus, todėl žurnalo eilutė, įvardijanti vieną, nieko nesako apie kitą. Stipraus valdymo šifro skaitymas kaip stipraus duomenų šifro įrodymo yra dažna ataskaitų klaida.
Laikykite ir susijusį klaidingą supratimą už paaiškinimo ribų. TLS nėra viešojo rakto kanalas šalia simetrinio duomenų kanalo, nes pats TLS simetriškai apsaugo savo įrašus, kai raktai nustatyti. Tikrasis skirtumas yra vaidmuo ir paketo formatas, o ne tai, kokią kriptografiją naudoja kiekviena pusė.
Kodėl HTTPS tarpinė serveris negali padėti
Tarpinė serveris, užbaigianti TLS, tikisi TLS įrašų srauto ir tada programos protokolo jame. Šio protokolo valdymo kanalas nešamas savo rėminimo viduje su patikimumo sluoksniu aplink jį, todėl užbaigianti tarpinė serveris tą rėminimą skaito kaip sugadintą įvestį.
Skaidrus persiuntėjas, kuris praleidžia baitus ar datagramas jų neinterpretuodamas, gali veikti, jei neperrašo ir neperrenka srauto. Klausimas, kurį reikia užduoti apie bet kurį tarpininką, yra ar jis persiunčia tikrąjį transportą ir rėminimą, o ne ar jis kažkur palaiko TLS. Paklauskite to prieš praleisdami vakarą prie tarpinės serverio taisyklių. Dauguma nesėkmių čia yra architektūrinės, o ne trūkstamas nustatymas.
Teisingas pėdsako skaitymas
Tikėkitės pirmiausia valdymo maino, tada daug didesnio duomenų pranešimų skaičiaus, abu dalijasi vienu transportu. Jei valdymo fazė baigiasi, o duomenų fazė sustoja, gedimas susijęs su raktais, maršrutizavimu ar duomenų kelio filtravimu, o ne su rankos paspaudimu. Užfiksuokite kelis duomenų pranešimus ir patikrinkite, ar jie apskritai palieka klientą. Tas vienas pastebėjimas padalija paiešką per pusę.
Istoriniai raktų metodų aprašymai protokolo dokumentacijoje nereiškia, kad tam tikra versija vis dar palaiko kiekvieną seną formatą. Patikrinkite vykdomą versiją prieš kurdami lūkestį, paremtą pastraipa, kuri aprašo, kaip daiktai veikė anksčiau.