Poți partaja o cheie publică VPN? Verifică trei lucruri
Publicarea jumătății publice este modul în care funcționează protocolul; publicarea celei private înseamnă predarea unei identități. Trei verificări decid ce valoare ai în mână.
Poți preda cheia publică VPN unui partener, unui furnizor sau unui forum, iar tunelul funcționează în continuare. Cheia privată însă nu poți preda, nici măcar personalului de suport, fără a preda identitatea pe care o dovedește acea cheie. Decizia rar rămâne atât de curată, pentru că oamenii confundă pe care jumătate a perechii se uită, și pentru că unele implementări tratează valoarea publică ca pe un nume. Trei verificări rezolvă problema: ce jumătate ai, la ce o leagă implementarea și cât costă înlocuirea.
Verificarea unu: ce jumătate a perechii este în clipboard
Cheile asimetrice vin în perechi, iar direcția derivării este tot rostul. În WireGuard cheia privată are 32 de octeți aleatori, iar cheia publică se calculează din ea; în sens invers nu este posibil. wg genkey scrie valoarea privată, wg pubkey derivă valoarea publică, și doar a doua are ce căuta într-un mesaj către un partener.
wg genkey | tee private.key | wg pubkey > public.key
chmod 600 private.key
openssl x509 -noout -pubkey -in server.crt
Lumea certificatelor folosește aceeași împărțire cu mai multe piese mișcătoare. Un certificat de server poartă o cheie publică plus nume, și este semnat de o cheie privată CA care nu părăsește niciodată CA. Un client care verifică acel server are nevoie de certificatul CA, care este public, și nu are nicio utilizare pentru cheia privată de semnare a CA.
Dacă nu ești sigur ce valoare ai, caută marcajul, nu numele fișierului. Un bloc PEM care începe cu -----BEGIN PRIVATE KEY-----, sau forma mai veche BEGIN RSA PRIVATE KEY, este jumătatea secretă. O valoare pe care o poți lipi fără acel marcaj este candidată pentru partajare, sub rezerva următoarelor două verificări.
Verificarea doi: la ce leagă implementarea acea valoare publică
Siguranța criptografică și anonimatul sunt proprietăți diferite. Cheia publică a unui partener WireGuard este un identificator stabil în cadrul implementării: configurația serverului o listează, handshake-ul o numește, iar un administrator care citește jurnalele vede același șir de fiecare dată când acel partener se conectează. Dacă publici cheia lângă o întrebare despre configurația ta, ai legat acel șir de tot restul din postare.
Certificatele scurg identitatea prin construcție. Subject și subject alternative name sunt lizibile, iar pentru certificatele TLS de încredere publică certificatul însuși este publicat în jurnalele Certificate Transparency, care pot fi căutate. Nimic din toate acestea nu expune o cheie privată, și totul expune o relație.
Aici diferă implementările, și asta decide răspunsul. Un partener de test de unică folosință pe un server de laborator este un alt obiect decât cheia care identifică punctul final site-to-site al unei companii, chiar dacă octeții arată identic.
Verificarea trei: ce poți revoca, și cât de repede
A treia verificare separă complet cele două jumătăți. O cheie publică publicată poate fi înlocuită după propriul program. O cheie privată publicată nu poate fi retrasă: ștergerea copiei tale nu atinge copiile deja luate, iar fiecare partener care se baza pe ea se bazează acum pe ceva ce are un străin.
Revocarea este o acțiune de configurare, nu criptografică. WireGuard nu livrează nicio listă de revocare, așa că elimini partenerul:
wg set wg0 peer <peer-public-key> remove
# then delete the [Peer] block from the config so it does not return on restart
OpenVPN implementările bazate pe certificate revocă certificatul și publică o CRL pe care serverul o verifică efectiv prin crl-verify. Fără acea directivă lista de revocare este doar decor. În ambele cazuri succesiunea este aceeași: emite o înlocuire, distribuie-o prin canalul acceptat, apoi retrage identitatea veche.
Greșelile care vin din a contopi cele trei verificări
Majoritatea scurgerilor reale nu sunt o persoană care decide să publice o cheie privată. Sunt un profil întreg lipit pe un forum: un .conf WireGuard cu o linie PrivateKey, un pachet .ovpn cu un bloc de cheie inline, sau o captură de ecran a ferestrei unui client care include din întâmplare câmpul cheii. Valoarea publică era probabil în regulă; a călătorit împreună cu partea care nu era.
Fluxurile de suport sunt a doua sursă. Niciun pas legitim de verificare nu are nevoie de cheia ta privată, pentru că cealaltă parte derivă ce îi trebuie din jumătatea publică. Când un formular sau o persoană cere valoarea privată, răspunsul corect este valoarea publică plus comanda locală care o produce.
Jurnalele și capturile de ecran fac parte din aceeași categorie. Ieșirea de diagnostic poate transporta material de cheie, identificatori de sesiune și adrese interne, iar publicarea tuturor acestora pentru a obține un răspuns la o întrebare schimbă un mic confort pe o expunere mai mare.
După o scurgere de valoare privată, retrage identitatea
Dacă o valoare privată a ieșit într-adevăr, tratează acea identitate ca retrasă. Generează o pereche nouă, instalează jumătatea publică acolo unde partenerii o așteaptă, elimină partenerul vechi sau revocă certificatul vechi, și verifică locurile unde ai publicat-o. Nu poți șterge copii pe care nu le controlezi, așa că eliminarea ține de viitor, nu de trecut.
Apoi scrie distribuția: ce cheie aparține cărui dispozitiv, cine deține o copie, cum este livrată o înlocuire și cine elimină un partener retras. Acestea sunt părțile pe care oamenii le uită, și ele decid cât timp o scurgere rămâne utilă.