OpenSSL je že nameščen, gostitelj ima entropijo in ustvarjanje ključa z njim se zdi očitna bližnjica. Rezultat bo naključen in tajen in popolnoma neuporaben, napaka pa bo prišla kot napaka krmilnega kanala, ne kot nekaj, kar omenja obliko ključa. Prav ta zabloda je dragi del, ker pošilja ljudi pregledovati njihove šifre. Kar VPN bere, je določena struktura datoteke, ne poljuben blok bajtov, in ene različice te funkcije sploh ni mogoče izdelati zunaj strežnika.

Kaj mora datoteka na disku v resnici biti

Datoteka statičnega ključa OpenVPN je besedilo. Začne se z vrstico komentarja, ki razglasi, kaj je, nosi šestnajstiške podatke v vrsticah s fiksno širino in skupaj obsega 256 bajtov ključnega materiala. OpenVPN jo bere kot skupno skrivnost krmilnega kanala, ne kot potrdilo, ne kot geslo in ne kot nekaj, kar bi prepoznala knjižnica TLS.

Isti tip objekta služi obema funkcijama krmilnega kanala. Pri tls-auth vsak partner potrebuje tudi smer, da paketov ene strani ni mogoče odbiti nazaj vanjo. Pri tls-crypt ena skupna skrivnost šifrira in overi krmilni kanal v obe smeri, kar rokovanje skrije in hkrati zaščiti.

Nič od tega ni skrivno znanje in oblika ni bistvo. Bistvo je, da mora datoteka natančno ustrezati temu, kar bralec pričakuje: glava, širina vrstice, končni prelom vrstice in skupna dolžina. Datoteka, ki je za eno vrstico narobe, se naloži kot smeti ali popolnoma odpove. Zato je primerjava dveh partnerjev bajt za bajt legitimno prvo preverjanje in je hitrejša od branja katere koli od obeh konfiguracijskih datotek.

Podprt način, kako eno ustvariti

Ustvarite preprost statični ključ z orodjem, ki ga bo uporabljalo, nato pa se nanj sklicujte z obeh koncev:

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

Črkovanje možnosti se je s časom spreminjalo: starejše namestitve iz obdobja 2.4 so uporabljale obliko z ločeno zastavico pred imenom datoteke, medtem ko trenutne gradnje sprejemajo krajšo. Kakor koli, nastala datoteka je iste vrste objekt, zato je preverjanje, ali imata oba partnerja enake bajte.

Druga generacija doda strukturo, ki si je noben zunanji generator ne more izmisliti. Strežniški ključ se ustvari enkrat in vsak odjemalec prejme zaviti ključ, izpeljan iz njega:

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

Kar odjemalec prejme, ni podvojen lastni ključ strežnika. To je zaviti objekt, ki nosi metapodatke, ki jih lahko odvije samo strežnik, in prav to zavijanje je razlog, da je mogoče datoteko za posamezno napravo preklicati, ne da bi se dotaknili katere koli druge naprave. Hranite strežniški ključ na strežniku in ga obravnavajte kot koren tega zaupanja na napravo.

Kje se ročno izdelani bajti zlomijo

Če bi 256 naključnih bajtov natisnili kot šestnajstiške pod pravilno glavo, bi teoretično dobili datoteko statičnega ključa, ki se naloži. Še vedno je slaba ideja. Vsaka podrobnost oblikovanja postane priložnost za izdelavo materiala, ki ob nalaganju odpove ali, kar je huje, pusti dva partnerja z različnimi vrednostmi, ki se razkrijejo šele kot neuspeh preverjanja pristnosti.

Z različico v2 ni nič enakovrednega mogoče. Zaviti odjemalski ključ obstaja samo kot izhod procesa strežniškega ključa in strežnik obdrži material, potreben za njegovo odvijanje. Naključni blok bo zavrnjen ali preprosto ne bo mogel dešifrirati, in nobeno od obeh sporočil ne bo omenilo naključnosti.

Združljivost različic stoji na vsem tem. Prva generacija potrebuje izdajo, ki jo podpira na obeh koncih, druga pa spet potrebuje novejšo izdajo. Odjemalec, zgrajen pred obstojem funkcije, ne more dokončati rokovanja s strežnikom, ki sprejema samo zaviti material, in neuspeh, ki ga poroča, kaže na krmilni kanal, ne na različico.

Vrtenje, ne da bi vse zaklenili zunaj

Vrtenje ene skupne skrivnosti je vaja v usklajevanju, ne tehnična. Vsak odjemalec mora imeti nadomestno datoteko v rokah, preden strežnik umakne prejšnjo, in vsak stroj, ki še vedno drži staro vrednost, odpove v tistem trenutku. Tega vrtenja ne začnite sredi delovnega dneva.

Pri postavitvi v2 je vrtenje po napravi: izdajte nov zaviti ključ za en stroj in upokojite starega samo za ta stroj. To je glavni argument za prehod, ko je vsak odjemalec na izdaji, ki to podpira.

Dovoljenja za datoteke spadajo v isti pogovor. Ključ naj bi bil berljiv samo za račun, ki izvaja storitev, in ne bi smel živeti v istem repozitoriju kot profili, ki jih ščiti. Referenca OpenVPN 2.6 dokumentira oblike ustvarjanja in razdelke o ključnem materialu, kar je boljši vir kot kopiran ukaz iz objave na forumu.

Sorodni članki