OpenVPN tls-crypt-v2: šta rade klijentski ključ i umotani blob
tls-crypt-v2 profil drži klijentski kontrolni ključ i umotanu kopiju koju samo server može otvoriti. Držite svaki objekat i svaki korak povlačenja odvojeno.
Zalijepiti tls-crypt-v2 profil u tiket izgleda bezopasno dok ne prebrojite šta datoteka sadrži. Klijentski ključ kontrolnog kanala stoji pored šifrovane kopije istog ključa, a treći objekat, ključ za umotavanje, nikada ne napušta serversku stranu koja prihvata. Ta tri odgovaraju na različita pitanja o čuvanju, dijeljenju i povlačenju. Njihovo razdvajanje rješava većinu rasprava o politici prije nego što počnu.
Šta profil zapravo sadrži
Klijentska polovina tls-crypt-v2 je ključ plus njegova umotana kopija. Klijent koristi obični ključ za zaštitu kontrolnog kanala i predaje umotanu kopiju serveru tokom postavljanja, pa server vraća isti ključ bez čuvanja čitljive kopije za svakog klijenta. Ključ za umotavanje omogućava to vraćanje i pripada samo strani koja prihvata. Sve ispod slijedi iz toga gdje ta tri objekta žive.
| 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 |
Čitajte tabelu po čuvanju, a ne po imenu, i posljedice se same pokažu. Gubitak ključa za umotavanje skup je događaj, jer ništa u profilu ne može da ga rekonstruiše, a pošteni oporavak je ponovno izdavanje grupe. Procurjeli profil jeftiniji je ali mnogo češći, jer profile u tikete lijepe ljudi koji vjeruju da umotana kopija čini datoteku sigurnom za dijeljenje. Dvije greške traže različite odgovore, i zato se objekti drže odvojeno.
Zašto umotana kopija nije cijela priča
Profil nosi upotrebljivi klijentski materijal zajedno sa njegovim umotanim parnjakom, pa zaštita kopije za server ne govori ništa o zaštiti datoteke. Blob je siguran za prenos i nesiguran za objavljivanje. Metapodaci u njemu vidljivi su svakome ko primi blob, uključujući svakoga ko kasnije pročita tiket u koji je zalijepljen.
Tretirajte profil kao akreditiv, a ne kao primjer konfiguracije. Procurjela datoteka daje vlasniku radni klijentski identitet dok server ne prestane prihvatati taj identitet, a umotavanje ne čini ništa u vezi s tim prozorom. Izdajte jedan profil po klijentu da povlačenje ostane odluka o jednoj datoteci, i napravite sigurnosnu kopiju ključa za umotavanje odvojeno od serverske konfiguracije koju omogućava. Nijedna navika ne popravlja kompromitovan profil, ali obje određuju kako brzo će sljedeći biti obuzdan.
Gdje verifikacijska kuka stoji u rukovanju
Verifikacijska kuka radi prije nego što se TLS stek izloži, a njen je posao da pregleda metapodatke nošene u umotanom blobu. Prima te metapodatke plus malo, dokumentovano okruženje, i ima manje sredstava od autentifikacijske kuke. Pretpostavka da vidi korisnička imena, stanje sesije ili varijable dodatka uobičajen je način da se ova kuka loše napiše. Čitajte vlastiti odjeljak priručnika za kuku, umjesto da posuđujete očekivanja od druge kuke.
Njen izlazni status je odluka: rezultat različit od nule odbija klijenta, a nula dopušta da se rukovanje nastavi. Politika zato mora reći šta se dešava kada metapodaci nedostaju, nisu čitljivi ili su neočekivani. Prvo napišite put odbijanja, pa odlučite koje su vrijednosti prihvatljive.
tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.shTa dva reda su površina politike na serveru: jedan imenuje ključ za umotavanje, drugi imenuje program koji sudi svakom klijentu. Sve zanimljivo živi u skripti, koja zaslužuje kontrolu verzija i isti pregled kao i svako drugo pravilo pristupa.
Račun, certifikat i kontrolni ključ povlače se odvojeno
Rano prihvatanje kontrolnog kanala nije autentifikacija, jer se dešava prije provjere TLS identiteta i prije bilo kakve autorizacije računa. Deaktiviranje računa, povlačenje certifikata i odbijanje klijentskog kontrolnog ključa tri su radnje s tri mehanizma. Postavljanje koje izvede samo jednu od njih ima prazninu, a ne politiku. Uskladite te tri namjerno i zabilježite koji korak izvršava koje ovlaštenje.
Vrijeme je druga razlika. Izmijenjena lista prihvatanja primjenjuje se na nova rukovanja, dok već uspostavljene sesije nastavljaju dok ih nešto ne prekine. Brojanje stavki na novoj listi kao dokaz da su stare sesije završile jeste način da uklonjeni klijent ostane povezan satima.
Neusklađena ovlaštenja ostavljaju dvije rupe koje je lako naći u praksi. Račun može biti deaktiviran dok njegov kontrolni ključ još otvara rukovanje, a certifikat može biti povučen dok politika metapodataka još prima istog klijenta. Oboje je ista greška na različitim mjestima, jer je operater jednu listu tretirao kao cijelo ovlaštenje. Stavite tri liste jednu uz drugu u trenutku uklanjanja i greška postaje vidljiva.
Izdavanje i povlačenje profila
Izdavanje je lakša polovina: kreirajte klijentski ključ na strani koja prihvata, predajte profil tačno jednom vlasniku, držite materijal za umotavanje ograničenim i pokrećite isti verifikacijski program na svakom serveru koji prihvata. Jeftin pristup svojstvo je cijele grupe, a ne najnovijeg hosta. Drugi server sa starijom ili labavijom skriptom tiho postaje najslabiji put u postavljanju.
Povlačenje traži tri koraka u promišljenom redu. Odbijte klijenta u verifikacijskoj kuki da nova rukovanja ne uspiju, povucite njegov certifikat ako se koristi PKI, i deaktivirajte račun da kasnija autorizacija ne ima šta autorizovati. Zatim prekinite sesije koje je staro prihvatanje dopuštalo, jer one neće primijetiti ništa od toga. Vježbajte redoslijed na klijentu koji možete priuštiti slomiti.
Metapodaci u profilu ulaz su za tu politiku, a ne dokaz da kontrola pristupa već postoji. Projektni dokument OpenVPN 2.6 opisuje objekte i granicu koju crtaju, dok provedba ostaje na operateru.