Ah oui pardon, j’ai toujours des problèmes avec les configs de serveurs, j’ai contourné le problème avec un hidden service…
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é. 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).
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) :
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.
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 )
Pour le moment l’affichage est en ligne de commande, mais à terme, cela sera sur une belle interface web
Ç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)
J’ai mis la barre de progression de @Paidgesur la page du ĞMixer, pour rémunérer d’éventuels contributeurs (et hébergeurs) (donc pour l’instant @pytlin).
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).
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.
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.
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.