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
- BIP-39BIP-39 spécifie l'encodage d'une seed en 12-24 mots issus d'une wordlist (de 2048 mots). Standard universel des seeds. Inclut une passphrase optionnelle (« 25e mot »). Discuté car un peu daté mais omniprésent.
- Passphrase BIP-39La passphrase BIP-39, ou « 25e mot », est une phrase ajoutée à la seed pour générer un wallet distinct. Sans elle, un attaquant ayant la seed n'accède qu'à un wallet « leurre ». Elle doit avoir une forte entropie sinon elle se brute-force. Elle permet aussi le déni plausible.
- Seed phraseLa seed phrase (ou phrase de recuperation) est une suite de 12 ou 24 mots qui permet de restaurer l'acces a vos bitcoins. Elle genere mathematiquement toutes vos cles privees. C'est la sauvegarde ultime de votre portefeuille : quiconque la connait controle vos fonds. Elle doit etre stockee hors ligne, jamais photographiee ni partagee.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.