Glossar

Was ist Nonce?

Ein Nonce (Number Used Once) ist ein eindeutiger, typischerweise zufälliger oder sequenzieller Wert, der in einer kryptografischen Operation exakt einmal verwendet wird, um sicherzustellen, dass identische Eingaben unterschiedliche Ausgaben erzeugen. Das verhindert Replay-Angriffe und Musteranalysen.

Auch bekannt als: number used once, cryptographic nonce

Wenn du denselben Klartext mit demselben Schlüssel und ohne Nonce verschlüsselst, erhältst du jedes Mal identischen Geheimtext. Ein Angreifer, der mehrere Nachrichten beobachtet, könnte Muster erkennen – identische Geheimtexte verraten, dass dieselbe Nachricht gesendet wurde, auch ohne sie zu entschlüsseln. Ein Nonce beseitigt dieses Problem, indem er einen eindeutigen Wert in jede Verschlüsselungsoperation einführt und sicherstellt, dass derselbe Klartext mit demselben Schlüssel immer unterschiedlichen Geheimtext erzeugt.

Die Sicherheitsanforderungen für Nonces variieren je nach Algorithmus. Einige Algorithmen (wie AES-GCM) erfordern, dass ein Nonce nie mit demselben Schlüssel wiederverwendet wird – Wiederverwendung kann Vertraulichkeit und Authentifizierung katastrophal kompromittieren. Für diese Algorithmen müssen zufällige Nonces groß genug sein, dass zufällige Kollisionen vernachlässigbar unwahrscheinlich sind. Ein zufälliger 96-Bit-Nonce (wie in AES-GCM verwendet) bietet ausreichende Kollisionsresistenz für bis zu etwa 2^32 Verschlüsselungen unter einem einzigen Schlüssel.

Nonces erscheinen in kryptografischen Protokollen unter verschiedenen Namen. In AES-GCM werden sie Initialisierungsvektoren genannt, in Challenge-Response-Authentifizierung sind es Challenges und in der Blockchain Mining-Nonces. Der gemeinsame Nenner ist Einzigartigkeit: Der Wert darf sich im verwendeten Kontext nicht wiederholen.

Wie Vaulted Nonce verwendet

Jedes mit Vaulted verschlüsselte Geheimnis verwendet einen eindeutigen zufälligen 12-Byte-(96-Bit-)Nonce, der vom kryptografisch sicheren Zufallsgenerator der Web Crypto API erzeugt wird. Dieser Nonce dient als Initialisierungsvektor für die AES-256-GCM-Verschlüsselung. Er wird zusammen mit dem Geheimtext auf dem Server gespeichert und zum Entschlüsseln an den Empfänger übermittelt. Da jedes Geheimnis ein frisch generiertes Schlüssel-Nonce-Paar verwendet, ist Nonce-Wiederverwendung auch im großen Maßstab kein praktisches Problem.