OpenVPN bez CA: kako peer-fingerprint provjerava partnere
Otisak prsta prikiva jedan certifikat, a ne zajedničku tajnu. Pratite šta sažetak pokriva, kako svaka strana gradi svoju listu dopuštenja i koliko košta obnova.
Malo postavljanje poseže za otiscima prstiju jer ustanova certifikata izgleda kao infrastruktura za koju niko nema vremena. Instinkt je razuman, a prečica koju ljudi umjesto toga biraju—kopiranje jedne tajne podatkovnog kanala na oba kraja—nije. Postavka peer-fingerprint čuva TLS strukturu netaknutom: svaka strana i dalje drži svoj privatni ključ i certifikat, i svaka strana i dalje provjerava drugu. Mijenja se to gdje je provjera usidrena: od pouzdanog izdavaoca do kratke liste prikovanih sažetaka. Pošto sažetak pokriva cijeli certifikat, a ne ime, obnova postaje operacija koja stvarno oduzima vrijeme.
Na šta se otisak zapravo obavezuje
Otisak certifikata je sažetak cijelog DER-kodiranog certifikata, ne njegovog javnog ključa i ne imena njegovog subjekta. Zato dva certifikata s identičnim imenima i istim ključem ali različitim datumima važenja imaju različite otiske. To prikivanje čini preciznim, a to i obnovu čini ometajućom. Prikivanje ne može značiti povjerenje u ključ općenito, jer imenuje jedan artefakt u jednom trenutku njegovog života. Sažetak može znati svako, a samo znanje o njemu ništa ne dokazuje.
openssl x509 -in server.crt -noout -fingerprint -sha256
openssl x509 -in client-07.crt -noout -fingerprint -sha256
Posjedovanje odgovarajućeg privatnog ključa dokazuje da partner drži taj certifikat, a sažetak je način na koji druga strana odlučuje da li je taj certifikat uopšte očekivala. To razdvajanje je razlog zašto ovaj dizajn nije stari poredak sa zajedničkom tajnom: zajednički ključ autentificira svakoga ko zna iste bajtove, dok prikivanje autentificira jedan certifikat. Drugi uređaj dobija vlastiti unos umjesto kopije iste tajne, što je mala razlika u datotekama i velika u obimu štete.
Mapa je uzajamna, ne simetrična
Svakom kraju trebaju dvije stvari: vlastiti privatni ključ uz certifikat i izjava o tome koje certifikate partnera će prihvatiti. Na klijentu ta izjava je sažetak certifikata servera; na serveru je to lista sažetaka upisanih klijenata. Zvanični primjer za malo postavljanje za Community 2.6 pokazuje raspored s peer-fingerprint, i vrijedi ga pročitati prije nego što odaberete ovaj model povjerenja za stvarno postavljanje. Dva smjera nisu jedna obrnuta lista, i oni ne otkazuju u istom trenutku.
| Verification direction | What is pinned | What never leaves that endpoint | How a wrong pin shows up |
|---|---|---|---|
| Client checks the server | One digest, for the server certificate | The server private key | The client aborts during the TLS handshake |
| Server checks the client | A digest per enrolled client | Each client private key | The server rejects the peer before a tunnel exists |
Dodavanje uređaja uređuje listu dopuštenja na serveru, bez kopiranja privatnog materijala postojećeg klijenta i bez premještanja ključa servera bilo gdje. Dva smjera također otkazuju nezavisno, što je korisno tokom dijagnostike: koja strana zatvori rukovanje, to je strana čije očekivanje nije ispunjeno. Ako klijent odbije server, sažetak se ne poklapa s predstavljenim certifikatom. Ako server odbije klijenta, sažetak tog klijenta nedostaje na listi, ili klijent predstavlja certifikat drugačiji od upisanog.
Upis: kako se novi uređaj pridružuje
Generišite ključ i certifikat novog uređaja tamo gdje će privatni ključ živjeti, zatim prenijesite samo javni artefakt strani koja ga treba prikovati. Prenesite očekivani sažetak kanalom kojem već vjerujete, i uporedite cijeli certifikat umjesto imena koje izgleda poznato. Sažetak kopiran s istog neprovjerenog preuzimanja kao certifikat dokazuje samo da se dvije datoteke slažu jedna s drugom. To je provjera dosljednosti, a ne provjera identiteta, i to je najtiši način na koji ovaj dizajn slabi.
Na serveru, dodavanje sažetka je promjena konfiguracije koja prolazi kroz uobičajeni menadžer i praćena je ponovnim povezivanjem. Potvrdite da se novi uređaj povezuje i da uređaj čiji je sažetak uklonjen to više ne čini. Test koji pokriva samo pozitivan slučaj ostavlja listu dopuštenja neprovjerenom, a to je tačno stanje u kojem ćete biti za šest mjeseci.
Obnova je skupi trenutak
Svaki certifikat ističe, a novi certifikat ima novi sažetak čak i kad ključ i imena ostanu isti. Pod izdavaocem je obnova transparentna za partnere koji vjeruju tom izdavaocu; pod prikivanjem ona je događaj upisa za svakog partnera koji prikiva certifikat.
Planirajte redoslijed prije datuma isteka, a ne poslije njega. Podijelite novi sažetak stranama koje ga provjeravaju, primijenite promjenu i tek onda zamijenite certifikat na kraju. Taj redoslijed ne ostavlja prozor u kojem se dvije strane ne slažu koji je certifikat aktuelan. Držite i samu listu pod pregledom, jer prikovana lista nakuplja unose za uređaje povučene prije mjeseci. Svaki zastario unos je identitet koji se još autentificira ako njegov ključ preživi, pa je uklanjanje jednog sigurnosna radnja, a ne pospremanje.
Šta mapa povjerenja ne odlučuje
Autentifikacija je jedan sloj, a prikovana mapa ne govori ništa o pulu adresa, guranim rutama, MTU putanje ili politici vatrozida. Oni ostaju zasebna konfiguracija sa zasebnim načinima otkaza. Tunel koji se autentificira i ne propušta promet je druga istraga od onog koji se nikad ne podigne.
Mapa se također ne skalira beskonačno, i PKI zasnovan na izdavaocu je mjesto gdje veće postavke završavaju. Ta sklonost je o poslovanju, a ne o kriptografiji, jer je dodavanje i povlačenje identiteta kroz jedno tijelo jeftinije od uređivanja liste na svakom partneru kako flota raste. Gdje implementacija klijenta ne podržava opciju, odgovor je kompatibilan model povjerenja koji taj klijent dokumentira, ili podržana zamjena. Utšavanje upozorenja o provjeri ne dodaje tu podršku, a cijela vrijednost dizajna je da se provjera ipak dogodi.