Le mécanisme de consensus de Bitcoin fait référence au fait qu'il est très difficile, du moins théoriquement, pour un mineur (ou un pool de minage) de tenter d'utiliser sa propre puissance de calcul pour pratiquer la tromperie ou le sabotage. Le mécanisme de consensus de Bitcoin repose sur la prémisse que la grande majorité des mineurs, dans leur propre intérêt, maintiendront l'ensemble du système Bitcoin en minant honnêtement. Cependant, lorsqu'un mineur ou un groupe de mineurs émerge avec une grande quantité de puissance de calcul dans le système, ils peuvent atteindre l'objectif de saper la sécurité et la fiabilité du réseau Bitcoin en attaquant le mécanisme de consensus de Bitcoin.
Il est à noter que les attaques par consensus ne peuvent affecter que le consensus futur de l'ensemble de la blockchain, ou, au plus, le consensus de quelques blocs dans un passé récent (jusqu'à 10 blocs passés). Et avec le temps, il devient de moins en moins probable que l'ensemble de la blockchain Bitcoin soit falsifiée. En théorie, une bifurcation de la blockchain peut devenir très longue, mais en pratique, la puissance de calcul requise pour implémenter une très longue bifurcation de la blockchain est très, très importante, et à mesure que l'ensemble de la blockchain Bitcoin grandit progressivement, les blocs passés peuvent fondamentalement être considérés comme infalsifiables par la bifurcation. De plus, les attaques par consensus n'affectent pas la clé privée de l'utilisateur ni l'algorithme de chiffrement (ECDSA). Une attaque par consensus ne peut pas non plus voler de bitcoins à d'autres portefeuilles, effectuer des paiements sans signature, redistribuer des bitcoins, modifier des transactions passées ou modifier des enregistrements de possession de bitcoins. Le seul impact qu'une attaque par consensus peut avoir est d'affecter les blocs les plus récents (jusqu'à 10) et de générer des blocs futurs par déni de service.
Un scénario typique d'attaque par consensus est l'"attaque des 51%". Imaginez un scénario où un groupe de mineurs contrôle 51 % de la puissance de calcul de l'ensemble du réseau Bitcoin, et qu'ils se liguent avec l'intention d'attaquer l'ensemble du système Bitcoin. Puisque ce groupe de mineurs peut générer la majorité des blocs, ils peuvent intentionnellement créer une bifurcation de la blockchain pour "double dépenser" ou bloquer une transaction spécifique ou attaquer une adresse de portefeuille spécifique par déni de service. Une attaque par bifurcation de la blockchain/double dépense se produit lorsqu'un attaquant rejette une transaction récente et reconstruit un nouveau bloc avant cette transaction, créant ainsi une nouvelle bifurcation et permettant le double paiement. Avec la garantie d'une puissance de calcul suffisante, un attaquant peut falsifier six blocs récents ou plus à la fois, faisant ainsi disparaître les transactions contenues dans ces blocs, qui seraient par ailleurs infalsifiables. Il est à noter que les doubles paiements ne peuvent être effectués que sur des transactions qui se produisent dans des portefeuilles appartenant à l'attaquant, car seul le propriétaire du portefeuille peut générer une signature légitime pour des transactions de double paiement. Un attaquant ne peut effectuer une attaque de double paiement que sur ses propres transactions, mais une telle attaque est rentable lorsque la transaction correspond à un achat irréversible.
Regardons un exemple réel d'une "attaque des 51%". Dans le chapitre 1, nous avons parlé d'une transaction entre Alice et Bob pour une tasse de café en utilisant Bitcoin. Bob, le propriétaire du café, est prêt à fournir un café à Alice lorsque son transfert sera confirmé à zéro, car le risque d'une "attaque des 51%" sur une transaction aussi petite est faible par rapport à l'immédiateté de l'achat du client (Alice peut obtenir le café immédiatement). C'est de la même manière que la plupart des cafés ne prennent pas le temps et les efforts nécessaires pour demander une signature pour les achats par carte de crédit inférieurs à 25 $, car il est plus coûteux de demander une signature de carte de crédit que le risque que le client puisse révoquer le paiement par carte de crédit. En conséquence, le risque de double paiement pour les transactions importantes payées en Bitcoin est beaucoup plus élevé, car l'acheteur (attaquant) peut annuler la transaction réelle en diffusant une transaction falsifiée sur le réseau qui est identique à l'UTXO de la transaction réelle. Le double paiement peut être effectué de deux manières : soit avant que la transaction ne soit confirmée, soit par l'attaquant via une bifurcation de la blockchain. La personne qui mène l'attaque des 51% peut annuler la transaction enregistrée sur l'ancienne bifurcation, puis régénérer une transaction du même montant sur la nouvelle bifurcation, réalisant ainsi un double paiement.
Pour éviter ce type d'attaque, les commerçants vendant des articles en gros devraient attendre que la transaction ait reçu six confirmations à l'échelle du réseau avant de livrer l'article. Alternativement, le commerçant devrait utiliser un compte tiers multi-signatures pour la transaction et également attendre que le compte de transaction ait reçu plusieurs confirmations sur le réseau avant de livrer l'article. Plus une transaction a de confirmations, plus il est difficile pour un attaquant de la falsifier par une attaque des 51 %. Pour les transactions importantes, l'utilisation des paiements Bitcoin est pratique et efficace pour les acheteurs et les vendeurs, même si les marchandises sont expédiées 24 heures après le paiement. Après 24 heures, la transaction aura au moins 144 confirmations à l'échelle du réseau (réduisant ainsi considérablement la probabilité d'une attaque des 51 %).
En plus de l'attaque par "double paiement", un autre scénario d'attaque dans l'attaque par consensus est le déni de service d'une adresse Bitcoin spécifique. Un attaquant qui dispose de la majorité de la puissance de calcul du système peut facilement ignorer une transaction particulière. Si la transaction existe dans un bloc généré par un autre mineur, l'attaquant peut intentionnellement bifurquer le bloc, le régénérer et supprimer la transaction qu'il souhaite ignorer du bloc. Le résultat de cette attaque est que tant que cet attaquant dispose de la grande majorité de la puissance de calcul du système, il peut interférer continuellement avec toutes les transactions générées par une adresse de portefeuille particulière ou un groupe d'adresses dans le but de refuser le service à ces adresses.
Notez que l'attaque des 51 % ne nécessite pas au moins 51 % de la puissance de calcul de l'attaquant pour être lancée, contrairement à ce que son nom suggère ; en fait, elle peut toujours tenter de lancer une telle attaque même si elle dispose de moins de 51 % de la puissance de calcul du système. La raison pour laquelle elle est nommée attaque des 51 % est simplement que lorsque la puissance de calcul de l'attaquant atteint le seuil de 51 %, sa tentative d'attaque réussira presque certainement. Essentiellement, une attaque par consensus est comme un système où toute la puissance de calcul des mineurs est divisée en deux groupes, l'un avec une puissance de calcul honnête et l'autre avec une puissance de calcul d'attaquant, et les deux groupes s'affrontent pour être les premiers à calculer de nouveaux blocs sur la chaîne de blocs, sauf que la puissance de calcul de l'attaquant calcule des blocs soigneusement construits qui contiennent ou excluent certaines transactions. Ainsi, moins la puissance de calcul de l'attaquant est importante, moins il est probable qu'il gagne le duel. D'autre part, plus la puissance de calcul de l'attaquant est importante, plus la chaîne de blocs bifurqués qu'il peut créer intentionnellement peut être longue, et plus il peut falsifier de blocs récents ou contrôler des blocs futurs. Certains groupes de recherche en sécurité ont utilisé des modèles statistiques pour conclure que 30 % de la puissance de calcul du réseau suffiraient pour lancer une attaque des 51 %.
L'augmentation spectaculaire de la puissance de calcul à l'échelle du réseau a rendu impossible que le système Bitcoin soit attaqué par un seul mineur, car il n'est plus possible pour un seul mineur d'occuper ne serait-ce que 1 % de la puissance de calcul du réseau. Mais les pools de minage contrôlés de manière centralisée introduisent le risque qu'un opérateur de pool attaque pour en tirer profit. L'opérateur du pool contrôle la génération des blocs candidats, et contrôle également quelles transactions sont placées dans les blocs nouvellement générés. De cette manière, l'opérateur du pool a le pouvoir d'exclure des transactions spécifiques ou d'effectuer des doubles paiements. Si ce pouvoir est abusé par l'opérateur du pool de manière subtile et mesurée, alors l'opérateur du pool peut lancer des attaques par consensus et en tirer profit sans être détecté.
Cependant, tous les attaquants ne cherchent pas le profit. Un scénario possible est que l'attaquant lance une attaque simplement pour perturber l'ensemble du système Bitcoin, plutôt que pour en tirer profit. Un tel attaquant, dont l'intention est de perturber le système Bitcoin, nécessiterait un investissement énorme et une planification minutieuse, il est donc concevable qu'une telle attaque provienne d'une organisation financée par le gouvernement. De même, de tels attaquants pourraient acheter des machines de minage, exploiter des pools de minage et effectuer des attaques par consensus telles que le déni de service en abusant du pouvoir susmentionné de l'opérateur du pool. Cependant, à mesure que la puissance de calcul du réseau Bitcoin augmente géométriquement et rapidement, ces scénarios d'attaque théoriquement réalisables deviennent de plus en plus difficiles à mettre en œuvre en pratique. Les récentes mises à niveau du système Bitcoin, telles que le protocole de minage P2Pool, qui vise à décentraliser davantage le contrôle du minage, rendent également ces attaques théoriquement réalisables de plus en plus difficiles.
Il ne fait aucun doute qu'une attaque par consensus sérieuse réduira la confiance dans le système Bitcoin, ce qui pourrait à son tour entraîner une chute du prix du Bitcoin. Cependant, le système Bitcoin et les logiciels associés s'améliorent également constamment, de sorte que la communauté Bitcoin réagira rapidement à toute attaque par consensus afin de rendre l'ensemble du système Bitcoin plus robuste et plus fiable que jamais.
