Čo je nonce vo VPN a prečo jeho opätovné použitie rozbíja tunel
Nonce je hodnota pre každú správu, ktorá sa pod jedným kľúčom nikdy nesmie opakovať, a zvyčajne putuje otvorene. Ručná úprava je chyba, ktorej sa treba vyhnúť.
Väčšina ľudí narazí na slovo nonce v profile VPN a predpokladá, že je to ďalšie zdieľané tajomstvo, ktoré sa má kopírovať medzi partnermi. Nie je. Nonce je hodnota, ktorá sa pod tým istým kľúčom nikdy nesmie opakovať, a vo väčšine šifrovania založeného na nonce putuje otvorene. Zmätok zostáva neškodný, kým ho niekto neupraví ručne, a práve tam sa začína skutočná porucha.
Odkiaľ nonce skutočne pochádza
Autentizované šifrovanie potrebuje iný nonce pre každú správu zašifrovanú pod kľúčom. Protokoly tento požiadavok spĺňajú rôznymi spôsobmi: monotónne rastúci počítadlo, soľ skombinovaná s identifikátorom paketu alebo dostatočne dlhá náhodná hodnota. IKEv2 si vymieňa nonce počas úvodnej výmeny a sú to verejné vstupy pre odvodenie kľúča, nie tajomstvá.
Jedinečnosť môže byť štrukturálna alebo pravdepodobnostná. Počítadlo sa nemôže zopakovať, kým sa nepretočí, a preto protokol definuje bod obnovy kľúča dávno predtým. Náhodná hodnota sa spolieha na dostatok bitov, aby bola kolízia v rámci limitu správ nepravdepodobná, čo je iný argument s iným režimom zlyhania. Dokumentácia protokolu uvádza, ktorá metóda platí, a obe sú bezpečné len vtedy, kým je dodržaný uvedený limit.
| 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 |
Čo opätovné použitie skutočne stojí
Opätovné použitie nonce pod jedným kľúčom nie je drobná otázka efektivity. Pri GCM umožňujú dve správy zdieľajúce IV pozorovateľovi obnoviť autentizačný kľúč a vypočítať exkluzívne alebo dvoch otvorených textov. Prúdové konštrukcie znovu používajú kľúčový prúd rovnakým spôsobom, čo mení šifrovaný text na hádanku namiesto tajomstva.
Preto implementácie obnovujú kľúč skôr, než sa počítadlo pretočí, a preto sa zastavia namiesto toho, aby pokračovali, keď je ich stav neistý. Reštart, ktorý vynuluje počítadlo, kým partner stále drží starý kľúč, alebo virtuálny stroj obnovený zo snímky vytvorenej uprostred relácie, je presne tá situácia, ktorej majú limity zabrániť. Útočník nie je potrebný; bežné operácie stačia.
Prečo je ručná úprava nesprávna oprava
Počítadlá, soli a identifikátory paketov sú stavové automaty zdieľané oboma stranami. Zmena jednej strany rozladí druhú a tunel zlyhá spôsobmi, ktoré vyzerajú ako problém s routovaním. Podporovanou pákou je čerstvá výmena kľúčov, ktorá vynuluje stav na oboch stranách naraz.
Heslá a nonce tiež hrajú rôzne úlohy. Heslo je tajný vstup pre odvodenie kľúča; nonce je verejný vstup pre každú správu. Pole profilu označené nonce, ktoré žiada dlhé tajomstvo, je zvyčajne statický kľúč alebo vopred zdieľané tajomstvo pod iným názvom, tak si k tomu poľu prečítajte dokumentáciu, namiesto predpokladu.
Keď sa odporúčanie týka zaobchádzania s nonce, opravou je opravená verzia správcu, nie iná šifra alebo kratší kľúč. Zmena šifry, aby sa vyhla slovu nonce, problém posúva, namiesto toho, aby ho riešila.
Čítanie varovania bez hádania
Riadok logu o počítadlách alebo nonce zvyčajne opisuje stratený stav, nie útok. Skontrolujte, či sa jeden partner nereštartoval, či klonovaný virtuálny stroj nepoužil rovnakú identitu a či sa oba konce zhodujú v nastaveniach obnovy kľúča. Potom nadviažte novú reláciu a sledujte, či sa správa vracia.
Držte diagnózu oddelene od nesúvisiacich zlyhaní. Stránka, ktorá sa nenačíta, alebo výzva na prihlásenie, ktorá sa zacyklí, nie je dôkazom opätovného použitia nonce, a ak ju zaň považujete, pošlete sa do kryptografickej vrstvy, keď je problém nad ňou.
Pre bežné použitie je bezpečné pravidlo krátke: nechajte nonce riadiť implementáciou, udržujte oba konce na podporovaných verziách a akékoľvek vynulovanie stavu berte ako dôvod obnoviť kľúč, nie upraviť hodnotu. Ak pole profilu nie je v dokumentácii dodávateľa, nevymýšľajte preň hodnotu. Oprava tunela začína tým, že viete, na ktorú vrstvu sa pozeráte.