480 / 7362^N

Brute Force Search Space

Espace de recherche par force brute

Combien de temps faudrait-il pour deviner le secret d’un portefeuille ? La longueur du mot de passe ou de la clé ne suffit pas à répondre. Il faut savoir quelles possibilités sont réalistes et combien de travail exige chaque vérification.

Brute Force Search Space désigne l’ensemble des possibilités que l’on peut essayer pour deviner un secret. Imaginez avoir oublié le mot de passe de votre propre sauvegarde chiffrée : chaque essai est un candidat, et il faut pouvoir reconnaître s’il la déverrouille correctement. Plus les possibilités équiprobables sont nombreuses et les vérifications coûteuses, plus la recherche est généralement difficile. Avec un véritable portefeuille, il faut toutefois commencer par préciser ce que l’on cherche.

Le mot de passe d’une sauvegarde, une clé privée autorisant la dépense de bitcoins et l’entrée du générateur qui a créé cette clé sont des choses différentes. Les candidats et leur vérification ne sont pas les mêmes. Si un générateur défectueux choisissait parmi peu d’entrées, la recherche peut être plus facile que ne le suggère la longueur de la clé obtenue. L’attaquant peut essayer ces entrées limitées plutôt que toutes les clés mathématiquement possibles. Avant de compter, il faut donc comprendre comment le secret a été créé. [1] [3]

Prenons 16 possibilités équiprobables, dont une seule est correcte. On les vérifie dans l’ordre, sans en répéter aucune. Parfois on réussit tôt, parfois à la fin ; la moyenne est de 8,5 candidats vérifiés. Pour un nombre général N, la relation s’écrit E = (N+1)/2. À une cadence constante de 2 essais par seconde, cela représente 4,25 secondes en moyenne. La fraction d’essai concerne la moyenne, pas une recherche particulière. C’est une illustration, et non une mesure du temps de récupération d’un portefeuille Bitcoin. [1]

Les mots favoris, les noms et les motifs faciles à retenir reviennent plus souvent que les combinaisons aléatoires. Un attaquant peut donc commencer par les candidats les plus probables. Un générateur défectueux qui favorise certains résultats pose un problème similaire. La moyenne de l’exemple précédent ne s’applique plus. La min-entropie décrit la probabilité du meilleur premier essai, mais ne détermine à elle seule ni le travail total ni un délai de réussite garanti. Compter les possibilités sans connaître leurs probabilités ne suffit pas. [1] [2]

Vérifier un candidat n’est pas forcément instantané. PBKDF2 est une fonction qui dérive une clé à partir d’un mot de passe et d’autres entrées ; la répétition des calculs augmente le travail par essai. Une autre entrée est le salt, généralement une donnée publique qui distingue les dérivations. Des salts différents empêchent de réutiliser directement une même table de résultats précalculés. Le salt n’est pas un mot de passe secret supplémentaire et ne remplace pas une entrée robuste. Pour estimer la vitesse, il faut connaître la fonction, ses paramètres et le matériel utilisé. [3]

BIP39 transforme les mots de récupération et une passphrase facultative, un mot de passe supplémentaire, en une seed : la valeur secrète de départ pour dériver les clés. Il utilise PBKDF2 avec HMAC-SHA512 comme fonction interne et 2048 itérations, ou répétitions, pour produire une seed de 512 bits. Ici, le paramètre salt est le texte « mnemonic » suivi de la passphrase ; le secret supplémentaire vient de la passphrase elle-même. Toute passphrase produit une seed valide. La somme de contrôle des mots ne confirme donc pas que la passphrase saisie est la bonne. Pour récupérer votre propre portefeuille, vous pouvez le reconnaître par une adresse connue avec les bons paramètres de dérivation des clés, par exemple. Un résultat long ne rend pas fort un mot de passe faible. [4]

Certains procédés mathématiques font plus que deviner les valeurs une à une. En cryptographie sur les courbes elliptiques (ECC), on calcule une clé publique à partir d’une clé privée. Retrouver la valeur privée dans l’autre sens est la tâche difficile appelée problème du logarithme discret. SEC 2 décrit les paramètres de secp256k1, la courbe de Bitcoin. Compter toutes les chaînes de 256 bits ne couvre donc pas toutes les voies d’attaque. NIST SP 800-57 distingue la longueur de clé de la résistance de sécurité, c’est-à-dire l’effort estimé pour briser la protection sous certaines hypothèses. Une voie mathématique n’est pas pour autant facile à exploiter en pratique. [5] [6]

Plusieurs processeurs peuvent se partager des essais indépendants, mais le gain dépend aussi de la mémoire et de l’organisation du calcul. Le hashrate minier mesure des calculs de minage, pas le débit de PBKDF2 ni la vitesse des opérations ECC. Il faut aussi distinguer une connexion à un site d’une copie de sauvegarde. Un service peut limiter l’accès après des échecs. En revanche, une personne ayant copié le fichier chiffré peut essayer ses candidats hors ligne sur son propre ordinateur. Les limites de connexion du site n’arrêtent pas à elles seules ces essais. [3] [6]

Celui qui obtient la seed entière n’a plus besoin de parcourir un immense espace de possibilités. Un logiciel malveillant ou un défaut du programme qui manipule les clés peut permettre le même résultat. Choisir un secret imprévisible ne suffit donc pas : son stockage et son utilisation comptent aussi. Face à une durée annoncée pour le retrouver, demandez quelle attaque est supposée, ce que l’attaquant sait déjà et comment la vitesse a été mesurée. Un grand nombre ne garantit pas la sécurité d’un appareil, et ce modèle ne promet pas de récupérer un portefeuille perdu. [6]

Pour une vision complète, lisez aussi Cryptographic Entropy, Entropy Bit, Private Key, Seed Phrase. Cette entrée est également citée par Entropy Bit, Random Number Generator.

DOC · 001RFC 4086 — Secret distributions and guessingSpécification DOC · 002NIST SP 800-90B — Min-entropy and guessing costSpécification DOC · 003RFC 8018 — Salt, derivation cost and offline searchSpécification DOC · 004BIP39 — Passphrase derivation and valid seedsSpécification DOC · 005SEC 2 v2 — secp256k1 parametersSpécification DOC · 006NIST SP 800-57 Part 1 Rev. 5 — Security strength and key protectionSpécification
Révisé le: Sources d’abord · Pas un conseil financier