Vydáváte samostatný certifikát pro každý notebook, takže předpokládáte, že je VPN dokáže rozlišit. Nedokáže. Klientský certifikát dokazuje, že ten, kdo se připojuje, má odpovídající soukromý klíč, a zkopírovaný profil ho má také.

Certifikát pro každé zařízení je pořád dobrý nápad. Jen dělá jinou práci, než většina lidí čeká.

Co klientský certifikát skutečně dokazuje

Během handshake klient podepisuje soukromým klíčem, který odpovídá jeho certifikátu, a server ověřuje tento podpis proti CA, které důvěřuje. Nic v této výměně nepopisuje stroj. Jakékoli zařízení, které má certifikát i klíč, vytvoří shodný podpis, takže profil zkopírovaný do druhého notebooku vypadá přesně jako originál. Certifikát pojmenovává identitu; nepojmenovává hardware.

Jedinečnost pro každé zařízení se stále vyplatí, protože dělá odvolání přesným. Je to administrativní vlastnost, ne technický zámek.

Tři úrovně uložení klíče

První úroveň je soubor s klíčem na disku. Je přenosný už z principu a tam žije většina profilů OpenVPN.

Druhá úroveň je klíč, který operační systém označí za neexportovatelný. Windows umí vytvořit klíč zařízení ve svém úložišti certifikátů a odmítnout běžný export, což zastaví příležitostné kopírování. Není podložený hardwarem a při dostatečném přístupu ke stroji lze takové klíče obnovit, takže zvyšuje úsilí, místo aby stavěl zeď.

Třetí úroveň je klíč vytvořený uvnitř bezpečnostního hardwaru: TPM, čipová karta, SIM nebo PIV token. Tyto moduly nemají obvody pro export klíče, který vytvořily, a podepisování probíhá uvnitř modulu. Klíč se nikdy nestane souborem, který by někdo mohl zkopírovat.

Where the key livesCopyableWhat it buys you
Key file inside the profileTriviallyRevocation granularity, nothing more
OS non-exportable key storeHard, not impossibleStops casual profile sharing
TPM or PIV tokenNoBinding the server can rely on

Tato tabulka je celý argument ve třech řádcích.

Co easy-rsa umí a co ne

Vydávat certifikáty pro každé zařízení je snadné. Vytvořte pro každé zařízení odlišné obecné jméno proti stejné CA, například ./easyrsa build-client-full laptop-a nopass, a opakujte pro každé zařízení. Zaznamenejte, které obecné jméno patří které osobě a stroji.

Odvolání je stejně přímé: ./easyrsa revoke laptop-a, znovu vygenerujte CRL pomocí ./easyrsa gen-crl a ujistěte se, že ho server skutečně čte přes crl-verify.

Co CA nedokáže, je ověřit, kde soukromý klíč potom žije. Pokud klíč vytvoříte na hostiteli CA a zkopírujete ho do zařízení, vytvořili jste při vydání druhou kopii. Neexportovatelný klíč musí být vytvořen v zařízení, nebo importován do hardwaru, který ho nevydá.

Kontroly, které přežijí zkopírovaný profil

Předpokládejte, že profil lze zkopírovat, a navrhujte podle toho. Připoutejte účet k druhému faktoru, aby samotný certifikát nestačil. Dejte každému zařízení vlastní politiku, aby dosah jedné identity zůstal omezený. A sledujte stejné obecné jméno připojené ze dvou adres současně, protože tak vypadá sdílený profil v protokolu připojení.

Rychlé a zdokumentované odvolání je kontrola, která funguje i poté, co ke kopii došlo. Všechno ostatní je prevence.

Tvrzení, na které se server skutečně může spolehnout

Jedinečnost pochází z CA. Svázání se zařízením pochází z uložení klíče. Jen hardware, který neumí exportovat svůj klíč, promění jeden certifikát na zařízení v tvrzení, které server vynucuje, místo v politiku, na které se všichni shodnou.

Související články