BlockPulseNews
Définition

Malleability : définition

Aussi appelé : signatures

La malléabilité des signatures est la possibilité pour un tiers de modifier la signature d'une transaction sans l'invalider, ce qui change son identifiant ; ce défaut a été largement neutralisé sur Bitcoin par SegWit.

Thème : Bitcoin

Malleability : comment ça marche ?

Avec l'algorithme ECDSA, une signature valide peut être transformée en une autre signature, différente mais tout aussi valide pour le même message. Il existait aussi des variations possibles dans l'encodage de la signature. Sur Bitcoin, avant SegWit, l'identifiant d'une transaction (txid) était calculé en incluant les signatures. Un tiers pouvait donc intercepter une transaction, modifier légèrement sa signature et la rediffuser : les fonds partaient bien vers le même destinataire, pour le même montant, mais sous un autre identifiant.

Ce n'est pas un vol en soi, mais un problème pour les logiciels qui suivent les transactions par leur identifiant, et surtout pour les transactions qui dépendent d'une autre transaction non encore confirmée. C'était un obstacle majeur au Lightning Network. Des règles ont d'abord imposé des formats canoniques, comme la forme dite low-S de la signature, puis SegWit a sorti les signatures du calcul du txid, supprimant la malléabilité par un tiers pour ce type de transactions. Ailleurs, les smart contracts qui vérifient des signatures doivent aussi s'en prémunir.

Un exemple concret

Imaginons qu'une plateforme d'échange envoie un retrait à Élise et enregistre l'identifiant de la transaction. Un tiers modifie la signature et c'est cette version qui est confirmée, sous un autre identifiant. Le logiciel de la plateforme, ne retrouvant pas son txid, croit que le retrait a échoué et le renvoie : Élise est payée deux fois. Des incidents de ce type ont été rapportés sur Bitcoin avant SegWit.

Les risques à connaître

Pour les développeurs, se fier à l'identifiant d'une transaction non confirmée, ou utiliser une signature comme identifiant unique, reste une erreur classique. Dans les smart contracts, accepter une signature malléable peut permettre de la réutiliser sous une autre forme. Les bibliothèques de vérification modernes imposent une forme canonique, qu'il faut veiller à utiliser.

À ne pas confondre avec

  • Signature replay : Le rejeu consiste à réutiliser la même signature dans un autre contexte, alors que la malléabilité la transforme en une variante valide.
  • SegWit : SegWit est la mise à niveau qui a corrigé la malléabilité du txid, et non le problème lui-même.

Questions fréquentes sur Malleability

La malléabilité permet-elle de voler des bitcoins ?

Non. Elle ne change ni le destinataire ni le montant, seulement l'identifiant de la transaction. Elle peut toutefois induire en erreur des logiciels mal conçus.

SegWit a-t-il complètement supprimé la malléabilité ?

Il a supprimé la malléabilité par un tiers pour les transactions SegWit, puisque les signatures ne comptent plus dans le txid. Les transactions de format ancien restent théoriquement exposées.

Termes liés

Dans le même thème : Bitcoin

Tous les termes du thème Bitcoin →

À lire

Malleability dans l'actualité

Nos articles qui parlent de Malleability, les plus pertinents d'abord.

Approfondir

La fiche du projet cité

Pour aller plus loin sur les projets mentionnés dans cette définition.

Approfondir avec l'Académie : Bitcoin en Profondeur Un module gratuit, en leçons courtes et quiz, pour maîtriser ce thème pas à pas.
Découvrir le module

Les autres termes en M

← Tout le lexique crypto de A à Z