Système alternatif pour la toile de confiance

Je répète : l’attaquant se fiche de la réunion. Il a trouvé 5 membres correctement distants et prêts à le certifier, il devient membre.

1 Like

Alors, imaginons qu’ils trouvent 5 membres complices.
Ces 5 membres ne peuvent pas le certifier, car seul l’autre membre du couple dont il fait partie lors de chaque réunion le peut.
Il faudrait donc qu’il tombe sur un de ces 5 membres, à chacune des 5 réunions du mois.

Dans mon système, un membre de peut pas en certifier un autre pour une réunion donné, le seul membre qui le peut, c’est celui choisit aléatoirement, par un bloque particulier de la blockchain.

Donc tu veux dire que la notion “couple de réunion” fait partie intégrante de la blockchain ?

Exactement, impossible de choisir avec qui tu vas te retrouver. C’est choisit en fonction des membres qui font acte de présence avant la réunion, et d’un hash de blockchain utilisé comme un seed. C’est ce qui permet la solidité de ce système.

Voilà et ça ce n’est pas bon, ça ne peut pas marcher, outre la complexité technique, il faudrait que les groupes locaux soit super méga rigoureusement bien organisés et que suffisamment de personnes se rendent disponibles aux horaires décidez par al blockchain, et en plus ils seront sanctionner s’il en se rendent pas dispo, un tel système serait très très mal perçu par les utilisateurs finaux, en plus d’être hyper contraignant, en outre c’est vraiment très très dur a coder, qui le ferai alors que déjà nous manquons cruellement de codeurs ?!?

Tu devrait vraiment méditer sur le principe du rasoir d’Ockham :

Ton système est vraiment beaucoup beaucoup trop compliqué pour les utilisateurs finaux …

3 Likes

Je réfléchie à ton contre-argument, et te répond dès que c’est suffisamment clair pour moi.
Cependant si tu as déjà fait les calcules, je les veux bien.

Effectivement, mais cela ne fait que diminuer la probabilité de tomber sur les mauvaises personnes pour un attaquant, car il pourra prendre en compte cette effet de proximité, et choisir des groupes qui ne sont pas proche les uns des autres.

Cependant oui, pourquoi par faire une “simulation”, ça me semble gérable, je peux essayer de faire ça.

j’ai déjà fait des simulations, et @cgeek aussi de son coté, mais je pense effectivement que tu a besoin de faire tes propres simulations pour te rendre compte par toi même que tu sur estime fortement les risques de la wot actuelle :

Je ne suis pas sûr de comprendre ce que tu veux dire, de mon point de vue ça semble assez simple.
Il suffit juste d’avoir l’heure de la création du bloque, dans le bloque lui même.
Si jamais un client duniter crée un bloque avec une heure se situant avant l’heure du dernier bloque, ou après l’heure où il est reçus, il est considéré comme invalide.
À partir du moment où on a une heure approximative dans les bloques, et avec une bonne relation d’ordre, il suffit de choisir les bloques important en fonction de cette heure.
Après ça, ça n’est plus une question de groupe locaux, la blockchain fonctionne à partir d’un fuseau horaire particulier, et c’est ce fuseau horaire qui donne les heures de réunion.
Chaque membre à la responsabilité de participer à une des réunions dans le mois, dont il connaît l’horaire. Si il en loupe une, il peut participer à une des autres.

Donc tu codes bien aussi la notion de réunion, la notion de présence, etc.

Certes, tu peux arriver à un système avec extrêmement peu de sybilles. Mais avec aussi extrêmement peu de membres j’en ai bien peur, vu la complexité induite.

Mais cette idée d’ajouter de l’aléatoire avait déjà été suggérée quand @elois avait rencontré des doctorants je crois, la discussion est cité par @jytou un peu plus haut.

2 Likes

@dionisos a tu déjà contribuer au code d’une crypto-monnaie ?

Si la réponse est non alors c’est normal que cela te paraisse simple.
La réalité c’est que l’Informatique c’est compliqué, et c’est encore plus vrai quand on parle de code. Tu n’imagine pas ce qu’est déjà l’extrême complexité du protocole actuel pour appliquer des règles pourtant bien plus simples que ton système !
Si ton système est “simple” comme tu le prétend alors le protocole actuel l’est encore plus, lie le et si tu le trouve simple on en reparle :wink:

https://git.duniter.org/nodes/typescript/duniter/blob/master/doc/Protocol.md

Ok, il va maintenant me falloir un peu plus de temps pour continuer ce débat, particulièrement intéressant.

Je vais dans un premier temps revoir mes calcules, et tenter une simulation, pour vérifier mes dires sur la faiblesse de la tdc actuelle. (car c’est inutile d’aller plus loin si je me trompe sur ce sujet, ou si je n’arrive pas à vous convaincre de ses faiblesses).
Je vous répondrais une fois cela fait, sur ce sujet.

Si il s’avère que je ne me trompe pas, j’essayerais de modifier le protocole actuel, pour y inclure le mien, et ainsi montrer que c’est faisable. (ou au contraire, me rendre compte que ça ne l’est pas, pour une raison que je ne vois pas actuellement)

2 Likes

Ce qu’il faut aussi prendre compte c’est qu’il faut que ces règles soient simplement vérifiables par tout un chaqu’un, sans qu’il n’y ai aucune confiance entre chaqu’un des nœuds du réseau. Le système que tu propose peut être intéressant mais est extrêmement lourd, prendrait beaucoup de place dans la blockchain, demanderais beaucoup de développement, et rendrais la procédure d’entrée dans la toile de confiance beaucoup plus compliquée que ce qu’elle est actuellement, alors que beaucoup de personnes trouvent déjà ce système complexe.

Aussi, vu les problème de scalabilité inhérents aux blockchains, je vois mal ce genre de protocole fonctionner avec des millions d’utilisateurs. On a pour l’instant quelque chose qui reste assez léger (qui pourrait selon moi l’être encore plus, mais ce n’est pas le sujet) et qui peut être utilisé sur des petites machines. On est vraiment bien placé au niveau de la décentralisation, et un système aussi complexe ne pourrait sûrement pas être vérifié par toutes les machines.

4 Likes

Voilà mon premier essaye de simulation

On peut voir que je trouve à peu près la même chose par le calcul, que par empirisme (j’ai testé avec différentes valeurs). Ou au moins, je reste dans les mêmes ordres de grandeur.
Je trouverais ça donc surprenant que je me sois complètement trompé dans les deux cas.

En fait je suis d’accord avec ta manière de modéliser le problème (c’est d’ailleurs la manière dont je l’ai modélisé dans mon programme).
Sauf qu’il me semble que mon calcule reste valide avec cette modélisation.

J’ai choisit 20 connaissances par personne, et 10000 membres, dans ma simulation. (car d’après moi, si il faut demander à plus de 20 personnes à chaque fois qu’on veut certifier quelqu’un, ça devient vraiment fastidieux, même si c’est possible de connaitre plus de 20 personnes).
Cependant avec 50 connaissances et 10000 membres, la probabilité de se faire détecter reste faible. (par calcule et par empirisme).
Ça serait encore plus faible avec 1 million de membres, mais fait ramer mon pc.

Dis moi si tu vois une grosse erreur dans mon programme.

J’ai aussi regardé ta simulation, mais il me semble que ce que tu analyses, ça n’est pas la difficulté de créer un double compte, mais plutôt la difficulté de détruire complètement le système avec une attaque sybil, tu me diras si je me trompe.

@dionisos tu n’a pas compris l’énoncé, tu pioche 2 groupes de 2à personnes au hasard aprmis 10000 et tu regarde sic es 2 groupes ont une intersection, ce qui ne correspond pas au problème posé.

Ce qu’il faut simuler c’est un graphe de toile de confiance a l’instar du module wotb et générer plusieurs toiles aléatoires puis analyser ses toiles puis vérifier combien de membres ont été certifier par deux groupes de certificateurs complétements isolés dans le graphe.

Tu peut faire cette étude avec la wot G1 actuelle et tu te rendra compte que c’est le cas pour zéro membres.

Ensuite 2ème étape : ce placer dans le cas d’une attaque volontaire d’un membre, qui chercherai donc a contacter volontairement 2 groupes de 5 personnes qui ne se connaissent pas entre eux, mais encore faut t’il qu’il connaissent l’attaquant (nous sommes dans une hypothèse sans complicité). Pour simuler cele on pourrait superposer deux graphes : on premier graphe des connaissances sociales puis on deuxième des certifications, ou seulement une faible partie des liens sociaux réels sont certifiés.

Oui c’est exact, et c’est le seule chose qui nous intéresse. Car même avec le système le plus parfait au monde il y aura toujours de la fraude, nous ne cherchons pas a rendre la fraude impossible, juste a la rendre suffisamment marginale pour qu’elle n’est pas d’impact significatif sur la monnaie.

Il y a un autre point essentiel que tu ne prend pas en compte dans tes suppositions sur les risques de la toile : la non omniscience de l’attaquant et la pression sociale.

L’attaquant qui choisirai deux groupes de 5 membres qu’il connait et dont il crois que ces deux groupes non aucun lien entre eux, en réalité il n’en sais rien, il prend un risque énorme, il est fort probable qu’il existe des liens entre ces deux groupes dont il n’a pas connaissance, et comme dit plus haut la plupart des liens sociaux ne sont pas forcément traduit en certifications, donc une analyse de la toile actuelle ne peut pas aider l’attaquant a trancher, dans tout les cas il prend un risque énorme, et s’il est découvert les gens ne voudrons plus le certifier, il perdra la confiance de la communauté sans parler de sa réputation qui vas dégringoler.
S’il y a bien une chose a laquelle sont attaché les humains, plus encore que l’argent : c’est leur place sociale, le fait d’être reconnu par les autres.

Encore un dernier point : 5 certifications ne suffisent pas, l’attaquant vas se voir demander des deux cotés d’émettre ou recevoir de nouvelles certifications au fur et mesure du temps, et donc la probabilité d’une personne face le lien entre les 2 vies et découvre la supercherie tend inexorablement vers 1 a mesure que le temps passe !

3 Likes

Il me suffit donc de « faire acte de présence » entre 10h et 12h avec mon compte A, puis entre 14h et 16h avec mon compte B, et entre 18h et 20h avec mon compte C, c’est bien ça ? :smiley:

Dans le papier que j’avais lu à l’époque où ce genre de solution avait été discutée, la réunion était imposée aléatoirement à n’importe quel membre. Et si tu y es pas, tu es cuit pour conserver ton statut de membre. Sinon c’est trop facile de dire la rare fois où tes 2 comptes seront en même temps tirés au sort que tu as eu un empêchement avec l’un de tes comptes, et de venir à la suivante, quand ton autre compte est libre.
Et d’ailleurs, il y avait bien un papier, mais je n’ai trouvé d’implémentation nulle part à l’époque. Peut-être trop utopique/ingérable/complexe/contraignant ?

Ce que tu oublies dans cette simulation, c’est que souvent je connais les très bons amis de mes très bons amis, sinon, c’est sûrement que ce ne sont pas vraiment des gens que « je connais ». Et donc il y a une notion de proximité entre gens qui se certifient, ce qui change tout. On peut envisager par exemple quelqu’un qui voudrait tricher en se faisant certifier sous une identité par ses collègues de travail, et sous une autre identité par sa famille et ses amis. Quelle est la chance qu’un jour ou l’autre un collègue et un ami ou membre de la famille entre en relation et découvre le pot au roses ? Ne risque-t-il pas aussi par ses transferts monétaires de dévoiler un lien entre les deux comptes ?

Tu oublies que celui qui triche va devoir s’endormir tous les soirs avec la crainte d’être expulsé du système le lendemain. Or, les humains ont toujours peur d’être rejetés, et quand c’est le rejet du système monétaire qui est en jeu, on joue rarement avec le feu. Certains le font, mais ce sont des exceptions, souvent des désespérés du système, mais le système lui-même n’y est du coup pas pour rien. Et il y a un adage qui se vérifie assez souvent : « Le monde est petit ». Dans le cas d’une triche dans la WOT, il suffit d’une fois pour être pris.

3 Likes

(Je pense que tu voulais dire deux groupes de 5 personnes)
Je ne regarde pas si les deux groupes ont une intersections, mais si le premier groupe connaît une personne du deuxième groupe. (Et si le deuxième groupe connaît une personne du premier groupe.)
Évidemment si je ne regardais que l’intersection entre les deux groupes de 5 personnes, ça serait complètement faux.

J’ai peur de ne pas te suivre ici.
L’hypothèse que j’ai fait, c’est que avant de certifier quelqu’un, chaque membre va demander à tous ses amis, si ils n’ont pas déjà certifié cette personne, mais avec un autre compte.
Si jamais c’est le cas, alors la supercherie est détecté.
(Si tu demandes à tes 50 amis si ils connaissent un “denis”, qu’ils auraient déjà certifié pour un autre compte que “dionisos” (que je te demande de certifier), et que aucun de tes 50 amis ne me connaît, alors ça devient vraiment difficile de savoir si je n’ai pas déjà été certifié ailleurs.)

Si par complètement isolés, tu veux dire qu’il n’est pas possible de créer un lien, d’un nombre quelconque de pas, d’un membre vers un autre, alors oui là, la probabilité de se faire détecter serait très forte, sauf que ça n’est pas la bonne façons de voir le problème.
Si chaque fois que tu veux certifier quelqu’un, tu demandes à tes amis, puis tu demandes à tes amis de demander à leur amis, et ainsi de suite, c’est sûr que tu va finir par trouver le fraudeur, mais c’est ingérable. (du moins si il a donné son vrai nom aux gens, ce que je suppose)
En fait le problème c’est que le nombre de demandes de vérifications exploserait exponentiellement, en même temps que la probabilité de se faire détecter se rapprocherait de 1.

La wot actuelle est petite, et je ne peux pas faire l’analyse que j’ai fais, car je ne connais pas les liens de connaissances entre les personnes, seulement les certifications.
Mais surtout, c’est sûr qu’on va pas se retrouver avec des graphes isolés les uns des autres, mais encore une fois, ça n’est pas la bonne manière d’analyser le système.
J’ai donc l’impression que c’est sûr ce point où on est pas d’accord.
Est ce que tu considères qu’il suffit de demander à tous ses amis, ou est ce qu’il faut en plus que ses amis demandent également à leur propre amis, etc… ?

Sauf que justement, je n’ai pas prit en compte le fait que l’attaquant va chercher des personnes qui ne se connaissent pas.
Là dans mon exemple, l’attaquant choisit simplement deux groupes de 5 personnes complètement au hasard parmi les 10000.
Et il s’avère que la probabilité qu’un membre d’un des groupes, connaisse un membre de l’autre groupe, est faible.
Ça serait encore plus faible avec un attaquant qui sait ce qu’il fait.

Je suis d’accord que ce qui est important est la difficulté et le coût de la fraude, pas si elle est possible ou non. Mais je pense qu’il faut bien séparer l’attaque sybil de la possibilité de créer des doubles comptes.
Mon argument concerne les doubles comptes, et je pense qu’ils seront assez facile à créer, quand il y aura beaucoup de monde dans la wot, pour que leur création deviennent un problème.
L’attaque sybil est aussi un problème, mais son analyse est complètement différente.

Oui, il prend forcément un risque, mais si le risque est assez faible, alors certain vont le prendre.
C’est pas vraiment différent que de fumer ou rouler un peu vite.
Autrement dit, je crois que le cœur de notre discussion est la vraie probabilité de se faire prendre.

La pression sociale est effectivement un facteur important, mais elle va dans les deux sens, si c’est gênant de se faire prendre, ça l’est aussi de dénoncer un ami ou une connaissance.

Qu’est ce qui l’empêche de demander les certifications toujours aux mêmes personnes ?
Ou de faire un roulement entre une dizaine de personne ?

Ok je n’ai pas vu de modélisation de la connaissance dans ton script python. Qu’entend tu par “si le premier groupe connaît une personne du deuxième groupe.” ?

Ok alors en fait nous ne raisonnons pas du tout dans le même contexte, mon propos initial que tu a tiré d’un autre thread était placé dans un contexte de vérification a postériori, et pas apriori. Ce dont il est question c’est la probabilité que le double compte soit découvert. Sachant que tout est graver dans le marbre de la blockain pour at vitam eternam, il n’y a pas prescription.
Ce que je soutenais (et que je soutien toujours) c’est que la probabilité qu’il n’existe aucun lien social entre les deux groupes de certificateurs est quasi null, et que donc tôt ou tard une personne puis plusieurs constateront le double compte. Et c’est au final la seule chose qui importe.

Il y aurait que 5 réunions dans le mois, mais si jamais tu parlais de ces réunions, alors :

  • Si ton compte A est membre, mais pas tes comptes B et C, cela ne leur permet pas de devenir membre.
  • Si tout tes comptes sont déjà membre, cela permet effectivement de les garder membres.

Le truc c’est que, tu vas avoir de très grande difficulté à faire un deuxième compte membre.

C’est vrai que je ne prends pas en compte toutes ces choses, mais je voulais avoir une idée approximative dans un premier temps.
Et c’est vrai que tout ça pèse beaucoup dans la balance.

Cependant pour reprendre ton exemple, imaginons qu’une personne de ma famille, et qu’un collègue de travail se rencontrent, je me pose la question de la probabilité qu’ils ont d’avoir une discussion du genre :
“Eh on connaît tout les deux denis”
“Moi je l’ai certifié avec le compte dionisos”
“Ah bon, moi je l’ai certifié avec le compte blop…”

Surtout quand on prend en compte, que je ne serais sans doute pas la seule personne qu’ils connaissent en commun.

Ça demanderait vraiment d’être toujours sur ses gardes je trouve.

Chaque membre de “members” est un ensemble, qui contient toutes les connaissances de ce membre. (un ensemble d’au minimum 20 éléments par membre, dans mon exemple, mais on peut facilement changer cette valeur).

Les connections entre les membres sont créé juste après le commentaire “# We create the connection between the member randomly”.

edit parce que j’ai oublié de répondre :
Ce que j’entends par là, c’est que par exemple imaginons que les personnes du premier groupe connaissent mutuellement 100 personnes différentes.
Alors les membres du premier groupe vont pouvoir demander à chacune de ces personnes, si ils n’ont pas déjà certifié la personne fraudeuse.
Si une de ces 100 personnes, fait partie du deuxième groupe, alors la fraude sera détecté.

On est d’accord que c’est ce qui est important, la probabilité d’être découvert à posteriori, et non seulement à priori.
Cependant il me semble que la seule façons de découvrir un autre compte, c’est de poser des questions à ses connaissances, sur le compte des personnes qu’on a certifié.
La meilleure façons de modéliser le problème serait à mon avis de se poser la question : “combien de questions doivent être posées, pour déterminer l’existence d’un faux compte ?”.
On peut donc remplacer les connaissances, par des questions posés, si chaque personne pose en moyenne 20 questions par certification qu’il donne (de manière directe ou indirecte), il me semble que ma modélisation est bonne.
Si il en pose beaucoup plus, ça change les valeurs.

Tous ces modèles mathématicos-matheux pour éliminer la triche sont passionnants.
Aller chercher la faute dans son dernier repère, traquer le hors la loi jusque dans les montagnes, vérifier le respect sans failles du même protocole pour chacun, est un fantasme social depuis que la notion d’échanges existe.
Il semble qu’invariablement la conclusion aboutisse à ce que pour qu’il n’y ait pas d’entorse aux lois humaines il faille un protocole qui élimine l’humain du protocole.
Ou plus exactement que l’humain ne soit plus le sujet du protocole, mais un de ses rouages qu’on conserve pour légitimer la notion de “loi humaine” Un peu comme la soupe au crabe à 1% de crabe.
Mais alors à quoi sert une équation pour l’humain s’il n’y a pas d’humain dans l’équation ?
Si la solution est transhumanisme en tant que remplacement de la chair par du silicium, il me semble qu’un système qui ne permet plus l’erreur est un système qui ne permet plus l’évolution.
Je ne crois pas que la Ğ1 soit l’alpha et l’oméga du bonheur humain, Je fais l’hypothèse que c’est peut être un immense et indéniable progrès, mais seulement pour les quelques petits siècles à venir (dans le meilleur des cas). S’il n’y a pas de place à l’humain alors il n’y a plus de place à la remise en question du système. C’est alors un système qui fonctionne pour le système.
La WoT en attendant mieux, a cette puissance qui permet à l’humain de contrôler humainement le système et non l’inverse, Elle a aussi cette puissance de pouvoir être rectifiée/renversée par l’humain, ce qui me semble être très sain.

Merci d’avoir re-re-lancé le sujet car il est toujours plein de rebondissements qui pousse la réflexion chaque fois plus loin.

Voilà pour le flood du fil, Maintenant je retourne re-re-revisonner la fin de Matrix à la lumière de ce que je crois comprendre en écrivant cet “hors sujet”.
:smiley:

5 Likes