1. Introduction (Einführung)
1. Introduction (Einführung)
Eine Schlüsselableitungsfunktion (key derivation function, KDF) ist eine grundlegende und wesentliche Komponente kryptographischer Systeme. Ihr Ziel ist es, aus einer Quelle von initialem Schlüsselmaterial einen oder mehrere kryptographisch starke Geheimschlüssel abzuleiten.
Dieses Dokument spezifiziert eine einfache HMAC-basierte [HMAC] KDF namens HKDF, die als Baustein in verschiedenen Protokollen und Anwendungen verwendet werden kann und bereits in mehreren IETF-Protokollen verwendet wird, darunter [IKEv2], [PANA] und [EAP-AKA]. Der Zweck besteht darin, diese KDF auf allgemeine Weise zu dokumentieren, um die Übernahme in zukünftige Protokolle und Anwendungen zu erleichtern und die Verbreitung mehrerer KDF-Mechanismen zu verhindern. Es ist nicht als Aufruf zur Änderung bestehender Protokolle gedacht und ändert oder aktualisiert keine bestehenden Spezifikationen, die diese KDF verwenden.
HKDF folgt dem Paradigma "Extrahieren-dann-Expandieren" (extract-then-expand), wobei die KDF logisch aus zwei Modulen besteht. Die erste Stufe nimmt das Eingabeschlüsselmaterial und "extrahiert" daraus einen pseudozufälligen Schlüssel K fester Länge. Die zweite Stufe "expandiert" den Schlüssel K in mehrere zusätzliche pseudozufällige Schlüssel (die Ausgabe der KDF).
In vielen Anwendungen ist das Eingabeschlüsselmaterial nicht notwendigerweise gleichmäßig verteilt, und der Angreifer kann teilweise Kenntnisse darüber haben (zum Beispiel einen durch ein Schlüsselaustauschprotokoll berechneten Diffie-Hellman-Wert) oder sogar teilweise Kontrolle darüber haben (wie bei einigen Entropie-Sammelanwendungen). Daher besteht das Ziel der "Extraktions"-Stufe darin, die möglicherweise verteilte Entropie des Eingabeschlüsselmaterials in einen kurzen, aber kryptographisch starken pseudozufälligen Schlüssel zu "konzentrieren". In einigen Anwendungen kann die Eingabe bereits ein guter pseudozufälliger Schlüssel sein; in diesen Fällen ist die "Extraktions"-Stufe nicht erforderlich, und der "Expansions"-Teil kann allein verwendet werden.
Die zweite Stufe "expandiert" den pseudozufälligen Schlüssel auf die gewünschte Länge; die Anzahl und Längen der Ausgabeschlüssel hängen von den spezifischen kryptographischen Algorithmen ab, für die die Schlüssel benötigt werden.
Beachten Sie, dass einige bestehende KDF-Spezifikationen, wie NIST Special Publication 800-56A [800-56A], NIST Special Publication 800-108 [800-108] und IEEE Standard 1363a-2004 [1363a], entweder nur die zweite Stufe (Expansion eines pseudozufälligen Schlüssels) betrachten oder nicht explizit zwischen den "Extraktions-" und "Expansions"-Stufen unterscheiden, was oft zu Designmängeln führt. Das Ziel dieser Spezifikation ist es, eine breite Palette von KDF-Anforderungen zu erfüllen und gleichzeitig die Annahmen über die zugrunde liegende Hash-Funktion zu minimieren. Das "Extrahieren-dann-Expandieren"-Paradigma unterstützt dieses Ziel gut (siehe [HKDF-paper] für weitere Informationen zur Designbegründung).