De fleste møder ordet nonce i en VPN-profil og antager, at det er endnu en delt hemmelighed, der skal kopieres mellem parter. Det er det ikke. En nonce er en værdi, som aldrig må gentages under den samme nøgle, og i det meste nonce-baserede kryptering rejser den i klartekst. Forvirringen er harmløs, indtil nogen redigerer den manuelt, og det er der, den egentlige skade begynder.

Hvor noncen faktisk kommer fra

Autentificeret kryptering kræver en anden nonce for hver besked, der krypteres under en nøgle. Protokoller opfylder dette krav på forskellige måder: en monotont stigende tæller, en salt kombineret med en pakkeidentifikator eller en tilstrækkelig lang tilfældig værdi. IKEv2 udveksler nonces under den indledende udveksling, og de er offentlige input til nøgleafledning snarere end hemmeligheder.

Unikhed kan være strukturel eller probabilistisk. En tæller kan ikke gentages, før den ruller over, og derfor definerer protokollen et nøgleskiftepunkt længe før. En tilfældig værdi afhænger af nok bits til, at en kollision er usandsynlig inden for beskedgrænsen, hvilket er et andet argument med en anden fejltilstand. Protokoldokumentationen angiver, hvilken metode der gælder, og begge er kun sikre, så længe den angivne grænse overholdes.

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

Hvad genbrug reelt koster

At genbruge en nonce under én nøgle er ikke et mindre effektivitetsspørgsmål. Med GCM kan to meddelelser, der deler en IV, lade en observatør gendanne autentificeringsnøglen og beregne den eksklusive eller af de to klartekster. Strømbaserede konstruktioner genbruger nøglestrømmen på samme måde, hvilket gør ciphertext til et puslespil i stedet for en hemmelighed.

Derfor skifter implementeringer nøgle, før en tæller ruller over, og derfor stopper de i stedet for at fortsætte, når deres tilstand er usikker. En genstart, der nulstiller en tæller, mens partneren stadig har den gamle nøgle, eller en virtuel maskine gendannet fra et snapshot taget midt i en session, er netop den situation, grænserne findes for at forhindre. Der kræves ingen angriber; almindelige handlinger er nok.

Hvorfor manuel redigering er den forkerte løsning

Tællere, salte og pakkeidentifikatorer er tilstandsmaskiner, som begge ender deler. Ændring af den ene side desynkroniserer den anden, og tunnelen fejler på måder, der ligner et routingproblem. Den understøttede løftestang er en frisk nøgleudveksling, som nulstiller tilstanden på begge ender på én gang.

Adgangskoder og nonces spiller også forskellige roller. En adgangskode er hemmeligt input til nøgleafledning; en nonce er offentligt input for hver besked. Et profilfelt mærket nonce, der beder om en lang hemmelighed, er normalt en statisk nøgle eller en forudelt hemmelighed under et andet navn, så læs dokumentationen for det felt i stedet for at antage.

Når en sikkerhedsmeddelelse handler om håndtering af nonce, er rettelsen vedligeholderens rettede version, ikke en anden cipher eller en kortere nøgle. At skifte cipheren for at undgå ordet nonce flytter problemet i stedet for at løse det.

At læse en advarsel uden at gætte

En loglinje om tællere eller nonces beskriver normalt tabt tilstand snarere end et angreb. Kontroller, om en partner er genstartet, om en klonet virtuel maskine har genbrugt den samme identitet, og om de to ender er enige om nøgleskifteindstillingerne. Etabler derefter en ny session, og se, om meddelelsen vender tilbage.

Hold diagnosen adskilt fra urelaterede fejl. En side, der ikke indlæses, eller en legitimationsanmodning, der gentages i ring, er ikke bevis på nonce-genbrug, og at behandle det som sådan sender dig ned i krypteringslaget, når problemet er over det.

Til almindelig brug er den sikre regel kort: lad implementeringen styre noncen, hold begge ender på understøttede versioner, og behandl enhver tilstandsnulstilling som en grund til at skifte nøgle i stedet for at redigere en værdi. Hvis et profilfelt ikke findes i leverandørens dokumentation, må du ikke opfinde en værdi til det. Reparation af tunnelen begynder med at vide, hvilket lag du ser på.

Relaterede artikler