Wêrom openssl rand de kaai net meitsje kin dy’t tls-crypt wol
OpenSSL produsearret willekeurige bytes; tls-crypt hat in strukturearre statyske kaai-bestân nedich, en tls-crypt-v2 hat in kaai nedich dy’t allinne de server ynpakke kin. Brûk openvpn --genkey.
OpenSSL is al ynstallearre, de host hat entropie, en in kaai dermei generearje fielt as de foar de hân lizzende koartsluting. De útfier sil willekeurich en geheim en folslein ûnbrûkber wêze, en de flater komt as in flater fan it kontrôlekanaal ynstee fan eat dat in kaai-formaat neamt. Dy mislieding is it djoere part, want it stjoert minsken om harren sifers te ûndersykjen. Wat de VPN lêst is in spesifike bestânstruktuer, net in willekeurich blok bytes, en ien fariant fan ’e funksje kin hielendal net bûten de server makke wurde.
Wat it bestân op skiif eins wêze moat
In statysk kaai-bestân fan OpenVPN is tekst. It begjint mei in kommentaarline dy’t ferklearret wat it is, draacht hex-gegevens yn rigen fan fêste breedte, en omfettet yn totaal 256 bytes kaaimateriaal. OpenVPN lêst it as it dielde geheim fan it kontrôlekanaal, net as sertifikaat, net as wachtwurd-frase en net as eat dat in TLS-bibleteek weromkenne soe.
Hetzelfde objekttype tsjinnet beide funksjes fan it kontrôlekanaal. By tls-auth hat elke peer ek in rjochting nedich, sadat de pakketten fan ien kant net werom nei him wjerkeatst wurde kinne. By tls-crypt fersiferet en ferifiearret ien dield geheim it kontrôlekanaal yn beide rjochtingen, wat de hânskud ferberget en tagelyk beskermet.
Neat dêrfan is geheime kennis, en it formaat is net it punt. It punt is dat it bestân krekt passe moat by wat de lêzer ferwachtet: kop, rigebreedte, ôfslutende nije rigel en totale lingte. In bestân dat ien rige mis is, laden as ôffal of mislearret hielendal. Twa peers byte foar byte fergelykje is dêrom in legitime earste test, en it is flugger as it lêzen fan ien fan ’e beide konfiguraasjebestanden.
De stipe manier om ien te meitsjen
Generearje de gewoane statyske kaai mei it ark dat it brûke sil, en ferwize der dan fan beide kanten nei:
openvpn --genkey secret /etc/openvpn/tc-shared.key
tls-crypt /etc/openvpn/tc-shared.key
De stavering fan ’e opsje feroare oer de tiid: âldere ynstallaasjes út it 2.4-tiidrek brûkten in foarm mei in aparte flagge foar de bestânsnamme, wylst aktuele builds de koartere akseptearje. Hoe dan ek, it resultearjende bestân is itselde soarte objekt, dus de kontrôle is oft beide peers identike bytes hawwe.
De twadde generaasje foeget struktuer ta dy’t gjin eksterne generator betinke kin. In serverkaai wurdt ien kear makke, en elke klient krijget in ynpakte kaai dy’t dêrfan ôflaat is:
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 klient krijget is net de eigen kaai fan ’e server duplisearre. It is in ynpakt objekt dat metagegevens draacht dy’t allinne de server útpakke kin, en dy ynpakking is de reden wêrom’t in bestân per apparaat weromlutsen wurde kin sûnder in oar apparaat oan te reitsjen. Hâld de serverkaai op de server en behannelje it as de woartel fan dat fertrouwen per apparaat.
Wêr’t mei de hân makke bytes ynstoarte
256 willekeurige bytes as hex printsje ûnder in korrekte kop soe teoretysk in statysk kaai-bestân jaan dat laden wurdt. It bliuwt in min idee. Elk opmaakdetail wurdt in kâns om materiaal te meitsjen dat by it laden mislearret of, slimmer, twa peers mei ferskillende wearden efterlit dy’t har pas as in ferifikaasjeflater iepenje.
Neat lykweardichs is mooglik mei de v2-fariant. In ynpakte klientkaai bestiet allinne as útfier fan it serverkaaiproses, en de server hâldt it materiaal dat nedich is om it út te pakken. In willekeurige klobbe sil wegere wurde of sil gewoan net ûntsiferje kinne, en gjin fan ’e beide berjochten sil willekeurigens neame.
Fersje-ynkompatibiliteit leit boppe op dit alles. De earste generaasje hat in útjefte nedich dy’t it oan beide kanten stipet, en de twadde hat wer in nijere útjefte nedich. In klient boud foardat de funksje bestie kin gjin hânskud foltôgje mei in server dy’t allinne ynpakt materiaal akseptearret, en de flater dy’t it rapportearret wiist nei it kontrôlekanaal ynstee fan nei de ferzje.
Roteare sûnder elkenien bûten te sluten
Ien dield geheim rotearje is in koördinaasje-oefening ynstee fan in technyske. Elke klient hat it ferfangingsbestân by de hân nedich foardat de server it foarige weromlûkt, en elke masine dy’t noch de âlde wearde hâldt, mislearret op it momint dat dat bart. Begjin dy rotaasje net midden op in wurkdei.
Mei de v2-regeling is rotaasje per apparaat: jou in nije ynpakte kaai út foar ien masine en lûk de âlde allinne foar dy masine werom. Dat is it haadargumint om oer te stappen sadree’t elke klient op in útjefte is dy’t it stipet.
Bestânsrjochten hearre yn itselde petear. De kaai soe allinne lêsber wêze moatte foar it akkount dat de tsjinst rint, en it soe net yn itselde bewarplak wenje moatte as de profilen dy’t it beskermet. De OpenVPN 2.6-ferwizing dokumintearret de generearringsfôrmen en de kaaimateriaal-seksjes, wat in bettere boarne is as in kopiearre opdracht út in forumberjocht.