Šifriranje tunela WSS se ustavi pri terminatorju TLS, ne v aplikaciji
Naslov wss:// dokazuje TLS na enem skoku. Ali ima koristni tovor lastno šifriranje, je odvisno od tega, kaj odjemalec vstavi noter in kdo konča ta TLS.
Tunel, prenesen znotraj varnega WebSocketa, ima natanko toliko šifriranja, kolikor ga je odjemalec vstavil, ne več. Shema wss:// pravi, da TLS ščiti eno povezavo na enem skoku. Ne pravi ničesar o tem, ali so bajti znotraj sporočil WebSocket zaščiteni ločeno, in prav ta razlika odloči, kdo lahko bere vaš promet, ko nekaj v sredini konča TLS.
Dve plasti, ki izgledata kot ena
Varen WebSocket je TLS s potekom roke WebSocket, izvedenim na njem, kot opisuje RFC 6455 v razdelkih o povezavi in varnosti. Plast TLS overi strežnik in šifrira tok, nato plast WebSocket uokviri, kar se aplikacija odloči poslati.
To sta dve neodvisni odločitvi, in diagram, ki riše eno ključavnico čez celotno pot, skriva drugo. Vprašajte, kdo konča povezavo TLS. Nato vprašajte, kaj odjemalec vstavi v vsako sporočilo. Vse ostalo o uvedbi izhaja iz teh dveh odgovorov.
Zasnova A: transport je edino šifriranje
V preprostejši zasnovi odjemalec vzame surove pakete IP in jih zavije v sporočila WebSocket. Znotraj nič ni šifrirano, zato komponenta, ki drži sejo TLS, bere tovor v čistem besedilu. Ko je ta komponenta vaš lastni strežnik tunela, je to predvidena končna točka in zasnova je skladna, ker bi strežnik promet tako ali tako videl.
Postane drugačna ureditev, ko na poti sedi pregledovalni proxy in konča TLS s potrdilom, ki mu odjemalec zaupa. Ta proxy ima zdaj isto čisto besedilo, ki bi ga imel strežnik, in nobena količina uokvirjanja WebSocket tega ne spremeni. Shramba zaupanja odjemalca je odločila o tem izidu veliko preden se je tunel odprl, ker se je odločila sprejeti to potrdilo za to ime. Proxy vidi tudi zahtevanega gostitelja in velikost vsakega sporočila, kar zadostuje za prstni odtis veliko dejavnosti brez nadaljnjega dešifriranja.
Zasnova B: tovor nosi svoje ključe
V drugi zasnovi odjemalec šifrira in overi svoje pakete s protokolom VPN, ki ima lastno identiteto partnerja in izmenjavo ključev, nato prenese rezultat znotraj sporočil WebSocket. Končanje zunanjega TLS tukaj razkrije šifrirano besedilo, ne prometa. Proxy lahko vidi velikosti in čase sporočil, in nič drugega v tovoru. To je veliko manjša izpostavljenost, in vseeno so to metapodatki, ki jih velja imenovati v pregledu, namesto da jih odmahnemo.
Lastne končne točke notranjega protokola še vedno vidijo čisto besedilo, kar je smisel ureditve in tudi njena meja. Če je komponenta na končni točki pooblaščena brati podatke pred šifriranjem ali po dešifriranju, dodatna plast tega ne omejuje. Ključi in programska oprema, ki jih upravlja, ostajajo meja, ki šteje.
Oznaka VPN, znana ikona odjemalca ali marketinška stran ni dokaz, da ta zasnova obstaja. Branje oblike tovora je.
Sledite, kje se čisto besedilo dejansko pojavi
Shema URL vam da eno dejstvo, zato preostanek dobite iz vmesnikov. Zaženite spodnje preglede po vrsti, ker vsak zoži naslednjega:
ss -tnp | grep -E ':(443|8443)\b' ip -br link show type tun openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief tcpdump -ni tun0 -c 5 -X
Začnite z zunanjo povezavo. Ena dolgotrajna seja TCP na vrata TLS je videz nosilca WebSocket, in druga seja na nepovezanega gostitelja si zasluži razlago, preden pogledate globlje. Nato poiščite vmesnik tunela na odjemalcu, ker naprava tun ali tap pove, da odjemalec obravnava pakete IP, namesto da bi posredoval en tok aplikacije.
Zajem na vmesniku tunela običajno razreši vprašanje tovora. Berljive glave tam pomenijo, da notranji paketi nikoli niso bili ločeno šifrirani, medtem ko tovor z visoko entropijo pomeni, da je bil. Ponovite zajem na zunanjem vmesniku in primerjajte oba: če oba izgledata naključno, notranja plast opravlja delo, ki ga zunanja ne more razveljaviti.
Preglejte zaupanje, ki ste ga dejansko podelili
Nameščeno podjetniško korensko potrdilo je dejstvo o shrambi zaupanja odjemalca, ne izjava o tem, kaj kateri koli proxy beleži ali pregleduje. Ugotovite uvedeno politiko in dejansko pot povezave, namesto da sklepate o vedenju iz prisotnosti CA.
Na upravljanih napravah vprašajte skrbnika, katera komponenta konča TLS, ali odjemalec preverja pripeto potrdilo ali javno, in kakšna je oblika tovora. Ti trije odgovori dajo ugotovitev, ki jo boste lahko pozneje zagovarjali.
Rezultat zapišite kot mejo, ne kot sodbo. "TLS se konča pri pregledovalnem proxyju, notranji tovor pa je ločeno šifriran s ključi, ki jih imajo samo končne točke" je preverljiva trditev, ki preživi menjavo ponudnika. "WebSockets so varni" ne.