Benutzer:Beloumi/Schlüsselableitungsfunktion

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Schlüsselableitungsfunktionen erstellen aus einem Quellmaterial, beispielsweise einem Passwort oder einem Masterkey, einen oder mehrere kryptographisch starke Schlüssel. Je nachdem, ob das Quellmaterial eine geringe Entropie (Passwörter und Passphrasen) oder eine hohe Entropie (Masterkey) aufweist, stehen unterschiedliche Sicherheitsanforderungen im Vordergrund. Schlüsselableitungsfunktionen enthalten in der Regel als Kernbestandteil kryptologische Hashfunktionen; Ausnahmen sind die Funktion bcrypt, die auf der Blockverschlüsselung Blowfish und das SCKDF-Schema[1], das auf Stromverschlüsselungen basiert.

Schlüsselableitungsfunktionen ohne Passwörter

[Bearbeiten | Quelltext bearbeiten]

Wenn es sich bei dem Quellmaterial nicht um Passwörter oder Passphrasen handelt, folgen Schlüsselableitungsfunktionen in der Regel dem Paradigma extract-then-expand,[2] bei dem zunächst aus dem Material ein Schlüssel mit fester Länge abgeleitet wird (extract) und aus diesem dann weitere Schlüssel gewonnen werden (expand). Wenn das Quellmaterial über genügend Entropie verfügt und geheim ist, kann die Schlüsselextraktion wegfallen.

Schlüsselextraktion (randomness extraction)

[Bearbeiten | Quelltext bearbeiten]

Die Schlüsselextraktion leitet aus einem Quellmaterial, das nur teilweise geheim oder dessen Entropie ungleich verteilt ist, einen Schlüssel mit fester Länge ab. Das Ergebnis dieser Schlüsselextraktion kann dann entweder direkt verwendet oder zur nachfolgenden Schlüsselexpansion benutzt werden. Dafür geeignet sind unter anderem Blockverschlüsselungen im CBC-Modus, Hashfunktionen basierend auf der Merkle-Damgård Konstruktion oder im HMAC-Modus, in der Praxis werden dagegen oft einfache Hashfunktionen benutzt.[3] HMAC-basierte Hashfunktion sind für diesen Fall weitgehend anerkannt und erprobt; in diesen wird das Quellmaterial als HMAC-Nachricht und ein (optionaler) Salt als HMAC-Schlüssel verwendet.

Schlüsselexpansion

[Bearbeiten | Quelltext bearbeiten]

Wenn ein geheimes Quellmaterial mit ausreichend Entropie gegeben ist, können aus diesem durch die Schlüsselexpansion (key expansion) weitere Schlüssel gewonnen werden. Im Falle der HMAC-basierten Hashfunktion fungiert das Quellmaterial als HMAC-Schlüssel und als HMAC-Nachricht eine Verkettung des jeweils zuvor berechnete Wertes mit einem optionalen Kontextwert und einem Zähler.

Anwendungsbeispiele

[Bearbeiten | Quelltext bearbeiten]
  • Ableitung von Schlüsseln aus dem gemeinsam errechneten Wert im Diffie-Hellman-Schlüsselaustausch, wie in der IPSec.
  • Ableitung von Schlüsseln aus einem Seed, der aus physikalischem oder digitalem Rauschen (noise) oder aus Benutzereingaben gewonnen wird.

Passwort-Hashing oder Passwort-basierte Schlüsselableitungsfunktionen

[Bearbeiten | Quelltext bearbeiten]

Aus dem Passwort wird entweder ein kryptographischer Schlüssel für eine anschließende Verschlüsselung gewonnen (password based key derivation) oder ein Hashwert abgeleitet, der zum späteren Abgleich gespeichert wird (password storage), beispielsweise beim Login in ein System. Die beiden Anwendungsgebiete unterscheiden sich lediglich in der Aufbereitung des Hashwertes.

Passwörter oder Passphrasen weisen in der Regel eine geringe Entropie und oft auch eine geringe Länge auf. Schlüsselableitungsfunktionen für Passwörter bieten daher spezielle Angriffspunkte und unterscheiden sich in ihren Sicherheitsanforderungen von Schlüsselableitungsfunktionen aus anderen Quellen. Im Vordergrund stehen Wörterbuchangriffe, der Einsatz von Rainbow Tables und Brute-Force-Angriffe, wohingegen beispielsweise lineare oder differenzielle Kryptoanalysen eine untergeordnete Rolle spielen. Dementsprechend stehen die Performance-Anforderungen im Gegensatz zu den üblichen Leitlinien, möglichst schnell und Speicher-sparend zu berechnen: Wörterbuchangriffe und Brute-Force-Angriffe sind weniger aussichtsreich, wenn der Zeitaufwand für die Berechnung eines Schlüssels sehr hoch ist. Bei der legitimen Verwendung wird lediglich ein Schlüssel berechnet, daher fällt ein hoher Zeitaufwand weniger ins Gewicht, das Durchprobieren vieler Passwörter wird dagegen extrem aufwändig.

Der Einsatz spezieller Hardware wie GPUs, FPGAs und ASICs kann den Berechnungsaufwand wesentlich verringern, daher rückt die Eignung oder Nicht-Eignung für solche Hardware zunehmend in der Fokus.

Anwendungsbeispiele

[Bearbeiten | Quelltext bearbeiten]
  • das Einloggen autorisierter Personen mittels Passwort, beispielsweise die Anmeldung einen Webservice
  • Entschlüsselung von Systemen, Partitionen oder Dateien; dazu gehören auch Dateien, die Schlüssel für asymmetrische Verschlüsselungen enthalten
  • selbst-extrahierende und selbst-entschlüsselnde Dateien (self-decrypting archives) wie Passwort-Safes, die nach einer korrekten Passworteingabe beispielsweise einen Text anzeigen

Einzelne Passwort-basierte Schlüsselableitungsfunktionen

[Bearbeiten | Quelltext bearbeiten]

Am weitesten verbreitet und als einzige Funktion von der NIST standardisiert ist PBKDF2. Die Funktion bcrypt wurde etwa zur gleichen Zeit entwickelt und ist in vielen UNIX-artigen Systemen enthalten. Scrypt wurde erst 2010 publiziert und berücksichtigt als einzige Funktion mit einer gewissen Verbreitung den Einsatz spezialisierter Hardware. Neben diesen drei Funktionen konnte bisher keine andere Funktion Bedeutung erlangen. Dieser Umstand sowie die weit verbreitete Praxis, einfache Hashfunktionen zu verwenden, führten zu einem neuen Auswahlverfahren, angelehnt an das der Blockchiffre AES, der Password Hashing Competition.

  • IETF RFC 5869 HMAC-based Extract-and-Expand Key Derivation Function (HKDF) (englisch)
  • NIST Special Publication 800-56A: National Institute of Standards and Technology, "Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography (Revised)", NIST Special Publication 800-56A, March 2007.
  • NIST Special Publication 800-108: National Institute of Standards and Technology, "Recommendation for Key Derivation Using Pseudorandom Functions", NIST Special Publication 800-108, November 2008
  • The Future of Hashing. Überblick über Passwort-basierte Schlüsselableitungsfunktionen. englisch
  • Webseite der Password Hashing Competition.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Chai Wen Chuah, Edward Dawson, Leonie Simpson: Key Derivation Function: The SCKDF Scheme. In: Security and Privacy Protection in Information Processing Systems. Springer-Verlag Berlin Heidelberg 2013, S. 125-138, ISBN 978-3-642-39217-7
  2. Hugo Krawczyk: On Extract-then-Expand Key Derivation Functions and an HMAC-based KDF (2008) (pdf). englisch
  3. Yevgeniy Dodis , Rosario Gennaro , Hugo Krawczyk , Tal Rabin: Randomness extraction and key derivation using the CBC, cascade and HMAC modes (2004) (pdf). englisch