OpenVPN tls-crypt-v2: čo robia klientsky kľúč a zabalený blob
Profil tls-crypt-v2 obsahuje klientsky riadiaci kľúč a zabalenú kópiu, ktorú môže otvoriť iba server. Každý objekt a každý krok vyradenia držte oddelene.
Vloženie profilu tls-crypt-v2 do tiketu vyzerá neškodne, kým nespočítate, čo súbor obsahuje. Kľúč riadiaceho kanála klienta stojí vedľa zašifrovanej kópie toho istého kľúča a tretí objekt, zabalovací kľúč, nikdy neopustí server, ktorý prijíma. Tieto tri odpovedajú na rôzne otázky o úschove, zdieľaní a vyradení. Ich oddelenie vyrieši väčšinu sporov o politike skôr, než začnú.
Čo profil skutočne obsahuje
Klientska polovica tls-crypt-v2 je kľúč plus jeho zabalená kópia. Klient používa obyčajný kľúč na ochranu riadiaceho kanála a pri nastavení odovzdá zabalenú kópiu serveru, takže server získa ten istý kľúč bez ukladania kópie v čistom texte pre každého klienta. Zabalovací kľúč toto obnovenie umožňuje a patrí iba prijímajúcej strane. Všetko nižšie vyplýva z toho, kde tieto tri objekty žijú.
| Object | Where it lives | What can open it | What a leak costs |
|---|---|---|---|
| Server wrapping key | accepting servers only | the unwrap step inside the server | every wrapped copy issued to that group becomes readable |
| Wrapped client key | inside the client profile | the server wrapping key | it names a client and exposes its metadata, but not the key inside |
| Client control key | inside the client profile, usable as-is | the client that owns it | someone can open handshakes as that client until the server refuses the key |
Čítajte tabuľku podľa úschovy, nie podľa názvu, a dôsledky sa ukážu samy. Strata zabalovacieho kľúča je drahá udalosť, pretože nič v profile ho nedokáže rekonštruovať a poctivé obnovenie je opätovné vydanie skupiny. Uniknutý profil je lacnejší, ale oveľa bežnejší, pretože ľudia vkladajú profily do tiketov v presvedčení, že zabalená kópia robí súbor bezpečným na zdieľanie. Dve zlyhania si vyžadujú rôzne reakcie, a preto sa objekty držia oddelene.
Prečo zabalená kópia nie je celý príbeh
Profil nesie použiteľný klientsky materiál spolu s jeho zabaleným náprotivkom, takže ochrana kópie pre server nehovorí nič o ochrane súboru. Blob je bezpečný na prenos a nebezpečný na zverejnenie. Metadáta v ňom sú viditeľné pre každého, kto blob dostane, vrátane každého, kto neskôr prečíta tiket, do ktorého bol vložený.
Berte profil ako poverenie, nie ako ukážku konfigurácie. Uniknutý súbor dáva jeho držiteľovi funkčnú klientsku identitu, kým server neprestane túto identitu prijímať, a zabalenie s tým oknom nič nerobí. Vydávajte jeden profil na klienta, aby odvolanie zostalo rozhodnutím o jednom súbore, a zálohujte zabalovací kľúč oddelene od konfigurácie servera, ktorú umožňuje. Žiadny z týchto návykov neopraví kompromitovaný profil, ale oba rozhodujú, ako rýchlo bude ďalší obmedzený.
Kde v podaní ruky sedí overovací hák
Overovací hák sa spúšťa pred odhalením vrstvy TLS a jeho úlohou je skontrolovať metadáta prenášané v zabalenom blobe. Dostáva tie metadáta plus malé, zdokumentované prostredie a má menej materiálu na prácu ako autentifikačný hák. Predpokladať, že vidí používateľské mená, stav relácie alebo premenné doplnkov, je zvyčajný spôsob, akým sa tento hák píše zle. Čítajte vlastnú sekciu príručky háku namiesto požičiavania očakávaní z iného háku.
Jeho výstupný stav je rozhodnutie: nenulový výsledok klienta odmietne a nulový výsledok nechá podanie ruky pokračovať. Politika preto musí povedať, čo sa stane, keď metadáta chýbajú, nedajú sa spracovať alebo sú neočakávané. Najprv napíšte cestu odmietnutia, potom rozhodnite, ktoré hodnoty sú prijateľné.
tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.shTieto dva riadky sú povrch politiky na serveri: jeden pomenúva zabalovací kľúč, druhý pomenúva program, ktorý posudzuje každého klienta. Všetko zaujímavé žije v skripte, ktorý si zaslúži správu verzií a rovnakú kontrolu ako každé iné pravidlo prístupu.
Konto, certifikát a riadiaci kľúč sa vyraďujú oddelene
Skoré prijatie riadiaceho kanála nie je autentifikácia, pretože sa deje pred kontrolou identity TLS a pred akoukoľvek autorizáciou konta. Vypnutie konta, odvolanie certifikátu a odmietnutie klientskeho riadiaceho kľúča sú tri akcie s tromi mechanizmami. Nasadenie, ktoré vykoná iba jednu z nich, má medzeru, nie politiku. Zlaďte tri zámerne a zaznamenajte, ktorý krok vykonáva ktorú právomoc.
Čas je druhý rozdiel. Zmenený zoznam prijímania platí pre nové podania ruky, kým už vytvorené relácie pokračujú, kým ich niečo neukončí. Počítať položky v novom zozname ako dôkaz, že staré relácie skončili, je spôsob, akým odstránený klient zostane pripojený celé hodiny.
Nezladené právomoci zanechávajú dve diery, ktoré sa v praxi ľahko nájdu. Konto môže byť vypnuté, kým jeho riadiaci kľúč stále otvára podanie ruky, a certifikát môže byť odvolaný, kým politika metadát stále prijíma toho istého klienta. Obe sú tá istá chyba na rôznych miestach, pretože operátor považoval jeden zoznam za celú právomoc. Položte tri zoznamy vedľa seba pri odstraňovaní a chyba sa stane viditeľnou.
Vydanie a odvolanie profilu
Vydanie je ľahšia polovica: vytvorte klientsky kľúč na prijímajúcej strane, odovzdajte profil presne jednému vlastníkovi, držte zabalovací materiál obmedzený a spúšťajte ten istý overovací program na každom prijímajúcom serveri. Lacné prijatie je vlastnosť celej skupiny, nie najnovšieho hostiteľa. Druhý server so starším alebo voľnejším skriptom sa ticho stane najslabšou cestou v nasadení.
Odvolanie vyžaduje tri kroky v zámernom poradí. Odmietnite klienta v overovacom háku, aby nové podania ruky zlyhali, odvolajte jeho certifikát, ak sa používa PKI, a vypnite konto, aby neskoršia autorizácia nemala čo autorizovať. Potom ukončite relácie, ktoré staré prijatie povoľovalo, pretože si nevšimnú ani jedno z troch. Precvičte postup na klientovi, ktorého si môžete dovoliť zlomiť.
Metadáta v profile sú vstupom pre túto politiku, nie dôkazom, že kontrola prístupu už existuje. Návrhový dokument OpenVPN 2.6 opisuje objekty a hranicu, ktorú kreslia, pričom vymáhanie zostáva na operátorovi.