Introduction aux transactions confidentielles
Accueil
Articles
Introduction aux transactions confidentielles

Introduction aux transactions confidentielles

Avancé
Publié le Feb 10, 2020Mis à jour le Dec 28, 2022
6m

Introduction

Il est souvent considéré comme essentiel pour le fonctionnement d'une blockchain que le système soit transparent. Cela signifie que chaque nœud du réseau peut stocker une copie et vérifier qu'aucune règle n'est enfreinte. Pour de nombreux registres distribués, n'importe qui peut se rendre sur un explorateur de blocs en ligne qui lui permet de rechercher des blocs, des transactions et des adresses.

Sur le front de la confidentialité, ce n'est pas idéal. Dans un système comme Bitcoin, chaque transaction peut être reliée à une transaction précédente. Les pièces ne sont pas techniquement fongibles, ce qui signifie que chacune peut être liée à des transactions spécifiques. Personne ne peut vous empêcher d'envoyer des bitcoins, mais le bénéficiaire peut refuser d'accepter votre transaction si ces pièces ont précédemment transité par une adresse figurant sur une liste noire.

Dans le pire des cas, un manque de fongibilité pourrait avoir un impact profond sur les fondements mêmes du système.Les pièces propres peuvent être plus chères, tandis que les pièces plus anciennes peuvent avoir moins de valeur en raison de leurs antécédents.

La protection de la confidentialité dans le réseau Bitcoin est souvent surestimée. Non seulement les pièces peuvent être tracées, mais les utilisateurs aussi. Elles bénéficient du pseudonymat (les adresses publiques sont visibles à la place des noms), mais cela n'est pas sans défaut. Des techniques d'analyse sophistiquées peuvent, avec une précision croissante, regrouper des adresses dans le but de désanonymiser les entités du réseau.

Une mise à niveau proposée pour rendre les transactions véritablement privées est celle des transactions confidentielles.


Que sont les transactions confidentielles ?

Les transactions confidentielles (TC) ont été évoquées pour la première fois par Adam Back, PDG de Blockstream, en 2013, puis développées par Gregory Maxwell, développeur de Bitcoin. Maxwell a décrit les problèmes mentionnés dans la première section (fongibilité et pseudonymité faible) et a proposé une solution. Les montants transférés peuvent être protégés du réseau dans son ensemble, afin que seules les parties effectuant des transactions connaissent les montants envoyés.



Dans des circonstances normales (avec des transactions visibles par le public), il est facile pour un nœud de vérifier que le montant reçu ne dépasse pas le montant envoyé. Si Alice souhaite envoyer 0,3 BTC à Bob, elle prend une sortie non dépensée (disons 1 BTC) et la divise en deux : 0,3 à envoyer à Bob, et 0,69 à lui renvoyer (avec le reste perdu en frais de minage).
Il s'agit d'une opération simple pour les autres nœuds : 1 dépasse 0,3 + 0,69, les signatures sont toutes correctes et les entrées d'Alice n'ont pas encore été utilisées ailleurs. La transaction doit donc être valide. Cependant, lorsque les montants sont masqués, les choses ne sont pas si triviales. Comment évaluer si un montant inconnu est égal ou supérieur à la somme de deux autres montants inconnus ?


Un aperçu de la cryptographie impliquée

Pour masquer les données, le chiffrement est requis. Toutefois, les méthodes traditionnelles sont semblables à placer des documents dans un coffre : une fois verrouillés à l'intérieur, ils deviennent inutilisables jusqu'à ce qu'on les sorte pour les consulter. Pour que les transactions confidentielles fonctionnent, nous avons besoin d'un coffre-fort numérique dont le contenu n'est pas révélé, mais dont les propriétés peuvent être vérifiées par une personne extérieure.

La réponse réside spécifiquement dans le chiffrement homomorphique, dans un schéma appelé mise en gage de Pedersen. Ce type de chiffrement permet à un utilisateur externe d'effectuer des opérations sur des données chiffrées (qu'il ne peut pas voir) à diverses fins.

Un hachage régulier peut être utilisé pour s'engager dans des données que vous souhaitez afficher ultérieurement. Supposons que vous souhaitiez annoncer un concours sur les réseaux sociaux, où quiconque devine votre exchange préféré gagnera un prix de 0,01 BTC. Les participants peuvent être sceptiques, car vous pourriez simplement regarder les réponses après la clôture du concours et choisir un exchange n'ayant pas été mentionné.

Vous pouvez fournir un hash à vos abonnés : une chaîne de nombres et de caractères apparemment aléatoires qui correspond à une entrée spécifique. Vous soumettez le nom de votre exchange à une fonction afin d'obtenir une certaine sortie. Nous allons l'illustrer avec l'algorithme SHA256 :


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


En regardant cette chaîne, vous ne pouvez pas deviner l'entrée. Vous ne pouvez pas non plus inverser la fonction pour l'obtenir. Si vous savez que l'entrée était « Binance », cependant, vous pouvez facilement vérifier que son hachage correspond à celui indiqué ci-dessus. De cette façon, vos abonnés ont l'assurance que vous ne changerez pas de réponse à la fin de la compétition, car cela produirait une sortie totalement différente.

Mais en réalité, cela n'est pas très sûr. Si vos followers ne peuvent pas faire de l'ingénierie inverse de l'algorithme, ils peuvent établir une liste d'échanges possibles, en hachant chacun d'entre eux jusqu'à ce qu'ils obtiennent une correspondance. Nous pouvons réduire la probabilité de cela en ajoutant des données aléatoires appelées facteur aveugle aux données que nous allons hacher.

Si nous entendons « Binance est mon échange préféré que j'adore plus que tout autre échange 2#43Wr », il devient beaucoup plus difficile pour un adversaire de deviner (et pour 0,01 BTC, il est certainement peu probable que n'importe qui tenterait de le faire).

Une mise en gage de Pedersen nous permet d'ajouter les commentaires derrière les gages. Comme l'illustre Maxwell :



C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

BF est le facteur d'obfuscation et D les données


Il y a encore quelques étapes à suivre pour atteindre la cryptographie de courbes elliptiques et les preuves d'intervalle, mais l'idée de base est qu'un utilisateur a un gage Pedersen pour son adresse. Lorsque vous envoyez de l'argent, deux engagements supplémentaires sont créés (un pour que l'adresse de modification soit renvoyée à l'utilisateur et un pour l'adresse de destination).

Personne ne sait quelle quantité est envoyée, mais on peut vérifier que les engagements de changement et de destination (le côté gauche de l'équation de Maxwell) correspondent à l'adresse d'origine (le côté droit de l'équation). Si cela est correctement évalué, la transaction de l'utilisateur est valide, car il est possible de prouver que les entrées sont égales aux sorties.


Que peuvent accomplir les transactions confidentielles ?

Si les transactions confidentielles étaient mises en œuvre dans le réseau Bitcoin, nous bénéficierions d'un système beaucoup plus confidentiel. Les entrées et les sorties seraient masquées à partir du réseau plus large, et les entrées du registre seraient masquées, mais les nœuds pourraient encore vérifier leur authenticité. Grâce à cette augmentation massive de la confidentialité, les bitcoins peuvent être rendus fongibles, car l'analyse de la chaîne ne révèle plus l'historique d'une unité donnée.

Si vous vous demandez si les transactions confidentielles seront intégrées au protocole, cela ne semble pas probable à l'heure actuelle. Grâce à cette fonctionnalité supplémentaire, les transactions sont beaucoup plus importantes que les transactions standard. Compte tenu de l'espace limité dans le bloc, cela ne ferait qu'augmenter la demande. Il faudrait également que la majorité des participants acceptent de modifier le code, une tâche qui s'est traditionnellement avérée difficile.


Pour conclure

Certaines itérations dans d'autres cryptomonnaies et dans les sidechains Bitcoin ont présenté des transactions confidentielles. Par exemple, Monero les utilise en combinaison avec des constructions appelées signatures en anneau pour assurer l'anonymat et la fongibilité. La sidechain Liquid les met en œuvre pour assurer une plus grande confidentialité, et MimbleWimble les utilise aux mêmes fins.

Pour les avantages qu'elles apportent, les transactions confidentielles se font au détriment d'une empreinte plus importante. Les cryptomonnaies rencontrent souvent des difficultés de scalabilité et de débit au niveau de la couche de base, et les transactions de plus grande taille ne séduisent pas tout le monde. Cela dit, les ambassadeurs de la protection de la confidentialité pensent qu'il est essentiel de masquer les montants des transactions et les participants pour permettre aux cryptomonnaies de servir d'argent fongible.