Jeden certifikát na zariadenie nerobí kľúč viazaným na zariadenie
Certifikát pre každé zariadenie je voľba správcu, nie viazanie na zariadenie. O viazaní rozhoduje to, kde žije súkromný kľúč, od kopírovateľného súboru až po TPM.
Pre každý notebook vydáte samostatný certifikát, a tak predpokladáte, že VPN ich dokáže rozlíšiť. Nedokáže. Klientský certifikát dokazuje, že ten, kto sa pripája, má zodpovedajúci súkromný kľúč, a skopírovaný profil ho má tiež.
Certifikát pre každé zariadenie je stále dobrý nápad. Len robí inú prácu, než väčšina ľudí očakáva.
Čo klientský certifikát skutočne dokazuje
Počas nadviazania spojenia klient podpisuje súkromným kľúčom, ktorý patrí k jeho certifikátu, a server overuje tento podpis voči CA, ktorej dôveruje. Nič v tejto výmene neopisuje stroj. Každé zariadenie, ktoré má certifikát aj kľúč, vytvorí rovnaký podpis, takže profil skopírovaný na druhý notebook vyzerá presne ako originál. Certifikát pomenúva identitu; nepomenúva hardvér.
Jedinečnosť na zariadenie si stále zaslúži svoje miesto, pretože robí odvolanie presným. Je to administratívna vlastnosť, nie technický zámok.
Tri úrovne ukladania kľúčov
Prvá úroveň je súbor s kľúčom na disku. Je prenosný už zo svojho návrhu a práve tam žije väčšina profilov OpenVPN.
Druhá úroveň je kľúč, ktorý operačný systém označí za neexportovateľný. Windows dokáže vytvoriť kľúč zariadenia vo svojom úložisku certifikátov a odmietnuť bežný export, čo zastaví náhodné kopírovanie. Nie je podporený hardvérom a pri dostatočnom prístupe k stroju sa takéto kľúče dajú obnoviť, takže zvyšuje námahu namiesto toho, aby staval stenu.
Tretia úroveň je kľúč vytvorený vnútri bezpečnostného hardvéru: TPM, čipová karta, SIM alebo PIV token. Tieto moduly nemajú obvody na export kľúča, ktorý vytvorili, a podpisovanie sa deje vnútri modulu. Kľúč sa nikdy nestane súborom, ktorý by niekto mohol skopírovať.
| Where the key lives | Copyable | What it buys you |
|---|---|---|
| Key file inside the profile | Trivially | Revocation granularity, nothing more |
| OS non-exportable key store | Hard, not impossible | Stops casual profile sharing |
| TPM or PIV token | No | Binding the server can rely on |
Tá tabuľka je celý argument v troch riadkoch.
Čo easy-rsa dokáže a čo nie
Vydávanie certifikátov pre jednotlivé zariadenia je priamočiare. Vytvorte odlišné bežné meno pre každé zariadenie voči tej istej CA, napríklad ./easyrsa build-client-full laptop-a nopass, a zopakujte to pre každé zariadenie. Zaznamenajte, ktoré bežné meno patrí ktorému človeku a stroju.
Odvolanie je rovnako priame: ./easyrsa revoke laptop-a, znova vygenerujte CRL pomocou ./easyrsa gen-crl a uistite sa, že server ho skutočne číta cez crl-verify.
Čo CA nedokáže, je overiť, kde potom žije súkromný kľúč. Ak kľúč vytvoríte na hostiteľovi CA a skopírujete ho do zariadenia, pri vydaní ste vytvorili druhú kópiu. Neexportovateľný kľúč sa musí vytvoriť v zariadení, alebo sa musí importovať do hardvéru, ktorý ho nevydá.
Ovládacie prvky, ktoré prežijú skopírovaný profil
Predpokladajte, že profil sa dá skopírovať, a navrhnite to okolo toho. Priraďte účet k druhému faktoru, aby samotný certifikát nestačil. Dajte každému zariadeniu vlastnú politiku, aby dosah jednej identity zostal obmedzený. A sledujte rovnaké bežné meno pripojené naraz z dvoch adries, čo je podoba zdieľaného profilu v zázname pripojení.
Rýchle a zdokumentované odvolanie je kontrola, ktorá stále funguje po tom, čo ku kopii došlo. Všetko ostatné je prevencia.
Tvrdenie, na ktoré sa server skutočne môže spoľahnúť
Jedinečnosť pochádza z CA. Viazanie na zariadenie pochádza z ukladania kľúčov. Iba hardvér, ktorý nedokáže exportovať svoj kľúč, premení jeden certifikát na zariadenie na tvrdenie, ktoré server vynucuje, a nie na politiku, na ktorej sa všetci dohodnú.