Čo vlastne chráni prístupová fráza na súkromnom kľúči VPN
Zamyká súbor na disku, nie bežiaci tunel ani prihlásenie do účtu. Zistite, čo výzva pokrýva, čo nie a čo robiť, ak unikne.
Výzvu, ktorá sa objaví pri spustení klienta VPN, možno ľahko prečítať nesprávne. Nie je to heslo účtu VPN, nie je to heslo tunela a jej zadaním sa nepreukazuje, že spojenie je bezpečné. Odomyká jednu uloženú reprezentáciu súkromného kľúča, aby klient mohol prečítať materiál kľúča a použiť ho na autentifikáciu. Všetko, čo sa stane potom, je iná otázka.
V praxi sa odpoveď láme na okrajoch: ľudia predpokladajú, že fráza chráni bežiaci tunel, alebo že jej zmena odvolá kópiu kľúča, ktorá už unikla. Oba predpoklady zlyhávajú, a to tak, že zanechajú prihlasovací údaj vystavený, zatiaľ čo operátor verí, že je vyriešený.
Jeden dialóg, niekoľko rôznych tajomstiev
Prístupová fráza k súkromnému kľúču dešifruje súbor. Heslo účtu vás autentifikuje u služby. Heslo pre import PKCS#12 dešifruje balík obsahujúci kľúč a jeho certifikát a nemusí byť rovnaký reťazec ako vlastná fráza kľúča. Tieto výzvy môžu vyzerať takmer rovnako, a hádanie, ktoré tajomstvo kam patrí, je spôsob, akým kľúče skončia vložené do nesprávneho poľa.
Vlastné šifrovanie tunela je štvrtá vec. Dátový kanál používa relačné kľúče dohodnuté počas handshake; prístupová fráza súkromného kľúča nemá žiadnu úlohu pri ochrane jednotlivých paketov. Ak niekto môže prečítať súbor kľúča, môže sa pokúsiť frázu uhádnuť offline, ale ak môže čítať pakety, fráza je irelevantná.
Čo šifrovanie na disku pokrýva
Šifrovaný kľúč PEM má dve podoby a hlavička vám povie, ktorú máte. Moderná forma PKCS#8 začína -----BEGIN ENCRYPTED PRIVATE KEY-----; staršia forma PEM, stále bežná v starších inštaláciách OpenVPN, začína -----BEGIN RSA PRIVATE KEY----- a nesie Proc-Type: 4,ENCRYPTED a riadok DEK-Info hneď pod ním. Súbor obsahuje súkromný kľúč zašifrovaný kľúčom odvodeným z vašej frázy, zvyčajne cez KDF založený na hesle s uvedeným počtom iterácií alebo pracovným faktorom. Dokumentácia OpenSSL pkey pokrýva formáty a možnosti frázy, ktoré sa pri čítaní uplatňujú.
Z toho vyplývajú dva dôsledky. Slabá fráza je napadnuteľná offline tempom, ktoré KDF dovolí, takže oprávnenia súboru a prístup k zálohám sú dôležité aj vtedy, keď je súbor zašifrovaný. A útočník, ktorý získa iba súbor bez frázy, musí hádať; ten, kto získa súbor aj frázu, má kľúč, presne ako keby nikdy nebol zašifrovaný.
head -3 vpn.key
openssl pkey -in vpn.key -noout -pubout
openssl pkcs12 -in bundle.p12 -info -noout
head -3 zobrazí hlavičku a v staršom súbore riadky Proc-Type a DEK-Info, ktoré dokazujú šifrovanie; jeden riadok sám o sebe nie je dôkazom ani jedným smerom. Riadok pkey sa pýta na frázu a vypíše iba verejnú polovicu, čo dokazuje, že súbor a fráza fungujú bez odhalenia súkromného kľúča. Na túto kontrolu nepoužívajte -text: vypisuje súkromné komponenty, privateExponent, prime1, prime2 a zvyšok, a tento výstup sa nikdy nesmie nikam vložiť, ani do tiketu, ani do chatu, ani do logu. Príkaz PKCS#12 tiež povie, či má balík samostatné heslo MAC alebo šifrovania, čo je dobré vedieť predtým, než ho odovzdáte kolegovi.
Čo prestane chrániť po načítaní kľúča
Odomknutie je pre tento proces jednosmerná udalosť. Klient požiada KDF o kľúč, dešifruje súbor a drží súkromný kľúč v pamäti tak dlho, ako potrebuje. Od tej chvíle fráza nechráni nič z bežiacej relácie: ani pamäť procesu, ani výpis jadra, ani ladiacu reláciu pripojenú ku klientovi, ani zálohu stroja vytvorenú počas používania kľúča.
Je to rovnaká hranica ako pri kľúči SSH s frázou alebo odomknutej trezorovej schránke správcu hesiel. Zvyšuje cenu krádeže súboru v pokoji a nič nerobí proti malvéru bežiacemu pod vaším používateľom, autorizovanej aplikácii, ktorá žiada klienta o podpis, ani proti správcovi, ktorý dokáže čítať pamäť. Berte to ako jednu vrstvu, nie ako kontrolu, ktorá robí kľúč bezpečným nechať ho ležať.
Prečo sa výzva stále vracia
Klient, ktorý sa znova pýta pri každom opätovnom pripojení, nemusí byť nutne pokazený. Niektorí klienti frázu ukladajú do medzipamäte pre reláciu, iní do zväzku kľúčov OS a ďalších možno nasmerovať na pomocníka, ktorý ju dodáva, takže správanie závisí od klienta a jeho konfigurácie, nie od súboru kľúča.
Ak je opakovaná výzva skutočnou sťažnosťou, preskúmajte možnosti ukladania do medzipamäte a autentifikácie klienta, než z kľúča odstránite šifrovanie. Odstránenie frázy zmení chránený súbor na kľúč v otvorenom texte a opätovné pripojenie stíchne na úkor jedinej kontroly v pokoji, ktorú ste mali. Lepšia odpoveď je zvyčajne podporované úložisko prihlasovacích údajov s rovnakými oprávneniami súboru, ktoré by ste aj tak použili.
Strata a expozícia nie sú rovnaká oprava
Stratenú frázu nemožno obnoviť z certifikátu. Certifikát je verejný materiál, ktorý spája meno s kľúčom; neobsahuje cestu späť k súkromnému kľúču ani žiadnu nápovedu k fráze. Praktické možnosti sú autorizovaná záloha kľúča alebo nová identita vydaná bežným procesom operátora. Ktokoľvek ponúka 'obnovenie' frázy, ponúka jej uhádnutie.
Expozícia si vyžaduje inú reakciu. Opätovné zašifrovanie toho istého kľúča novou frázou ponechá materiál kľúča nezmenený, takže kópia, ktorá už bola inde odomknutá, stále funguje. Opravou je odvolať alebo nahradiť prihlasovací údaj: vydať nový kľúč a certifikát, distribuovať ich a vyradiť starý u partnera. Kým sa tak nestane, zmena hesla súboru je domáce upratovanie, nie izolácia. Starý súbor držte mimo záloh až po potvrdení, že nová identita funguje, a zaznamenajte, ktoré sériové číslo alebo odtlačok ju nahradil.