- Retour au menu
- Retour au menuTarifs
- Retour au menuRecherche
- Retour au menuConsensus
- Retour au menu
- Retour au menu
- Retour au menu
- Retour au menuWebinaires et Événements
Évitement des fusions : techniques d'amélioration de la Politique de confidentialité dans le protocole Bitcoin
Mike Hearn, développeur de Bitcoin CORE, discute des fuites de Politique de confidentialité et d'une nouvelle technique qu'il a nommée « évitement de fusion ».
Mike Hearn Mike est un développeur de logiciels qui travaille au sein de l'équipe de développement Bitcoin CORE et chez Google. Dans cet article, il aborde des fuites de données Politique de confidentialité à Bitcoin et une nouvelle technique, encore inconnue, qu'il appelleévitement de fusion.
Introduction à la Politique de confidentialité du Bitcoin
C’est un fait regrettable que, malgré la réputation du Bitcoin dans la presse, ses utilisateurs divulguent actuellement de grandes quantités d’informations personnelles.
Il est extrêmement facile pour quiconque d' Guides à votre solde, à votre historique de transactions, etc. La protection de ces informations est une fonction essentielle de tout système financier performant.
Voici quelques fuites qui surviennent lors d’une utilisation quotidienne.
Réutilisation d'adresses
De nombreux problèmes de Politique de confidentialité liés au Bitcoin sont causés par un adversaire qui découvre quelles sorties appartiennent au même portefeuille. Un calcul permet de connaître le solde du portefeuille et, éventuellement, avec qui il a effectué des transactions.
Le cas le plus courant est la réutilisation d'adresses. Ce phénomène est facile à comprendre, car des sites populaires comme blockchain.info indexent les sorties et les transactions par adresse, ce qui permet de rechercher rapidement toutes les transactions faisant référence à une adresse donnée.
La réutilisation d'adresses a de nombreuses causes profondes. En voici quelques exemples :
1. Problèmes de portefeuille de l'utilisateur final
La bibliothèque bitcoinj réutilise systématiquement les adresses conformément à la Juridique, divulguant ainsi de nombreuses informations privées. Il y a deux raisons à cela. La ONE est qu'avant le développement des portefeuilles HD, l'utilisation constante des clés entraînait l'invalidation des anciennes sauvegardes de portefeuille.
Bitcoin-Qt dispose d'un « pool de clés » pour tenter de résoudre ce problème, mais cela ne fait que le repousser : le pool de clés peut être épuisé silencieusement, ce qui entraîne le même problème. L'invalidation des sauvegardes peut entraîner des pertes financières.
Une fois les portefeuilles HD implémentés (ce qui est en cours), ce problème disparaîtra, laissant place à la pression mémoire sur les téléphones bas de gamme. La réutilisation des adresses pourrait encore être nécessaire sur ces appareils, mais les téléphones haut de gamme et les ordinateurs de bureau/portables ne devraient T rencontrer de problème.
2. Problèmes de portefeuille du serveur
Il n'existe aucune implémentation de portefeuille public et open source capable de s'adapter à des portefeuilles comportant un très grand nombre de clés. À ma connaissance, les plateformes d'échange et les principaux processeurs de paiement ont tous dû implémenter une quantité importante de code personnalisé pour contourner le manque d'évolutivité de Bitcoin-Qt (et de bitcoinj).
Cela met la pression sur les récepteurs pour qu’ils réutilisent les adresses.
3. Conventions sociales
Les gens mettent des adresses statiques dans les signatures de forum, les codes QR, ETC
Au fil du temps, nous devrons progresser sur tous ces points afin de réduire la réutilisation des adresses. Les portefeuilles HD et le protocole de paiement sont des outils importants pour y parvenir.
Modifier les sorties

ONEune des fuites de Politique de confidentialité les plus irritantes dans Bitcoin est que les gens apprennent les limites inférieures de votre solde.
Le fonctionnement de ce système peut être intuitivement compris par analogie avec l'argent liquide. Avec du papier-monnaie, si vous présentez un billet de 500 CHF pour payer une boisson à seulement 5 CHF, le barman apprend que votre solde est d'au moins 495 CHF. Ce solde peut être plus élevé, bien sûr, mais il n'est pas inférieur. Le Bitcoin présente le même problème.
La cause première de ce problème est une inadéquation entre la taille d’un paiement que vous souhaitez effectuer et les pièces (sorties) dont vous disposez.
Si le décalage est ONE , vous avez beaucoup de petites sorties et effectuer des paiements pour des montants non minimes commence à coûter cher en frais, car les transactions que vous générez sont énormes.
Si le décalage est dans l’autre sens, alors payer pour une petite chose nécessite l’utilisation d’une grosse pièce, et la monnaie rendue divulgue des données précieuses sur votre richesse.
Trafic réseau
Les connexions Bitcoin P2P ne sont pas chiffrées. ONEune des raisons est que la plupart des données circulant sur le réseau P2P sont publiques ; leur chiffrement semble donc inutile.
Une autre raison est que, de par sa nature même, lorsque vous vous connectez à un réseau P2P, vos pairs peuvent être absolument n’importe qui et faire absolument n’importe quoi – par exemple, il peut s’agir de nœuds gérés par la NSA.
Et ce n'est même pas une mauvaise chose ! Pourquoi la NSA ne devrait- T gérer les nœuds ? Si quelqu'un le lui interdisait, cela impliquerait une sorte d'autorité centrale dictant qui peut gérer Bitcoin et qui ne peut T. Nous ne voulons T de ça.
Le chiffrement des données est donc utile lorsque l'on sait clairement qui peut y avoir accès et qui ne peut T accès. Le chiffrement des données publiques destinées à des personnes inconnues n'est pas aussi utile.
Malgré tout cela, il existe encore quatre raisons pour lesquelles il serait utile de crypter les connexions.
Le première raisonest pourFiltres Bloom.
Il s'agit de représentations compactes de ce qui est pertinent pour votre portefeuille : généralement, les adresses/clés qu'il contient. Un filtre est ONE et peut être bruyant. Autrement dit, vous ne pouvez T lire les adresses directement à partir d'un filtre ; vous pouvez seulement l'appliquer à la blockchain et voir ce à quoi il correspond.
Les filtres peuvent générer des faux positifs ; un nœud ne peut donc jamais être sûr qu'une adresse vous appartient réellement. C'est plutôt bien, mais même avec un taux de faux positifs élevé, cela réduit considérablement le nombre de cryptomonnaies que vous pourriez posséder.
Les filtres Bloom ne sont pas des informations publiques ; ils sont simplement partagés entre un client et le nœud auquel il se connecte. Il serait donc judicieux de les masquer pour éviter les écoutes indiscrètes, comme celles des personnes partageant votre point d'accès Wi-Fi.
Le deuxième raison c'est que même si les transactions sont publiques, leur adresse IP d'origine ne l'est pas (ou n'est pas censée l'être).
Mais un adversaire capable d'observer de nombreux liens Internet pourrait déterminer de manière assez fiable où une transaction a commencé en enregistrant précisément les moments où une transaction a été vue pour la première fois et en examinant le premier moment où elle a transité par une LINK fibre.
Il semble que certaines agences de renseignement soient capables de réaliser ce type d'analyse. Le chiffrement des liens ne garantit T la résolution du problème, car l'analyse temporelle reste possible, mais elle complique certainement la tâche.
Le troisième raison est-ce que si le cryptage était combiné à l'authentification « confiance à la première utilisation » (TOFU), il serait plus difficile, même pour les MITM actifs, d'effectuer des attaques Sybil sur les portefeuilles et de leur fournir de mauvaises données.
Ceci est plus important pour les clients SPV que pour les nœuds complets, mais les deux pourraient en bénéficier.
Le raison finaleSi elle est correctement mise en œuvre, l'utilisation de SSL pour les connexions P2P les rendrait plus difficiles à identifier et à bloquer à l'aide de dispositifs d'inspection approfondie des paquets.
CoinJoin
De tous les problèmes ci-dessus, la solution à la fuite de données via les sorties de modification est ONEune des plus vivement débattues (même si beaucoup de gens ne réalisent T qu'ils en débattent).
Le Proposition CoinJoin Cette technologie a suscité beaucoup d'intérêt et a connu quelques premières implémentations. Certains y voient principalement un outil de Politique de confidentialité , d'autres un moyen de contourner le traçage des cryptomonnaies.
Lorsqu'il est utilisé à des fins de Politique de confidentialité, il peut être décrit comme un moyen d'essayer de supprimer des informations qui ont déjà été divulguées.
Cependant, CoinJoin présente un certain nombre de problèmes sérieux qui rendent une alternative souhaitable.
C'est extrêmement complexe à mettre en œuvre correctement, vulnérable aux attaques Sybil/DoS (il s'agit souvent de la même chose dans ce contexte), juridiquement discutable et il n'est même pas certain que l'obfuscation fonctionne.
Le Vol sur le marché des moutons On a vu quelqu'un prétendre tracer des pièces à travers des culbuteurs et des mélangeurs, et apparemment avec un certain succès. ONEun des outils du traceur était des attaques Sybil/DoS sur les services de mixage ; il ne s'agit donc pas d'un problème théorique.
Bien que les implémentations de jouets ne soient pas trop difficiles à mettre en place, les implémentations robustes du monde réel avec une gestion appropriée des délais d'attente, des contrôles de sécurité, une bonne intégration de l'interface utilisateur du portefeuille , ETC demandent beaucoup plus d'efforts.
Jusqu'à présent, seul blockchain.info a réussi à en créer un (sur sharedcoin.com), et il faut être sûr qu'il ne KEEP T de journaux. Sinon, n'importe qui disposant de journaux pourrait les déconstruire.
Le problème le moins évoqué est peut-être celui de l’expérience utilisateur.
Une transaction CoinJoin nécessite la participation d'autres personnes. Plus il y a de participants, mieux c'est. Cependant, le Bitcoin ne connaît actuellement qu'un pic d'environ une transaction par seconde.
Même si toutes les transactions étaient CoinJoined, et toutes réunies en un seul point (ack, centralisation !), vous devriez quand même attendre 10 à 15 secondes pour avoir un bon ensemble de participants avec lesquels vous mélanger.
Il s'agit simplement de démarrer le protocole. Ensuite, tous les participants devront récupérer la transaction candidate et la signer. En cas de dépassement du délai, tout devra être recommencé.
Dans de mauvaises conditions, ce processus peut facilement prendre une minute ou plus, surtout si certains participants disposent de réseaux instables (par exemple, des téléphones) et utilisent Tor. Étant donné que nous cherchons à améliorer les performances plutôt qu'à les réduire, cela semble être un problème majeur en soi.
Bien que l’augmentation du trafic et de l’utilisation contribuerait à réduire ce problème, même si le trafic doublait, la division du point de rendez-vous central unique ramènerait immédiatement les temps d’attente à la case ONE.
Vous pouvez résoudre ce problème en effectuant des CoinJoins en arrière-plan, sans rapport avec une dépense réelle en cours.
Cela résout le problème de l’attente dans la file d’attente au café, mais des frais doivent alors être payés sur ces transactions, et il peut être difficile d’expliquer aux gens pourquoi leur solde a soudainement chuté du jour au lendemain en raison d’une taxe de Politique de confidentialité inattendue.
Ce genre de mauvaise surprise rendrait le Bitcoin peu attrayant pour les utilisateurs ordinaires. Cela soulève également la question de savoir quand et à quelle fréquence cela se produit.
Évitement de fusion
Étant donné qu’une cause courante de fuites de Politique de confidentialité est une inadéquation entre la taille des pièces disponibles et ce qui est requis, il semble que nous pourrions aborder le problème sous un autre angle : en évitant de créer des fuites d’informations qui doivent être effacées en premier lieu.

Prenons le cas d’ ALICE, une employée de café qui reçoit un salaire.
ALICE fait un excellent travail et son patron le reconnaît en lui offrant un salaire plus élevé que la normale.
Son collègue Bob soupçonne qu'il n'est T payé autant ALICE et veut le savoir, alors il convainc ALICE de lui faire un petit paiement juste après le jour de paie (peut-être qu'ils font un pari et que Bob gagne).
Avec des Bitcoin classiques, le portefeuille d'Alice utilisera probablement son salaire, et la variation révélera son salaire. Même si elle a déjà effectué plusieurs paiements, Bob peut Réseaux sociaux la chaîne des transactions jusqu'à trouver un chiffre relativement rond à la bonne date et conclure qu'il s'agit probablement de son salaire.
CoinJoin simple ne l'aide T non plus. Elle ajouterait une entrée importante au mix et obtiendrait une sortie importante.
Elle pourrait Request de nombreuses petites sorties, mais les entrées correspondront toujours au salaire et à la date appropriée. À moins que de nombreuses personnes gagnant des salaires colossaux ne partagent la même transaction CoinJoin, la fuite n'a T été corrigée.
Ce dont elle a vraiment besoin, c’est d’éviter d’avoir une sortie unique aussi importante en premier lieu. Appelons cela l’évitement de la fusion.
Quand elle soumet sonRequest de paiement BIP 70Elle demande à son employeur un joli mélange de coupures, comme si elle achetait de l'argent liquide dans un bureau de change.
La Request spécifie également une adresse unique pour chaque sortie. Le protocole de paiement ne précise pas comment un portefeuille doit répondre à cette Request, mais il permet au portefeuille de l'expéditeur de soumettre plusieurs transactions indépendantes afin de satisfaire les sorties souhaitées.
[post-citation]
Si son employeur utilise un ancien portefeuille qui ne comprend T l'évitement des fusions, il générera et lui soumettra une seule transaction géante comportant de nombreuses entrées (de tous les cafés) et toutes les sorties demandées.
Cela ressemblera beaucoup à une transaction CoinJoin, mais avec un seul participant. Cependant, il est impossible de le savoir simplement en observant la blockchain.
Si son employeur utilise un portefeuille plus récent qui comprend l'évitement des fusions, alors quelque chose de mieux se produit : elle recevra un certain nombre de transactions différentes et plus petites, chacune ONE' entre elles créant une ou deux des sorties qu'elle a demandées.
Rien ne les LINK . Comme elle fait confiance à son employeur pour éviter les doubles dépenses, elle peut étaler la diffusion de manière à ce que même le timing ne les trahisse pas.
Si la sélection des sorties est judicieuse, elle ne se retrouvera jamais dans une situation où elle obtiendrait des sorties anormalement grandes ou petites pour un paiement donné. Bob verra simplement une petite transaction qui génère une petite monnaie, et, même en remontant jusqu'à la source, il ne trouvera jamais de sortie équivalente à un salaire. ALICE gagne !
Les sorties de change peuvent divulguer des données d'une autre manière. Bob a échoué dans sa tentative de Guides le salaire d'Alice en remontant la chaîne de blocs, mais il peut toujours observer la sortie de change du paiement qu'il a reçu pour voir ce qu'il advient de celui-ci.
Si le changement est ensuite combiné avec de nombreux autres pour créer un paiement énorme, il sait soudainement ALICE doit avoir possédé au moins cette somme d'argent.
Ici, CoinJoin semble fonctionner : si le changement se transforme en un mélange, qui peut dire à qui appartiennent les sorties ? Mais c'est fragile. Même si les sorties sont de taille aléatoire, en l'absence d'évitement de fusion, elles seront recombinées pour générer un paiement important.
Si ALICE mentionne en passant qu'elle part en vacances avec son petit ami, Bob peut regarder les sorties du mix dans lequel sa monnaie a été versée et attendre que certaines des sorties soient recombinées.
Si 1/3 des sorties restent là sans être dépensées, 1/3 sont dépensées sans être combinées de manière significative, et un autre 1/3 sont combinées en un paiement de 5 000 $ la veille du jour où ALICE mentionne ses vacances, il y a fort à parier que le voyage lui coûte 5 000 $.
Propriétés d'implémentation
Ce schéma présente plusieurs éléments qui le rendent agréable à mettre en œuvre :
- Il peut être écrit de manière incrémentale : un algorithme simple et peu intelligent peut néanmoins améliorer la Politique de confidentialité. Un meilleur algorithme peut ensuite être développé et déployé, T nécessiter de mises à niveau globales complexes. Cela s'intègre parfaitement au modèle de développement de portefeuilles concurrents, piloté par des bénévoles et basé sur des fluctuations, propre à Bitcoin .
- C'est très simple et ne comporte ni pièces mobiles ni machines à états complexes. Vous T à vous soucier d'un téléphone portable à l'autre bout du monde qui s'engouffrerait dans un tunnel au mauvais moment, ou d'une réimplémentation logicielle boguée.
- Il n'y a pas de centralisation, pas même de serveurs de rendez-vous transitoires.
- Il n’y a aucun risque juridique, car vous ne faites appel à aucun service qui pourrait être considéré comme un outil de blanchiment d’argent.
- Il est robuste. J'ai donné ci-dessus des exemples de la façon dont CoinJoin peut sembler fonctionner, mais présenter néanmoins des fuites en présence de très peu d'informations supplémentaires. L'évitement des fusions ne présente T ce problème.
Il y a aussi quelques inconvénients :
- La qualité de votre Politique de confidentialité dépend fortement de l'intelligence avec laquelle les personnes qui vous envoient de l'argent gèrent leurs transactions. Votre Politique de confidentialité repose donc sur des personnes qui ne sont pas forcément motivées à agir. Espérons que les logiciels de portefeuille courants agiront correctement par défaut.
- Cela augmente le nombre de transactions, même si la surcharge n'est pas aussi importante qu'on pourrait le penser : une transaction se résume à une liste d'entrées, de sorties et d'un en-tête à deux champs (version et heure de verrouillage). Les entrées et les sorties ne sont pas réellement modifiées par rapport à une bonne implémentation CoinJoin, et la version/heure de verrouillage pourraient facilement être compressées/encodées en varint pour gagner de la place. La différence serait de l'ordre de quelques octets plutôt que de quelques kilo-octets.
- Cela repose sur le protocole de paiement. Or, de nombreux éléments en dépendent, et le protocole de paiement est essentiel pour lutter contre la réutilisation des adresses, condition nécessaire au bon fonctionnement de tous les systèmes de Politique de confidentialité proposés. Il est important de rendre le BIP70 aussi simple et répandu que possible.
L'évitement des fusions n'interfère T avec le traçage des pièces. Certaines personnes pourraient souhaiter implémenter des systèmes CoinJoin pour cette seule raison.
Cependant, je ne peux T imaginer que cela se généralise. Si la Politique de confidentialité des gens est protégée par d'autres moyens, CoinJoin devient alors un système visant à « aider les voleurs à cacher leur argent volé », ce qui réduit l'incitation à participer, augmente encore les risques juridiques et amènerait les gens à se demander pourquoi leurs applications de portefeuille leur demandaient des frais simplement pour protéger des personnes qu'ils soupçonnent probablement d'être malhonnêtes.
En outre, leIncident du Sheep Marketplacemontre que la lutte décentralisée contre la criminalité en tant que technique est parfois la seule option : personne ne va demander à la police de l’aider à récupérer l’argent de la drogue volé, et aucun gouvernement ne prendrait la peine de l’aider s’il le faisait.
Cet article a été initialement publié surMoyen
Image du clavier de Politique de confidentialitévia Shutterstock
Mike Hearn
Mike Hearn est un développeur spécialisé dans les logiciels système de bas niveau. Il a précédemment travaillé chez Google et se concentre désormais sur le système de monnaie virtuelle Bitcoin .
