Aller au contenu principal
Cryptographie

PBKDF2

PBKDF2 (Password-Based Key Derivation Function 2) dérive une clé robuste à partir d'un mot de passe. Bitcoin l'utilise dans BIP-39 pour transformer la phrase mnémonique et la passphrase en seed. 2048 itérations rendent les attaques par force brute coûteuses. C'est ce qui fait toute la sécurité de la passphrase.

Définition et origine

PBKDF2 (Password-Based Key Derivation Function 2) est une fonction de dérivation de clé standardisée par RSA Laboratories dans le PKCS #5 v2.0 en 2000, puis adoptée par l'IETF dans le RFC 2898 et le RFC 8018. Son objectif : transformer un mot de passe (faible et de taille variable) en une clé cryptographique robuste, prête à servir de matériau pour le chiffrement ou la signature.

Principe de fonctionnement

PBKDF2 prend quatre entrées :

| Entrée | Rôle | |--------|------| | Mot de passe | Secret de l'utilisateur | | Salt | Donnée aléatoire ou contextuelle | | Iterations | Nombre de répétitions de la PRF | | Output length | Taille de la clé de sortie |

L'algorithme effectue N itérations d'une fonction pseudo-aléatoire (PRF), généralement HMAC-SHA-256 ou HMAC-SHA-512. Chaque itération combine la sortie précédente avec le mot de passe et le sel, rendant le calcul inarrêtablement coûteux sans le mot de passe.

Usage dans Bitcoin (BIP-39)

Le BIP-39 utilise PBKDF2-HMAC-SHA512 avec :

password   = phrase mnémonique (12 à 24 mots)
salt       = "mnemonic" + passphrase (vide par défaut)
iterations = 2048
output     = 512 bits (la graine BIP-32)

C'est précisément ce mécanisme qui :

  • Transforme une phrase mnémonique en graine cryptographique.
  • Permet à la passphrase BIP-39 de générer un wallet entièrement différent.
  • Ralentit le brute force de la passphrase.

Sécurité : le coût des itérations

PBKDF2 mise sur la lenteur calculée. Plus d'itérations = plus difficile à brute-forcer :

| Iterations | Temps CPU (1 thread) | Coût brute force 2^80 | |------------|---------------------|------------------------| | 1 | 0,001 ms | Quelques heures | | 1 000 | 1 ms | Plusieurs années | | 2 048 (BIP-39) | ~2 ms | Réaliste mais coûteux | | 100 000 (WPA2) | ~100 ms | Vraiment cher |

Le choix de 2 048 itérations pour BIP-39 est un compromis daté (2013) qui privilégie les wallets sur mobiles peu puissants. Aujourd'hui, c'est jugé un peu faible : un attaquant disposant de GPU/FPGA peut tester des milliards de candidates par seconde sur la passphrase.

Limites

  • Pas memory-hard : un attaquant peut paralléliser massivement sur GPU/ASIC.
  • Faible coût mémoire : permet du brute force économique.
  • 2048 itérations : confortable en 2013, modeste en 2025.

Alternatives modernes

Plusieurs fonctions de dérivation post-PBKDF2 corrigent ces limites :

  • scrypt (2009) : memory-hard, plus résistant aux GPU/ASIC.
  • bcrypt : longtemps standard de hash mot de passe web.
  • Argon2 (2015) : vainqueur du Password Hashing Competition, recommandé par OWASP.

Certains projets (Stratis, des wallets propriétaires) utilisent scrypt ou Argon2, mais BIP-39 reste figé sur PBKDF2 pour compatibilité.

Implications pratiques

Pour qu'une passphrase BIP-39 soit réellement sûre :

  • Utiliser au moins 6 mots aléatoires Diceware (~78 bits d'entropie).
  • Ne pas compter sur PBKDF2 seul pour protéger un mot de passe faible.
  • Considérer la passphrase comme un vrai secret cryptographique, pas un PIN.

À retenir

PBKDF2 est la pierre angulaire de la sécurité de BIP-39 : sans lui, une phrase mnémonique brute serait beaucoup plus exposée aux attaques. Mais sa modestie en termes d'itérations rappelle que c'est l'entropie de votre passphrase qui fait la vraie différence, pas l'algorithme.

Termes lies

← Retour au glossaire complet

Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.