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
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.
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.