For faster navigation, this Iframe is preloading the Wikiwand page for PBKDF2.

PBKDF2

Password-Based Key Derivation Function 2
Description de l'image Pbkdf2 nist.png.
Résumé
Concepteur(s) Laboratoires RSA
Première publication 2000
Dérivé de PBKDF1
Chiffrement(s) basé(s) sur cet algorithme aucun
Caractéristiques
Taille(s) du bloc Dépend de la fonction cryptographique associée
Longueur(s) de la clé Au choix de l'utilisateur
Structure inconnue
Nombre de tours Au choix de l'utilisateur

Meilleure cryptanalyse

aucune cryptanalyse connue

Le PBKDF2 (abréviation de Password-Based Key Derivation Function 2) est une fonction de dérivation de clé, appartenant à la famille des normes Public Key Cryptographic Standards, plus précisément PKCS #5 v2.0. Cette norme a également été publiée dans la RFC 2898. Elle succède au PBKDF1, qui pouvait produire des clés n'allant que jusqu'à 160 bits.

Cette norme est aujourd'hui utilisée pour le hachage de mot de passe (associé à des fonctions comme SHA-256) ou la génération de clé de chiffrement de données.

Le PBKDF2 applique une fonction choisie par l'utilisateur (fonction de hachage, de chiffrement ou un HMAC) à un mot de passe ou une phrase secrète avec un sel et répète cette opération plusieurs fois afin de générer une clé, qui peut être ensuite utilisée pour chiffrer un quelconque contenu.

Cette génération rajoute du temps de calcul qui complique le cassage du mot de passe, notamment par force brute. À la publication de la norme, en 2000, le nombre d'itérations recommandées était de 1 000. Ce paramètre est prévu pour être augmenté au fur et à mesure que les processeurs s'améliorent et deviennent plus performants. Le sel ajouté permet d'éviter l'utilisation de rainbow tables et donc limite les attaques sur plusieurs mots de passe en simultané[1].

Fonction de dérivation

[modifier | modifier le code]

La fonction a cinq paramètres en entrée :

DK = PBKDF2(PRF, Password, Salt, c, dkLen)
  • PRF est la fonction pseudo-aléatoire à utiliser à chaque itération
  • Password est la chaîne à partir de laquelle il faut dériver la clé
  • Salt est le sel pour la fonction cryptographique
  • c est le nombre d'itérations à effectuer
  • dkLen est la taille de clé désirée

Le résultat DK est notre clé dérivée.

On prend tout d'abord la taille hLen, qui correspond à la taille, en bits, de sortie de la fonction PRF. Puis chaque bloc Ti de hLen bits de la clé DK est calculé :

DK = T1 || T2 || ... || Tdklen/hlen
Ti = F(Password, Salt, c, i)

La fonction F est la combinaison de c itérations de la fonction PRF avec des XOR. La première itération utilise le mot de passe et le sel Salt concaténé avec le nombre d'itérations i. Ensuite, la fonction PRF prend le mot de passe original comme clé et le résultat de l'itération précédente en sel. On obtient le schéma suivant :

F(Password, Salt, c, i) = U1 ^ U2 ^ ... ^ Uc

U1 = PRF(Password, Salt || INT_32_BE(i))
U2 = PRF(Password, U1)
...
Uc = PRF(Password, Uc-1)

Par exemple, le WPA2 utilise :

DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)

Utilisations

[modifier | modifier le code]

Plusieurs applications utilisent cette fonction pour dériver leur clé de chiffrement de bout-en-bout tout en garantissant à l'utilisateur une synchronisation des données entre appareils, tel que Bitwarden[2], Standard Notes[3] ou encore le gestionnaire de mots de passe 1Password[4],[5].

Notes et références

[modifier | modifier le code]
(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « PBKDF2 » (voir la liste des auteurs).
  1. « PBKDF2 et génération des clés de chiffrement de disque » (consulté le )
  2. « What encryption is being used? | Bitwarden Help & Support », sur help.bitwarden.com (consulté le )
  3. « How does Standard Notes secure my notes? », sur standardnotes.org (consulté le )
  4. (en) Oliver Haslam, « Are password managers safe to use? », 1Password Blog,‎ (lire en ligne)
  5. (en) Jeffrey Goldberg, « 1Password hashcat strong master passwords », 1Password Blog,‎ (lire en ligne)

Articles connexes

[modifier | modifier le code]
{{bottomLinkPreText}} {{bottomLinkText}}
PBKDF2
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?