Ce este un nonce într-o VPN și de ce reutilizarea rupe tunelul
Un nonce este o valoare pentru fiecare mesaj care nu trebuie repetată niciodată sub o cheie, și de obicei circulă în clar. Editarea lui manuală este greșeala de evitat.
Majoritatea oamenilor întâlnesc cuvântul nonce într-un profil VPN și presupun că este încă un secret partajat de copiat între egalii de rețea. Nu este. Un nonce este o valoare care nu trebuie repetată niciodată sub aceeași cheie, și în majoritatea criptării bazate pe nonce circulă în clar. Confuzia rămâne inofensivă până când cineva îl editează manual, și acolo începe stricăciunea reală.
De unde provine de fapt nonce-ul
Criptarea autentificată are nevoie de un nonce diferit pentru fiecare mesaj criptat sub o cheie. Protocoalele îndeplinesc această cerință în moduri diferite: un contor care crește monoton, o sare combinată cu un identificator de pachet sau o valoare aleatoare suficient de lungă. IKEv2 schimbă nonce-uri în timpul schimbului inițial, iar acestea sunt intrări publice pentru derivarea cheii, nu secrete.
Unicitatea poate fi structurală sau probabilistică. Un contor nu se poate repeta până când nu se întoarce, de aceea protocolul definește un punct de reînnoire a cheii mult mai devreme. O valoare aleatoare se bazează pe suficienți biți încât o coliziune să fie improbabilă în limita mesajelor, ceea ce este un alt argument cu un alt mod de eșec. Documentația protocolului indică ce metodă se aplică, iar ambele sunt sigure doar atâta timp cât limita declarată este respectată.
| Design | Where uniqueness comes from | Exhaustion is handled by |
|---|---|---|
| AES-GCM records | An IV, typically a counter | Rekey before the counter wraps |
| ChaCha20-Poly1305 | A 96-bit nonce from a counter or generator | A message limit per key |
| WireGuard | A per-key 64-bit counter | Rekey at a message cap |
| OpenVPN AEAD | Packet identifier plus implicit key material | Rekey on the packet-id limit |
| IKEv2 | Fresh nonces per exchange | A new security association |
Cât costă de fapt reutilizarea
Reutilizarea unui nonce sub o cheie nu este o chestiune minoră de eficiență. Cu GCM, două mesaje care partajează un IV permit unui observator să recupereze cheia de autentificare și să calculeze SAU-ul exclusiv al celor două texte clare. Construcțiile bazate pe flux refolosesc fluxul de cheie în același mod, ceea ce transformă textul cifrat într-o enigmă în loc de un secret.
De aceea implementările reînnoiesc cheia înainte ca un contor să se întoarcă, și de aceea se opresc în loc să continue când starea lor este incertă. O repornire care resetează un contor în timp ce partenerul mai are cheia veche, sau o mașină virtuală restaurată dintr-un instantaneu făcut la mijlocul sesiunii, este exact situația pe care limitele există ca să o prevină. Nu este nevoie de un atacator; operațiile obișnuite sunt suficiente.
De ce editarea manuală este soluția greșită
Contoarele, sărurile și identificatorii de pachet sunt mașini de stare partajate de ambele capete. Schimbarea unei părți o desincronizează pe cealaltă, iar tunelul eșuează în moduri care par o problemă de rutare. Pârghia acceptată este un schimb nou de chei, care resetează starea la ambele capete simultan.
Parolele și nonce-urile joacă și ele roluri diferite. O parolă este intrare secretă pentru derivarea cheii; un nonce este intrare publică pentru fiecare mesaj. Un câmp de profil etichetat nonce care cere un secret lung este de obicei o cheie statică sau un secret prepartajat sub alt nume, așa că citiți documentația acelui câmp în loc să presupuneți.
Când un aviz privește manipularea nonce-urilor, remedierea este versiunea corectată a întreținătorului, nu alt cifru sau o cheie mai scurtă. Schimbarea cifrului pentru a evita cuvântul nonce mută problema în loc să o rezolve.
Citirea unui avertisment fără ghicit
O linie de jurnal despre contoare sau nonce-uri descrie de obicei stare pierdută, nu un atac. Verificați dacă un partener a repornit, dacă o mașină virtuală clonată a reutilizat aceeași identitate și dacă cele două capete sunt de acord asupra setărilor de reînnoire a cheii. Apoi stabiliți o sesiune nouă și urmăriți dacă mesajul revine.
Țineți diagnosticul separat de eșecurile fără legătură. O pagină care nu se încarcă, sau o solicitare de acreditări care se repetă în buclă, nu este dovadă de reutilizare a nonce-ului, iar tratarea ei ca atare vă trimite în stratul criptografic când problema este deasupra lui.
Pentru utilizarea obișnuită, regula sigură este scurtă: lăsați implementarea să gestioneze nonce-ul, țineți ambele capete pe versiuni acceptate și tratați orice resetare de stare ca motiv de reînnoire a cheii în loc de editare a unei valori. Dacă un câmp de profil nu apare în documentația furnizorului, nu inventați o valoare pentru el. Repararea tunelului începe cu a ști la ce strat vă uitați.