Je publie un petit topic car il y a un bug majeur qui est passé quasiment inaperçu surtout auprès des newbies. Je trouve que c'est le bug le plus important qu'ait connu le Bitcoin depuis des années. Je me base sur le topic suivant :
https://bitcointalksearch.org/topic/bitcoin-core-0163-released-5032424Disclaimer : Les développements que je réalise ici sont le fruit de ma propre compréhension. Je serais très reconnaissant si un dév du Bitcoin parlant français pouvait valider les informations que je formule ci-dessous.A travers ce post, j'espère lancer un débat sur les failles que peuvent représenter les protocoles distribués en général et comment cela peut avoir un impact significatif sur des millions de personnes si jamais la décentralisation numérique s'adoptait massivement. L'occasion pour moi de vous convaincre à travers ce post qu'il y a urgence à repenser le modèle technologique des crypto-monnaies en prônant une plus grande diversité des implémentations.
Pour la faire courte, je suis très critique envers la taille des capitalisations des crypto-monnaies et je prône des solutions plus petites et plus locales résolvant d'ailleurs la question des difficultés de scalablity.Il y a exactement deux jours, une faille majeure à été découverte dans le réseau bitcoin. Pendant ce temps là, et pendant les jours qui ont suivis, il n'y a eu presque aucune incidence sur le prix du Bitcoin :
https://coinmarketcap.com/currencies/bitcoin/ Et c'est à peine si la presse spécialisée en parle :
https://journalducoin.com/bitcoin/bitcoin-core-patch-faille-decouverte-bitcoin/ Honnêtement, ça me surprend pas, les investisseurs utilisent un instrument qu'ils comprennent pas. Il le voit comme un instrument financier infaillible et une certaine paresse intellectuelle s'est imposée à la communauté qui laisse penser que le protocole Bitcoin est "incassable". C'est faux.
Je vais tâcher ici de vous décrire la vulnérabilité de manière concise avec quelques éléments techniques. Elle concerne une fonction
CheckBlock() qui gère la vérification du format d'un bloc de manière intrinsèque, sans rentrer dans les détails des transactions :
https://github.com/bitcoin/bitcoin/blob/d926a87fde80b64024b2d94260c53aab20ccb259/src/validation.cpp ligne 3080.
Pour comprendre, il faut reprendre le fix :
https://github.com/bitcoin/bitcoin/commit/d926a87fde80b64024b2d94260c53aab20ccb259#diff-24efdb00bfbe56b140fb006b562cc70b . Pour des raisons d'optimisations, la fonction CheckTransaction() était "sautée" en paramétrant l'un ses paramètres à false. Cette fonction permet de vérifier qu'il n'y a pas de doublons dans le bloc. Il s'avère qu'en ne faisant pas cette vérification, le node BTC plantait tout simplement et s'arrêtait de fonctionner * (
Je n'ai pas encore approfondi le sujet, je vous tiens au courant si j'en sais plus). En d'autres termes, il était possible à l'aube de ce fix, de geler l'ensemble du réseau Bitcoin en s'attaquant directement aux nœuds (attaque DDos). Il suffisait par exemple de lancer l'attaque plusieurs fois sans que le réseau ne puisse jamais redémarrer.
Dans les faits, cette attaque était relativement difficile à pratiquer pour le premier des pecnos pour deux raisons :
- Il fallait préalablement miner un bloc dans la chaîne courante. Un seul suffit, ce qui induisait une probabilité de succès proportionnelle à la puissance de calcul détenue. Par exemple, cette attaque était tout à fait envisageable avec une puissance de calcul de 0.1 %, ce qui donne une bonne espérances mathématique de réalisation sur 1000 blocs soit une semaine d'attente.
- Puis, il fallait que ce bloc soit diffusé le plus rapidement possible, ce qui revient en pratique à réajuster l'hypothèse précédente.
Bref, n'importe quelle petite mine de taille moyenne pouvait sur l'année potentiellement geler le réseau à ces propres fins de dumping par exemple. Pour les fermes de tailles plus grande, il était possible de porter un préjudice grave à l'ensemble du réseau en empêchant le consensus d'avancer et en lésant plusieurs milliers d'investisseurs qui n'aurait plus été capable de réaliser des transactions.
Pire, on ne sait pas si c'est vrai, mais si les fermes dans leurs globalité n'ont pas des systèmes de redémarrage, c'est potentiellement une réduction drastique de la puissance de calcul qui disparaît du jour au lendemain par Déni de Service. Le cas échéant, une attaque double dépense aurait tout à fait pu être réalisé par des acteurs de moyenne taille.
Cette événement est passé quasiment inaperçu pour la majorité des communautés externes au forum. Pour ma part, j'ai été au courant du bug grâce au jolis petits diamants mauves au dessus sur la nouvelle mise à jour du Bitcoin Core il y a deux jours. Dans tous les cas, ce bug majeur est là pour nous rappeler que rien n'est infaillible dans le protocole. Si les maximalistes du forum préfère fermer les yeux, j'espère à travers ce post vous faire au moins réfléchir sur les multiples faiblesses qui jonche le chemin du bitcoin, qu'elles soient malveillantes ou non-intentionnelles. Il est clair que nous n'avons pas l'intelligence collective nécessaire pour contrer celle d'un gouvernement par exemple (qui a certainement une large liste de vulnérabilités non encore utilisées).
Vos remarques sur le sujet sont les bienvenues
* Edit : Le bug s'enclenche lorsqu'il y a effectivement un doublon dans le bloc miné.