Jedan certifikat po uređaju ne čini ključ vezanim za uređaj
Certifikat po uređaju je administratorski izbor, a ne vezivanje za uređaj. Vezivanje određuje to gdje se nalazi privatni ključ, od datoteke koja se može kopirati do TPM-a.
Izdajete zaseban certifikat za svaki laptop, pa pretpostavljate da ih VPN može razlikovati. Ne može. Klijentski certifikat dokazuje da onaj koji se povezuje ima odgovarajući privatni ključ, a kopirani profil ga također ima.
Certifikat po uređaju je i dalje dobra ideja. Samo obavlja drugačiji posao od onoga koji većina ljudi očekuje.
Šta klijentski certifikat zapravo dokazuje
Tokom rukovanja klijent potpisuje privatnim ključem koji odgovara njegovom certifikatu, a server provjerava taj potpis prema CA-u kojem vjeruje. Ništa u toj razmjeni ne opisuje mašinu. Svaki uređaj koji ima i certifikat i ključ proizvodi identičan potpis, pa profil kopiran na drugi laptop izgleda potpuno kao original. Certifikat imenuje identitet; ne imenuje hardver.
Jedinstvenost po uređaju se i dalje isplati, jer opoziv čini preciznim. To je administrativno svojstvo, a ne tehnička brava.
Tri nivoa čuvanja ključa
Prvi nivo je datoteka ključa na disku. Prenosiva je po dizajnu i tu živi većina OpenVPN profila.
Drugi nivo je ključ koji operativni sistem označava kao neizvoziv. Windows može generisati ključ uređaja u svom spremištu certifikata i odbiti običan izvoz, što zaustavlja slučajno kopiranje. Nije hardverski podržan, a uz dovoljan pristup mašini takvi ključevi se mogu povratiti, pa povećava trud umjesto da gradi zid.
Treći nivo je ključ generisan unutar sigurnosnog hardvera: TPM, pametna kartica, SIM ili PIV token. Ti moduli nemaju sklopove za izvoz ključa koji su generisali, a potpisivanje se odvija unutar modula. Ključ nikada ne postaje datoteka koju bilo ko može kopirati.
| 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 |
Ta tabela je cijeli argument u tri reda.
Šta easy-rsa može, a šta ne može
Izdavanje certifikata po uređaju je jednostavno. Napravite posebno uobičajeno ime za svaki uređaj prema istom CA-u, na primjer ./easyrsa build-client-full laptop-a nopass, i ponovite za svaki uređaj. Zapišite koje uobičajeno ime pripada kojoj osobi i mašini.
Opoziv je jednako direktan: ./easyrsa revoke laptop-a, ponovo generišite CRL pomoću ./easyrsa gen-crl i uvjerite se da ga server zaista čita kroz crl-verify.
Ono što CA ne može jest provjeriti gdje privatni ključ kasnije živi. Ako generišete ključ na CA hostu i kopirate ga na uređaj, napravili ste drugu kopiju pri izdavanju. Neizvozivi ključ mora biti generisan na uređaju ili uvezen u hardver koji ga neće ispustiti.
Kontrole koje preživljavaju kopirani profil
Pretpostavite da profil može biti kopiran i projektujte s tim u vidu. Vežite račun za drugi faktor da sam certifikat nije dovoljan. Dajte svakom uređaju vlastitu politiku da doseg jednog identiteta ostane ograničen. I pazite na isto uobičajeno ime povezano s dvije adrese istovremeno, jer tako izgleda dijeljeni profil u dnevniku veza.
Brz i dokumentovan opoziv je kontrola koja i dalje radi nakon što se kopija već dogodila. Sve ostalo je prevencija.
Tvrdnja na koju se server zaista može osloniti
Jedinstvenost dolazi od CA-a. Vezivanje za uređaj dolazi od čuvanja ključa. Samo hardver koji ne može izvesti svoj ključ pretvara jedan certifikat po uređaju u tvrdnju koju server provodi, a ne u politiku s kojom se svi slažu da je slijede.