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.

DesignWhere uniqueness comes fromExhaustion is handled by
AES-GCM recordsAn IV, typically a counterRekey before the counter wraps
ChaCha20-Poly1305A 96-bit nonce from a counter or generatorA message limit per key
WireGuardA per-key 64-bit counterRekey at a message cap
OpenVPN AEADPacket identifier plus implicit key materialRekey on the packet-id limit
IKEv2Fresh nonces per exchangeA 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.

Související články