Bitcoin/Clés
Clés
- les paiements sont signés (grâce à de la cryptographie réputée incassable/infalsifiable)
- aucune nécessité de trimbaler le porte-monnaie. Il faut par contre avoir les clés d'accès à ses adresses (comptes)
- détenir des bitcoins, c'est posséder des clefs privées de compte publics.
- il est parfaitement idiot (sauf pour de petites sommes) de stocker ses clés sur un site truc ou machin
- le site peut être piraté, du dehors ou du dedans (complicités internes, voire le patron) ... et on est dépouillé. Les arnaques se comptent par dizaines et sont régulières.
- pour des pirates, tant qu'à mener des attaques, autant attaquer des lieux où se trouvent des centaines de clés
- il est plus sûr de stocker ses clés sur du matériel personnel, par exemple du matériel déconnecté d'internet
- à chaque fois qu'une clé circule (sur un fil, dans l'ordi, ou via wifi) elle est potentiellement vulnérable
- en conséquence, c'est la réduction du nombre de transmission(s) qui doit être visée
- la clé publique et l'adresse bitcoin sont générées à partir de la clé privée
exemple : 14NkiEKAfH31wKNgNjK7zD98M165qv7i12 0123456789012345678901234567890123
34 octets
Technique
- exemple d'adresse :
1J3BnzUeHubrjdMuBjSPtpUy2wv7RchNyy 0123456789012345678901234567890123
- Les adresses sont codées sur 34 caractères en base 58
- (26 majuscules + 26 minuscules + 10 chiffres) = 62 - 4 caractères ambigus (i,I,o,O)
La séquence est la suivante :
- la clé privée est fabriquée n'importe comment. Prise éventuellement au hasard dans {0, 2^^64})
- la clé publique est générée à partir de la clé privée (l'inverse est impossible)
- l'adresse est générée à partir de la clé publique (l'inverse est impossible)
Normalement, il y a infiniment peu de chances de se choisir une clé privée déjà existante. (mais au pire, on peut vérifier si la clé publique (ou l'adresse) n'existe pas déjà)
Clé privée
ex : 4300d94bef2ee84bd9d0781398fd96daf98e419e403adc41957fb679dfa1facd 0123456789012345678901234567890123456789012345678901234567890123
64 chiffres hexadécimaux, 2⁶⁴ possibilités
2⁶⁴ = 2⁶⁰ x 2⁴ = (2¹⁰)⁶ x 2⁴ = 1024⁶ x 16 ~ (10³)⁶ x 16 = 1.6 x 10¹⁹
2⁶⁴ = 1,844674407×10¹⁹ plus précisément (10 milliards de milliards)
Tel quel, c'est assez spacieux pour y choisir sa clé sans qu'elle puisse être devinée.
Problème : on va forcément chercher des astuces pour retrouver facilement cette clé.
Et attention ici au sens de l'expression "retrouver facilement".
Si on traduit "retrouver facilement" par mémoriser facilement ... alors, par construction, on va forcément passer de l'espace immense de départ (1.8x10¹⁹) à un espace plus réduit ... et qui peut donc se prêter plus facilement à des tentatives d'explorations.
Si vous songez à 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.8x10¹⁹ à 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 tous les mots du dictionnaire.
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)
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 a le malheur d'appartenir à l'espace 5x10⁴ du dictionnaire, il suffit de parcourir les résultats stockés de h(dico) pour retrouver (en quelques secondes la clé privée génératrice).
Sécurité
Quelques points à bien comprendre sont que, avec les monnaies électroniques (et pas juste les crypto-monnaies) :
- les cambrioleurs peuvent s'atteler à leur travail de façon bien plus tranquille (un ordinateur + connexion internet)
- la banque classique jouait le rôle de tiers de confiance, mais aussi de gardienne de vos fonds. Cette tierce partie disparue, c'est à vous de vous occuper de la sécurité de vos fonds
- vous pouvez bien sûr déléguer cette fonction ... mais il faut bien comprendre que cela vous renvoie quasi intégralement dans le schéma bancaire classique, avec le petit plus que les nouveaux intervenants n'ont pas du tout la fiabilité ni la réputation des banques classiques. Les cas de banquiers bitcoins partis avec la caisse sont nombreux !
Dans le cas du bitcoin, l'essentiel des considérations de sécurité portent sur la sécurité des clés.
- si vous vous fabriquez une clé de mauvaise qualité ... vous en paierez le prix
- si vous stockez mal votre clé, idem
Les techniques de cryptographie employées par bitcoin reposent sur la non-inversibilité de fonctions de hash. Employées "pleinement", ie comme il faut, ces techniques sont par elle-mêmes inviolables.
Comprendre/connaître le minimum nécessaire concernant ces techniques n'est pas bien difficile.
L'utilisateur qui décide (consciemment ou pas) de ne pas utiliser ces techniques conformément à leur bonne utilisation, s'expose forcément à en subir le contrecoup. Une tronçonneuse est aussi un objet technique performant. Si vous la manipulez sans comprendre les rudiments de sa sécurité, vous vous exposez au danger.
Porte-clés
On peut essayer d'empiler les niveaux de protection :
- les clés ultimement stockées sur une clé usb. Il existe même des clés dédiées.
- les éventuelles connexions se faisant via un raspberry pi sous raspbian ou une distro plus secure
Pages connexes
Liens
- Securisation et stockage à froid des Bitcoins http://www.pagasa.net/securisation-stockage-froid-bitcoins/