Zum Hauptinhalt springen

3.1. Requirements on Nonce Generation (Anforderungen an die Nonce-Erzeugung)

3.1. Requirements on Nonce Generation (Anforderungen an die Nonce-Erzeugung)

Für die Sicherheit ist es wesentlich, dass die Nonces so gebildet werden, dass die Anforderung erfüllt ist, dass jeder Nonce-Wert für jeden Aufruf der Operation der authentifizierten Verschlüsselung bei festem Schlüsselwert unterschiedlich ist. In diesem Abschnitt weisen wir auf einige Konsequenzen dieser Anforderung in verschiedenen Szenarien hin.

Wenn mehrere Geräte mit einem einzigen Schlüssel verschlüsseln, müssen diese Geräte koordinieren, damit die Nonces eindeutig sind. Ein einfacher Weg dazu ist ein Nonce-Format mit einem Feld, das für jedes Gerät unterschiedlich ist, wie in Abschnitt 3.2 beschrieben. Es ist nicht nötig, die Details des Nonce-Formats zwischen Verschlüsseler und Entschlüsseler abzustimmen, solange die gesamte Nonce mit dem Geheimtext gesendet oder gespeichert wird und damit dem Entschlüsseler zur Verfügung steht. Steht dem Entschlüsseler die vollständige Nonce nicht zur Verfügung, muss er wissen, wie die Nonce aufgebaut ist, um sie rekonstruieren zu können. Anwendungen SOLLTEN den Verschlüsselungsengines etwas Freiheit beim Wählen ihrer Nonces lassen; beispielsweise könnte eine Nonce sowohl einen Zähler als auch ein vom Verschlüsseler gesetztes Feld enthalten, das vom Empfänger nicht verarbeitet wird. Diese Freiheit ermöglicht es einer Gruppe von Verschlüsselungsgeräten leichter, die Eindeutigkeit ihrer Nonces sicherzustellen.

Wird ein geheimer Schlüssel über lange Zeit verwendet, z. B. über mehrere Neustarts hinweg, muss die Nonce im nichtflüchtigen Speicher abgelegt werden. In solchen Fällen ist Checkpointing der Nonce unerlässlich; der aktuelle Nonce-Wert sollte gespeichert werden, um den Zustand bereitzustellen, der nach einem unerwarteten Ausfall zum Fortsetzen der Verschlüsselung nötig ist. Eine einfache Methode, mit hoher Sicherheit sicherzustellen, dass ein Nonce-Wert nicht wiederholt verwendet wird, besteht darin zu warten, bis der Verschlüsselungsprozess eine Bestätigung vom Speicherprozess erhält, dass der nachfolgende Nonce-Wert bereits gespeichert wurde. Da diese Methode erhebliche Latenz verursachen kann, kann es wünschenswert sein, einen Nonce-Wert zu speichern, der der Sequenz um mehrere Werte vorausliegt. Beispielsweise könnte der Nonce 100 gespeichert werden, woraufhin die Nonces 1 bis 99 für die Verschlüsselung verwendet werden könnten. Der Nonce-Wert 200 könnte zur gleichen Zeit gespeichert werden, in der die Nonces 1 bis 99 verwendet werden, und so weiter.

Viele Probleme mit Nonce-Wiederverwendung lassen sich vermeiden, indem der Schlüssel gewechselt wird, wenn die Nonce-Koordination schwierig ist.

Jeder AEAD-Algorithmus SOLLTE beschreiben, welche Sicherheitsverschlechterung aus einer unbeabsichtigten Wiederverwendung eines Nonce-Werts resultieren würde.