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.

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

Č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.sh

Ta 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.

Povezani članci