OpenVPN tls-crypt-v2: mida kliendivõti ja pakitud blob teevad
tls-crypt-v2 profiil sisaldab kliendi juhtvõtit ja pakitud koopiat, mille saab avada ainult server. Hoidke iga objekt ja iga tagasivõtmise samm eraldi.
tls-crypt-v2 profiili piletisse kleepimine tundub kahjutu, kuni loendad, mida fail sisaldab. Kliendi juhtkanali võti seisab sama võtme krüpteeritud koopia kõrval ja kolmas objekt, mähkimisvõti, ei lahku kunagi vastuvõtvast serverist. Need kolm vastavad erinevatele küsimustele hoiu, jagamise ja tagasivõtmise kohta. Nende eraldamine lahendab enamiku poliitikavaidlused enne, kui need algavad.
Mida profiil tegelikult sisaldab
tls-crypt-v2 kliendipool on võti pluss selle pakitud koopia. Klient kasutab tavalist võtit juhtkanali kaitseks ja annab pakitud koopia seadistamise ajal serverile, nii et server taastab sama võtme ilma iga kliendi kohta lihtteksti koopiat hoiustamata. Mähkimisvõti teeb selle taastamise võimalikuks ja kuulub ainult vastuvõtvale poolele. Kõik allpool tuleneb sellest, kus need kolm objekti asuvad.
| 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 |
Lugege tabelit hoiu, mitte nime järgi, ja tagajärjed tulevad ise. Mähkimisvõtme kaotamine on kallis sündmus, sest miski profiilis ei suuda seda taastada ja aus taastamine on grupi uuesti väljaandmine. Lekkinud profiil on odavam, kuid palju tavalisem, sest profiile kleebivad piletitesse inimesed, kes usuvad, et pakitud koopia muudab faili jagamiseks turvaliseks. Need kaks ebaõnnestumist vajavad erinevaid vastuseid, ja seepärast hoitakse objekte lahus.
Miks pakitud koopia ei ole kogu lugu
Profiil kannab kasutatavat kliendimaterjali koos oma pakitud vastuga, nii et serveri jaoks mõeldud koopia kaitsmine ei ütle faili kaitsmise kohta midagi. Blob on turvaline edastada ja ebaturvaline avaldada. Selle sees olevad metaandmed on nähtavad kõigile, kes blobbi saavad, sealhulgas neile, kes hiljem loevad piletit, kuhu see kleebiti.
Käsitlege profiili volitusena, mitte konfiguratsiooni näidisena. Lekkinud fail annab omanikule töötava kliendi identiteedi, kuni server selle identiteedi vastuvõtmise lõpetab, ja mähkimine ei tee selle akna kohta midagi. Andke välja üks profiil kliendi kohta, et tagasivõtmine jääks ühe faili otsuseks, ja varundage mähkimisvõti eraldi serveri konfiguratsioonist, mille see võimaldab. Kumbki harjumus ei paranda kompromiteeritud profiili, kuid mõlemad otsustavad, kui kiiresti järgmine ohjeldatakse.
Kus kontrollkonks käepigistuses asub
Kontrollkonks töötab enne TLS-i virna avamist ja selle ülesanne on kontrollida pakitud blobbis kantavaid metaandmeid. See saab need metaandmed pluss väikese, dokumenteeritud keskkonna ning sellel on vähem tööriistu kui autentimiskonksul. Eeldus, et see näeb kasutajanimesid, seansi olekut või pistikprogrammi muutujaid, on tavaline viis, kuidas see konks halvasti kirjutatakse. Lugege konksu enda käsiraamatu jaotist, selle asemel et laenata ootusi teiselt konksult.
Selle väljumisolek on otsus: nullist erinev tulemus keeldub kliendist ja nulltulemus laseb käepigistusel jätkuda. Seega peab poliitika ütlema, mis juhtub, kui metaandmed puuduvad, ei ole parsitavad või on ootamatud. Kirjutage kõigepealt keeldumise tee, seejärel otsustage, millised väärtused on vastuvõetavad.
tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.shNeed kaks rida on serveri poliitika pind: üks nimetab mähkimisvõtme, teine programmi, mis iga klienti hindab. Kõik huvitav elab skriptis, mis väärib versioonihaldust ja sama ülevaatust nagu iga teine juurdepääsureegel.
Konto, sertifikaat ja juhtvõti võetakse tagasi eraldi
Juhtkanali varajane vastuvõtmine ei ole autentimine, sest see toimub enne TLS-i identiteedi kontrolli ja enne mis tahes konto volitamist. Konto keelamine, sertifikaadi tühistamine ja kliendi juhtvõtme keeldumine on kolm toimingut kolme mehhanismiga. Juurutamine, mis teeb neist ainult ühte, omab lünka, mitte poliitikat. Viige need kolm teadlikult kooskõlla ja kirjutage üles, milline samm millist volitust teostab.
Ajastus on teine erinevus. Muudetud vastuvõtunimekiri kehtib uute käepigistuste kohta, samas kui juba loodud seansid jätkuvad, kuni miski need lõpetab. Uue nimekirja kirjete lugemine tõendiks, et vanad seansid lõppesid, on viis, kuidas eemaldatud klient jääb tundideks ühendatuks.
Kooskõlastamata volitused jätavad kaks auku, mida on praktikas lihtne leida. Konto saab keelata, samal ajal kui selle juhtvõti avab veel käepigistust, ja sertifikaadi saab tühistada, samal ajal kui metaandmete poliitika võtab sama kliendi ikka vastu. Mõlemad on sama viga erinevates kohtades, sest operaator käsitles üht nimekirja kogu volitusena. Pange kolm nimekirja eemaldamise hetkel kõrvuti ja viga muutub nähtavaks.
Profiili väljaandmine ja tagasivõtmine
Väljaandmine on lihtne pool: looge kliendivõti vastuvõtval poolel, andke profiil täpselt ühele omanikule, hoidke mähkimismaterjal piiratud ja käivitage sama kontrollprogramm igas vastuvõtvas serveris. Odav vastuvõtt on kogu grupi omadus, mitte uusima hosti oma. Teine server vanema või lõdvema skriptiga muutub vaikselt juurutuse nõrgimaks teeks.
Tagasivõtmine nõuab kolme sammu kaalutletud järjekorras. Keelduge kliendist kontrollkonksus, et uued käepigistused ebaõnnestuksid, tühistage selle sertifikaat, kui PKI on kasutusel, ja keelake konto, et hilisemal volitamisel ei oleks midagi volitada. Seejärel lõpetage seansid, mille vana vastuvõtt lubas, sest need ei märka ühtki neist kolmest. Harjutage järjestust kliendil, mille rikkumist saate endale lubada.
Profiili metaandmed on selle poliitika sisend, mitte tõend, et juurdepääsukontroll juba olemas on. OpenVPN 2.6 projekteerimisdokument kirjeldab objekte ja piiri, mille need tõmbavad, samal ajal kui jõustamine jääb operaatorile.