ĞMixer – anonymiseur de transactions sûr et distribué

Ah oui pardon, j’ai toujours des problèmes avec les configs de serveurs, j’ai contourné le problème avec un hidden service… :confused:

Est-ce que ça marche du coup (il dit “server started” sans erreur) ?

Je n’arrive pas à me connecter à gmix.jytou.fr:9016. Comment ça marche avec le sous-domaine, c’est la box qui route vers l’IP locale ? En tout cas pour moi ça marchait en mettant l’IP publique.

Je suis un boulet. J’avais mon VPN activé, bien sûr que ça rerentrait pas de l’autre côté. :stuck_out_tongue: Par contre du coup je vais devoir le déplacer sur une autre machine, mais j’en ai pas d’autre avec libleveldb-dev=>1.20… un peu plus galère.

Oui c’est galère, sous Debian stable il n’y a qu’une vieille libleveldb, du coup j’ai dû compiler à la main la nouvelle, sauf qu’elle nécessitait une version trop récente de cmake que j’ai dû compiler à la main aussi… ce qui a pris plus d’une heure (sur mon pauvre RPi).

Parfois c’est bien ArchLinux !

Ça marche ! :partying_face:

Après plein de correctifs, nous avons désormais 3 nœuds fonctionnels (2 chez moi et 1 chez @pytlin), le test est concluant.

Si vous voulez participer à un grand test, vous pouvez vous connecter au réseau en ajoutant ces lignes au fichier peers (après avoir tout installé et configuré d’après le README) :

4QRZj4bHpXTdJajfX8mTf2RmYQhKX7BtiMiZL3z5Lo8F svetsae7j3usrycn.onion 10951
FE4p3w7LvfDtat7pwNky5vZ9SPGKRrFid8gS2bg8Pjka svetsae7j3usrycn.onion 10952
BCpJfvYWXLqtazhDxFjULdCwYqt2L9JGADfQPEBX1B7A 23.82.19.79 10951

Avoir Tor en service est nécessaire pour se connecter aux nœuds onion.

J’aimerais bien faire une présentation de ĞMixer aux RML13 mais ne pourrai pas être présent sur place, est-il possible de le faire à distance ?

6 Likes

Un nouveau noeud existe, donc cela fait 4 noeuds :

4QRZj4bHpXTdJajfX8mTf2RmYQhKX7BtiMiZL3z5Lo8F svetsae7j3usrycn.onion 10951
FE4p3w7LvfDtat7pwNky5vZ9SPGKRrFid8gS2bg8Pjka svetsae7j3usrycn.onion 10952
BCpJfvYWXLqtazhDxFjULdCwYqt2L9JGADfQPEBX1B7A 23.82.19.79 10951
HYm6mvGz4JyKdUWwYsJsdTVCfMx3mGaZgQeNtdgSGPFN 185.193.38.231 10951
1 Like

Un nouveau noeud existe, donc cela fait 5 noeuds :slight_smile: :

4QRZj4bHpXTdJajfX8mTf2RmYQhKX7BtiMiZL3z5Lo8F svetsae7j3usrycn.onion 10951
FE4p3w7LvfDtat7pwNky5vZ9SPGKRrFid8gS2bg8Pjka svetsae7j3usrycn.onion 10952
BCpJfvYWXLqtazhDxFjULdCwYqt2L9JGADfQPEBX1B7A 23.82.19.79 10951
HYm6mvGz4JyKdUWwYsJsdTVCfMx3mGaZgQeNtdgSGPFN 185.193.38.231 10951
HsYcZNRjjXEv98vpCbNdQuAHaTCXV6fCNu8tKC1xkGjR 51.68.124.31 10951

Un nouveau noeud existe, donc cela fait 6 noeuds :slight_smile: :

4QRZj4bHpXTdJajfX8mTf2RmYQhKX7BtiMiZL3z5Lo8F svetsae7j3usrycn.onion 10951
FE4p3w7LvfDtat7pwNky5vZ9SPGKRrFid8gS2bg8Pjka svetsae7j3usrycn.onion 10952
BCpJfvYWXLqtazhDxFjULdCwYqt2L9JGADfQPEBX1B7A 23.82.19.79 10951
HYm6mvGz4JyKdUWwYsJsdTVCfMx3mGaZgQeNtdgSGPFN 185.193.38.231 10951
HsYcZNRjjXEv98vpCbNdQuAHaTCXV6fCNu8tKC1xkGjR 51.68.124.31 10951
wwtwMNBLJt7AQ5mWQeyGKddgjLtpRdyTTPYuMBSAKcG 37.59.36.94 10951

Un script pour installer le gmixer de @tuxmain existe maintenant dans le projet :

Je l’ai testé chez moi sur un Debian 9.8 et cela fonctionne bien. J’obtiens cela :

Vous pouvez afficher l’aide avec le paramètre -h

@tuxmain l’a testé récemment et a eu une erreur qui je pense est liée à un paquet qu’il fallait installer.

Si des âmes généreuses seraient prêt à l’utiliser et me remonter les bugs qu’ils trouvent, cela serait sympa :slight_smile:

Merci d’avance.

2 Likes

Nous avons maintenant deux outils de monitoring du réseau ĞMixer :

Ça sera l’occasion de commencer à coder un client web complet, afin de permettre à tout le monde de tester le réseau.

2 Likes

Le premier lien ne fonctionne plus, j’ai changé de place, c’est ce lien là :

http://185.193.38.231/gmixer-instances.html

Donc maintenant si vous voulez vous connecter au réseau, il est conseillé de prendre le fichier de pairs généré dans une des deux interfaces web dont les liens sont ci-dessus. :slight_smile:

Je suis en train de mettre en place des statistiques pour le réseau gmixer. Si des personnes ont des idées pour des indicateurs pertinents, cela sera avec plaisir.

Pareil pour la description des indicateurs, si vous pensez que des reforumlations seraient meilleures, je suis preneur (cela n’est pas mon fort :joy: )

Pour le moment l’affichage est en ligne de commande, mais à terme, cela sera sur une belle interface web :slight_smile:

6 Likes

Ça faisait longtemps que je n’avais pas parlé publiquement de l’avancement du ĞMixer, c’était juste une pause à cause de fatigants problèmes d’asynchrone et de bazar pour utiliser Silkaj.

Du coup pour envoyer une transaction j’exécute la commande silkaj avec un fichier d’authentification, c’est pas propre mais au moins ça marche. (il faut exécuter le client sur une machine de confiance, parce que la clé privée est conservée jusqu’au redémarrage)

C’est aussi pour dire que le projet n’est pas abandonné, donc si des gens veulent héberger un serveur de test, c’est possible ! (mais j’aimerais quand même terminer une modif pour moins spammer les nœuds Duniter)

3 Likes

J’ai mis la barre de progression de @Paidge sur la page du ĞMixer, pour rémunérer d’éventuels contributeurs (et hébergeurs) (donc pour l’instant @pytlin).

J’ai remis mon nœud en service : http://svetsae7j3usrycn.onion:10951 (pour s’y connecter, le fichier de pair est ici)

1 Like

Et avec un background_color=E0E0E0 ça ne s’intègrerait pas mieux à ton site ?

1 Like

Dis, @tuxmain, je crois qu’il y a des trucs que je n’ai pas compris pour le mixer. Si tu as le temps, pourrais-tu détailler comment une tx est « mixée », peut-être avec des schémas sur la page de présentation ?

Quelques questions sur ce qui ne me parait pas clair :

Q1 - la tx est séparée en plusieurs petits bouts ? Sinon, il est facile de suivre des tx d’un même montant.

Q2 - les adresses des noeuds du réseau sont-elles publiques ? Dans ce cas, s’il y a une tx envoyée à un instant T, puis plusieurs tx dans le réseau de noeuds, puis une tx qui sort d’un même montant, il n’y a aucune anonymisation.

Q3 - remarque similaire : s’il y a une seule tx dans un intervalle de temps donné, comment peut-elle être « mixée » avec d’autres ?

Pour l’instant, comme je n’ai pas compris comment ça marche, je n’ai pas confiance dans ce système et je ne veux ni l’utiliser, ni ajouter un noeud. Mais je suis intéressé à comprendre. Pour le moment je comprends que c’est un fuzzer, qui rend plus difficile l’association entre l’émetteur et le destinataire, mais qu’une analyse poussée des transactions permettrait de retrouver (en faisant les sommes de montants échangés, en regardant les périodes et les portefeuilles en-dehors des noeuds Ğmixer).

Merci d’avance !

Techniquement, on peut envoyer une tx du montant qu’on veut. Elle ne sera pas divisée par les nœuds. Pour garantir l’anonymat, il faut respecter plusieurs règles :

  • un montant unique pour tout le monde (par exemple 100 Ğ1)
  • que chaque nœud mixe plusieurs transactions à chaque fournée (pour l’instant je pense à un minimum de 5).
    • Conséquence : une tx peut se retrouver bloquée en cas de trafic bas. Je pense à faire remonter la tx aux nœuds vers le client au bout d’un temps d’expiration, comme une semaine.

Les adresses des nœuds sont et doivent être publiques, et associées explicitement (par signature) à une identité membre de la TdC. En effet, rien n’empêche un nœud de tricher. Mais si il triche, le client pourra publier le document signé par le nœud, une sorte de contrat qui n’a donc pas été honoré, pour discréditer le nœud et son propriétaire. Ça me semble assez persuasif.

Je ferai un simulateur de mixage, pour générer des listes de transactions à partir de plusieurs paramètres, et tester les probabilités de désanonymisation.

Edit: Du coup oui il faudra que je fasse des schémas explicatifs pour tous ces mécanismes. Si les règles sont respectées, on peut toujours trouver les émetteurs et destinataires potentiels d’une tx, mais plus il y a d’utilisateurs plus c’est difficile ! Et on peut aussi s’envoyer des txs à soi-même pour aider.

Et on ne peut faire confiance au réseau que si il y a plusieurs hébergeurs de nœuds, donc pour tester il faut être plusieurs (éventuellement tester avec des petits montants pour minimiser les risques). De mon côté je vais installer plusieurs nœuds.

2 Likes

J’ai fait un outil en Python pour simuler le fonctionnement d’un réseau ĞMixer selon :

  • nombre de nœuds
  • nombre de clients
  • durée de fonctionnement
  • nombre moyen de txs envoyées par client par bloc
  • nombre de montants de txs différents
  • nombre minimum de txs pour mixer
  • nombre de couches

et pour retrouver les potentiels émetteurs de chaque transaction sortie du réseau, avec la probabilité pour chaque potentiel émetteur ainsi que l’écart-type des probas.

Avec les paramètres 6 nœuds, 20 clients, 2016 blocs (environ 1 semaine), 1 tx/jour/client, mixage à 5 txs, 3 couches, au bout de 3-4 jours on se stabilise à un écart-type entre 1 et 3%.

Je vais faire des graphes en fonction de plusieurs paramètres, mais c’est très long à calculer.

Edit:

2 Likes

Hello @tuxmain,

Sympa ce simulateur. Si tu veux je peux t’aider à faire tourner le simulateur :slight_smile:

Le code n’est pas propre et pas commenté, mais le voici.

Si quelqu’un veut le modifier, je le mettrai dans le dépôt.

Je ferais mieux de le réécrire en Rust pour gagner en performances, avant de le faire tourner longtemps.

Edit: @matograine je crois que les données actuelles permettent de conjecturer sur la sécurité du système : avec autant d’émetteurs équiprobables à 2% d’écart type qu’il y a d’utilisateurs, je pense que l’anonymat est plutôt bon. Cependant on pourrait affiner l’analyse qui pour l’instant est discrète, mais ça dépasserait mes compétences et ma puissance de calcul.

3 Likes

J’ai rédigé une page d’explications sur le mixage, les oignons, la TdC et enfin le ĞMixer. J’ai essayé de faire accessible pour tout le monde (et quelques schémas, j’en ajouterai d’autres pour Tor).

7 Likes