Tableur dernière version (v5) : simu_impact_sybil_v5.ods (11,0 Mo)
EDIT v5: Nouvelle stratégie de propagation des comptes sybil beaucoup plus rapide
tableur version (v4) : simu_impact_sybil_v4.ods (11,1 Mo)
Chers Duniterriens
Je me suis lancer dans des simulations numériques sur tableur de l’impact que pourrais avoir une attaque sybil sur notre 1ère monnaie de prod.
Définition des termes utilisés :
sigQty : nombre de certifications nécessaire pour devenir membre
sigStock : réserve totale de certifications
stepMax : distance maximale aux membres points de contrôle pour être accepter comme membre
stepAttackers : distance des attaquants aux membres points de contrôle
Je me base sur l’hypothèse de sigQty attaquants entrant dans la monnaie légitimement puis co-créer alors le plus de faux comptes possibles le plus rapidement possible !
La formule de calcul de la taille max de la région sybil est :
Démonstration de cette formule ici >> demonstration_formule_sybil.odt (61.9 KB)
Vous pouvez très facilement tester une autre formule, il suffit de modifier la cellule C9 de la feuille params
Prise en compte d’un % de transfert de la masse Monétaire MS vers ML ainsi que d’une possible perte du statut de membre de la part des comptes sybil. + les dates et ampleur des attaques sybil simulés sont désormais réglable directement dans la feuille param.
Tout cela m’a pris du temps et j’ai donc choisi de me concentrer exclusivement sur la formule du DU actuellement implémentée dans Duniter (a savoir DUG2)
Les paramètres que j’ai choisi pour chaque simulations sont indiquer dans le tableau à gauche du graphe.
Pour tester d’autres paramètres, il suffit de modifier les valeurs directement les valeurs du tableau dans la feuille params, toutes les autres feuilles de calcul font directement référence aux valeurs de la feuille params pour les calculs,
Hypothèses de travail :
- J’ai fixer un plafond à 1millions de membres, au delà, N cesse de croître et je considère que l’on arrive alors a une situation ou il y a globalement autant d’entrants que de sortants.
- Je considère que lors d’une attaque sybil, les membres malveillants vont créer directement le plus de faux comptes possibles jusqu’à ne plus pouvoir en créer (atteinte de stepMax).
Pour chaque simulation, le graphique affiche ce que j’appelle le “% du DU légitime”, c’est le rapport (DU/DUL) entre le DU effectivement versé et le DU légitime que je note DUL.
/!\ ATTENTION ce que je nomme DU légitime (DUL) peut avoir deux définitions différentes selon le contexte /!
Définition 1 (lorsque transfert MS->ML vaut zéro, pas de flux de monnaie entre les membres sybil et les membres légitime) :
DU légitime (noté DUL) = c’est le DU qui aurait été perçu s’il n’y avait pas eu d’attaque sybil.
Définition 2 (lorsque transfert MS->ML est strictement positif, flux de monnaie des membres sybil vers les membres légitime) :
DU légitime (noté DUL) = c’est le DU qui serait versé en considérant la masse monétaire moyenne observée dans la communauté légitime (ML/L). Du fait de l’injection de nouvelle monnaie par les membres sybil, la masse monétaire totale en circulation dans la communauté légitime (ML) est plus élevée que s’il n’y avais pas eu d’attaque sybil.
I. Impact de l’année de l’attaque:
Jaune : création de 134850 comptes sybil à 1 ans
Bleu : création de 134850 comptes sybil à 3 ans
Orange : création de 134850 comptes sybil à 10 ans
Vert : création de 134850 comptes sybil à 35 ans
Marron : création de 13.485.000 comptes sybil à 35 ans (100 fois plus !)
Dans cette simulation le plafond du million de membres légitimes est atteint à 33ans.
Les attaque sybil sur une communauté encore en croissance se décompose en 4 phases :
phase 1 : augmentation soudaine de N donc baisse de M/N donc ralentissement soudain de la croissance du DU, d’ou le petit creux vers le bas des courbes bleu et oranges (jaune aussi mais on ne le vois pas avec cette échelle).
phase 2 : les membres sybil génèrent leur DU, leur nombre étant considérable ils augmente fortement la masse monétaire totale M, donc forte croissance de M/N, donc forte croissance du DU versé. (du fond du petit creux jusqu’à la “pente” maximale des courbes)
phase 3 : le ratio DU/DUL est proportionnel à (ML) / (NML) or la forte croissante des membres légitimes fait que L devient proche de N donc le ratio DU/DUL devient proche de M/ML. ML commence à augmenter plus vite que M, donc la croissance du ratio DU/DUL ralentie.
phase 4 : Stabilisation. L et N ne variant plus, le rapport M/ML finit par se stabiliser à une valeur fixe.
Les attaques sybil sur une communauté à N stable (à 35 ans) ne comporte que 2 phases. Baisse du DU du fait de l’augmentation soudaine de N par l’attaque puis stabilisation.
Ce qu’il faut retenir, c’est que plus la communauté est importante au moment de l’attaque, plus l’impact de l’attaque est faible. C’est donc au lancement qu’une monnaie est plus fragile.
II. Simulation de l’effet du taux de croissance (attaque à t=2ans) :
Jaune : taux de croissance des membres légitimes de 50%/ans (x1,5 chaque année).
Bleu : taux de croissance de 100%/ans (x2 chaque année).
Orange : taux de croissance de 150%/ans (x2,5 chaque année).
Vert : taux de croissance de 200%/ans (x3 chaque année).
On vois bien que plus la communauté légitime croît rapidement, plus l’impact de l’attaque sybil sur le DU est faible.
III. Impact du reversement dans la communauté légitime de toute la monnaie créée par les comptes sybil (MS->ML) :
_Attaque sybil de 134850 faux comptes à t=1ans.
Paramètre variant : taux de croissance des membres légitimes :
1,3/jaune, 1,5/bleu, 2/orange, 2,5/vert, 3/marron
Une bonne stratégie pour des membres malveillants souhaitant détruire la monnaie, serait de reverser dans la communauté légitime toute la monnaie créer par les DU des comptes sybil.
Ainsi, la croissance soudaine de ML (Masse monétaire en circulation dans la communauté Légitime) va augmenter brutalement ML/L donc DUL donc chute vertigineuse du rapport DU/DUL.
Expliqué autrement, la masse monétaire moyenne des membres légitimes ML/L sera beaucoup plus élevée que la masse monétaire moyenne M/N donc le DU effectivement versé à tous paraîtra bien plus faible (4 à 10 fois plus faible). Il y aura alors une forte asymétrie spaciale entre les individus riches proches de la source monétaire (qui est issue des DU perçu par les membres sybil) et tout les autres membres loin de cette source.
Sur ce graphique j’ai émis l’hypothèse que les membres sybil restent membre pendant les 120 ans… Dans la réalité, on peut raisonnablement supposé que les auteurs de l’attaque seront démasques et ne seront plus certifiés, et qu’ainsi les comptes sybil perdrons la qualité de membre au bout de quelques années.
Testons ce scénario (avec les mêmes paramètres que précedemment) :
on suppose que tout les membres sybil perdent le statut de membre ) à t=3ans (2ans après l’attaque). taux de croissance des membres légitimes : 1,3/jaune, 1,5/bleu, 2/orange, 2,5/vert, 3/marron
Que se passe t’il à t=3ans ? Les membres sybil perdent le statut de membre, la source monétaire asymétrique ne produit plus. le DU versé remonte très vite vers le DU légitime, il faut quand même plusieurs décennies pour que la situation revienne à la normale (et tout ça pour 1 seule attaque sybil !).
J’espère qu’un telle attaque ne se produira pas, mais c’est théoriquement possible.
Sous réserve que les calculs soient justes (il y a peut etre encore des errreurs qui trainent), il semblerait que les paramètres stepMax=6,sigQty=5 soient effectivement trop “souples”.
Téléchargez le tableur et testez donc avec d’autres paramètres monétaires
Ma motivation première est de vérifier quel sont les paramètres monétaires qui résistent le mieux aux différentes attaques possibles.
Ma motivation seconde est de voir quels sont les réponses possibles de la communauté légitime en terme de comportement collectif.
Je vois notamment 2 comportements collectifs possibles en réponse :
Plusieurs membres différents peuvent publier la liste des membres qu’ils pensent être les auteurs de l’attaque sybil, ainsi que la liste des comptes sybil (qu’ils auront trouver en scannant la wot par différents algos) et inciter tout les membres légitimes qu’ils connaissent à :
1/ ne pas/plus certifier ces auteurs présumés. Les auteurs de l’attaque ainsi que leurs comptes sybil finirons par perdre le statuts de membre.
2/ refuser toute transaction émanant des comptes sybil pour limiter le versement MS->ML.
J’ai commencer par simple curiosité, puis une fois lancer je me suis dit autant en faire profiter tout le monde
Ça vaut ce que ça vaut et c’est clairement perfectible, si vous avez des idées sur des hypothèses de travail qui seraient plus pertinentes que celles que j’ai choisi, exprimez-vous.
Des pistes pour aller plus loin ?
Oui
Je n’ai pas étudié l’impact du paramètre xpercent, % de membres pouvant ne pas respecter stepMax ? J’avoue que je ne maîtrise pas bien la définition de ce paramètre, c’est pourquoi je ne l’ai pas étudié.