TLS kulkee ohjauskanavan sisällä, ei koko tunnelin läpi
Vertaiset vaihtavat omia pakettejaan ja TLS toimii ohjausvaihdon sisällä. HTTPS:n ymmärtävä välityspalvelin ei tiedä, mitä tämä liikenne on.
TLS-sanan näkeminen VPN:n kuvauksessa ja sen päätteeleminen, että verkkoproxy ymmärtää liikennettä, on tavallinen oikotie. Tämän protokollan sisällä vertaiset vaihtavat omia pakettejaan, ja TLS toimii yhtenä kanavana tuon vaihdon sisällä. Käyttäjälle tärkeä hyötykuorma kulkee eri viestimuodossa, minkä vuoksi ne kaksi eivät koskaan vastaa tavallista HTTPS-istuntoa.
Kirjekuori tulee ensin
Jokainen tunnelipaketti alkaa protokollan omalla otsakkeella: viestityyppi, avaimen tunniste ja tavuvirtakuljetuksessa pituusetuliite, joka merkitsee, mihin paketti päättyy. Lukija, joka ei jäsennä tuota kirjekuorta, ei voi tietää, mistä seuraava kenttä alkaa.
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)
Tuo luonnos on kartta eikä tavutaulukko, koska tarkat kentät riippuvat viestityypistä, vaikka ensimmäinen oktetti pakkaa aina operaatiokoodin ja avaimen tunnisteen yhteen. Viestityypin arvaaminen porttinumerosta on se tapa, jolla dekooderit lopulta nimeävät näkemänsä väärin. Diagnostiikassa ratkaisee järjestys: kuljetus, sitten protokollan kirjekuori, sitten toinen kahdesta työlajista. Lue kirjekuori ennen kuin muodostat mielipiteen siitä, mitä seuraa. Väärästä kohdasta aloittava dekooderi tuottaa itsevarmaa hölynpölyä.
Luotettavuuskerros kuuluu protokollalle
Ohjausviestit tarvitsevat järjestetyn, kuitatun toimituksen, ja protokolla tarjoaa sen itse kuittauksilla ja uudelleenlähetyksillä. Kuittaus voi saapua omana viestinään tai matkustaa toisen ohjausviestin mukana, mikä saa jäljet näyttämään epäsäännöllisiltä kenelle tahansa, joka odottaa yhtä puhdasta vaihtoa.
Etuna on, että TLS-kättely saa luotettavan kantajan, vaikka ulompi kuljetus olisi UDP. Hintana on, että yksi datagrammi voi sisältää vain osan tuosta keskustelusta, joten sen käsitteleminen erillisenä TLS-tietueena tuottaa hölynpölyä. Uudelleenkokoamisen on tapahduttava protokollakerroksessa. Siksi kaapattu paketti näyttää harvoin täydelliseltä kättelyvaiheelta.
Ulomman kuljetuksen vaihtaminen TCP:hen ei poista tätä kerrosta. Luotettava kuljetus tarkoittaa vähemmän uudelleenlähetyksiä protokollatasolla, ei sitä, että kehystys katoaa tai liikenteestä tulee HTTP:tä.
Datapaketit käyttävät eri muotoa
Kun istunto on olemassa, hyötykuorma saapuu dataviesteinä, jotka kuljettavat sisäisiä IP-paketteja tai Ethernet-kehyksiä. Ne suojataan omilla avaimillaan ja omalla käsittelyllään, eivätkä ne ole TLS-sovellustietueita missään merkityksessä, jonka TLS-kirjasto hyväksyisi.
Tuo erottelu näkyy asetuksissa: ohjauskanavalla ja datakanavalla on erilliset salausasetukset, joten toisen nimeävä lokirivi ei kerro toisesta mitään. Vahvan ohjaussalauksen lukeminen todisteeksi vahvasta datasalauksesta on tavallinen raportointivirhe.
Pidä myös siihen liittyvä väärinkäsitys poissa selityksestä. TLS ei ole julkisen avaimen kanava symmetrisen datakanavan rinnalla, koska TLS itse suojaa tietueensa symmetrisesti heti, kun avaimet on luotu. Todellinen ero on rooli ja pakettimuoto, ei se, millaista salakirjoitusta kumpikin puoli käyttää.
Miksi HTTPS-välityspalvelin ei voi auttaa
TLS:n päättävä välityspalvelin odottaa TLS-tietuevirtaa ja sen sisällä sovellusprotokollaa. Tämän protokollan ohjauskanava kuljetetaan oman kehystyksensä sisällä luotettavuuskerros ympärillään, joten päättävä välityspalvelin lukee tuon kehystyksen vioittuneena syötteenä.
Läpinäkyvä edelleenlähettäjä, joka välittää tavuja tai datagrammeja niitä tulkitsematta, voi toimia, kunhan se ei kirjoita virtaa uudelleen tai kokoa sitä uudelleen. Kysymys, joka mistä tahansa välittäjästä pitää esittää, on välittääkö se todellisen kuljetuksen ja kehystyksen, ei se, tukeeko se TLS:ää jossain. Kysy se ennen kuin vietät illan välityspalvelinsäännöillä. Useimmat täällä epäonnistumiset ovat arkkitehtuurisia eikä puuttuva asetus.
Jäljen lukeminen oikein
Odota ensin ohjausvaihto ja sitten paljon suurempi määrä dataviestejä, molemmat samassa kuljetuksessa. Jos ohjausvaihe päättyy ja datavaihe pysähtyy, vika koskee avaimia, reititystä tai datapolun suodatusta eikä kättelyä. Kaappaa muutama dataviesti ja tarkista, lähtevätkö ne asiakkaalta lainkaan. Se yksittäinen havainto puolittaa haun.
Historialliset avainmenetelmien kuvaukset protokollan dokumentaatiossa eivät tarkoita, että tietty julkaisu tukee yhä jokaista vanhaa muotoa. Tarkista käyttämäsi versio ennen kuin rakennat odotuksen kappaleen varaan, joka kuvaa, miten asiat ennen toimivat.