Attaque de cycle de remplacement sur le réseau Lightning

Attaque de cycle de remplacement sur le réseau Lightning

Le Bitcoin Lightning Network est une solution de mise à l’échelle de couche 2 pour Bitcoin, conçue pour relever les défis d’évolutivité de la blockchain Bitcoin. Il permet des transactions instantanées et à faible coût en Bitcoin, le rendant plus efficace et accessible aux utilisateurs. Par rapport aux transactions en chaîne dans Bitcoin, les transactions sur le Lightning Network sont privées, se produisent hors chaîne et seul le résultat global est enregistré.

L’un des principaux avantages du Lightning Network est sa rapidité et son prix abordable. Il permet aux utilisateurs d’envoyer et de recevoir de petits paiements sur le réseau Bitcoin de manière simple et rentable. En créant un réseau de canaux de paiement entre utilisateurs, le Lightning Network permet des transactions sans transmettre chaque transaction à la blockchain. Cela réduit la congestion sur la blockchain Bitcoin et améliore l’évolutivité des transactions.

Cependant, il est important de noter que le Lightning Network est encore en développement et est confronté à certains risques de sécurité et de centralisation. En octobre de cette année, une vulnérabilité appelée « attaque du cycle de remplacement » a été découverte sur le réseau Lightning. Elle implique le mécanisme de remplacement des transactions et peut entraîner la perte de fonds de canal sur le réseau Lightning. L’émergence de cette méthode d’attaque a soulevé des inquiétudes quant à la sécurité du Lightning Network et a suscité des recherches supplémentaires et des améliorations de ses protocoles et de ses implémentations.

Mécanisme de réseau Lightning

Le Lightning Network de Bitcoin exploite le mécanisme Multisig pour assurer la sécurité des canaux de paiement. Les participants doivent bloquer les fonds et établir des canaux de paiement. Les participants peuvent effectuer des paiements rapides et peu coûteux au sein du canal, sans avoir à soumettre à chaque fois des transactions à la blockchain Bitcoin. Le canal de paiement est simplement une relation entre des participants extérieurs à la blockchain Bitcoin, réalisée en signant une série de transactions au sein du canal qui se propagent uniquement entre les deux extrémités du canal sans impliquer le consensus de l’ensemble du réseau Bitcoin. .

Quant au processus spécifique, lors de l’ouverture d’un canal de paiement, les participants doivent créer un script multi-signature qui oblige chaque partie du canal à fournir sa clé publique, en précisant le nombre de signatures requis, par exemple en définissant un script contenant plusieurs clés publiques. et logique de vérification de signature. En générant l’adresse multi-signature, ce script sera converti en adresse Bitcoin, formant l’infrastructure du canal de paiement.

Par exemple, comme le montre la figure 1, Bob et Alice créent d’abord une adresse Bitcoin de signature en chaîne 2 sur 2 en tant que fonds commun. Au sein du canal, ils peuvent effectuer un nombre illimité de transactions d’engagement hors chaîne pour enregistrer l’état actuel de l’allocation des fonds. Les deux parties peuvent négocier et signer de nouvelles transactions d’engagement pour mettre à jour l’état du canal, sans diffuser ces mises à jour sur l’ensemble du réseau Bitcoin. Lorsqu’ils décident de fermer le canal, la transaction finale de règlement en chaîne distribuera les fonds selon la dernière allocation négociée. Cette transaction de règlement nécessite les signatures conjointes de Bob et d’Alice, garantissant que les fonds seront alloués de la manière finalement convenue. De cette manière, le Lightning Network améliore l’efficacité des transactions Bitcoin, réduit les coûts, tout en conservant ses caractéristiques décentralisées.

Figure 1 : Diagramme de canal d’état

Source : https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png

Mécanisme HTLC (contrats verrouillés et hachés)

Le Bitcoin Lightning Network adopte également des canaux de paiement basés sur Hash Time Locked Contract (HTLC) pour mettre en œuvre un système de canaux de paiement multi-sauts et routés. Lors de leur implémentation, les HTLC nécessitent un script de transaction complexe défini dans un langage de script pour satisfaire la condition de hachage et la condition de verrouillage temporel. Ce script sert à l’initialisation lors de l’ouverture du canal de paiement et est activé lors du paiement. De cette manière, le Bitcoin Lightning Network atteint l’efficacité et la sécurité des paiements inter-chaînes.

HTLC (Hash Time Lock Contract) est un contrat de verrouillage de temps et de hachage, qui est l’un des composants importants pour la mise en œuvre de transactions inter-chaînes sur la blockchain. Les HTLC ont deux applications courantes : les échanges atomiques inter-chaînes et les canaux de paiement sur le réseau Lightning. Les HTLC peuvent bloquer un transfert et définir des conditions de déblocage, telles que la fourniture d’informations spécifiques dans un délai spécifié. Cela garantit que les fonds ne peuvent être retirés par le destinataire que lorsque les conditions sont remplies.

Techniquement, un HTLC est une sortie supplémentaire dans une transaction de validation avec un seul script de sortie. Il s’agit d’un script contenant des opérations telles que OP_HASH160, OP_EQUALVERIFY, etc., utilisées pour verrouiller les fonds afin que seule la fourniture de la valeur de pré-image R puisse les débloquer. Ce script a deux chemins possibles. Le premier chemin (défini dans OP_IF) envoie des fonds à Bob si Bob peut fournir R. Le deuxième chemin consiste à appliquer un verrouillage temporel à l’aide de nLockTime sur la transaction de paiement, permettant les remboursements à Alice après l’expiration du verrouillage.

Exemple de routage

Sur le Lightning Network, Alice souhaite payer 1 bitcoin à Eric, mais il n’existe aucun canal de paiement direct entre Alice et Eric. Alice achemine ensuite le paiement via des nœuds intermédiaires du réseau de canaux de paiement (Bob, Carol, Diana) pour créer un chemin de paiement sécurisé, lui permettant de payer indirectement 1 bitcoin à Eric. Le routage des paiements utilise des HTLC : ce n’est qu’en fournissant le bon « secret » dans un créneau horaire spécifique que les fonds peuvent être débloqués, garantissant ainsi la sécurité des paiements.

Dans cet exemple, à l’étape 1, Eric génère un Secret R (solution) et calcule la valeur de hachage H (puzzle), puis donne la valeur de hachage H à Alice.

Étapes 2 à 5 : Alice, Bob, Carol, Diana et Eric construisent chacun des paires de HTLC, nécessitant la fourniture de R (solution) dans un délai donné pour récupérer les fonds bloqués auprès de la partie en amont.

Étapes 6 à 9 : Eric fournit R (solution) à Diana pour récupérer 1 BTC. Diana récupère ensuite le BTC de Carol avec R, et R est retransmis de cette manière jusqu’à ce qu’elle récupère les 1,003 BTC d’Alice (dont 0,003 BTC représentent les frais de service pour les nœuds intermédiaires).

Dans cet exemple, si à l’étape 6, Eric ne fournit pas R (solution) dans le délai imparti, après l’expiration du délai, les fonds bloqués aux étapes 2 à 5 seront directement débloqués et restitués.

Figure 2 : Exemple de routage

Source:https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png

Attaque de cycle de remplacement

Le mécanisme de remplacement de transaction dans Bitcoin fait référence au moment où une transaction est marquée comme remplaçable ; puis une autre transaction avec des frais plus élevés peut la remplacer sur le réseau avant qu’elle ne soit confirmée en bloc. Si une transaction reçoit des frais absolus et des frais en pourcentage plus élevés, elle peut remplacer les transactions en attente non confirmées qui entrent directement en conflit avec elle. Après avoir reçu la transaction de remplacement, les nœuds supprimeront la transaction d’origine avec un pourcentage de frais inférieur du pool de mémoire et conserveront uniquement la transaction de remplacement. Le mécanisme de remplacement de transaction permet d’ajuster les frais de transaction ou d’autres paramètres avant que la transaction ne soit confirmée. Cependant, ce mécanisme peut également être utilisé pour mener des attaques par déni de service de transaction, telles que le remplacement répété d’une transaction critique, entraînant l’échec de sa validation. Par conséquent, le mécanisme de remplacement des transactions facilite l’ajustement des transactions, mais introduit également des risques d’abus.

Selon l’e-mail du développeur Bitcoin Core Antoine Riard, l’attaque du cycle de remplacement se concentre principalement sur les canaux de paiement sur le réseau Lightning de Bitcoin. L’attaquant diffuse une transaction de pré-image HTLC avec des frais absolus et un pourcentage de frais plus élevés pour remplacer la transaction de délai d’attente HTLC du nœud honnête.

Lors du remplacement, l’attaquant peut ajouter des entrées ou des sorties supplémentaires pour garantir que la transaction de remplacement est acceptée avec succès par le réseau. Cette méthode d’attaque peut entraîner une double dépense de fonds sur les canaux de paiement, c’est-à-dire qu’une fois que le nœud honnête a transmis la transaction de délai d’attente HTLC, l’attaquant réussit à récupérer les fonds grâce au remplacement.

Nous pouvons fournir un exemple simple pour illustrer, similaire à l’exemple précédent, en supposant que l’itinéraire est simplifié à seulement Alice, Bob et Eric, et qu’Alice et Eric s’entendent pour voler le BTC de Bob.

Étape 1 : Alice a l’intention de payer 1 BTC à Eric via Bob. AliceBob et BobEric créent tous deux un HTLC. Eric doit fournir R (solution) à Bob avant le bloc 1020 (supposons que la hauteur actuelle soit de 1000), sinon Bob peut récupérer le 1 BTC verrouillé ; De même, Bob doit répondre à Alice avant le bloc 1080, sinon Alice pourra lui récupérer les 1 BTC.

Étape 2 : Eric ne fournit pas R (solution) à Bob avant le bloc 1020. Bob diffusera une transaction contenant un délai d’attente HTLC. Les fonds de cette transaction seront remboursés à Bob.

Étape 3 : Eric surveille la transaction de délai d’attente HTLC de Bob et la remplace par une transaction de pré-image HTLC avec un pourcentage de frais plus élevé. Eric lance ensuite une autre transaction pour expulser la préimage HTLC précédente du pool de mémoire.

Étape 4 : Le nœud de Bob retransmettra la transaction de délai d’attente HTLC jusqu’au bloc 1080. Eric peut lancer un remplacement à chaque fois. Jusqu’au bloc 1080, la transaction de l’autre partie dans le canal, Alice, est confirmée, et Alice récupère le BTC verrouillé.

Étape 5 : Eric obtient sa préimage HTLC confirmée, donc le 1 BTC verrouillé par Bob est transféré à Eric.

Ainsi, les 1 BTC de Bob ont été transférés à Eric, alors qu’il n’a pas reçu les BTC dus par Alice.

Résumé

En novembre 2023, le réseau Lightning comptait plus de 16 000 nœuds Lightning et 5 000 BTC. Bien qu’aucun cas réel d’attaques par cycle de remplacement n’ait été confirmé, cela souligne la nécessité de poursuivre les recherches et les améliorations en matière de sécurité pour le réseau Lightning. Antoine Riard a également suggéré plusieurs mesures pour prévenir ou atténuer les attaques du cycle de remplacement, telles que la surveillance des transactions de mémoire locale et de diffusion, la création de réseaux superposés entre les mineurs et les nœuds Lightning et la relecture active des transactions d’expiration HTLC pour augmenter les coûts des attaquants. Cependant, au même moment, il a annoncé la fin de son implication dans le réseau Lightning et dans les travaux de mise en œuvre, y compris la coordination des correctifs pour les vulnérabilités de sécurité au niveau du protocole.

À mesure que le réseau Lightning se développe, la menace potentielle d’attaques par remplacement de cycle peut devenir un obstacle à son développement, obligeant la communauté à se concentrer davantage sur la recherche et les améliorations en matière de sécurité. Cependant, c’est précisément en abordant et en améliorant sérieusement les problèmes de sécurité que nous pourrions voir le Lightning Network résoudre progressivement les risques potentiels à l’avenir, créant ainsi un écosystème plus sain et plus fiable.

Voir l’article original en espagnol