Bonjour, Habr!
Aujourd'hui, je vais parler de la façon dont nous avons développé un mélangeur de transactions pour notre messager. Jusqu'à présent, je vais parler du concept dans son ensemble; J'espère que cela sera intéressant pour les développeurs et ceux qui sont passionnés par l'anonymat, la protection des données et le reste de la banque de chiffrement.
Bref historique. Comme vous le savez déjà, notre messager fonctionne sur sa propre blockchain, et il implémente les transferts de plusieurs crypto-monnaies dans les salles de chat. Ajouter: les connexions entre les portefeuilles sont publiques. Par conséquent, le fait de la correspondance et du transfert de jetons est disponible et confirmé sur la blockchain. Mais parfois c'est le fait de la communication (ou du transfert de fonds) qui peut être compromettant! Tout le monde se souvient des trois mousquetaires et des pendentifs de la reine, non?

Nos utilisateurs nous ont signalé qu’il était temps d’éliminer cette «faille de confidentialité». Donc, tout d'abord, nous avons supprimé les transactions de message et les transactions de service de notre explorateur de blocs. Par conséquent, un utilisateur ordinaire ne peut pas maintenant établir le fait de la correspondance entre deux numéros.
Mais les transactions sont toujours stockées sur la blockchain, et leurs métadonnées peuvent être récupérées à l'aide de l'API. Par conséquent, nous avons décidé de créer un mélangeur de transactions qui pourrait être connecté s'il est important de cacher le fait du transfert ou de la correspondance.
Comment ça marche: assembler et partager
Nous avons décidé d'utiliser une technologie similaire à celle utilisée par les crypto-monnaies anonymes populaires: Z-Cash, Monero et autres.
Le mélangeur agit ici comme un intermédiaire. Comme tout utilisateur de notre messager, il aura sa propre adresse unique. Lorsqu'un message ou une traduction est envoyé via le mélangeur, un enregistrement apparaît sur la chaîne de blocs indiquant que l'utilisateur A a effectué une transaction à l'adresse du mélangeur.
Le mélangeur accumule les messages et les traductions et les envoie aux destinataires à partir de leur adresse. L'utilisateur B recevra un message non pas de l'utilisateur A, mais du mélangeur.
Plus les gens utilisent le service, plus il offre d'anonymat. Lorsque le mélangeur a beaucoup de transactions entrantes et sortantes, il est difficile de suivre à quelle adresse l'utilisateur A a envoyé un message. De plus, le mélangeur effectuera des transactions intermédiaires entre les portefeuilles internes.
Personne ne peut faire confiance
Personne ne peut faire confiance sur Internet, y compris un mélangeur. Par conséquent, nous avons fait en sorte que l'intermédiaire ne puisse pas décrypter le texte du message - uniquement l'adresse du destinataire. Ceci est réalisé par le fait que le message est crypté deux fois.
Mécanisme d'envoi classique
Mécanisme d'envoi du mélangeurPermettez-moi d'expliquer en mots comment le processus se déroule.
- Alice crypte d'abord le texte du message avec la clé de Bob.
- Il ajoute ensuite l'adresse de Bob et la chiffre à nouveau avec la touche Mixer.
- Le mélangeur ne peut décrypter que sa partie et obtenir l'adresse de Bob.
- Après cela, le mélangeur ajoute son adresse au message crypté d'Alice et crypte avec la clé de Bob.
- Bob extrait le message de la blockchain, au premier déchiffrement, il reconnaît l'expéditeur, au second - le texte du message.
Cependant, le mélangeur connaît les adresses des expéditeurs et des destinataires, et il existe un risque potentiel de divulgation de ces informations. Avec la cyber paranoïa de niveau supérieur, vous pouvez vous défendre de 146% en utilisant un système de plusieurs mélangeurs.
Un peu plus de haute cuisine
Les paiements par crypto-monnaie dans notre messager peuvent également être effectués via un mélangeur. Cela masquera la connexion entre les portefeuilles. L'expéditeur indique le montant du transfert, les adresses et le délai maximum, et le mélangeur envoie des jetons en plusieurs fois et à différents moments. Il collectera les transactions de plusieurs utilisateurs et effectuera des transactions entre les portefeuilles internes, et masquera ainsi la connexion entre les destinataires et les expéditeurs.

Dans le même temps, la crypto-monnaie sera stockée sur ses portefeuilles pendant un certain temps. Par conséquent, le mélangeur devra être approuvé. Pour rendre la fraude non rentable, nous introduirons des frais pour l'enregistrement des mixeurs publics et pour faire des évaluations.
Les fondateurs du mélangeur auront le choix de le rendre public (accessible à tous), tout en prenant des frais de transaction et en réalisant un profit. Ou ne pas l'enregistrer dans le registre général. Le mélangeur sera alors anonyme, mais il ne tirera pas non plus profit des transactions. Il s'agit d'une option pour ceux qui souhaitent configurer le service pour eux-mêmes - par exemple, pour la correspondance des employés de l'entreprise.
Si nous réussissons à mettre en œuvre le concept, je ferai un peu plus tard un billet «technique» sur le même sujet.