Zum Hauptinhalt springen

5. Schlüsselableitungsfunktionen

  1. Schlüsselableitungsfunktionen (KDFs)

Abschnitt 8.4 von [RFC9052] enthält eine allgemeine Beschreibung von Schlüsselableitungsfunktionen. Dieses Dokument definiert eine einzelne Kontextstruktur und eine einzelne KDF. Diese Elemente werden für alle in diesem Dokument definierten Empfängeralgorithmen verwendet, die einen KDF-Prozess erfordern. Diese Algorithmen sind in den Abschnitten 6.1.2, 6.3.1 und 6.4.1 definiert.

5.1. HMAC-basierte Extract-and-Expand-Schlüsselableitungsfunktion (HKDF)

Der HKDF-Schlüsselableitungsalgorithmus ist in [RFC5869] und [HKDF] definiert.

Der HKDF-Algorithmus akzeptiert diese Eingaben:

secret: Ein gemeinsamer Wert, der geheim ist. Geheimnisse können entweder zuvor geteilt oder aus Operationen wie einer Diffie-Hellman (DH)-Schlüsselvereinbarung abgeleitet werden.

salt: Ein optionaler Wert, der verwendet wird, um den Erzeugungsprozess zu ändern. Der Salt-Wert kann entweder öffentlich oder privat sein. Wenn das Salt öffentlich ist und in der Nachricht übertragen wird, wird der in Tabelle 9 definierte "salt"-Algorithmus-Header-Parameter verwendet. Während [RFC5869] vorschlägt, dass die Länge des Salt gleich der Länge des zugrunde liegenden Hash-Werts sein sollte, verbessert jede positive Salt-Länge die Sicherheit, da unterschiedliche Schlüsselwerte generiert werden. Dieser Parameter wird geschützt, indem er in die Schlüsselberechnung einbezogen wird, und muss nicht separat authentifiziert werden. Der Salt-Wert muss nicht für jede gesendete Nachricht eindeutig sein.

length: Die Anzahl der Ausgabebytes, die generiert werden müssen.

context information: Informationen, die den Kontext beschreiben, in dem der resultierende Wert verwendet wird. Wenn diese Informationen spezifisch für den Kontext gemacht werden, in dem das Material verwendet wird, wird sichergestellt, dass das resultierende Material immer an diese Verwendung gebunden ist. Die in Abschnitt 5.2 definierte Kontextstruktur wird von den KDFs in diesem Dokument verwendet.

PRF: Die zugrunde liegende Pseudozufallsfunktion, die im HKDF-Algorithmus verwendet werden soll. Die PRF ist in der HKDF-Algorithmusauswahl codiert.

HKDF ist so definiert, dass HMAC als zugrunde liegende PRF verwendet wird. Es ist jedoch möglich, andere Funktionen im gleichen Konstrukt zu verwenden, um eine andere KDF bereitzustellen, die in der eingeschränkten Welt angemessener ist. Insbesondere kann man AES-CBC-MAC als PRF für den Expand-Schritt verwenden, jedoch nicht für den Extract-Schritt. Bei Verwendung eines guten zufälligen gemeinsamen Geheimnisses der richtigen Länge kann der Extract-Schritt übersprungen werden. Für die AES-Algorithmusversionen wird der Extract-Schritt immer übersprungen.

Der Extract-Schritt kann nicht übersprungen werden, wenn das Geheimnis nicht gleichmäßig zufällig ist – zum Beispiel, wenn es das Ergebnis eines ECDH-Schlüsselvereinbarungsschritts ist. Dies impliziert, dass die AES-HKDF-Version nicht mit ECDH verwendet werden kann. Wenn der Extract-Schritt übersprungen wird, wird der "salt"-Wert nicht als Teil der HKDF-Funktionalität verwendet.

Die in diesem Dokument definierten Algorithmen finden sich in Tabelle 8.

   +==============+===================+========================+
| Name | PRF | Beschreibung |
+==============+===================+========================+
| HKDF SHA-256 | HMAC mit SHA-256 | HKDF unter Verwendung |
| | | von HMAC SHA-256 |
+--------------+-------------------+------------------------+
| HKDF SHA-512 | HMAC mit SHA-512 | HKDF unter Verwendung |
| | | von HMAC SHA-512 |
+--------------+-------------------+------------------------+
| HKDF AES- | AES-CBC-MAC-128 | HKDF unter Verwendung |
| MAC-128 | | von AES-MAC (128-bit) |
+--------------+-------------------+------------------------+
| HKDF AES- | AES-CBC-MAC-256 | HKDF unter Verwendung |
| MAC-256 | | von AES-MAC (256-bit) |
+--------------+-------------------+------------------------+

Tabelle 8: HKDF-Algorithmen