Firwat openssl rand de Schlëssel net ka maachen, deen tls-crypt wëll
OpenSSL produz zoufälleg Bytes; tls-crypt brauch eng strukturéiert statesch Schlësseldatei, an tls-crypt-v2 brauch e Schlëssel, deen nëmmen de Server kann anhuelen. Benotzt openvpn --genkey.
OpenSSL ass schonn installéiert, den Host huet Entropie, an e Schlëssel domat ze generéieren fillt sech wéi deen offensichtlechen Ofkierzung. D’Ausgab wäert zoufälleg a geheim a komplett onbrauchbar sinn, an de Feeler kënnt als Kontrollkanal-Fehler amplaz vun eppes, wat e Schlësselformat ernimmt. Dee Misdirectioun ass den deieren Deel, well en d’Leit schéckt hir Chifferen z’ënnersichen. Wat d’VPN liest, ass eng bestëmmte Dateistruktur, net e wëllkëllegen Byteblock, an eng Variant vun der Funktioun kann iwwerhaapt net baussent dem Server hiergestallt ginn.
Wat d’Datei um Disk tatsächlech muss sinn
Eng statesch Schlësseldatei vun OpenVPN ass Text. Si fänkt mat enger Kommentarslinn un, déi deklaréiert wat se ass, dréit Hex-Daten a Reie mat fester Breet, an ass am Ganzen 256 Byte Schlësselmaterial. OpenVPN liest se als de gemeinsamen Geheimnis vum Kontrollkanal, net als Zertifikat, net als Passwuertphrase an net als eppes, wat eng TLS-Bibliothéik géif erkennen.
Dee selwen Objekttyp déngt béiden Funktiounen vum Kontrollkanal. Bei tls-auth brauch all Peer och eng Richtung, sou datt d’Pakete vun enger Säit net op hie reflektéiert kënne ginn. Bei tls-crypt verschlësselt an authentifizéiert e gemeinsamen Geheimnis de Kontrollkanal a béid Richtungen, wat den Handshake verstoppt an gläichzäiteg schützt.
Näischt dovun ass geheime Wëssen, an d’Format ass net de Punkt. De Punkt ass, datt d’Datei genee dat musse treffen, wat de Lieser erwaart: Header, Reiebreet, Schlusszeil an Totallängt. Eng Datei, déi eng Rei niewendru läit, lued als Offall oder feelt komplett. Zwee Peers Byte fir Byte ze vergläichen ass dofir en legitimen éischten Test, an et ass méi séier wéi eng vun den zwou Konfiguratiounsdateien ze liesen.
Déi ënnerstëtzte Manéier fir eng ze maachen
Generéiert dee einfachen statesche Schlëssel mam Tool, deen en verbrauche wäert, a referenzéiert en dann vun béide Säiten:
openvpn --genkey secret /etc/openvpn/tc-shared.key
tls-crypt /etc/openvpn/tc-shared.key
D’Schreifweis vun der Optioun huet sech iwwer d’Zäit geännert: méi al Installatiounen aus der 2.4-Epoch hunn eng Form mat enger separater Fändel virum Dateinumm benotzt, wärend aktuell Builden déi méi kuerz akzeptéieren. Wéi och ëmmer, d’Resultatdatei ass déiselwecht Zort Objekt, also ass d’Kontroll, ob béid Peers identesch Bytes hunn.
Déi zweet Generatioun füügt eng Struktur dobäi, déi keen externen Generator erfanne kann. E Server-Schlëssel gëtt eemol erstallt, an all Client kritt en agepakten Schlëssel, deen dovun ofgeleet ass:
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
Wat de Client kritt, ass net de Server säin eegene Schlëssel duplizéiert. Et ass en agepakten Objet mat Metadaten, déi nëmmen de Server kann auspacken, an déi Anpakung ass de Grond, firwat eng Datei pro Apparat widerruff konn ginn, ouni en aneren Apparat ze beréieren. Halt de Server-Schlëssel um Server a behandel en als d’Wuerzel vun deem Vertrauen pro Apparat.
Wou handgemaachte Bytes zesummebriechen
256 zoufälleg Bytes als Hex ënner engem korrekten Header ze drécken géif theoretesch eng statesch Schlësseldatei erginn, déi lued. Et bleift eng schlecht Iddi. All Formatéierungsdetail gëtt eng Chance, Material ze produzéieren, dat beim Luede feelt oder, nach méi schlëmm, zwee Peers mat ënnerschiddleche Wäerter hannerléisst, déi sech eréischt als Authentifikatiounsfeeler weisen.
Näischt Gläichwäerteges ass mat der v2-Variant méiglech. En agepakten Client-Schlëssel existéiert nëmmen als Ausgab vum Server-Schlësselprozess, an de Server behält d’Material, dat néideg ass fir en auszepaken. En zoufälleche Blob gëtt verworf oder kann einfach net entschlësselen, an keng vun den zwou Noriichten ernimmt Zoufällegkeet.
D’Versiounskompatibilitéit läit iwwer dësem alles. Déi éischt Generatioun brauch eng Verëffentlechung, déi se op béide Säiten ënnerstëtzt, an déi zweet brauch nach eng méi nei Verëffentlechung. E Client, dee virum Bestoe vun der Funktioun gebaut gouf, kann keen Handshake mat engem Server ofschléissen, deen nëmmen agepakte Material akzeptéiert, an de Feeler, deen en mellt, weist op de Kontrollkanal amplaz op d’Versioun.
Rotéiere ouni jiddereen auszespären
E gemeinsamen Geheimnis ze rotéieren ass eng Koordinatiounsübung an net eng technesch. All Client brauch d’Ersatzdatei an der Hand, ier de Server déi virech zréckzitt, an all Maschinn, déi nach den ale Wäert hält, feelt an deem Abléck. Fänkt déi Rotatioun net mëtt am Aarbechtsdag un.
Mat der v2-Anuerdnung ass d’Rotatioun pro Apparat: gitt en neien agepakte Schlëssel fir eng Maschinn aus a pensionéiert deen alen nëmme fir déi Maschinn. Dat ass d’Haaptargument fir ze wiesselen, soubal all Client op enger Verëffentlechung ass, déi et ënnerstëtzt.
Dateiberechtegungen gehéieren an deeselwechte Gespräch. De Schlëssel sollt nëmme vum Kont liesbar sinn, deen den Déngscht bedreift, an en sollt net am selwechte Repository wunnen wéi d’Profiler, déi en schützt. D’OpenVPN 2.6-Referenz dokumentéiert d’Generéierungsformen an d’Schlësselmaterial-Sektiounen, wat eng besser Quell ass wéi e kopéierte Befehl aus engem Forumsbäitrag.