OpenSSL jau ir instalēts, resursdatoram ir entropija, un atslēgas ģenerēšana ar to šķiet acīmredzamais īsceļš. Izvade būs nejauša un slepena un pilnīgi neizmantojama, un kļūme parādīsies kā vadības kanāla kļūda, nevis kā kaut kas, kas piemin atslēgas formātu. Tieši šī maldināšana ir dārgā daļa, jo tā sūta cilvēkus pārbaudīt savus šifrus. Tas, ko VPN lasa, ir noteikta faila struktūra, nevis patvaļīgs baitu bloks, un vienu no šīs funkcijas variantiem ārpus servera nemaz nevar izgatavot.

Kādam īsti jābūt failam diskā

OpenVPN statiskās atslēgas fails ir teksts. Tas sākas ar komentāra rindu, kas paziņo, kas tas ir, pārnēsā heksadecimālos datus fiksēta platuma rindās un kopumā veido 256 baitus atslēgas materiāla. OpenVPN to lasa kā vadības kanāla kopīgo noslēpumu, nevis kā sertifikātu, nevis kā paroles frāzi un nevis kā kaut ko, ko atpazītu TLS bibliotēka.

Tas pats objekta tips kalpo abām vadības kanāla funkcijām. Ar tls-auth katram partnerim vajadzīgs arī virziens, lai vienas puses paketes nevarētu atstarot atpakaļ uz to. Ar tls-crypt viens kopīgs noslēpums šifrē un autentificē vadības kanālu abos virzienos, kas paslēpj rokasspiedienu un vienlaikus to aizsargā.

Nekas no tā nav slepenas zināšanas, un formāts nav galvenais. Galvenais ir tas, ka failam precīzi jāatbilst tam, ko lasītājs sagaida: galvene, rindas platums, beigu jaunā rinda un kopējais garums. Fails, kas ir par vienu rindu garām, ielādējas kā atkritumi vai vispār neizdodas. Tāpēc divu partneru salīdzināšana baitu pa baitam ir leģitīms pirmais tests, un tas ir ātrāk nekā jebkura no diviem konfigurācijas failiem lasīšana.

Atbalstītais veids, kā vienu izveidot

Ģenerējiet vienkāršo statisko atslēgu ar rīku, kas to izmantos, un pēc tam atsaucieties uz to no abiem galiem:

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

Opcijas rakstība laika gaitā mainījās: vecākas 2.4 ēras instalācijas izmantoja formu ar atsevišķu karodziņu pirms faila nosaukuma, bet pašreizējās būves pieņem īsāko. Jebkurā gadījumā iegūtais fails ir tā paša tipa objekts, tāpēc pārbaude ir, vai abiem partneriem ir identiski baiti.

Otrā paaudze pievieno struktūru, ko neviens ārējs ģenerators nevar izdomāt. Servera atslēga tiek izveidota vienreiz, un katrs klients saņem no tās atvasinātu iesaiņotu atslēgu:

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

Tas, ko klients saņem, nav paša servera atslēgas kopija. Tas ir iesaiņots objekts ar metadatiem, ko atvērt var tikai serveris, un tieši šī iesaiņošana ir iemesls, kāpēc vienas ierīces failu var atsaukt, neaizskarot nevienu citu ierīci. Turiet servera atslēgu uz servera un izturieties pret to kā pret šīs uzticības uz ierīci sakni.

Kur sabrūk ar roku gatavoti baiti

Izdrukājot 256 nejaušus baitus kā heksadecimālus zem pareizas galvenes, teorētiski iegūtu ielādējamu statiskās atslēgas failu. Tā joprojām ir slikta ideja. Katra formatēšanas detaļa kļūst par iespēju izgatavot materiālu, kas neizdodas ielādējot vai, vēl ļaunāk, atstāj divus partnerus ar atšķirīgām vērtībām, kas atklājas tikai kā autentifikācijas kļūme.

Ar v2 variantu nekas līdzvērtīgs nav iespējams. Iesaiņota klienta atslēga pastāv tikai kā servera atslēgas procesa izvade, un serveris patur materiālu, kas nepieciešams tās atvēršanai. Nejaušs bloks tiks noraidīts vai vienkārši neizdosies atšifrēt, un neviens no diviem ziņojumiem nepieminēs nejaušību.

Versiju saderība atrodas virs visa tā. Pirmajai paaudzei nepieciešams izlaidums, kas to atbalsta abos galos, un otrajai atkal nepieciešams jaunāks izlaidums. Klients, kas būvēts pirms funkcijas pastāvēšanas, nevar pabeigt rokasspiedienu ar serveri, kas pieņem tikai iesaiņotu materiālu, un tā ziņotā kļūme norāda uz vadības kanālu, nevis uz versiju.

Rotācija, neatslēdzot visus ārā

Viena kopīga noslēpuma rotācija ir koordinācijas vingrinājums, nevis tehnisks. Katram klientam ir jābūt nomaiņas failam rokā, pirms serveris atsauc iepriekšējo, un jebkura mašīna, kurai vēl ir vecā vērtība, neizdodas tajā mirklī. Neuzsāciet šo rotāciju darba dienas vidū.

Ar v2 izkārtojumu rotācija notiek pa ierīcēm: izsniedziet jaunu iesaiņotu atslēgu vienai mašīnai un izbeidziet veco tikai tai mašīnai. Tas ir galvenais arguments pāriet, kad katrs klients ir izlaidumā, kas to atbalsta.

Faila atļaujas pieder pie tās pašas sarunas. Atslēgai jābūt lasāmai tikai tam kontam, kas palaiž pakalpojumu, un tai nevajadzētu dzīvot tajā pašā repozitorijā, kur profili, ko tā aizsargā. OpenVPN 2.6 uzziņa dokumentē ģenerēšanas formas un atslēgas materiāla sadaļas, kas ir labāks avots nekā nokopēta komanda no foruma ieraksta.

Saistītie raksti