Contenu
Introduction
Que sont les transactions confidentielles ?
Un aperçu de la cryptographie associée
Que peuvent faire les transactions confidentielles ?
Considérations finales
Introduction
La transparence du système est souvent considérée comme un facteur critique pour le fonctionnement d’une blockchain. Cela signifie que chaque nœud du réseau peut stocker une copie et vérifier qu'aucune règle n'est violée. Sur de nombreux registres distribués, n'importe qui peut utiliser un explorateur de blocs en ligne qui lui permet de rechercher des blocs, des transactions et des adresses.
En termes de confidentialité, ce n’est pas idéal. Dans un système comme Bitcoin, chaque transaction peut être liée à une précédente. Les devises sont techniquement non fongibles, ce qui signifie que chacune peut être liée à des transactions spécifiques. Personne ne peut vous empêcher d’envoyer du Bitcoin, mais il peut refuser votre transaction si ces pièces ont déjà transité par une adresse figurant sur la liste de rejet.
Dans le pire des cas, le manque de fongibilité peut avoir un impact majeur sur les fondements mêmes du système. Les pièces « propres » (honnêtes) peuvent être appréciées, tandis que les plus anciennes auront moins de valeur compte tenu de leur histoire.
En termes de confidentialité, les utilisateurs du réseau Bitcoin souffrent souvent d’une grande exposition. Non seulement les pièces peuvent être suivies, mais également les utilisateurs eux-mêmes. Ils utilisent des pseudonymes (ils ne divulguent pas de noms, seulement des adresses publiques), mais cela ne garantit pas votre vie privée. Il existe des techniques d'analyse sophistiquées qui permettent de regrouper avec précision les adresses afin d'identifier les entités sur un réseau.
Les transactions confidentielles représentent une mise à jour proposée pour rendre les transactions véritablement privées.
Que sont les transactions confidentielles ?
Les transactions confidentielles (CT) ont été discutées pour la première fois en 2013 par Adam Back, PDG de Blockstream. Plus tard, le développeur Bitcoin, Gregory Maxwell, a accru l'utilisation des transactions confidentielles. Maxwell a décrit les problèmes mentionnés dans la première section (concernant la fongibilité et la confidentialité) – et a proposé une solution. Les montants transférés pourraient être cachés (cachés) du réseau plus large, de sorte que seules les parties impliquées dans la transaction sachaient combien avait été envoyé.
Dans des circonstances normales (avec des transactions visibles publiquement), il est facile pour un nœud de vérifier que le montant reçu ne dépasse pas le montant envoyé. Si Alice veut envoyer 0,3 BTC à Bob, elle utilise une sortie non dépensée (considérons 1 BTC) et la divise en deux parties : 0,3 pour l'envoyer à Bob et 0,69 pour elle (le reste est utilisé pour payer les frais de minage).
C'est un calcul simple pour les autres nœuds : 1 est supérieur à 0,3 + 0,69, les signatures sont toutes correctes et les entrées d'Alice n'ont pas encore été dépensées ailleurs, la transaction doit donc être valide. Cependant, lorsque les valeurs sont cachées, ce processus n’est pas si trivial. Comment serait-il possible d’évaluer si un montant inconnu est égal ou supérieur à la somme de deux autres montants inconnus ?
Un aperçu de la cryptographie associée
Pour masquer les données, un cryptage est nécessaire. Cependant, les méthodes traditionnelles sont similaires au placement de documents dans un coffre-fort : une fois verrouillés, ils deviennent inutilisables jusqu'à ce qu'ils soient retirés du coffre-fort. Ce dont nous avons besoin pour que les transactions confidentielles fonctionnent, c'est 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 un tiers.
La réponse réside notamment dans le cryptage homomorphe, dans un schéma appelé « engagement de Pedersen ». Ce type de cryptage permet aux utilisateurs externes d'effectuer des opérations sur des données cryptées (qu'ils ne peuvent pas voir) à diverses fins.
Un hachage ordinaire peut être utilisé pour confirmer les données que vous souhaitez révéler ultérieurement. Supposons que vous souhaitiez annoncer un concours sur les réseaux sociaux, où celui qui devinera votre échange préféré remportera un prix de 0,01 BTC. Les utilisateurs peuvent ne pas faire confiance à la validité de vos concurrents, affirmant que vous pouvez simplement consulter les réponses après la clôture et révéler un échange qui n'a été mentionné par personne.
Vous pouvez fournir à vos abonnés un hachage : une séquence de nombres et de caractères apparemment aléatoires qui font référence à une entrée spécifique. Grâce à une fonction, vous transformez les informations de votre échange pour obtenir un certain résultat. Nous allons illustrer avec l'algorithme SHA256 :
f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191En regardant cela, vous n'avez aucune idée de la nature de l'entrée. Et vous ne pouvez pas inverser la fonction pour l'obtenir. Cependant, si vous savez que l'entrée était « Binance », vous pouvez facilement vérifier si le hachage correspond à ce qui est indiqué ci-dessus. De cette façon, vos abonnés ont la garantie que vous ne modifierez pas votre réponse à la fin du concours – ce qui donnerait un résultat complètement différent.
En réalité, cependant, ce n’est pas très sûr. Bien que vos abonnés ne puissent pas effectuer d'ingénierie inverse sur l'algorithme, ils pourraient créer une liste d'échanges possibles, obtenant le hachage de chacun jusqu'à ce qu'ils trouvent celui qui correspond. Vous pouvez réduire la probabilité de ce type d'action en ajoutant des données aléatoires appelées « facteur aveuglant » aux données que nous utiliserons pour créer la fonction de hachage.
Si nous utilisons l'entrée « Binance est mon échange préféré, je l'aime plus que tout autre échange #43Wr», il sera beaucoup plus difficile pour un utilisateur de deviner la réponse de la manière mentionnée ci-dessus (pour 0,01 BTC, ce serait il est peu probable que quiconque essaie).
Un "engagement Pedersen" nous permet d'ajouter des entrées derrière les commits (modifications de la base de données). Comme l’illustre Maxwell :
C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)Où BF est le facteur de flexion et D est les données
Il y a quelques étapes supplémentaires qui impliquent la cryptographie à courbe elliptique et les preuves de plage, mais l'idée de base est qu'un utilisateur a un « engagement Pedersen » pour l'adresse elle-même. Lors de l'envoi de fonds, deux commits supplémentaires sont créés (un pour l'adresse de l'utilisateur qui recevra la monnaie et un pour l'adresse de destination du transfert).
Personne ne connaît le montant envoyé, mais il est possible de vérifier que les validations du changement et l'adresse de destination (côté gauche de l'équation de Maxwell) correspondent correctement à l'adresse source (côté droit de l'équation). Si les correspondances sont correctes, la transaction de l'utilisateur est valide, car il peut être prouvé que les entrées sont les mêmes que les sorties.
Que peuvent faire les transactions confidentielles ?
Si les transactions confidentielles étaient mises en œuvre sur le réseau Bitcoin, nous aurions un système avec beaucoup plus de confidentialité. Les entrées et les sorties seraient masquées dans le réseau général et les entrées dans le grand livre seraient cachées – mais les nœuds seraient toujours en mesure de vérifier leur authenticité. Avec cette augmentation significative de la confidentialité, Bitcoin pourrait devenir effectivement fongible, car l’analyse en chaîne ne révélerait plus l’historique d’une unité donnée.
Pour le moment, l’intégration des transactions confidentielles dans le protocole ne semble pas probable. Avec cette fonctionnalité supplémentaire, les transactions seraient beaucoup plus importantes que la norme – compte tenu de l’espace de bloc limité, cela ne ferait qu’augmenter la demande. Cet ajout nécessiterait également qu'une majorité des participants acceptent de modifier le code, une tâche traditionnellement difficile.
Considérations finales
Les transactions confidentielles ont connu quelques itérations dans d’autres crypto-monnaies et chaînes alternatives (sidechains) au Bitcoin. Monero, par exemple, les utilise en combinaison avec des structures appelées « signatures en anneau » pour obtenir l'anonymat et la fongibilité. La sidechain Liquid et le protocole MimbleWimble les utilisent également pour offrir une plus grande confidentialité.
Malgré les avantages qu’elles offrent, les transactions confidentielles présentent un inconvénient. Les crypto-monnaies sont souvent confrontées à des problèmes d’évolutivité et de performances au niveau de la couche de base. L’augmentation de la taille des transactions est donc loin d’être un changement souhaité. Néanmoins, les défenseurs de la vie privée estiment que cacher les montants des transactions et préserver l’anonymat des utilisateurs sont des mesures essentielles pour que la crypto-monnaie fonctionne réellement comme une monnaie fongible.
