Nonce und Initialisierungsvektor (IV)
Kurz: Eine Nonce („number used once”) und ein Initialisierungsvektor sind Zusatzwerte, die dafür sorgen, dass dieselbe Nachricht mit demselben Schlüssel jedes Mal anders verschlüsselt wird.
Genauer: Sie sind nicht geheim, aber ihre Eigenschaften sind entscheidend: Eine Nonce darf sich nie wiederholen, ein IV muss je nach Modus unvorhersagbar (zufällig) sein.
Im Detail
- Warum nötig: Ohne sie ergäben gleiche Klartexte gleiche Geheimtexte, und man erkennt Wiederholungen.
- Nonce: Oft ein Zähler oder ein Zufallswert. Bei CTR/GCM/ChaCha20 reicht „einmalig”, Zufälligkeit ist nicht nötig, aber Wiederholung ist fatal: Zwei Nachrichten mit gleichem Schlüssel und gleicher Nonce verraten das XOR ihrer Klartexte, und bei GCM kann der Authentifizierungsschlüssel auffliegen.
- IV bei CBC: Muss zufällig und unvorhersagbar sein.
- Mitschicken: Nonce/IV wird meist vor den Geheimtext gehängt und im Klartext übertragen.
- Zufallsnonce: Bei 96 Bit und sehr vielen Nachrichten droht eine Kollision (Geburtstagsparadoxon). Dann sind Zähler oder Schlüsselwechsel besser. Siehe Zufallszahlen.
- Auch außerhalb: Bei Anmeldeverfahren und Blockchains als Einmalwert gegen Wiederholung („Replay”).
Siehe auch: ChaCha20-Poly1305