OpenVPN tls-crypt-v2: ko dara klienta atslēga un ietītais blob
tls-crypt-v2 profilā ir klienta vadības atslēga un ietīta kopija, ko var atvērt tikai serveris. Turiet katru objektu un katru izņemšanas soli atsevišķi.
tls-crypt-v2 profila ielīmēšana biļetē šķiet nekaitīga, līdz saskaitāt, kas ir failā. Klienta vadības kanāla atslēga atrodas blakus tās pašas atslēgas šifrētai kopijai, un trešais objekts, iesaiņošanas atslēga, nekad nepamet pieņēmēju serveri. Šie trīs atbild uz dažādiem jautājumiem par glabāšanu, koplietošanu un izņemšanu. To atdalīšana atrisina lielāko daļu politikas strīdu pirms to sākuma.
Ko profils patiešām satur
tls-crypt-v2 klienta puse ir atslēga un tās ietītā kopija. Klients izmanto vienkāršo atslēgu vadības kanāla aizsardzībai un iestatīšanas laikā nodod ietīto kopiju serverim, tāpēc serveris atgūst to pašu atslēgu, neuzglabājot atklāta teksta kopiju katram klientam. Iesaiņošanas atslēga padara šo atgūšanu iespējamu un pieder tikai pieņēmējai pusei. Viss turpmāk izriet no tā, kur dzīvo šie trīs objekti.
| 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 |
Lasiet tabulu pēc glabāšanas, nevis pēc nosaukuma, un sekas izkritīs pašas. Iesaiņošanas atslēgas zaudēšana ir dārgais notikums, jo nekas profilā nevar to atjaunot, un godīgā atgūšana ir grupas atkārtota izdošana. Noplūdis profils ir lētāks, bet daudz izplatītāks, jo cilvēki ielīmē profilus biļetēs, ticot, ka ietītā kopija padara failu drošu koplietošanai. Diviem bojājumiem vajadzīgas dažādas atbildes, tāpēc objekti tiek turēti atsevišķi.
Kāpēc ietītā kopija nav viss stāsts
Profils nes lietojamo klienta materiālu kopā ar tā ietīto līdzinieku, tāpēc kopijas aizsardzība serverim neko neizsaka par faila aizsardzību. Blob ir drošs pārsūtīšanai un nedrošs publicēšanai. Tā iekšienē esošie metadati ir redzami ikvienam, kas saņem blob, tostarp ikvienam, kas vēlāk lasīs biļeti, kurā tas tika ielīmēts.
Uztveriet profilu kā akreditācijas datus, nevis kā konfigurācijas paraugu. Noplūdis fails dod tā turētājam strādājošu klienta identitāti, līdz serveris pārstāj pieņemt šo identitāti, un iesaiņošana neko nedara attiecībā uz šo logu. Izsniedziet vienu profilu katram klientam, lai atsaukšana paliktu viena faila lēmums, un dublējiet iesaiņošanas atslēgu atsevišķi no tās iespējotās servera konfigurācijas. Neviens ieradums nelabo kompromitētu profilu, bet abi nosaka, cik ātri tiks ierobežots nākamais.
Kur verifikācijas āķis atrodas rokasspiedienā
Verifikācijas āķis darbojas pirms TLS slāņa atvēršanas, un tā uzdevums ir pārbaudīt metadatus, kas nes ietītajā blobā. Tas saņem šos metadatus plus mazu, dokumentētu vidi, un tam ir mazāk ar ko strādāt nekā autentifikācijas āķim. Pieņēmums, ka tas redz lietotājvārdus, sesijas stāvokli vai spraudņu mainīgos, ir ierastais veids, kā šis āķis tiek slikti uzrakstīts. Lasiet paša āķa rokasgrāmatas sadaļu, nevis aizņemieties gaidas no cita āķa.
Tā izejas statuss ir lēmums: rezultāts, kas nav nulle, noraida klientu, un nulles rezultāts ļauj rokasspiedienam turpināties. Tāpēc politikai jāsaka, kas notiek, ja metadati trūkst, tos nevar parsēt vai tie ir negaidīti. Vispirms uzrakstiet noraidīšanas ceļu, tad izlemiet, kuras vērtības ir pieņemamas.
tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.shŠīs divas rindas ir politikas virsma serverī: viena nosauc iesaiņošanas atslēgu, otra nosauc programmu, kas vērtē katru klientu. Viss interesantais dzīvo skriptā, kas pelnījis versiju kontroli un tādu pašu pārskatīšanu kā jebkurš cits piekļuves noteikums.
Konts, sertifikāts un vadības atslēga iziet atsevišķi
Agrīna vadības kanāla pieņemšana nav autentifikācija, jo tā notiek pirms TLS identitātes pārbaudes un pirms jebkuras konta autorizācijas. Konta atspējošana, sertifikāta atsaukšana un klienta vadības atslēgas noraidīšana ir trīs darbības ar trim mehānismiem. Izvietojumā, kas veic tikai vienu no tām, ir plaisa, nevis politika. Apzināti saskaņojiet trīs un pierakstiet, kurš solis kādu pilnvaru īsteno.
Laiks ir otrā atšķirība. Mainītais pieņemšanas saraksts attiecas uz jauniem rokasspiedieniem, bet jau izveidotās sesijas turpina darboties, līdz kaut kas tās pārtrauc. Jaunā saraksta ierakstu skaitīšana kā pierādījums, ka vecās sesijas ir beigušās, ir veids, kā noņemts klients paliek pieslēgts stundām ilgi.
Nesaskaņotas pilnvaras atstāj divus caurumus, ko praksē ir viegli atrast. Konts var būt atspējots, kamēr tā vadības atslēga joprojām atver rokasspiedienu, un sertifikāts var būt atsaukts, kamēr metadatu politika joprojām pieņem to pašu klientu. Abi ir tā pati kļūda dažādās vietās, jo operators vienu sarakstu uzskatīja par visu pilnvaru. Novietojiet trīs sarakstus blakus noņemšanas brīdī, un kļūda kļūst redzama.
Profila izsniegšana un atsaukšana
Izsniegšana ir vieglākā puse: izveidojiet klienta atslēgu pieņēmējā pusē, nododiet profilu tieši vienam īpašniekam, turiet iesaiņošanas materiālu ierobežotu un palaidiet to pašu verifikācijas programmu katrā pieņēmējā serverī. Lēta uzņemšana ir visas grupas īpašība, nevis jaunākā resursdatora. Otrs serveris ar vecāku vai vaļīgāku skriptu klusi kļūst par vājāko ceļu izvietojumā.
Atsaukšanai vajadzīgi trīs soļi apzinātā secībā. Noraidiet klientu verifikācijas āķī, lai jauni rokasspiedieni neizdotos, atsauciet tā sertifikātu, ja tiek izmantota PKI, un atspējojiet kontu, lai vēlākai autorizācijai nebūtu ko autorizēt. Pēc tam pārtrauciet sesijas, ko pieļāva vecā pieņemšana, jo tās nepamanīs nevienu no trim. Vingrinieties secību ar klientu, kuru varat atļauties salauzt.
Metadati profilā ir šīs politikas ievade, nevis pierādījums, ka piekļuves kontrole jau pastāv. OpenVPN 2.6 projektēšanas dokuments apraksta objektus un to vilkto robežu, bet to izpilde paliek operatoram.