Confidentialité des crypto-monnaies

Dans le cadre de cet article, nous avons essayé de répondre à la question de savoir ce qu'est la confidentialité et comment elle peut être obtenue en Bitcoin et dans d'autres monnaies numériques. De plus, vous découvrirez ici des mécanismes spécifiques pour garantir la confidentialité, ainsi que la manière dont ils sont appliqués dans la pratique. Le sujet sera intéressant pour ceux qui travaillent directement avec les crypto-monnaies, ainsi que pour les amateurs de protocoles qui augmentent le niveau de confidentialité des utilisateurs.

Définissons les termes


Le sujet de la confidentialité (vie privée) et les moyens de le garantir sont assez volumineux. Il est préférable de commencer à l'étudier avec une compréhension des définitions de base.

Le concept de confidentialité comprend deux éléments principaux: l'intraçabilité et l'anonymat. L'inextracabilité, ou intraçabilité, implique l'impossibilité d'attribuer un groupe d'activités à un utilisateur du réseau. L'anonymat, ou anonymat, est associé à l'impossibilité d'établir de manière fiable l'identité d'un utilisateur sur ce réseau.

Confidentialité par défaut de Bitcoin


Bitcoin a la propriété d'anonymat, mais il est très facile de le perdre dans la pratique. La propriété d'intraçabilité n'est pas entièrement atteinte. Nous pouvons analyser le graphique de transaction et conclure qu'ils sont impliqués dans certains portefeuilles anonymes. Si au moins une adresse a été compromise dans le contexte de l'anonymat, la participation à certaines personnes peut être établie. La mise en œuvre la plus simple d'un portefeuille Bitcoin est en mesure de fournir uniquement un niveau minimum de confidentialité.

Par exemple, pour chaque paiement ou modification entrant, l'utilisateur crée une nouvelle adresse. L'auditeur qui analyse le graphique des transactions, dans ce cas, ne peut plus relier de manière fiable des faits spécifiques liés aux actions des utilisateurs et à la répartition des devises entre eux. Mais même dans cette situation, la confidentialité n'est pas aussi fiable que cela puisse paraître.

Habituellement sur le réseau Bitcoin, votre confidentialité dépend des contre-agents. Celui qui accepte le paiement connaît l'historique de l'origine des pièces, et celui qui envoie les pièces sait où il les envoie. De plus, il existe une série de métadonnées qui peuvent être disponibles pour les étrangers: la nature de la transaction, les données sur le portefeuille, les données sur l'emplacement de l'utilisateur, etc.

Quel type de données de transaction faut-il tout d'abord masquer afin d'assurer le niveau maximum de confidentialité? Cela comprend les données sur l'origine des pièces, qui se rapportent à la propriété d'interchangeabilité ou à la fongibilité. C'est très important pour l'argent et les objets de valeur. Au niveau du protocole Bitcoin, cette propriété est fournie (toutes les pièces sont les mêmes et les règles de traitement sont communes à tous), mais en pratique la fongibilité est facile à briser. Par exemple, certains commerçants peuvent analyser l'historique de l'origine des pièces acceptées et refuser des paiements si cela leur fait douter.

La prochaine chose qui a du sens à cacher est la somme des transferts, adresses de l'expéditeur et du destinataire dans le corps de la transaction. Il est également important de masquer les adresses réseau des utilisateurs, ce qui est généralement réalisé en utilisant darknet, où des protocoles tels que Freenet, TOR et I2P sont utilisés. Comment masquer les montants, l'historique et les adresses?

Coinjoin


La méthode la plus simple pour brouiller un graphique de transaction est appelée CoinJoin. Nous allons commencer avec lui. Son essence est de créer une transaction commune, à la suite de laquelle l'origine des pièces envoyées devient ambiguë. Un groupe est formé d'utilisateurs qui créent une transaction commune, au sein de laquelle plusieurs paiements sont effectués simultanément. Autrement dit, les utilisateurs n'ont pas besoin de créer des transactions distinctes.

Gregory Maxwell a proposé cette idée pour la première fois en 2013 lors du populaire forum BitcoinTalk. Depuis lors, de nombreuses modifications de cette méthode ont été proposées et développées. Chacun d'eux a amélioré certaines propriétés des paiements. Parlons de la façon dont CoinJoin fonctionne sous sa forme pure, puis nous examinerons certaines de ses modifications les plus intéressantes.

Comment fonctionne CoinJoin


Imaginez un groupe de trois utilisateurs dans lesquels tout le monde veut acheter des produits dans une boutique en ligne (en même temps, chacun a sa propre boutique).

image

Ils créent une transaction pour trois entrées, une pour chaque utilisateur, trois sorties, une pour chaque boutique en ligne. En outre, il existe trois autres sorties pour le changement. De plus, toutes les sorties sont mélangées au hasard entre elles. Chaque utilisateur revérifie la transaction reçue et signe l'entrée correspondante. En cas de succès, la transaction est considérée comme correcte, se propage au réseau et reçoit une confirmation.

Différences entre CoinJoin et la transaction régulière


Le diagramme ci-dessous montre la différence entre les graphiques de transaction réguliers et les transactions CoinJoin.

image

Au-dessus est un graphique où chaque transaction a une ou deux sorties, et en dessous de la transaction il y a déjà trois sorties. Le graphique du bas est plus compliqué et plus difficile à analyser. Lorsque CoinJoin est mis en pratique dans le portefeuille Bitcoin, un grand groupe d'utilisateurs est formé. Ensuite, les transactions peuvent avoir des dizaines d'entrées et de sorties (parfois plus). Représenté sur un avion, le graphique de ces transactions sera très déroutant. Une pièce de monnaie qui a traversé une chaîne de telles transactions a des milliers d'origines possibles. Il est difficile de trouver la vraie parmi toutes les options.

Chaumian CoinJoin


Nous arrivons à la modification CoinJoin appelée Chaumian CoinJoin. Et le même Gregory Maxwell l'a suggéré. Il utilise un opérateur centralisé et utilise une signature aveugle. L'opérateur est nécessaire pour effectuer le mélange des entrées et des sorties, puis effectuer la transaction finale. Mais l'opérateur ne peut pas voler de pièces ni violer la confidentialité du mélange en raison d'une signature aveugle.

L'utilisateur pré-aveugle les données avant de les transmettre à l'opérateur. Lorsque l'opérateur signe ces données, il ne voit pas le contenu réel. Les données signées sont retournées à l'utilisateur, après quoi il supprime l'éblouissement et tout ressemble à une signature électronique normale.

Comment l'interaction entre l'utilisateur et l'opérateur dans la formation de la transaction globale? Chaque utilisateur prépare une entrée à l'avance, où les pièces lui appartenant sont dépensées, une adresse pour recevoir la monnaie, ainsi qu'une adresse cachée pour envoyer un paiement, après quoi il combine ces données en une séquence et les transfère à l'opérateur.

L'opérateur vérifie le montant de l'entrée et du paiement, signe l'adresse de sortie et renvoie la signature à l'utilisateur. Cependant, l'opérateur ne voit pas l'adresse à laquelle l'utilisateur souhaite envoyer le paiement, car il est aveugle. De plus, l'utilisateur supprime l'aveuglement de l'adresse de sortie, se reconnecte anonymement à l'opérateur et lui envoie une adresse de sortie signée. L'opérateur, à son tour, vérifie qu'il a bien signé cette adresse avec sa clé et qu'il a déjà l'entrée correspondante, mais il ne peut pas savoir quelle entrée correspond à quelle sortie. Une fois que tous les utilisateurs ont terminé ces actions, ils se reconnectent à nouveau de manière anonyme à l'opérateur et fournissent des signatures qui confirment la propriété des pièces à l'entrée de la transaction générale. La transaction terminée peut être distribuée au réseau pour confirmation.

Dans ce cas, ni les utilisateurs ni l'opérateur ne peuvent désanonymiser les pièces aux adresses de sortie. Et la formation d'une transaction dans des conditions normales ne prend pas plus d'une minute. L'interaction de l'utilisateur doit être effectuée via des réseaux de données anonymes, qui peuvent être utilisés comme TOR, I2P ou Bitmessage.

Parmi les utilisateurs, il peut y avoir des participants sans scrupules dont le but est de perturber le processus de création d'une transaction commune par tous les moyens. Il existe toute une liste de scénarios de comportement utilisateur possibles, y compris frauduleux. Un certain nombre de mécanismes de protection ont été développés pour contrer les scénarios défavorables, qui permettent aux utilisateurs honnêtes de garantir la formation de la transaction finale. Les mécanismes de protection utilisent des délais d'expiration, le suivi des sorties non dépensées, etc. Pour plus de détails sur tous les scénarios et mécanismes de protection, vous pouvez vous familiariser séparément. Considérons maintenant la prochaine modification de CoinJoin, qui s'appelle CoinShuffle.

Coinshuffle


Une modification de CoinShuffle a été proposée en 2014. Il n'y a plus d'opérateur central et c'est devenu un avantage. Les utilisateurs forment indépendamment une transaction commune, communiquant entre eux. Cependant, ils ne peuvent toujours pas violer la confidentialité du mélange des adresses de sortie. Un autre avantage de cette technique est que les utilisateurs n'ont pas à utiliser de réseaux supplémentaires pour anonymiser le trafic, car toutes les propriétés nécessaires seront obtenues en utilisant un protocole d'interaction P2P entre les participants.

Ici, le cryptage directionnel est utilisé, où une paire de clés (publiques et privées) est utilisée. Le message est chiffré à l'aide de la clé publique et seul le propriétaire de la clé privée peut le déchiffrer. Pour la communication entre les participants, le protocole DiceMix est utilisé et l'opposition aux contrevenants est également fournie.

Présentation de CoinShuffle


Voyons comment fonctionne CoinShuffle.

image

Imaginez un petit groupe d'utilisateurs: la ruse Alice, le sage Bob, le Charlie barbu et le Dave orange. Chacun d'eux a une pièce non dépensée dans la blockchain Bitcoin aux adresses A, B, C et D, respectivement. Tout le monde veut dépenser une pièce et cacher l'histoire de son origine. À cette fin, chaque membre du groupe découvre l'adresse à laquelle la pièce A, B, C ou D doit être envoyée, respectivement, mais ne divulgue pas cette adresse aux autres membres.

En outre, chacun génère une nouvelle paire de clés pour le cryptage directionnel, après quoi les membres du groupe échangent des clés ouvertes pour le cryptage, et la nouvelle clé publique est signée avec une clé privée qui correspond à l'adresse avec la pièce non dépensée. De la même manière, tous les messages des participants seront signés lors de l'interaction ultérieure. C'était la première étape.

image

Les participants mélangent et forment une file d'attente. Alice sera la première parce qu'elle est rusée, Bob la seconde parce qu'il est sage, etc. Maintenant, Alice prend A 'et chiffre à destination de Dave, en utilisant la clé publique de Dave, respectivement. Le texte chiffré résultant Alice crypte à nouveau et vise Charlie. Ce texte chiffré est à nouveau chiffré, mais déjà adressé à Bob. Alice transmet le résultat du cryptage à Bob. Bob déchiffre le message avec sa clé privée. Puis il prend B 'et crypte dirigé vers Dave, puis vers Charlie et ajoute à la liste. Il mélange au hasard cette liste et la transmet à Charlie. Charlie, à son tour, déchiffre les éléments de la liste avec sa clé privée, ajoute C ', crypté dirigé vers Dave, dans la liste et mélange au hasard tous les éléments de la liste. La liste est transférée à Dave, qui la déchiffre, reçoit des données d'adresse ouvertes pour l'envoi de pièces, ajoute l'adresse D ', la mélange au hasard et, en fonction de ces adresses, des entrées et des montants de transaction connus, forme une transaction générale.

image

Dave distribue la transaction vierge au reste du groupe. De plus, chacun vérifie soigneusement si la sortie de la transaction a l'adresse dont elle a besoin et si le montant correspond. Si tout va bien, le participant signe la transaction, confirmant la propriété des pièces de son entrée. Les participants échangent des signatures et si la transaction recueille toutes les signatures nécessaires, elle peut être distribuée au réseau pour confirmation.

Si l'un des participants commence à s'écarter du scénario d'interaction principal, alors les autres peuvent analyser conjointement l'historique de l'interaction et retirer les contrevenants du groupe afin de tout répéter sans eux. C'est une caractéristique importante.

Notez que des implémentations prêtes à l'emploi de CoinShuffle existent déjà. Et en pratique, ils fonctionnent efficacement même sur des groupes de plusieurs dizaines d'utilisateurs. Actuellement, l'intégration de ce protocole est attendue dans certains portefeuilles bitcoin, y compris les mobiles.

Quels sont les inconvénients de la méthode CoinJoin?


Évidemment, il y a beaucoup de difficultés dans l'interaction hors chaîne pour la formation d'une transaction, c'est-à-dire qu'il est nécessaire d'organiser la formation de groupes et l'interaction des participants entre eux. Mais un inconvénient plus important est que CoinJoin dans sa forme pure ne cache pas le montant des transferts. Par conséquent, il est vulnérable à l'analyse CoinJoin Sudoku, qui est basée sur une comparaison des sommes des sorties de transaction et vous permet de découvrir l'historique de l'origine des pièces après sa confusion répétée. Oui, ce problème peut être combattu, par exemple, pour utiliser uniquement certains montants pour les valeurs de sortie de transaction (0,1 VTS, 1 VTS, 10 VTS, etc.), mais cela crée des difficultés et des limitations supplémentaires. Par conséquent, envisagez une méthode complètement différente qui résout le problème des montants de transfert ouverts - Transactions confidentielles.

Transactions confidentielles


Une caractéristique de la méthode des transactions confidentielles (TC) est qu'elle masque complètement les montants réels aux entrées et sorties de la transaction de tiers. Chacun peut vérifier que la somme de toutes les sorties ne dépasse pas la somme de toutes les entrées, ce qui est déjà suffisant pour valider cette transaction.

Cela a été rendu possible grâce à l'utilisation de la preuve de connaissance zéro - il s'agit d'une preuve cryptographique de la connaissance d'un secret, mais sans divulguer ce dernier. Pour prouver que la somme des sorties ne dépasse pas la somme des entrées, l'engagement Petersen est utilisé, qui est basé sur des transformations dans un groupe de points sur une courbe elliptique. Afin de lutter contre l'émission incontrôlée de pièces dans ce schéma, une preuve de l'utilisation des montants autorisés à la sortie de la transaction est nécessairement appliquée. Pour vérifier que des montants non négatifs ont été utilisés qui ne dépassent pas l'ordre du point de base, les soi-disant épreuves de portée sont utilisées.

Et tout irait bien, mais la création de ces mêmes Range Proofs coûte très cher en termes de ressources informatiques. De plus, ils ont un très grand volume. Théoriquement, il est possible d'intégrer des transactions confidentielles dans le protocole Bitcoin, mais personne n'est pressé de le faire en raison de leur volume important. Néanmoins, il existe déjà des systèmes comptables qui fonctionnent avec succès.

Sonner les transactions confidentielles


La méthodologie suivante est appelée Ring Confidential Transactions. Pour confondre l'histoire de l'origine des pièces, les signatures en anneau sont utilisées ici. L'expéditeur dans l'entrée de sa transaction ne fait pas référence à une sortie spécifique (UTXO), mais à plusieurs à la fois. De plus, à l'aide d'une signature de bague, il prouve qu'il possède les pièces de l'une des nombreuses sorties, mais n'a pas divulgué laquelle. Il s'ensuit qu'il est impossible de suivre sans ambiguïté l'histoire de l'origine des pièces.

L'utilisation de signatures en anneau de cette manière a d'abord été proposée dans le protocole CryptoNote, sur la base duquel plusieurs crypto-monnaies fonctionnent. Les transactions confidentielles Ring utilisent CT. Ils vous permettent de créer des transactions avec de nombreuses entrées et sorties, où il est impossible de suivre sans ambiguïté l'origine de chaque entrée, le montant des transferts est masqué et aucune interaction avec d'autres utilisateurs pour créer une transaction n'est requise.

Adresses furtives


Cette approche est une technique pour calculer secrètement les adresses auxquelles les pièces seront envoyées. Cette idée a été décrite pour la première fois par Peter Todd. Les clés publiques sont utilisées comme identifiants utilisateur: si vous souhaitez accepter les paiements, vous devez annoncer votre clé publique.

L'expéditeur utilise sa paire de clés et votre clé publique pour calculer une nouvelle clé publique unique, qui sera déjà indiquée dans la transaction comme une adresse. Il s'avère que seuls l'expéditeur et le destinataire peuvent connaître l'adresse à laquelle les pièces sont envoyées. Pour un observateur tiers, la connexion entre l'ID utilisateur et l'adresse à la sortie de la transaction ne peut pas être établie.

Application pratique


Où ces méthodes sont-elles appliquées dans la pratique?

image
L'équipe Bitshares a été l'une des premières à implémenter CT en conjonction avec Stealth Addresses, non seulement pour la devise de base, mais aussi pour les jetons pouvant être émis sur la plateforme. La crypto-monnaie Monero prend en charge les signatures en anneau et les adresses furtives pour garantir un niveau élevé de confidentialité. En janvier 2017, l'équipe a implémenté RingCT, et avec la mise à jour de septembre 2017, l'utilisation de RingCT est devenue strictement obligatoire. Il convient de noter le protocole Mimblewimble, qui utilise une version modifiée de CT, qui est actuellement en développement actif, mais nous en parlerons plus tard.

Il existe un tel projet ZeroLink, qui est un cadre pour créer des portefeuilles confidentiels basés sur la technique Chaumian CoinJoin. Il est à noter qu'il peut fonctionner en Bitcoin, sans nécessiter aucune modification du protocole lui-même.

Passons aux questions fréquemment posées.


- Est-il possible d'utiliser des adresses furtives en bitcoin?

Oui, vous pouvez les utiliser maintenant, les mises à jour de protocole ne sont pas nécessaires pour cela. Mais pour une adaptation plus large de cette fonctionnalité, il est nécessaire de spécifier strictement l'ordre de calcul et les formats de données afin que tous les portefeuilles puissent fonctionner ensemble et, en conséquence, d'ajouter cette fonction aux portefeuilles eux-mêmes. Peter Todd a déjà créé un BIP distinct pour introduire cette spécification, mais elle est toujours à l'étude.

- Est-il efficace d'utiliser CoinJoin dans sa forme la plus pure pour les bitcoins?

Non, dans sa forme pure, il est inefficace, car de telles transactions se prêtent à une simple analyse par le montant des transferts. , , , , .

— , Ethereum, Ripple Stellar?

, . Ethereum, Ripple Stellar , . , , Stealth Addresses Confidential Transactions, . , ( UTXO), .

- Blockchain “ ”.

Source: https://habr.com/ru/post/fr415371/


All Articles