Du kan give din offentlige VPN-nøgle til en peer, en udbyder eller et forum, og tunnelen holder stadig. Den private nøgle kan du ikke udlevere, ikke engang til support, uden at udlevere den identitet, som nøglen beviser. Beslutningen er sjældent så ren, fordi folk forveksler, hvilken halvdel af parret de kigger på, og fordi nogle installationer behandler den offentlige værdi som et navn. Tre kontroller afgør det: hvilken halvdel du har, hvad installationen binder den til, og hvad en udskiftning koster.

Kontrol et: hvilken halvdel af parret ligger i din udklipsholder

Asymmetriske nøgler findes i par, og afledningsretningen er hele pointen. I WireGuard er den private nøgle 32 tilfældige bytes, og den offentlige nøgle beregnes ud fra den; den modsatte vej kan man ikke gå. wg genkey skriver den private værdi, wg pubkey udleder den offentlige, og kun den anden hører hjemme i en besked til en peer.

wg genkey | tee private.key | wg pubkey > public.key
chmod 600 private.key
openssl x509 -noout -pubkey -in server.crt

Certifikatverdenen bruger samme opdeling med flere bevægelige dele. Et servercertifikat bærer en offentlig nøgle plus navne, og det underskrives af en privat CA-nøgle, som aldrig forlader CA’en. En klient, der verificerer den server, har brug for CA-certifikatet, som er offentligt, og har ingen nytte af CA’ens private signeringsnøgle.

Hvis du er usikker på, hvilken værdi du holder på, så se efter markøren i stedet for filnavnet. En PEM-blok, der begynder med -----BEGIN PRIVATE KEY-----, eller den ældre form BEGIN RSA PRIVATE KEY, er den hemmelige halvdel. En værdi, du kan indsætte uden den markør, er kandidat til deling, forudsat de næste to kontroller.

Kontrol to: hvad installationen binder til den offentlige værdi

Kryptografisk sikkerhed og anonymitet er forskellige egenskaber. En WireGuard-peers offentlige nøgle er en stabil identifikator inde i installationen: serverkonfigurationen oplister den, håndtrykket nævner den, og en administrator, der læser logfiler, ser den samme streng, hver gang denne peer opretter forbindelse. Offentliggør nøglen ved siden af et spørgsmål om din opsætning, og du har kædet den streng sammen med alt andet i opslaget.

Certifikater lækker identitet efter design. Felterne Subject og subject alternative name er læsbare, og for offentligt betroede TLS-certifikater offentliggøres selve certifikatet i Certificate Transparency-logfiler, som kan søges i. Intet af det afslører en privat nøgle, og alt sammen afslører en relation.

Det er her, installationerne adskiller sig, og det afgør svaret. En engangs-testpeer på en labserver er et andet objekt end den nøgle, der identificerer en virksomheds site-til-site-endepunkt, selv om bytes ser identiske ud.

Kontrol tre: hvad du kan tilbagekalde, og hvor hurtigt

Den tredje kontrol adskiller de to halvdele helt. En offentlig nøgle, der er blevet offentliggjort, kan udskiftes efter din tidsplan. En privat nøgle, der er blevet offentliggjort, kan ikke kaldes tilbage: at slette din kopi rører ikke kopier, der allerede er taget, og enhver peer, der stolede på den, stoler nu på noget, en fremmed har.

Tilbagekaldelse er en konfigurationshandling, ikke en kryptografisk handling. WireGuard leverer ingen tilbagekaldelsesliste, så du fjerner peer’en:

wg set wg0 peer <peer-public-key> remove
# then delete the [Peer] block from the config so it does not return on restart

OpenVPN installationer bygget på certifikater tilbagekalder certifikatet og offentliggør en CRL, som serveren faktisk kontrollerer gennem crl-verify. Uden den direktiv er tilbagekaldelseslisten ren dekoration. Uanset hvad er rækkefølgen den samme: udsted en erstatning, distribuér den ad den understøttede kanal, og pensionér derefter den gamle identitet.

De fejl, der kommer af at slå de tre kontroller sammen

De fleste rigtige lækager er ikke en person, der beslutter at offentliggøre en privat nøgle. Det er en hel profil, der er indsat i et forum: en WireGuard .conf med en PrivateKey-linje, en .ovpn-pakke med en indlejret nøgleblok, eller et skærmbillede af et klientvindue, der tilfældigvis indeholder nøglefeltet. Den offentlige værdi var sandsynligvis fin; den rejste med den del, der ikke var.

Supportarbejdsgange er den anden kilde. Intet legitimt verifikationstrin har brug for din private nøgle, fordi den anden side udleder det nødvendige fra den offentlige halvdel. Når en formular eller en person beder om den private værdi, er det korrekte svar den offentlige plus den lokale kommando, der frembringer den.

Logfiler og skærmbilleder hører i samme kategori. Diagnostisk output kan bære nøglemateriale, sessions-id’er og interne adresser, og at poste det hele for at få svar på ét spørgsmål bytter en lille bekvemmelighed for en større eksponering.

Når en privat værdi er lækket, så pensionér identiteten

Hvis en privat værdi er sluppet ud, skal du behandle den identitet som pensioneret. Generér et nyt par, installér den offentlige halvdel, hvor peers forventer den, fjern den gamle peer eller tilbagekald det gamle certifikat, og tjek de steder, hvor du offentliggjorde den. Du kan ikke slette kopier, du ikke kontrollerer, så fjernelse handler om fremtiden, ikke fortiden.

Skriv derefter distributionen ned: hvilken nøgle hører til hvilken enhed, hvem har en kopi, hvordan en erstatning leveres, og hvem fjerner en pensioneret peer. Det er de dele, folk glemmer, og de afgør, hvor længe en lækage forbliver brugbar.

Relaterede artikler