Prilepitev profila tls-crypt-v2 v zahtevek je videti neškodljiva, dokler ne preštejete, kaj datoteka vsebuje. Ključ krmilnega kanala odjemalca stoji poleg šifrirane kopije istega ključa, tretji predmet, ključ za ovijanje, pa nikoli ne zapusti strežnika, ki sprejema. Ti trije odgovarjajo na različna vprašanja o hrambi, souporabi in umiku. Njihova ločitev razreši večino razprav o politiki, preden se začnejo.

Kaj profil v resnici vsebuje

Odjemalčeva polovica tls-crypt-v2 je ključ plus njegova ovita kopija. Odjemalec uporablja navadni ključ za zaščito krmilnega kanala in med nastavitvijo izroči ovito kopijo strežniku, tako da strežnik obnovi isti ključ, ne da bi za vsakega odjemalca shranil kopijo v čistem besedilu. Ključ za ovijanje omogoča to obnovitev in pripada le sprejemni strani. Vse spodaj izhaja iz tega, kje živijo ti trije predmeti.

ObjectWhere it livesWhat can open itWhat a leak costs
Server wrapping keyaccepting servers onlythe unwrap step inside the serverevery wrapped copy issued to that group becomes readable
Wrapped client keyinside the client profilethe server wrapping keyit names a client and exposes its metadata, but not the key inside
Client control keyinside the client profile, usable as-isthe client that owns itsomeone can open handshakes as that client until the server refuses the key

Tabelo berite po hrambi, ne po imenu, in posledice se pokažejo same. Izguba ključa za ovijanje je drag dogodek, ker nič v profilu ne more obnoviti ključa, poštena obnovitev pa je ponovna izdaja skupine. Uhajanje profila je cenejše, a veliko pogostejše, ker ljudje lepijo profile v zahtevke v prepričanju, da ovita kopija naredi datoteko varno za souporabo. Obe napaki zahtevata različna odziva, zato se predmeti hranijo ločeno.

Zakaj ovita kopija ni cela zgodba

Profil nosi uporabno odjemalčevo gradivo skupaj z ovitim dvojnikom, zato zaščita kopije za strežnik ne pove ničesar o zaščiti datoteke. Blob je varen za prenos in nevaren za objavo. Metapodatki v njem so vidni vsakomur, ki prejme blob, tudi vsakomur, ki pozneje prebere zahtevek, v katerega je bil vstavljen.

Profil obravnavajte kot poverilnico, ne kot vzorec konfiguracije. Uhajanje datoteke da imetniku delujočo odjemalčevo identiteto, dokler strežnik te identitete ne preneha sprejemati, ovijanje pa glede tega okna ne naredi ničesar. Izdajte en profil na odjemalca, da umik ostane odločitev o eni datoteki, in varnostno kopirajte ključ za ovijanje ločeno od konfiguracije strežnika, ki jo omogoča. Nobena od teh navad ne popravi ogroženega profila, obe pa določata, kako hitro bo naslednji omejen.

Kje v rokovanju sedi preveritveni kavelj

Preveritveni kavelj se izvede, preden je sklad TLS izpostavljen, njegova naloga pa je pregledati metapodatke, ki jih nosi oviti blob. Prejme te metapodatke plus majhno, dokumentirano okolje, in ima manj gradiva za delo kot avtentikacijski kavelj. Domneva, da vidi uporabniška imena, stanje seje ali spremenljivke vtičnikov, je običajen način, kako je ta kavelj slabo napisan. Berite lastni razdelek priročnika kavlja, namesto da si izposojate pričakovanja od drugega kavlja.

Njegovo izhodno stanje je odločitev: neničeln rezultat zavrne odjemalca, ničelni rezultat pa pusti rokovanje naprej. Politika mora zato povedati, kaj se zgodi, ko metapodatki manjkajo, jih ni mogoče razčleniti ali so nepričakovani. Najprej napišite pot zavrnitve, nato določite, katere vrednosti so sprejemljive.

tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.sh

Ti dve vrstici sta površina politike na strežniku: ena imenuje ključ za ovijanje, druga imenuje program, ki presoja vsakega odjemalca. Vse zanimivo živi v skriptu, ki si zasluži nadzor različic in enak pregled kot vsako drugo pravilo dostopa.

Račun, potrdilo in krmilni ključ se umaknejo ločeno

Zgodnja sprejem krmilnega kanala ni avtentikacija, ker se zgodi pred preverjanjem identitete TLS in pred kakršno koli avtorizacijo računa. Onemogočanje računa, preklic potrdila in zavrnitev odjemalčevega krmilnega ključa so tri dejanja s tremi mehanizmi. Namestitev, ki izvede le enega od njih, ima vrzel, ne politike. Tri zavestno uskladite in zapišite, kateri korak izvaja katero pooblastilo.

Čas je druga razlika. Spremenjen seznam sprejemanja velja za nova rokovanja, medtem ko že vzpostavljene seje tečejo naprej, dokler jih nekaj ne konča. Štetje vnosov na novem seznamu kot dokaz, da so stare seje končane, je način, kako odstranjen odjemalec ostane povezan ure in ure.

Neusklajena pooblastila puščajo dve luknji, ki ju je v praksi lahko najti. Račun je lahko onemogočen, medtem ko njegov krmilni ključ še vedno odpira rokovanje, potrdilo pa je lahko preklicano, medtem ko politika metapodatkov še vedno sprejema istega odjemalca. Oboje je ista napaka na različnih mestih, ker je upravljavec en seznam obravnaval kot celotno pooblastilo. Pri odstranitvi položite tri sezname drug ob drugega in napaka postane vidna.

Izdaja in umik profila

Izdaja je lažja polovica: ustvarite odjemalčev ključ na sprejemni strani, izročite profil natanko enemu lastniku, držite gradivo za ovijanje omejeno in zaženite isti preveritveni program na vsakem strežniku, ki sprejema. Poceni sprejem je lastnost celotne skupine, ne najnovejšega gostitelja. Drugi strežnik s starejšo ali ohlapnejšo skripto tiho postane najšibkejša pot v namestitvi.

Umik zahteva tri korake v zavestnem vrstnem redu. Zavrnite odjemalca v preveritvenem kavlju, da nova rokovanja propadejo, prekličite njegovo potrdilo, če se uporablja PKI, in onemogočite račun, da poznejša avtorizacija ne bo imela česa avtorizirati. Nato končajte seje, ki jih je dovoljeval stari sprejem, saj ne bodo opazile nobene od treh. Vadite zaporedje na odjemalcu, ki si ga lahko privoščite zlomiti.

Metapodatki v profilu so vhod za to politiko, ne dokaz, da kontrola dostopa že obstaja. Načrtovalski dokument OpenVPN 2.6 opisuje predmete in mejo, ki jo potegnejo, medtem ko izvrševanje ostaja pri upravljavcu.

Sorodni članki