En cryptographie, une fonction de dérivation de clé (en anglais, key derivation function ou KDF) est une fonction qui dérive une ou plusieurs clés secrètes d'une valeur secrète comme un mot de passe ou une phrase secrète en utilisant une fonction pseudo-aléatoire[1],[2].
Les fonctions de dérivation de clé peuvent être utilisées pour renforcer des clés en les étirant ou pour obtenir des clés d'un certain format.
Les fonctions de dérivation de clé sont souvent utilisées conjointement avec des paramètres non secrets (appelés sels cryptographiques) pour dériver une ou plusieurs clés à partir d'une valeur secrète. Une telle utilisation peut empêcher un attaquant qui obtient une clé dérivée d'apprendre des informations utiles sur la valeur de clé originale ou sur l'une quelconque des autres clés dérivées.
Les fonctions de dérivation de clé peuvent également être utilisées pour s'assurer que les clés dérivées ont d'autres propriétés souhaitables, telles que l'évitement des clés faibles dans certains systèmes de chiffrement.
L'utilisation la plus courante de fonctions de dérivation de clé est le hachage de mot de passe dans le processus de vérification de mot de passe. Les fonctions de dérivation de clé ont les caractéristiques souhaitées pour une fonction de hachage de mot de passe, même si elles n'ont pas été conçues à cet effet à l'origine.
Les fonctions de dérivation de clé sont également utilisées pour dériver des clés cryptographiques à partir de mots de passe secrets ou de phrases secrètes, qui n'ont généralement pas les propriétés souhaitées pour des clés cryptographiques. On parle alors d'étirement de clé. Dans de telles applications, il est recommandé que la fonction de dérivation de clé soit délibérément lente afin de contrer une attaque par dictionnaire ou une attaque par force brute sur le mot de passe ou la phrase secrète d'entrée.