4.2.3. Datensatznummer-Verschlüsselung
4.2.3. Datensatznummer-Verschlüsselung (Record Number Encryption)
In DTLS 1.3 werden, wenn Datensätze verschlüsselt werden, auch Datensatz-Sequenznummern verschlüsselt. Das grundlegende Muster ist, dass der zugrunde liegende Verschlüsselungsalgorithmus, der mit dem AEAD-Algorithmus verwendet wird, zur Erzeugung einer Maske verwendet wird, die dann mit der Sequenznummer XOR-verknüpft wird.
Wenn die AEAD auf AES basiert, wird die Maske durch Berechnung von AES-ECB auf den ersten 16 Bytes des Chiffretexts erzeugt:
Mask = AES-ECB(sn_key, Ciphertext[0..15])
Wenn die AEAD auf ChaCha20 basiert, wird die Maske erzeugt, indem die ersten 4 Bytes des Chiffretexts als Blockzähler und die nächsten 12 Bytes als Nonce behandelt werden und diese an die ChaCha20-Blockfunktion (Abschnitt 2.3 von [CHACHA]) übergeben werden:
Mask = ChaCha20(sn_key, Ciphertext[0..3], Ciphertext[4..15])
Der sn_key wird wie folgt berechnet:
[sender]_sn_key = HKDF-Expand-Label(Secret, "sn", "", key_length)
[sender] bezeichnet die sendende Seite. Der zu verwendende Secret-Wert pro Epoche wird in Abschnitt 7.3 von [TLS13] beschrieben. Beachten Sie, dass für jede Epoche ein neuer Schlüssel verwendet wird: Da die Epoche im Klartext gesendet wird, führt dies nicht zu Mehrdeutigkeiten.
Die verschlüsselte Sequenznummer wird durch XOR-Verknüpfung der führenden Bytes der Maske mit der Drahtdarstellung der Sequenznummer berechnet. Die Entschlüsselung erfolgt durch denselben Prozess.
Dieses Verfahren erfordert, dass die Chiffretextlänge mindestens 16 Bytes beträgt. Empfänger MÜSSEN kürzere Datensätze ablehnen, als ob sie die Entschützung fehlgeschlagen wären, wie in Abschnitt 4.5.2 beschrieben. Sender MÜSSEN kurze Klartexte auffüllen (unter Verwendung des herkömmlichen Datensatz-Auffüllmechanismus), um einen Chiffretext geeigneter Länge zu erzeugen. Beachten Sie, dass die meisten DTLS-AEAD-Algorithmen ein 16-Byte-Authentifizierungs-Tag haben und keine Auffüllung benötigen. Einige Algorithmen, wie TLS_AES_128_CCM_8_SHA256, haben jedoch ein kürzeres Authentifizierungs-Tag und erfordern möglicherweise eine Auffüllung für kurze Eingaben.
Zukünftige Cipher-Suites, die nicht auf AES oder ChaCha20 basieren, MÜSSEN ihre eigene Datensatz-Sequenznummernverschlüsselung definieren, um mit DTLS verwendet werden zu können.
Beachten Sie, dass die Sequenznummernverschlüsselung nur auf die DTLSCiphertext-Struktur angewendet wird und nicht auf die DTLSPlaintext-Struktur, obwohl sie auch eine Sequenznummer enthält.