OpenSSL on juba paigaldatud, hostil on entroopia olemas, ja sellega võtme genereerimine tundub ilmselge otsetee. Väljund on juhuslik ja salajane ja täiesti kasutuskõlbmatu, ning tõrge saabub juhtkanali veana, mitte millegi võtmeformaati mainivana. See eksitamine on kallis osa, sest see suunab inimesi oma šifreid uurima. See, mida VPN loeb, on kindel failistruktuur, mitte suvaline baitide plokk, ja ühte funktsiooni varianti ei saa väljaspool serverit üldse toota.

Mida fail kettal tegelikult olema peab

OpenVPN staatilise võtme fail on tekst. See algab kommentaarireaga, mis teatab, mis see on, kannab hex-andmeid fikseeritud laiusega ridadena ja sisaldab kokku 256 baiti võtmemeetmaterjali. OpenVPN loeb seda juhtkanali jagatud saladusena, mitte sertifikaadina, mitte paroolifraasina ja mitte millegi TLS-teegile äratuntavana.

Sama objektitüüp teenindab mõlemat juhtkanali funktsiooni. Tls-authi puhul vajab iga peer lisaks suunda, et ühe poole pakette ei saaks sellele tagasi peegeldada. Tls-crypti puhul krüpteerib ja autendib üks jagatud saladus juhtkanalit mõlemas suunas, mis peidab kätluse ja kaitseb seda ühtlasi.

Miski sellest ei ole salajane teadmine, ja formaat ei ole point. Point on see, et fail peab täpselt vastama sellele, mida lugeja ootab: päis, rea laius, lõpu reavahetus ja kogupikkus. Fail, mis on ühe rea võrra mööda, laaditakse prügina või ebaõnnestub täielikult. Kahe peeri bait-baidilt võrdlemine on seega legitiimne esimene test, ja see on kiirem kui kummagi konfiguratsioonifaili lugemine.

Toetatud viis ühe tegemiseks

Genereerige lihtne staatiline võti tööriistaga, mis seda tarbib, ja seejärel viidake sellele mõlemast otsast:

openvpn --genkey secret /etc/openvpn/tc-shared.key
tls-crypt /etc/openvpn/tc-shared.key

Valiku kirjaviis muutus aja jooksul: vanemad 2.4-ajastu paigaldused kasutasid vormi, kus enne failinime oli eraldi lipp, samas kui praegused buildid aktsepteerivad lühemat. Mõlemal juhul on tulemuseks sama tüüpi objekt, seega on kontrolliks see, kas mõlemal peeril on identsed baidid.

Teine põlvkond lisab struktuuri, mida ükski väline generaator ei saa välja mõelda. Serveri võti luuakse üks kord, ja iga klient saab sellest tuletatud mähitud võtme:

openvpn --genkey tls-crypt-v2-server /etc/openvpn/tc-v2-server.key
openvpn --genkey tls-crypt-v2-client /etc/openvpn/laptop1.key --tls-crypt-v2 /etc/openvpn/tc-v2-server.key

See, mida klient saab, ei ole serveri enda võti dubleerituna. See on mähitud objekt, mis kannab metaandmeid, mille saab lahti mähkida ainult server, ja just selle mähkimise tõttu saab seadmepõhist faili tühistada ilma ühtegi teist seadet puutumata. Hoidke serveri võtit serveris ja käsitlege seda selle seadmepõhise usalduse juurena.

Kus käsitsi tehtud baidid läbi kukuvad

256 juhusliku baidi printimine hexina korrektse päise all annaks teoreetiliselt staatilise võtmefaili, mis laaditakse. See jääb halvaks ideeks. Iga vormindusdetail muutub võimaluseks toota materjali, mis laadimisel ebaõnnestub või, hullem, jätab kaks peeri erinevate väärtustega, mis ilmnevad alles autentimistõrkena.

V2-variandiga ei ole midagi samaväärset võimalik. Mähitud kliendivõti eksisteerib ainult serveri võtmeprotsessi väljundina, ja server hoiab alles materjali, mida selle lahtimähkimiseks vaja on. Juhuslik blokk lükatakse tagasi või lihtsalt ei dekrüpteeru, ja kumbki teade ei maini juhuslikkust.

Versioonide ühilduvus lasub kõige selle peal. Esimene põlvkond vajab väljalaset, mis seda mõlemas otsas toetab, ja teine vajab jällegi uuemat väljalaset. Klient, mis on ehitatud enne funktsiooni olemasolu, ei saa lõpetada kätlust serveriga, mis aktsepteerib ainult mähitud materjali, ja selle teatatud tõrge osutab juhtkanalile, mitte versioonile.

Pööramine ilma kõiki välja lukustamata

Ühe jagatud saladuse pööramine on koordineerimisharjutus, mitte tehniline. Igal kliendil peab asendusfail käes olema enne, kui server eelmise tagasi võtab, ja iga masin, millel on veel vana väärtus, ebaõnnestub hetkel, mil see juhtub. Ärge alustage seda pööramist keset tööpäeva.

V2-paigutuse puhul on pööramine seadmepõhine: väljastage ühele masinale uus mähitud võti ja võtke vana tagasi ainult selle masina jaoks. See on peamine argument üleminekuks, kui iga klient on väljalaskel, mis seda toetab.

Failiõigused kuuluvad samasse vestlusesse. Võti peaks olema loetav ainult selle konto poolt, mis teenust käitab, ja see ei peaks asuma samas hoidlas nende profiilidega, mida see kaitseb. OpenVPN 2.6 viide dokumenteerib genereerimisvormid ja võtmemeetmaterjali jaotised, mis on parem allikas kui foorumipostitusest kopeeritud käsk.

Seotud artiklid