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ú.

ObjectWhere it livesWhat can open itWhat a leak costs
Server wrapping keyaccepting servers onlythe unwrap step inside the serverevery wrapped copy issued to that group becomes readable
Wrapped client keyinside the client profilethe server wrapping keyit names a client and exposes its metadata, but not the key inside
Client control keyinside the client profile, usable as-isthe client that owns itsomeone 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.sh

Tieto 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.

Súvisiace články