Bitcoin/Clé privée : Différence entre versions
(Page créée avec « <pre> ex : 4300d94bef2ee84bd9d0781398fd96daf98e419e403adc41957fb679dfa1facd 0123456789012345678901234567890123456789012345678901234567890123 </pre> 256 bits = 64 chiffr... ») |
(Aucune différence)
|
Version du 19 mai 2018 à 17:15
ex : 4300d94bef2ee84bd9d0781398fd96daf98e419e403adc41957fb679dfa1facd 0123456789012345678901234567890123456789012345678901234567890123
256 bits = 64 chiffres hexadécimaux (2²⁵⁶=16⁶⁴) => 16⁶⁴ possibilités, 16⁶⁴ = 1.15⁷⁷
Tel quel, c'est assez spacieux pour y choisir sa clé sans qu'elle puisse être devinée.
Une clé privée sert :
- à chiffrer des messages (en l'occurrence des transactions)
- à générer une clé publique
- à générer une adresse (n° de compte)
Fabrication d'une clé privée, les pièges à éviter
Problème : vu sa longueur, une clé privée bitcoin aléatoire est impossible à mémoriser de tête. Et donc certains utilisateurs ont naturellement l'idée de fabriquer des clés pas trop difficiles à mémoriser.
C'est là où il faut faire attention.
On dispose, par sécurité, d'un espace de base immense (1.15x10⁷⁷) pour le choix d'une clé.
Attention à ne pas réduire de facto cet espace de choix ! car il se prêtera alors éventuellement plus facilement à des tentatives d'explorations.
Si vous songez eg à prendre un mot du dictionnaire (eg dans un dico standard de 50.000 mots) avec un coup de sha256 par dessus; vous passez d'un espace 1.15x10⁷⁷ à 5x10⁴. C'est tout simplement 10⁷³ fois plus petit, et facilement explorable (et exploré) par ordinateur. Et oui, des gens ont eu l'idée (et ça n'a pas été long) de passer tout le dictionnaire à la moulinette sha256, et à défaut de disposer d'une fonction inverse de sha256, ils disposent donc de cette fonction inverse sur un espace de départ certes petit ... mais peut-être pertinent (car quelques naïfs l'ont utilisé).
La clé publique et l'adresse sont déduites de la clé privée (par d'autres fonctions de hash) :
- Clé publique = f(clé privée) = clé privée * base point
- Adresse = g(clé publique)
- Adresse = g(f(clé privée)) = h(clé privée)
Ici aussi, des personnes ont appliqué la fonction h sur tout le dictionnaire, et si une adresse présente dans la blockchain a le malheur d'appartenir à l'espace 5x10⁴ du dictionnaire, il suffit de la comparer aux résultats stockés de h(dico) pour la cibler et retrouver instantanément la clé privée génératrice.