Le problème : les mots de passe ne sont pas des clés cryptographiques
Lorsque vous choisissez un mot de passe comme « SeedCrypt2026! » pour chiffrer votre seed phrase, cette chaîne n'est pas, telle quelle, une clé de chiffrement AES-256 utilisable. AES-256 exige une clé de précisément 256 bits (32 octets), et attend que cette clé ait une entropie élevée (aléatoire) répartie sur tous ses bits.
Un mot de passe choisi par un humain a généralement beaucoup moins d'entropie qu'une clé de 256 bits entièrement aléatoire. Un mot de passe alphanumérique mixte de 16 caractères a au mieux environ 95 bits d'entropie, nettement moins que les 256 bits qu'AES-256 est conçu pour utiliser. Simplement hacher le mot de passe une fois et utiliser le hachage comme clé n'est pas non plus suffisant, car une seule opération de hachage est extrêmement rapide ; les GPU modernes peuvent calculer des milliards de hachages SHA-256 par seconde.
C'est là qu'interviennent les fonctions de dérivation de clé (KDF). Leur rôle est de transformer un mot de passe mémorisable par un humain en une clé cryptographique appropriée tout en rendant la transformation suffisamment coûteuse en calcul pour contrecarrer les attaques par force brute.
Qu'est-ce que PBKDF2 ?
PBKDF2 signifie Password-Based Key Derivation Function 2 (Fonction de dérivation de clé basée sur un mot de passe 2). Elle a été définie dans la RFC 2898 et est normalisée par le NIST dans le cadre du SP 800-132. Elle prend en entrée un mot de passe, un sel aléatoire et un nombre d'itérations configurable, et produit en sortie une clé dérivée de n'importe quelle longueur souhaitée.
L'opération de base est simple à comprendre : elle applique une fonction pseudo-aléatoire (généralement HMAC avec un algorithme de hachage comme SHA-512) de façon répétée pour un nombre d'itérations spécifié. Chaque itération prend la sortie de la précédente comme entrée. Une fois toutes les itérations terminées, le résultat final est utilisé comme clé de chiffrement.
Le rôle du sel
Le sel est une valeur aléatoire générée à chaque opération de chiffrement et stockée aux côtés du texte chiffré. Il garantit que deux utilisateurs avec le même mot de passe produisent des clés dérivées complètement différentes, empêchant les tables précalculées (tables arc-en-ciel) d'être utilisées pour attaquer plusieurs cibles simultanément. Cela signifie également qu'un attaquant ne peut pas précalculer les clés avant d'obtenir le texte chiffré ; il doit recommencer la dérivation de zéro pour chaque cible individuelle.
SeedCrypt utilise un sel aléatoire de 256 bits, ce qui offre une protection plus que suffisante contre toute attaque par table arc-en-ciel ou précalcul.
Le nombre d'itérations
Le nombre d'itérations est ce qui détermine directement le coût computationnel de la dérivation d'une clé. Un nombre plus élevé signifie que chaque tentative de mot de passe par un attaquant nécessite plus de travail. SeedCrypt utilise 600 000 itérations de PBKDF2-SHA512.
Pourquoi 600 000 itérations ?
Les directives NIST 2023 recommandent un minimum de 600 000 itérations pour PBKDF2-SHA256 lors de l'utilisation pour le hachage de mots de passe. Pour SHA-512 (qui est plus lent par itération sur la plupart des matériels), la protection équivalente est atteinte avec un peu moins d'itérations, mais SeedCrypt utilise 600 000 pour correspondre à la recommandation NIST actuelle avec une marge supplémentaire.
En termes pratiques : un GPU grand public moderne peut calculer environ 400 000 itérations PBKDF2-SHA512 par seconde. Avec 600 000 itérations par tentative de mot de passe, un attaquant peut essayer environ 0,67 tentative de mot de passe par seconde par GPU.
Une attaque ciblée typique peut disposer de 100 GPU haut de gamme. Cela représente environ 67 tentatives de mots de passe par seconde. Pour un mot de passe utilisant 12 caractères d'un jeu de 72 (minuscules, majuscules, chiffres, symboles courants), l'espace de recherche est d'environ 72^12 ≈ 19 quadrillions de mots de passe possibles. À 67 tentatives par seconde, épuiser cet espace de recherche prendrait environ 9 milliards d'années.
Même un mot de passe plus court de 10 caractères avec le même jeu de caractères prendrait plus de 2 millions d'années à épuiser. Le nombre d'itérations transforme un mot de passe pratiquement limité en quelque chose de computationnellement irréversible par force brute.
SHA-512 vs SHA-256 pour PBKDF2
SeedCrypt utilise PBKDF2-SHA512 plutôt que le PBKDF2-SHA256 plus courant pour deux raisons. Premièrement, la longueur de sortie : SHA-512 produit un hachage de 512 bits, suffisant pour dériver à la fois une clé AES de 256 bits et un sel de 256 bits en un seul appel de dérivation sans étirement supplémentaire. Deuxièmement, l'asymétrie matérielle : SHA-512 est nativement rapide sur les CPU 64 bits mais relativement lent sur les matériels GPU et ASIC. Puisque les attaquants modernes s'appuient principalement sur des fermes de GPU pour la force brute, SHA-512 leur impose un coût proportionnellement plus élevé qu'à l'utilisateur légitime qui déchiffre sur un CPU standard.
C'est un avantage pratique significatif. Les mêmes 600 000 itérations coûtent plus en infrastructure pour l'attaquant qu'elles ne coûtent à l'utilisateur en temps de déchiffrement (qui est généralement inférieur à une seconde sur tout appareil moderne).
PBKDF2 vs Argon2 vs bcrypt
Les cryptographes débattent des mérites relatifs des différentes KDF. Argon2 (le vainqueur du Password Hashing Competition en 2015) et bcrypt sont fréquemment cités comme alternatives à PBKDF2.
Argon2 a un avantage réel : il est « memory-hard », ce qui signifie qu'il nécessite de grandes quantités de RAM par tentative en plus des cycles CPU. Cela limite considérablement l'efficacité des attaques GPU et ASIC qui bénéficient d'un parallélisme élevé mais ont généralement peu de RAM par unité de calcul. Pour les applications à très haute sécurité, Argon2id est actuellement le choix recommandé.
PBKDF2-SHA512 à 600 000 itérations reste un standard bien compris, largement déployé et normalisé par le NIST qui offre une sécurité solide pour le modèle de menace typique d'une sauvegarde chiffrée par mot de passe. Ce n'est pas l'état de l'art, mais il est bien au-dessus du seuil minimal et bénéficie d'une analyse de sécurité réelle étendue.
Ce que cela signifie en pratique pour la sécurité des seed phrases
Lorsque vous utilisez SeedCrypt pour chiffrer votre seed phrase, un sel aléatoire de 256 bits est généré pour ce chiffrement spécifique. Votre mot de passe est ensuite passé dans PBKDF2-SHA512 avec 600 000 itérations combinées à ce sel, produisant une clé AES de 256 bits utilisée directement pour le chiffrement AES-256-GCM. Le sel et le tag d'authentification sont stockés aux côtés du texte chiffré afin que le déchiffrement puisse reproduire la même clé dérivée.
Un attaquant qui obtient votre sauvegarde chiffrée voit le sel et le texte chiffré. Il doit exécuter PBKDF2-SHA512 avec 600 000 itérations pour chaque tentative de mot de passe. Avec n'importe quel mot de passe raisonnablement complexe (12+ caractères mixtes), c'est computationnellement infaisable avec n'importe quelle ressource d'attaquant réaliste.
Le sel garantit que même si un autre utilisateur de SeedCrypt choisissait le même mot de passe, votre sauvegarde chiffrée utiliserait une clé complètement différente. Il n'y a aucune vulnérabilité liée aux mots de passe partagés.
SeedCrypt
Chiffrez vos seed phrases. Hors ligne. Pour toujours.
AES-256-GCM · PBKDF2-SHA512 · Sans cloud · Windows & Android
Obtenir SeedCrypt à partir de 29 €Conclusion
PBKDF2 est le mécanisme qui rend le chiffrement basé sur un mot de passe viable pour protéger des secrets précieux comme les seed phrases. Sans lui, même le chiffrement AES-256 serait vulnérable aux attaques par force brute contre les mots de passe typiques des utilisateurs. Avec lui, le coût computationnel de la recherche de mots de passe est élevé à des niveaux qui rendent les attaques économiquement et computationnellement infaisables pour tout attaquant réaliste.
Comprendre PBKDF2 vous aide à comprendre pourquoi la robustesse du mot de passe a encore son importance : des mots de passe plus longs et plus complexes augmentent davantage le coût pour l'attaquant, et pourquoi la combinaison d'un bon mot de passe et de 600 000 itérations PBKDF2 offre une base solide pour la sécurité à long terme des seed phrases.