Was ein VPN-Nonce ist und warum Wiederverwendung den Tunnel bricht
Ein Nonce ist ein Wert pro Nachricht, der sich unter einem Schlüssel nie wiederholen darf, und er reist meist im Klartext. Ihn von Hand zu bearbeiten ist der Fehler, den es zu vermeiden gilt.
Die meisten begegnen dem Wort Nonce in einem VPN-Profil und halten es für ein weiteres gemeinsames Geheimnis, das zwischen Partnern kopiert wird. Das ist es nicht. Ein Nonce ist ein Wert, der sich unter demselben Schlüssel nie wiederholen darf, und in den meisten nonce-basierten Verschlüsselungen reist er im Klartext. Die Verwirrung bleibt harmlos, bis jemand ihn von Hand bearbeitet, und dort beginnt der eigentliche Schaden.
Woher der Nonce tatsächlich kommt
Authentifizierte Verschlüsselung braucht für jede unter einem Schlüssel verschlüsselte Nachricht einen anderen Nonce. Protokolle erfüllen diese Anforderung auf verschiedene Weise: ein monoton steigender Zähler, ein Salt kombiniert mit einer Paketkennung oder ein ausreichend langer Zufallswert. IKEv2 tauscht Nonces während des ersten Austauschs aus, und sie sind öffentliche Eingaben für die Schlüsselableitung, keine Geheimnisse.
Eindeutigkeit kann strukturell oder probabilistisch sein. Ein Zähler kann sich nicht wiederholen, bis er überläuft, deshalb definiert das Protokoll lange davor einen Rekey-Punkt. Ein Zufallswert verlässt sich auf genug Bits, dass eine Kollision innerhalb des Nachrichtenlimits unwahrscheinlich ist, was ein anderes Argument mit einem anderen Fehlermodus ist. Die Protokolldokumentation nennt, welche Methode gilt, und beide sind nur sicher, solange das angegebene Limit eingehalten wird.
| 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 |
Was Wiederverwendung wirklich kostet
Einen Nonce unter einem Schlüssel wiederzuverwenden ist keine kleine Effizienzfrage. Bei GCM können zwei Nachrichten mit derselben IV einem Beobachter erlauben, den Authentifizierungsschlüssel zurückzugewinnen und das exklusive Oder der beiden Klartexte zu berechnen. Strombasierte Konstruktionen verwenden den Schlüsselstrom auf dieselbe Weise wieder, was den Geheimtext in ein Rätsel statt in ein Geheimnis verwandelt.
Deshalb wechseln Implementierungen den Schlüssel, bevor ein Zähler überläuft, und deshalb halten sie an, statt weiterzumachen, wenn ihr Zustand unsicher ist. Ein Neustart, der einen Zähler zurücksetzt, während der Partner noch den alten Schlüssel hält, oder eine virtuelle Maschine, die aus einem mitten in der Sitzung erstellten Snapshot wiederhergestellt wird, ist genau die Situation, die die Limits verhindern sollen. Kein Angreifer ist nötig; gewöhnliche Vorgänge genügen.
Warum Bearbeiten von Hand die falsche Reparatur ist
Zähler, Salts und Paketkennungen sind Zustandsmaschinen, die beide Enden teilen. Eine Seite zu ändern bringt die andere aus dem Takt, und der Tunnel scheitert auf Weisen, die wie ein Routingproblem aussehen. Der unterstützte Hebel ist ein frischer Schlüsselaustausch, der den Zustand an beiden Enden zugleich zurücksetzt.
Passwörter und Nonces spielen ebenfalls unterschiedliche Rollen. Ein Passwort ist geheime Eingabe für die Schlüsselableitung; ein Nonce ist öffentliche Eingabe pro Nachricht. Ein Profilfeld mit der Bezeichnung nonce, das ein langes Geheimnis verlangt, ist meist ein statischer Schlüssel oder ein vorab geteiltes Geheimnis unter anderem Namen, also lesen Sie die Dokumentation zu diesem Feld, statt es anzunehmen.
Wenn ein Sicherheitshinweis den Umgang mit Nonces betrifft, ist die Reparatur die korrigierte Version des Maintainers, nicht eine andere Chiffre oder ein kürzerer Schlüssel. Die Chiffre zu wechseln, um das Wort nonce zu vermeiden, verschiebt das Problem, statt es zu lösen.
Eine Warnung lesen, ohne zu raten
Eine Logzeile über Zähler oder Nonces beschreibt meist verlorenen Zustand statt einen Angriff. Prüfen Sie, ob ein Partner neu gestartet ist, ob eine geklonte virtuelle Maschine dieselbe Identität wiederverwendet hat und ob beide Enden sich über die Rekey-Einstellungen einig sind. Stellen Sie dann eine neue Sitzung her und beobachten Sie, ob die Meldung zurückkehrt.
Halten Sie die Diagnose von unabhängigen Fehlern getrennt. Eine Seite, die nicht lädt, oder eine Anmeldeabfrage, die in einer Schleife hängt, ist kein Beweis für Nonce-Wiederverwendung, und sie als solche zu behandeln schickt Sie in die kryptografische Schicht, während das Problem darüber liegt.
Für den gewöhnlichen Gebrauch ist die sichere Regel kurz: Lassen Sie die Implementierung den Nonce verwalten, halten Sie beide Enden auf unterstützten Versionen und behandeln Sie jeden Zustandsreset als Grund, den Schlüssel zu wechseln, statt einen Wert zu bearbeiten. Steht ein Profilfeld nicht in der Dokumentation des Anbieters, erfinden Sie keinen Wert dafür. Die Reparatur des Tunnels beginnt damit zu wissen, welche Schicht Sie betrachten.