Password-Based Key Derivation Function 2 est une fonction déterministe paramétrée par l’entrée, le sel, le nombre d’itérations, la fonction pseudo-aléatoire et la longueur de sortie. BIP39 fixe un profil PBKDF2-HMAC-SHA512 précis, pas toutes les applications possibles de PBKDF2.
L’entrée appelée password est la phrase mnémonique en UTF-8 NFKD. Le sel est mnemonic + passphrase, également en UTF-8 NFKD ; sans passphrase, une valeur vide est ajoutée. BIP39 impose HMAC-SHA512, 2048 itérations et 64 octets, soit 512 bits de sortie. [BIP39 — Mnemonic generation and seed conversion]
PBKDF2 crée le premier résultat intermédiaire à partir de l’entrée mot de passe, du sel et de l’indice du bloc de sortie. Les suivants appliquent la même fonction pseudo-aléatoire au résultat précédent ; les valeurs sont combinées par XOR. Avec HMAC-SHA512, un bloc fait 64 octets, donc BIP39 utilise un bloc. Appliquer simplement SHA-512 au texte 2048 fois ne suffit pas. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]
Des entrées normalisées et paramètres identiques produisent le même seed. Augmenter arbitrairement les 2048 itérations ou changer la fonction lors de la restauration n’améliore pas la sécurité du portefeuille existant : le résultat ne correspond plus à la dérivation BIP39 prescrite. Traduire les mots dans une autre liste n’est pas non plus neutre. [BIP39 — Mnemonic generation and seed conversion]
Les itérations augmentent le travail par essai, sans ajouter d’aléa secret indépendant. Avec les mots et des données de comparaison du portefeuille, un attaquant peut essayer des passphrases faibles hors ligne. Une sortie de 512 bits n’offre donc pas nécessairement une protection équivalente à 512 bits d’entropie, et 2048 n’est pas une recommandation universelle pour les nouveaux systèmes. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]
Le checksum BIP39 aide à détecter les erreurs dans les mots avant utilisation. La conversion PBKDF2 est distincte de la génération et du contrôle de la phrase ; elle ne certifie pas que la passphrase correspond au portefeuille recherché. BIP32 ou d’autres méthodes déterministes peuvent ensuite utiliser le seed dans une étape supplémentaire. [BIP39 — Mnemonic generation and seed conversion]
Les vecteurs publics BIP39 indiquent l’entropie, les mots et le seed attendu avec la passphrase de test TREZOR. Une implémentation correcte doit reproduire toute la sortie et respecter NFKD. Ces entrées connues ne doivent jamais servir de sauvegarde personnelle pour des fonds ; un test conforme ne vérifie pas non plus à lui seul la sécurité de toute l’application. [BIP39 — Mnemonic generation and seed conversion]
Pour une vision complète, lisez aussi BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. Cette entrée est également citée par BIP39 passphrase.