Šta je nonce u VPN-u i zašto ga ponovna upotreba kvari tunel
Nonce je vrijednost za svaku poruku koja se nikada ne smije ponoviti pod jednim ključem i obično putuje otvoreno. Ručno uređivanje je greška koju treba izbjeći.
Većina ljudi sretne riječ nonce u VPN profilu i pretpostavi da je to još jedna zajednička tajna koju treba kopirati između ravnopravnih strana. Nije. Nonce je vrijednost koja se nikada ne smije ponoviti pod istim ključem, a u većini enkripcije zasnovane na nonce-u putuje otvoreno. Zabuna ostaje bezopasna dok je neko ne uredi ručno, i tu počinje pravi kvar.
Odakle nonce zaista dolazi
Autentificirana enkripcija zahtijeva drugačiji nonce za svaku poruku šifriranu pod ključem. Protokoli ispunjavaju taj zahtjev na različite načine: monotono rastući brojač, so kombinovana s identifikatorom paketa ili dovoljno dugačka slučajna vrijednost. IKEv2 razmjenjuje nonce tokom početne razmjene, i oni su javni ulazi za izvođenje ključa, a ne tajne.
Jedinstvenost može biti strukturna ili vjerovatnosna. Brojač se ne može ponoviti dok se ne preokrene, zato protokol definiše točku obnove ključa mnogo prije toga. Slučajna vrijednost oslanja se na dovoljno bitova da je sudar nevjerovatan unutar ograničenja poruka, što je drugačiji argument s drugačijim načinom kvara. Dokumentacija protokola navodi koja metoda važi, i obje su sigurne samo dok se poštuje navedeno ograničenje.
| 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 |
Šta ponovna upotreba zaista košta
Ponovna upotreba nonce-a pod jednim ključem nije malo pitanje efikasnosti. S GCM-om, dvije poruke koje dijele IV omogućavaju posmatraču da povrati ključ za autentifikaciju i izračuna isključivu ili dva otvorena teksta. Konstrukcije zasnovane na toku ponovo koriste ključni tok na isti način, što šifrat pretvara u zagonetku umjesto u tajnu.
Zato implementacije obnavljaju ključ prije nego se brojač preokrene, i zato se zaustavljaju umjesto da nastave kada im je stanje neizvjesno. Ponovno pokretanje koje resetuje brojač dok partner još drži stari ključ, ili virtuelna mašina vraćena iz snimka napravljenog usred sesije, upravo je situacija koju ograničenja postoje da spriječe. Napadač nije potreban; obične operacije su dovoljne.
Zašto je ručno uređivanje pogrešno rješenje
Brojači, soli i identifikatori paketa su mašine stanja koje dijele oba kraja. Promjena jedne strane desinhronizuje drugu, a tunel pada na način koji izgleda kao problem s rutiranjem. Podržana poluga je svježa razmjena ključeva, koja resetuje stanje na oba kraja odjednom.
Lozinke i nonce također igraju različite uloge. Lozinka je tajni ulaz za izvođenje ključa; nonce je javni ulaz za svaku poruku. Polje profila s oznakom nonce koje traži dugačku tajnu obično je statički ključ ili unaprijed dijeljena tajna pod drugim imenom, pa pročitajte dokumentaciju za to polje umjesto da pretpostavljate.
Kada se sigurnosno upozorenje tiče rukovanja nonce-om, popravka je ispravljena verzija održavaoca, a ne druga šifra ili kraći ključ. Promjena šifre da bi se izbjegla riječ nonce pomjera problem umjesto da ga rješava.
Čitanje upozorenja bez nagađanja
Red u dnevniku o brojačima ili nonce-u obično opisuje izgubljeno stanje, a ne napad. Provjerite je li se jedan partner ponovo pokrenuo, je li klonirana virtuelna mašina ponovo upotrijebila isti identitet i slažu li se oba kraja o postavkama obnove ključa. Zatim uspostavite novu sesiju i gledajte vraća li se poruka.
Držite dijagnozu odvojeno od nepovezanih kvarova. Stranica koja se ne učitava ili upit za akreditive koji se vrti u petlji nije dokaz ponovne upotrebe nonce-a, a tretiranje kao takvog šalje vas u kriptografski sloj dok je problem iznad njega.
Za običnu upotrebu sigurno pravilo je kratko: pustite implementaciju da upravlja nonce-om, držite oba kraja na podržanim verzijama i tretirajte svaki reset stanja kao razlog za obnovu ključa, a ne za uređivanje vrijednosti. Ako polje profila nije u dokumentaciji proizvođača, ne izmišljajte vrijednost za njega. Popravljanje tunela počinje znanjem na koji sloj gledate.