2.1. Authenticated Encryption (Authentifizierte Verschlüsselung)
2.1. Authenticated Encryption (Authentifizierte Verschlüsselung)
Die Operation der authentifizierten Verschlüsselung hat vier Eingaben, von denen jede ein Oktettstring ist:
Ein geheimer Schlüssel K, der so erzeugt werden MUSS, dass er gleichverteilt zufällig oder pseudozufällig ist.
Eine Nonce N. Jede Nonce, die unterschiedlichen Aufrufen der Operation Authentifizierte Verschlüsselung übergeben wird, MUSS für einen bestimmten Wert des Schlüssels unterschiedlich sein, es sei denn, jede einzelne Nonce hat die Länge null. Anwendungen, die unterschiedliche Nonces erzeugen können, SOLLTEN die in Abschnitt 3.2 definierte Nonce-Bildungsmethode verwenden und KÖNNEN jede andere Methode nutzen, die die Eindeutigkeitsanforderung erfüllt. Andere Anwendungen SOLLTEN Nonces der Länge null verwenden.
Ein Klartext P (plaintext), der die zu verschlüsselnden und zu authentifizierenden Daten enthält.
Die zugehörigen Daten A (associated data), die die zu authentifizierenden, aber nicht zu verschlüsselnden Daten enthalten.
Es gibt eine einzige Ausgabe:
Ein Geheimtext C (ciphertext), der mindestens so lang wie der Klartext ist, oder
eine Anzeige, dass die angeforderte Verschlüsselungsoperation nicht ausgeführt werden konnte.
Alle Ein- und Ausgaben sind Oktettstrings variabler Länge, deren Längen folgenden Einschränkungen unterliegen:
Die Anzahl der Oktette im Schlüssel K liegt zwischen 1 und 255. Für jeden AEAD-Algorithmus MUSS die Länge von K fest sein.
Für einen bestimmten Wert des Schlüssels gilt entweder 1) jede Nonce, die unterschiedlichen Aufrufen der Operation Authentifizierte Verschlüsselung übergeben wird, MUSS unterschiedlich sein, oder 2) jede einzelne Nonce MUSS die Länge null haben. Werden mit einem bestimmten Schlüssel Nonces der Länge null verwendet, MUSS jede einzelne Nonce mit diesem Schlüssel die Länge null haben. Andernfalls SOLLTE die Anzahl der Oktette in der Nonce zwölf (12) betragen. Nonces unterschiedlicher Länge KÖNNEN mit einem bestimmten Schlüssel verwendet werden. Einige Algorithmen können nicht mit Nonces der Länge null verwendet werden, andere schon; siehe Abschnitt 4. Anwendungen, die der empfohlenen Nonce-Länge entsprechen, vermeiden es, Nonces unterschiedlicher Länge konstruieren zu müssen, abhängig vom verwendeten Algorithmus. Diese Hinweise helfen, algorithmusspezifische Logik aus den Anwendungen herauszuhalten.
Die Anzahl der Oktette im Klartext P KANN null sein.
Die Anzahl der Oktette in den zugehörigen Daten A KANN null sein.
Die Anzahl der Oktette im Geheimtext C KANN null sein.
Diese Spezifikation legt keine maximale Länge für Nonce, Klartext, Geheimtext oder die zusätzlichen authentifizierten Daten fest. Ein bestimmter AEAD-Algorithmus KANN die Längen dieser Ein- und Ausgaben jedoch weiter einschränken. Eine bestimmte AEAD-Implementierung KANN die Längen ihrer Ein- und Ausgaben weiter einschränken. Wird eine bestimmte Implementierung eines AEAD-Algorithmus aufgefordert, eine Eingabe zu verarbeiten, die außerhalb des zulässigen Längenbereichs liegt oder außerhalb des von dieser Implementierung unterstützten Längenbereichs, MUSS sie einen Fehlercode zurückgeben und DARF KEINE weiteren Informationen ausgeben. Insbesondere DÜRFEN teilweise verschlüsselte oder teilweise entschlüsselte Daten NICHT zurückgegeben werden.
Sowohl Vertraulichkeit als auch Nachrichtenauthentifizierung werden für den Klartext P bereitgestellt. Ist die Länge von P null, wirkt der AEAD-Algorithmus wie ein Message Authentication Code (MAC) auf die Eingabe A.
Die zugehörigen Daten A dienen dazu, Informationen zu schützen, die authentifiziert, aber nicht vertraulich gehalten werden müssen. Beispielsweise könnte diese Eingabe beim Einsatz eines AEAD zur Absicherung eines Netzwerkprotokolls Adressen, Ports, Sequenznummern, Protokollversionsnummern und andere Felder umfassen, die angeben, wie mit Klartext oder Geheimtext umzugehen, weiterzuleiten oder zu verarbeiten ist. In vielen Situationen ist es wünschenswert, diese Felder zu authentifizieren, obwohl sie im Klartext bleiben müssen, damit das Netzwerk oder System ordnungsgemäß funktioniert. Werden diese Daten in die Eingabe A aufgenommen, wird Authentifizierung bereitgestellt, ohne die Daten in den Klartext zu kopieren.
Der geheime Schlüssel K DARF NICHT in eine der anderen Eingaben (N, P und A) aufgenommen werden. (Diese Einschränkung bedeutet nicht, dass die Werte dieser Eingaben daraufhin geprüft werden müssen, ob sie keine Teilstrings enthalten, die dem Schlüssel entsprechen; vielmehr bedeutet sie, dass der Schlüssel nicht ausdrücklich in diese Eingaben kopiert werden darf.)
Die Nonce wird intern im Algorithmus authentifiziert, und es ist nicht nötig, sie in die AD-Eingabe aufzunehmen. Die Nonce KANN in P oder A enthalten sein, wenn das für die Anwendung praktisch ist.
Die Nonce KANN zusammen mit dem Geheimtext gespeichert oder übertragen werden, oder sie KANN unmittelbar vor der Operation der authentifizierten Entschlüsselung rekonstruiert werden. Es genügt, dem Entschlüsselungsmodul genügend Informationen zu geben, damit es die Nonce konstruieren kann. (Beispielsweise könnte ein System eine Nonce verwenden, die aus einer Sequenznummer in einem bestimmten Format besteht, in welchem Fall sie aus der Reihenfolge der Geheimtexte erschlossen werden kann.) Da der authentifizierte Entschlüsselungsprozess falsche Nonce-Werte erkennt, tritt kein Sicherheitsfehler auf, wenn eine Nonce falsch rekonstruiert und einer authentifizierten Entschlüsselungsoperation zugeführt wird. Jede Methode zur Nonce-Rekonstruktion muss die Möglichkeit berücksichtigen, dass Geheimtexte zwischen Verschlüsselung und Entschlüsselung verloren gehen oder umsortiert werden.
Anwendungen DÜRFEN KEINE bestimmte Struktur oder Formatierung des Geheimtexts unterstellen.