OpenVPN bez CA: ako peer-fingerprint overuje protistrany
Odtlačok prsta pripína jeden certifikát, nie spoločné tajomstvo. Sledujte, čo digest pokrýva, ako si každá strana zostavuje zoznam povolených a čo stojí obnova.
Malé nasadenie siaha po odtlačkoch, pretože certifikačná autorita vyzerá ako infraštruktúra, na ktorú nemá nikto čas. Inštinkt je rozumný, ale skratka, ktorú si ľudia namiesto toho vyberajú—kopírovanie jedného tajomstva dátového kanála na oba konce—nie je. Nastavenie peer-fingerprint zachováva štruktúru TLS nedotknutú: každá strana stále drží svoj súkromný kľúč a certifikát a každá strana stále overuje tú druhú. Mení sa to, kde je overenie ukotvené: od dôveryhodného vydavateľa ku krátkemu zoznamu pripnutých digestov. Pretože digest pokrýva celý certifikát, a nie meno, obnova sa stáva operáciou, ktorá naozaj berie čas.
K čomu sa odtlačok vlastne zaväzuje
Odtlačok certifikátu je digest celého certifikátu kódovaného v DER, nie jeho verejného kľúča a nie mena jeho subjektu. Preto dva certifikáty s rovnakými menami a rovnakým kľúčom, ale rôznymi dátumami platnosti majú rôzne odtlačky. To robí pripínanie presným a to tiež robí obnovu rušivou. Pripnutie nemôže znamenať dôveru v kľúč všeobecne, pretože pomenúva jeden artefakt v jednom okamihu jeho života. Digest môže poznať ktokoľvek a samotná znalosť nič nedokazuje.
openssl x509 -in server.crt -noout -fingerprint -sha256
openssl x509 -in client-07.crt -noout -fingerprint -sha256
Vlastníctvo zodpovedajúceho súkromného kľúča je to, čo dokazuje, že partner drží tento certifikát, a digest je spôsob, akým sa druhá strana rozhoduje, či tento certifikát vôbec očakávala. Toto oddelenie je dôvod, prečo tento dizajn nie je staré usporiadanie so spoločným tajomstvom: spoločný kľúč autentizuje každého, kto pozná rovnaké bajty, zatiaľ čo pripnutie autentizuje jeden certifikát. Iné zariadenie dostane vlastný záznam namiesto kópie toho istého tajomstva, čo je malý rozdiel v súboroch a veľký v rozsahu škody.
Mapa je vzájomná, nie symetrická
Každý koncový bod potrebuje dve veci: vlastný súkromný kľúč s certifikátom a vyhlásenie o tom, ktoré certifikáty partnerov prijme. U klienta je tým vyhlásením digest certifikátu servera; u servera je to zoznam digestov zapísaných klientov. Oficiálny príklad pre malé nastavenie pre Community 2.6 ukazuje usporiadanie s peer-fingerprint a stojí za prečítanie pred voľbou tohto modelu dôvery pre skutočné nasadenie. Dva smery nie sú jeden obrátený zoznam a nezlyhávajú v rovnakom okamihu.
| 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 |
Pridanie zariadenia upravuje zoznam povolených na serveri, bez kopírovania súkromného materiálu existujúceho klienta a bez presúvania kľúča servera kamkoľvek. Dva smery tiež zlyhávajú nezávisle, čo je užitočné pri diagnostike: strana, ktorá uzavrie handshake, je strana, ktorej očakávanie nebolo splnené. Ak klient odmietne server, digest nezodpovedá predloženému certifikátu. Ak server odmietne klienta, digest toho klienta v zozname chýba, alebo klient predkladá iný certifikát, než ktorý bol zapísaný.
Registrácia: ako sa pridá nové zariadenie
Vygenerujte kľúč a certifikát nového zariadenia tam, kde bude súkromný kľúč žiť, a potom presuňte iba verejný artefakt strane, ktorá ho má pripnúť. Preneste očakávaný digest kanálom, ktorému už dôverujete, a porovnajte celý certifikát namiesto mena, ktoré vyzerá povedome. Digest skopírovaný z rovnakého neovereného stiahnutia ako certifikát dokazuje len to, že sa oba súbory navzájom zhodujú. Je to kontrola konzistencie, nie identity, a je to najtichší spôsob, akým tento dizajn slabne.
Na serveri je pridanie digestu zmenou konfigurácie, ktorá prechádza bežným správcom a nasleduje po nej opätovné pripojenie. Potvrďte, že nové zariadenie sa pripojí a že zariadenie, ktorého digest bol odstránený, sa už nepripojí. Test, ktorý pokrýva len pozitívny prípad, necháva zoznam povolených neoverený, a presne v takom stave budete o pol roka.
Obnova je drahý okamih
Každý certifikát vyprší a nový certifikát má nový digest, aj keď kľúč a mená zostanú rovnaké. Pod vydavateľom je obnova priehľadná pre partnerov, ktorí tomu vydavateľovi dôverujú; pod pripnutím je to udalosť zápisu pre každého partnera, ktorý certifikát pripína.
Naplánujte poradie pred dátumom vypršania, nie po ňom. Rozdeľte nový digest stranám, ktoré ho overujú, použite zmenu a až potom vymeňte certifikát na koncovom bode. Toto poradie nenecháva žiadne okno, v ktorom sa obe strany nezhodujú, ktorý certifikát je aktuálny. Udržujte pod dohľadom aj samotný zoznam, pretože pripnutý zoznam hromadí záznamy zariadení vyradených pred mesiacmi. Každý zastaraný záznam je identita, ktorá sa stále autentizuje, ak jej kľúč prežije, takže odstránenie jedného je bezpečnostná akcia, nie upratovanie.
Čo mapa dôvery nerozhoduje
Autentizácia je jedna vrstva a pripnutá mapa nehovorí nič o pule adries, tlačených trasách, MTU cesty ani politike firewallu. Tie zostávajú samostatnou konfiguráciou so samostatnými režimami zlyhania. Tunel, ktorý sa autentizuje a neprepustí žiadnu prevádzku, je iné vyšetrovanie než ten, ktorý sa nikdy nezdvihne.
Mapa sa tiež neškáluje donekonečna a PKI založená na vydavateľovi je miesto, kam dospejú väčšie nasadenia. Tá preferencia je o prevádzke, nie o kryptografii, pretože pridávať a vyraďovať identity cez jeden orgán je lacnejšie než upravovať zoznam na každom partnerovi, ako flotila rastie. Kde klientska implementácia túto možnosť nepodporuje, odpoveďou je kompatibilný model dôvery, ktorý ten klient dokumentuje, alebo podporovaná náhrada. Potlačenie varovania o overení tú podporu nepridá a celá hodnota dizajnu je, že overenie stále prebieha.