Co je nonce ve VPN a proč jeho opětovné použití rozbíjí tunel
Nonce je hodnota pro každou zprávu, která se pod jedním klíčem nikdy nesmí opakovat, a obvykle putuje otevřeně. Ruční úprava je chyba, které je třeba se vyhnout.
Většina lidí narazí na slovo nonce v profilu VPN a předpokládá, že je to další sdílené tajemství, které se má kopírovat mezi protějšky. Není. Nonce je hodnota, která se pod stejným klíčem nikdy nesmí opakovat, a ve většině šifrování založeného na nonce putuje otevřeně. Zmatek zůstává neškodný, dokud ho někdo neupraví ručně, a právě tam začíná skutečná porucha.
Odkud nonce skutečně pochází
Autentizované šifrování potřebuje jiný nonce pro každou zprávu zašifrovanou pod klíčem. Protokoly tento požadavek splňují různými způsoby: monotónně rostoucí čítač, sůl zkombinovaná s identifikátorem paketu nebo dostatečně dlouhá náhodná hodnota. IKEv2 si vyměňuje nonce během úvodní výměny a jsou to veřejné vstupy pro odvození klíče, nikoli tajemství.
Jedinečnost může být strukturální nebo pravděpodobnostní. Čítač se nemůže zopakovat, dokud se nepřetočí, a proto protokol definuje bod obnovy klíče dlouho předtím. Náhodná hodnota se spoléhá na dostatek bitů, aby byla kolize v rámci limitu zpráv nepravděpodobná, což je jiný argument s jiným režimem selhání. Dokumentace protokolu uvádí, která metoda platí, a obě jsou bezpečné jen tehdy, dokud je dodržen 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 |
Co opětovné použití skutečně stojí
Opětovné použití nonce pod jedním klíčem není drobná otázka efektivity. U GCM umožňují dvě zprávy sdílející IV pozorovateli obnovit autentizační klíč a vypočítat exkluzivní nebo dvou otevřených textů. Proudové konstrukce znovu používají klíčový proud stejným způsobem, což mění šifrovaný text v hádanku místo tajemství.
Proto implementace obnovují klíč dřív, než se čítač přetočí, a proto se zastaví, místo aby pokračovaly, když je jejich stav nejistý. Restart, který vynuluje čítač, zatímco protějšek stále drží starý klíč, nebo virtuální stroj obnovený ze snímku pořízeného uprostřed relace, je přesně situace, které mají limity zabránit. Útočník není potřeba; běžné operace stačí.
Proč je ruční úprava špatná oprava
Čítače, soli a identifikátory paketů jsou stavové automaty sdílené oběma stranami. Změna jedné strany rozhodí synchronizaci druhé a tunel selže způsoby, které vypadají jako problém s routingem. Podporovanou pákou je čerstvá výměna klíčů, která vynuluje stav na obou stranách najednou.
Hesla a nonce také hrají různé role. Heslo je tajný vstup pro odvození klíče; nonce je veřejný vstup pro každou zprávu. Pole profilu označené nonce, které žádá dlouhé tajemství, je obvykle statický klíč nebo předem sdílené tajemství pod jiným názvem, takže si k tomu poli přečtěte dokumentaci, místo abyste předpokládali.
Když se doporučení týká zacházení s nonce, opravou je opravená verze správce, ne jiná šifra nebo kratší klíč. Změna šifry, aby se vyhnula slovu nonce, problém posouvá, místo aby ho řešila.
Čtení varování bez hádání
Řádek logu o čítačích nebo nonce obvykle popisuje ztracený stav, ne útok. Zkontrolujte, zda se jeden protějšek nerestartoval, zda klonovaný virtuální stroj nepoužil stejnou identitu a zda se oba konce shodují v nastavení obnovy klíče. Potom navazte novou relaci a sledujte, zda se zpráva vrací.
Diagnózu držte odděleně od nesouvisejících selhání. Stránka, která se nenačte, nebo výzva k přihlášení, která se zacyklí, není důkazem opětovného použití nonce, a když ji za něj považujete, pošlete se do kryptografické vrstvy, zatímco problém je nad ní.
Pro běžné použití je bezpečné pravidlo krátké: nechte nonce řídit implementací, udržujte oba konce na podporovaných verzích a jakékoli vynulování stavu berte jako důvod k obnově klíče, ne k úpravě hodnoty. Pokud pole profilu není v dokumentaci dodavatele, nevymýšlejte pro něj hodnotu. Oprava tunelu začíná tím, že víte, na kterou vrstvu se díváte.