Key Derivation Function: Unterschied zwischen den Versionen

Aus IT-Forensik Wiki
(Die Seite wurde neu angelegt: „== Key Derivation Function == === Einleitung === Eine Schlüsselableitungsfunktion (engl. Key Derivation Function, KDF) ist eine grundlegende und wesentliche…“)
 
 
Zeile 15: Zeile 15:
=== Hashbasierte-KDFs ===
=== Hashbasierte-KDFs ===


Die Funktionalität von Hashbasierten-KDFs überschneidet sich mit der von Hash-
Die Funktionalität von Hashbasierten-KDFs überschneidet sich mit der von Hashfunktionen. Allgemein besitzt eine Hashfunktion folgende Eigenschaften[2]:
funktionen. Allgemein besitzt eine Hashfunktion folgende Eigenschaften[2]:
* Sie verschlüsselt Daten deterministisch (gleiche Eingabe, gleiche Ausgabe)
* Sie verschlüsselt Daten deterministisch (gleiche Eingabe, gleiche Ausgabe)
* Unabhängig von der Eingabe hat die Ausgabe einer Hash-Funktion immer die gleiche Größe.
* Unabhängig von der Eingabe hat die Ausgabe einer Hashfunktion immer die gleiche Größe.
* Anhand der Ausgabe lässt sich nicht die Eingabe berechnen (Einwegfunktion)
* Anhand der Ausgabe lässt sich nicht die Eingabe berechnen (Einwegfunktion)



Aktuelle Version vom 13. Juli 2023, 19:19 Uhr

Key Derivation Function

Einleitung

Eine Schlüsselableitungsfunktion (engl. Key Derivation Function, KDF) ist eine grundlegende und wesentliche Komponente kryptographischer Systeme[1]. Sie wird verwendet um einen oder mehrere einheitliche geheime Schlüssel aus einem geheimen Wert wie z.B. einem Passwort zu generieren. Für die Schlüsselgenerierung wird eine Pseudozufallsfunktion verwendet. Die Pseudozufallsfunktion ist typischerweise eine kryptografische Hash-Funktion, Stromverschlüsselung oder Blockverschlüsselung. In der Praxis werden KDFs eingesetzt um Schlüssel in längere Schlüssel (und damit sicherere Schlüssel) umzuwandeln oder um Schlüssel in ein einheitliches Format zu transformieren.

Hashbasierte-KDFs

Die Funktionalität von Hashbasierten-KDFs überschneidet sich mit der von Hashfunktionen. Allgemein besitzt eine Hashfunktion folgende Eigenschaften[2]:

  • Sie verschlüsselt Daten deterministisch (gleiche Eingabe, gleiche Ausgabe)
  • Unabhängig von der Eingabe hat die Ausgabe einer Hashfunktion immer die gleiche Größe.
  • Anhand der Ausgabe lässt sich nicht die Eingabe berechnen (Einwegfunktion)

Hashbasierte KDFs erweitern diese Eigenschaften um folgende Funktionalitäten:

  • Key Stretching: Ein Schlüssel mit geringer Entropie (Sicherheit oder Zufälligkeit) wird in einen längeren, sichereren Schlüssel zu umgewandelt.
  • Key Separation: KDFs ermöglichen die Erstellung von Unterschlüsseln auseinem Hauptschlüssel. Dies kann in Anwendungen wie Bitcoinverwendet werden, wo Unterschlüssel Teile einer Wallet kontrollieren können. Allerdings hat nur der Hauptschlüssel die volle Kontrolle. Erreicht wird dies durch die Verwendung verschiedener Salts (Zufälligkeit).
  • Key Strengthening: Beim Key Strengthening wird ein Schlüssel um einen zufälligen Salt erweitert, der dann aber gelöscht wird, so dass dieser nicht mehr für eine Analyse verwendet werden kann. Dadurch wird der resultierende Schlüssel stärker, ohne dem System wesentliche Schwachstellen hinzuzufüge

Anwendungsbeispiele

  • Diffie-Hellmann: Der Diffie-Hellman-Schlüsselaustausch erzeugt aus zufällig ausgewählten Geheimnissen ein gemeinsames Geheimnis, das zwar zufällig aber nicht gleichmäßig verteilt ist. Um dieses Geheimnis als symmetrischen Schlüssel zu verwenden, wird auf das gemeinsame Geheimnis eine Schlüsselableitungsfunktion angewandt.
  • Zufallszahlengeneratoren: Kryptografische Zufallszahlengeneratoren aktualisieren sich in regelmäßigen Abständen mit Hilfe von zufälligen Werten. Diese werden durch die Messung von Zufallsereignissen wie Oszillatorzuständen, Netzpakettaktung, Mausbewegungen oder Tastatureingaben gewonnen. Diese Ereignisse sind nicht einheitlich, so dass eine KDF verwendet werden kann, um die Ausgabe zu vereinheitlichen[3].
  • Passwort-Hashing: Passwörter sind nicht einheitlich, daher werden KDFs verwendet, um Passwörter in Schlüssel umzuwandeln. In diesem Fall werden spezielle passwortbasierte KDFs benutzt, welche einen Leistungsnachweis erzwingen, wodurch Brute-Force-Angriffe enorm erschwert werden[4].

Mit Stand vom Mai 2023 empfiehlt OWASP die folgenden KDFs für das Hashing von Passwörtern, aufgelistet in der Reihenfolge ihrer Priorität[5]:

  1. Argon2id
  2. scrypt, wenn Argon2id nicht verfügbar ist
  3. bcrypt für Altsysteme
  4. PBKDF2, wenn FIPS-140-Konformität erforderlich ist

Quellen

  1. Hugo Krawczyk. Cryptographic Extraction and Key Derivation: The HKDF Scheme. Cryptology ePrint Archive, Paper 2010/264. https://eprint.iacr.org/2010/264. 2010. url: https://eprint.iacr.org/2010/264
  2. Part 3: Step-by-step Tooling for iOS Research (via @bizzybarney). 2021. url: http : / / www . mac4n6 . com / blog / 2021 / 3 / 21 / part - 3 - step - by - step -tooling-for-ios-research-via-bizzybarney (Abruf vom 13. 07. 2023).
  3. Key derivation functions (KDF): What are they, what are their main purposes and how they can be used? 2016. url:https://crypto.stackexchange.com/a/40767/110359 (Abruf vom 11. 07. 2023).
  4. Thomas Ptacek. Applied Cryptography Engineering. 2013. url: https: //sockpuppet.org/blog/2013/07/22/applied-practical-cryptography/(Abruf vom 13. 07. 2023).
  5. Password Storage Cheat Sheet. 2023. url: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html (Abruf vom 11. 07. 2023)