Was ist Initialisierungsvektor?
Ein Initialisierungsvektor (IV) ist ein zufälliger oder pseudozufälliger Wert, der als zusätzliche Eingabe neben dem Schlüssel in einen Verschlüsselungsalgorithmus eingeht. Er stellt sicher, dass identischer Klartext, der mit demselben Schlüssel verschlüsselt wird, über Operationen hinweg unterschiedlichen Geheimtext erzeugt.
Auch bekannt als: IV, initialisation vector
Ein Initialisierungsvektor erfüllt denselben grundlegenden Zweck wie ein Nonce: Er führt Einzigartigkeit in jede Verschlüsselungsoperation ein. Die Begriffe werden oft synonym verwendet, obwohl „IV" gebräuchlicher im Kontext von Blockchiffre-Modi (CBC, GCM, CTR) ist, während „Nonce" allgemeiner verwendet wird. In AES-GCM ist der IV ein 12-Byte-Wert, der den Zähler im Galois/Counter Mode initialisiert.
Der IV muss nicht geheim sein – er wird typischerweise im Klartext zusammen mit dem Geheimtext gespeichert oder übertragen. Sein Sicherheitsbeitrag kommt aus der Einzigartigkeit, nicht aus dem Geheimnis. Je nach Chiffre-Modus muss der IV jedoch unvorhersehbar (wie bei CBC) oder lediglich eindeutig (wie bei GCM) sein. Ein vorhersehbarer IV mit dem CBC-Modus ermöglicht spezifische Angriffe, während GCM nur verlangt, dass der IV mit demselben Schlüssel nie wiederverwendet wird.
IV-Wiederverwendung mit AES-GCM ist katastrophal: Sie ermöglicht einem Angreifer, den Authentifizierungsschlüssel zu gewinnen und gültige Geheimtexte zu fälschen, und leckt Informationen über den Klartext durch XOR der beiden Geheimtext-Ströme. Deshalb müssen Implementierungen einen kryptografisch sicheren Zufallsgenerator für die IV-Generierung verwenden und IVs nie manuell konstruieren oder wiederverwenden.
Wie Vaulted Initialisierungsvektor verwendet
Vaulted generiert für jedes Geheimnis einen frischen 12-Byte-IV mittels crypto.getRandomValues() der Web Crypto API. Der IV wird zusammen mit dem Geheimtext an den Server gesendet und als Teil des verschlüsselten Datensatzes in Redis gespeichert. Wenn der Empfänger das Geheimnis abruft, wird der IV zusammen mit dem Geheimtext zurückgegeben, damit der Browser die AES-256-GCM-Entschlüsselungsparameter rekonstruieren kann. Da Vaulted auch einen eindeutigen Schlüssel pro Geheimnis generiert, ist das Schlüssel-IV-Paar immer einzigartig.