Was ist der Hauptunterschied zwischen einem Schlüssel, einem IV und einem Nonce?

Apr 24, 2021
admin

Ein Schlüssel ist im Kontext der symmetrischen Kryptographie etwas, das Sie geheim halten. Jeder, der Ihren Schlüssel kennt (oder ihn erraten kann), kann alle Daten entschlüsseln, die Sie damit verschlüsselt haben (oder alle Authentifizierungscodes fälschen, die Sie damit berechnet haben, usw.).

(Es gibt auch die „asymmetrische“ oder Public-Key-Kryptographie, bei der der Schlüssel aus zwei Teilen besteht: dem privaten Schlüssel, der die Entschlüsselung und/oder die Unterschrift ermöglicht, und einem öffentlichen Schlüssel (der vom entsprechenden privaten Schlüssel abgeleitet ist), der die Verschlüsselung und/oder die Überprüfung der Unterschrift ermöglicht.)

Ein IV oder Initialisierungsvektor ist im weitesten Sinne nur der Anfangswert, der zum Starten eines iterierten Prozesses verwendet wird. Der Begriff wird in verschiedenen Zusammenhängen verwendet und impliziert jeweils unterschiedliche Sicherheitsanforderungen. Kryptografische Hash-Funktionen beispielsweise haben in der Regel einen festen IV, d. h. eine beliebige Konstante, die in die Spezifikation der Hash-Funktion aufgenommen und als anfänglicher Hash-Wert verwendet wird, bevor Daten eingegeben werden:

Diagramm einer Merkle-Damgård-Hash-Funktion aus Wikipedia

Umgekehrt erfordern die meisten Blockchiffrierverfahren einen IV, der zufällig und unvorhersehbar ist oder zumindest für jede mit einem bestimmten Schlüssel verschlüsselte Nachricht eindeutig ist. (Wenn jeder Schlüssel immer nur zur Verschlüsselung einer einzigen Nachricht verwendet wird, kann man natürlich auch mit einem festen IV auskommen.) Dieser Zufalls-IV stellt sicher, dass jede Nachricht anders verschlüsselt wird, so dass der Angreifer beim Anblick mehrerer mit demselben Schlüssel verschlüsselter Nachrichten nicht mehr Informationen erhält als beim Anblick einer einzigen langen Nachricht. Insbesondere stellt es sicher, dass die zweimalige Verschlüsselung derselben Nachricht zwei völlig unterschiedliche Chiffriertexte ergibt, was notwendig ist, damit das Verschlüsselungsverfahren semantisch sicher ist.

In jedem Fall muss die IV niemals geheim gehalten werden – wäre dies der Fall, wäre es ein Schlüssel und keine IV. Tatsächlich wäre es in den meisten Fällen nicht praktikabel, die IV geheim zu halten, selbst wenn man es wollte, da der Empfänger sie kennen muss, um die Daten zu entschlüsseln (oder den Hash zu verifizieren usw.).

Eine Nonce ist im weitesten Sinne einfach „eine nur einmal verwendete Zahl“. Die eindeutigen IVs, die für die Blockchiffrierung verwendet werden, gelten als Nonces, aber auch verschiedene andere kryptografische Schemata verwenden Nonces.

Es gibt einige Variationen darüber, welcher der Begriffe „IV“ und „Nonce“ für die verschiedenen Blockchiffrierungsmodi verwendet wird: einige Autoren verwenden ausschließlich den einen oder den anderen, während andere zwischen beiden unterscheiden. Insbesondere für den CTR-Modus reservieren einige Autoren den Begriff „IV“ für den vollständigen Chiffre-Eingabeblock, der durch die Verkettung der Nonce und des anfänglichen Zählerwerts gebildet wird (in der Regel ein Block mit allen Nullbits), während andere es vorziehen, den Begriff „IV“ für den CTR-Modus überhaupt nicht zu verwenden. Dies alles wird durch die Tatsache kompliziert, dass es mehrere Varianten gibt, wie das Nonce/IV, das mit der Nachricht im CTR-Modus gesendet wird, tatsächlich in die anfängliche Blockchiffre-Eingabe eingefügt wird.

Umgekehrt wird für andere Modi als CTR (oder verwandte Modi wie EAX oder GCM) der Begriff „IV“ fast allgemein dem Begriff „Nonce“ vorgezogen. Dies gilt insbesondere für den CBC-Modus, da er Anforderungen an seine IV stellt (insbesondere, dass sie unvorhersehbar sind), die über die übliche Anforderung der Einzigartigkeit hinausgehen, die von nonces erwartet wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.