OpenVPN tls-crypt-v2: kaj delata odjemalčev ključ in oviti blob
Profil tls-crypt-v2 vsebuje odjemalčev krmilni ključ in ovito kopijo, ki jo lahko odpre samo strežnik. Vsak predmet in vsak korak umika hranite ločeno.
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.
| Object | Where it lives | What can open it | What a leak costs |
|---|---|---|---|
| Server wrapping key | accepting servers only | the unwrap step inside the server | every wrapped copy issued to that group becomes readable |
| Wrapped client key | inside the client profile | the server wrapping key | it names a client and exposes its metadata, but not the key inside |
| Client control key | inside the client profile, usable as-is | the client that owns it | someone 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.shTi 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.