Karadocteur Menu

Peut-on pirater Bitcoin et la Blockchain ?

Peut-on pirater Bitcoin et la Blockchain ?

Le bitcoin est la cryptomonnaie la plus ancienne : c'est la reine mère. Sa valeur dépend directement de la confiance que les utilisateurs ont en elle et celle-ci réside donc dans la sécurité. Ainsi, les protocoles qui régissent les cryptomonnaies sont extrêmement sécurisés et il est quasiment impossible de les pirater (to hack en anglais). Ceci est en partie permis grâce à une technologie appelée la Blockchain, dont j'ai déjà parlé dans un article de ce blog.

Hacker la blockchain

Pour comprendre pourquoi il est impossible de hacker / pirater des cryptomonnaies, il est nécessaire de comprendre le fonctionnement de la Blockchain.

Comme expliqué plus en détails dans un article précédement, cette technologie correspond à un grand livre de compte décentralisé (distribué à de nombreuses personnes) qui liste toutes les transactions effectuées depuis sa création. Ce sont les mineurs qui font tourner leurs puissants ordinateurs pour vérifier et valider chaque transaction avant de les inscrire dans la blockchain. Pour ajouter une transaction, il faut que la majorité des mineurs du monde soit d'accord : c'est ce que l'on appelle un concensus. Tous les blocks de transactions s'enchaînent donc les uns après les autres selon une suite logique unique, savamment calculée selon des méthodes complexes de cryptographie et c'est cela qui en fait sa sécurité.

Depuis le début du Bitcoin le 3 janvier 2009 et jusqu'à aujourd'hui, la blockchain n'a jamais pu être piratée.

Une des possibilités de hacker la blockchain, réside dans ce que l'on appelle l'attaque à 51%. Cette attaque serait possible si une personne détiendrait plus de la moitié de la puissance de calcul des mineurs. Ainsi, cette personne pourrait décider quelles transactions ajouter ou non à la blockchain et donc détourner des fonds. Cependant, la puissance de calcul des mineurs est tellement gigantesque de nos jours que cette attaque n'est seulement que théorique.

Une seconde possibilité serait de trouver le moyen de rendre obsolète les fonctions de cryptographie utilisées dans le protocole du Bitcoin. On entend souvent des arguments vantant les mérites des ordinateurs quantiques. Sincèrement, cette technologie est encore loin de voir le jour ! Et si jamais elle verait le jour prochainement, ce n'est pas que le Bitcoin qui en pâtirait : ce serait toute la sécurité informatique mondiale, y compris le système bancaire classique !

Pirater une plateforme d'échange de cryptomonnaies

Mais alors, si le bitcoin est tant sécurisé que ça, pourquoi lit-on régulièrement dans les actualités que des pirates ont volé / dérobé des bitcoins ? Et bien simplement parce qu'ils s'en sont pris à des sites internet / plateformes d'échange de cryptomonnaies.

En effet, de nombreux utilisateurs stockent leurs actifs numériques sur ces plateformes d'échange. Ils ne les retirent jamais vers leur wallet personnel. Ceci est très risqué car ces plateformes, comme tout site internet, peuvent être hackées plus ou moins facilement. De cette manière, les pirates peuvent parvenir à dérober les bitcoins qui y sont déposés et les transférer vers leur compte à eux.

Comme je le dis et je le répète, notamment dans mon article sur les différents wallets disponibles pour stocker et sécuriser des cryptomonnaies, il est trop risqué aujourd'hui de laisser dormir ses crypto-actifs sur des plateformes d'échange célèbre. Celles-ci sont des cibles trop faciles pour les hacker puisqu'elles sont centralisées finalement, ce qui est contraire à l'esprit du Bitcoin.

Il est indispensable d'avoir votre propre portefeuille de cryptomonnaie (ou wallet en anglais) !

Cracker une adresse bitcoin par bruteforce

Comme je l'explique dans mon article sur les clés privées, clés publiques et adresses bitcoin :

  • Une adresse bitcoin est un identifiant unique d'un compte bitcoins. Celle-ci peut être connue par le monde entier : les gens pourront alors consulter le nombre de BTC stockés et pourront y en envoyer. Cependant, seules les personnes qui détiennent la clé privée associée à cette adresse pourront dépenser les BTC stockés dessus.
  • Une clé privée correspond en réalité à un nombre aléatoire compris entre 20 (= 1) et 2256 (= 115 792 089 237 316 195 423 570 985 008 687 907 853 269 984 665 640 564 039 457 584 007 913 129 639 936). Cela est tellement gigantesque que la probabilité de tomber 2 fois sur le même nombre est quasiment nulle. A partir de cette clé privée est calculée l'adresse bitcoin. Seuls les détenteurs d'un couple clé privée / adresse bitcoin peuvent dépenser les bitcoins stockés sur l'adresse bitcoin correspondante.

De cette manière, vous comprenez qu'il est indispensable de sécuriser vos clés privées de la plus fiable des façons ! Pour se faire, de nombreuses possibilités existe, que je résume dans mon article sur les différents wallets disponibles.

Dernièrement, j'ai fais l'acquisition d'un Ledger Nano S et j'ai rédigé un petit tutoriel sur son installation et son utilisation.

En comprenant le fonctionnement des clés privées / adresses bitcoin, on pourrait imaginer une méthode pour cracker une adresse bitcoin par Bruteforce. Celle consisterait à générer aléatoirement un très grand nombre de clé privée, calculer l'adresse bitcoin correspondante et tester si cela correspond à l'adresse que l'on souhaite hacker.

Théoriquement, cela est faisable mais c'est statistiquement impossible.

Hacker une adresse bitcoin par Bruteforce en langage Python

Comme vous le savez, je me suis lancé cette année dans l'apprentissage du langage informatique Python. Je me suis d'ailleurs amusé à coder un script pour générer un wallet bitcoin, que j'ai détaillé dans un article précédent.

En réutilisant ce script, nous pouvons développer ensemble rapidement une petite application permettant de pirater une adresse bitcoin par Bruteforce.

Pour cela, je vous invite à créer un nouveau dossier et y extraire le fichier "bitcoin.py" de l'archive téléchargeable ci-dessous (il s'agit simplement de mon script permettant de générer une adresse bitcoin aléatoirement, expliqué dans un article précédent) :

Télécharger le script

Dans votre nouveau dossier, générez un nouveau fichier nommé "bruteforce.py". Ce sera dans ce fichier que nous développerons notre petit programme de hacker !

La toute première chose à faire : importer les modules dont nous aurons besoin.

import bitcoin
import requests
import os

Ensuite, il faut qu'on demande à l'utilisateur quelle adresse bitcoin il veut hacker :

address_to_hack = input("Which address do you want to hack ? ")

On initie un compteur "i" à 0 pour compter le nombre de tentatives et on démarre une boucle infinie à laquelle on mettre fin quand on aura hacker l'adresse.

i = 0
while True:

A chaque itération de la boucle, on doit générer une nouvelle clé privée grâce à mon ancien script :

    wallet = bitcoin.Wallet()

Puisque ce script permet de générer 2 adresses (une décompressée et une compressée) à partir d'une même clé privée, nous allons vérifier si une d'entre-elles correspond à l'adresse bitcoin à bruteforcer. Avant chaque test, on incrémente notre compteur de tentatives (i) et on affiche à l'écran l'adresse testée. Si l'adresse est hackée, on affiche la clé privée correspondante puis on termine le programme.

    i += 1
    print("[{}] {}".format(i, wallet.get_address_uncompressed()))
    if wallet.get_address_uncompressed() == address_to_hack:
        print("   => Hacked ! Private key : {}".format(wallet.get_wif_uncompressed()))
        break

    i += 1
    print("[{}] {}".format(i, wallet.get_address_compressed()))
    if wallet.get_address_compressed() == address_to_hack:
        print("   => Hacked ! Private key : {}".format(wallet.get_wif_compressed()))
        break

os.system("pause")

Ce script est totalement fonctionnel. Je peux vous proposer de télécharger l'ensemble des fichiers (2 fichiers seulement) en cliquant sur le bouton ci-dessous :

Télécharger le script

Vous pouvez également retrouver les sources sur GitHub : https://github.com/Karadocteur/BTC-Address-Bruteforcer.

Dans le même esprit, on pourrait imaginer un autre type de script qui générerait pleins d'adresses aléatoirement (comme celui-ci) et qui testerait si celle-ci contient ou pas des bitcoins stockés dessus. Pour se faire, on pourrait utiliser des API mises à disposition d'un explorateur de blockchain tel que Blockchain.com. Dans cet esprit, une page de ce site a spécialement été conçu pour essayer de hacker des wallets Bitcoin aux hasards en se réactualisant régulièrement.

Dans tous les cas, soyez sûr que la probabilité de pirater une adresse bitcoin par bruteforce est quasiment impossible, les chances sont vraiment trop faibles.

Attention, j'ai codé ce script pour me divertir et en apprendre davantage sur le bitcoin et le langage informatique Python. En aucun cas je ne cautionne le piratage et celui-ci est strictement illégal, je tiens à le rappeler !