OpenVPN tls-crypt-v2: ką daro kliento raktas ir suvyniotas blob
tls-crypt-v2 profilyje yra kliento valdymo raktas ir suvyniota kopija, kurią gali atidaryti tik serveris. Laikykite kiekvieną objektą ir kiekvieną pašalinimo veiksmą atskirai.
Įklijuoti tls-crypt-v2 profilį į bilietą atrodo nekenksminga, kol nesuskaičiuoji, kas yra faile. Kliento valdymo kanalo raktas stovi šalia to paties rakto užšifruotos kopijos, o trečias objektas, vyniojimo raktas, niekada nepalieka priimančio serverio. Šie trys atsako į skirtingus klausimus apie saugojimą, bendrinimą ir pašalinimą. Jų atskyrimas išsprendžia daugumą politikos ginčų dar jiems neprasidėjus.
Ką profilis iš tikrųjų turi
tls-crypt-v2 kliento pusė yra raktas ir suvyniota jo kopija. Klientas naudoja paprastą raktą valdymo kanalo apsaugai ir sąrankos metu perduoda suvyniotą kopiją serveriui, todėl serveris atkuria tą patį raktą nesaugodamas atviro teksto kopijos kiekvienam klientui. Vyniojimo raktas daro tą atkūrimą įmanomą ir priklauso tik priimančiai pusei. Viskas žemiau kyla iš to, kur gyvena tie trys objektai.
| 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 |
Skaitykite lentelę pagal saugojimą, o ne pagal pavadinimą, ir pasekmės išryškėja pačios. Vyniojimo rakto praradimas yra brangus įvykis, nes niekas profilyje negali jo atkurti, o sąžiningas atkūrimas yra grupės išdavimas iš naujo. Nutekėjęs profilis pigesnis, bet daug dažnesnis, nes žmonės klijuoja profilius į bilietus tikėdami, kad suvyniota kopija padaro failą saugų bendrinti. Dvi gedimų rūšys reikalauja skirtingų atsakymų, todėl objektai laikomi atskirai.
Kodėl suvyniota kopija nėra visa istorija
Profilis neša naudojamą kliento medžiagą kartu su suvyniotu atitikmeniu, todėl kopijos apsauga serveriui nieko nesako apie failo apsaugą. Blob saugu perduoti ir nesaugu skelbti. Jame esantys metaduomenys matomi kiekvienam, kas gauna blob, įskaitant kiekvieną, kas vėliau perskaitys bilietą, į kurį jis buvo įklijuotas.
Traktuokite profilį kaip prisijungimo duomenis, o ne kaip konfigūracijos pavyzdį. Nutekėjęs failas duoda jo turėtojui veikiančią kliento tapatybę tol, kol serveris nustoja priimti tą tapatybę, o vyniojimas nieko nedaro dėl to lango. Išduokite po vieną profilį kiekvienam klientui, kad atšaukimas liktų vieno failo sprendimas, ir darykite vyniojimo rakto atsarginę kopiją atskirai nuo serverio konfigūracijos, kurią jis įgalina. Nė vienas įprotis nepataiso pažeisto profilio, bet abu nusprendžia, kaip greitai bus suvaldytas kitas.
Kur tikrinimo kabliukas yra rankos paspaudime
Tikrinimo kabliukas paleidžiamas prieš atskleidžiant TLS sluoksnį, o jo darbas yra patikrinti metaduomenis, nešamus suvyniotame blobe. Jis gauna tuos metaduomenis ir mažą, dokumentuotą aplinką, ir turi mažiau medžiagos nei autentifikacijos kabliukas. Manyti, kad jis mato vartotojų vardus, sesijos būseną ar papildinių kintamuosius, yra įprastas būdas šį kabliuką parašyti blogai. Skaitykite paties kabliuko vadovo skyrių, o ne skolinkitės lūkesčius iš kito kabliuko.
Jo išėjimo būsena yra sprendimas: ne nulis rezultatas atmeta klientą, o nulis rezultatas leidžia rankos paspaudimui tęstis. Todėl politika turi pasakyti, kas nutinka, kai metaduomenų trūksta, jų negalima išanalizuoti arba jie netikėti. Pirmiausia parašykite atmetimo kelią, tada nuspręskite, kurios reikšmės priimtinos.
tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.shTos dvi eilutės yra politikos paviršius serveryje: viena įvardija vyniojimo raktą, kita įvardija programą, kuri vertina kiekvieną klientą. Viskas įdomaus gyvena scenarijuje, kuris nusipelno versijų kontrolės ir tokios pačios peržiūros kaip bet kuri kita prieigos taisyklė.
Paskyra, sertifikatas ir valdymo raktas pašalinami atskirai
Ankstyvas valdymo kanalo priėmimas nėra autentifikacija, nes tai vyksta prieš TLS tapatybės patikrą ir prieš bet kokią paskyros autorizaciją. Paskyros išjungimas, sertifikato atšaukimas ir kliento valdymo rakto atmetimas yra trys veiksmai su trimis mechanizmais. Diegimas, kuris atlieka tik vieną iš jų, turi spragą, o ne politiką. Sąmoningai suderinkite tris ir užrašykite, kuris žingsnis kokią galią vykdo.
Laikas yra antras skirtumas. Pakeistas priėmimo sąrašas taikomas naujiems rankos paspaudimams, o jau nustatytos sesijos veikia toliau, kol kažkas jų nepabaigia. Naujo sąrašo įrašų skaičiavimas kaip įrodymas, kad senos sesijos pasibaigė, yra būdas, kuriuo pašalintas klientas lieka prisijungęs valandas.
Nesuderintos galios palieka dvi skyles, kurias praktikoje lengva rasti. Paskyra gali būti išjungta, o jos valdymo raktas dar atidaro rankos paspaudimą, ir sertifikatas gali būti atšauktas, o metaduomenų politika dar priima tą patį klientą. Abu yra ta pati klaida skirtingose vietose, nes operatorius vieną sąrašą laikė visa galia. Sudėkite tris sąrašus greta pašalinimo metu ir klaida tampa matoma.
Profilio išdavimas ir atšaukimas
Išdavimas yra lengvesnė pusė: sukurkite kliento raktą priimančioje pusėje, perduokite profilį tiksliai vienam savininkui, laikykite vyniojimo medžiagą apribotą ir paleiskite tą pačią tikrinimo programą kiekviename priimančiame serveryje. Pigus priėmimas yra visos grupės savybė, o ne naujausio hosto. Antras serveris su senesniu ar laisvesniu scenarijumi tyliai tampa silpniausiu diegimo keliu.
Atšaukimui reikia trijų žingsnių sąmoninga tvarka. Atmeskite klientą tikrinimo kabliuke, kad nauji rankos paspaudimai žlugtų, atšaukite jo sertifikatą, jei naudojama PKI, ir išjunkite paskyrą, kad vėlesnė autorizacija neturėtų ko autorizuoti. Tada užbaikite sesijas, kurias leido senasis priėmimas, nes jos nepastebės nė vieno iš trijų. Repetuokite seką su klientu, kurį galite sau leisti sulaužyti.
Metaduomenys profilyje yra tos politikos įvestis, o ne įrodymas, kad prieigos kontrolė jau egzistuoja. OpenVPN 2.6 projektavimo dokumentas aprašo objektus ir jų brėžiamą ribą, o jų vykdymas lieka operatoriui.