Fonctionnement de la toile de confiance
Duniter est un logiciel permettant de créer une monnaie libre au sens décrit dans la TRM (Théorie Relative de la Monnaie). Cette théorie implique que les unités monétaires sont co-produites par chacun des membres d'une même communauté. Il est donc essentiel que les membres de la communauté soient bien identifiés et (re)connus.
Dans un monde dépourvu de gens malhonnêtes, une simple déclaration d'identité pourrait suffire pour devenir membre (et donc co-produire des unités monétaires). Mais dans notre monde, s'agissant de monnaie, des cas de triches sont susceptibles d’apparaître.
En effet, il est tentant de s'inscrire avec plusieurs identités et ainsi produire un surplus d'unités monétaires à son avantage. Ceci est d'autant plus vrai qu'il s'agit d'identités numériques et qu'il est aisé d'en créer autant que l'on en souhaite. On appelle cela une « attaque sybil ».
Il convient donc de s'assurer que les membres ne disposent que d'une seule identité numérique.
À qui faire confiance ?
Comment s'assurer que les membres ne disposent que d'une seule identité numérique ? Quelle organisation est nécessaire ?
Il existe deux types d'organisations possibles : les organisations à tiers de confiance et les organisations auto-régulées.
Pour illustrer l'organisation à tiers de confiance, prenons l'exemple du recensement de la population. Ce sont les services de l'état qui « créent » les identités et les enregistrent dans les différents fichiers (aka. bases de données) de l'état. Les fonctionnaires agissent comme « tiers de confiance » au nom de l'état. Les moyens de contrôles utilisés peuvent être des justificatifs administratifs (déclaration de la maternité, justificatifs de domicile, …). Ces moyens sont loin d'être infaillibles puisqu'il est trivial de créer des faux documents (et ainsi obtenir de vrais-faux papiers). Ce système s'appuie donc sur le système judiciaire pour dissuader les comportements frauduleux.
Pour illustrer une organisation auto-régulée, nous pouvons utiliser l'exemple de la file d'attente. Les personnes arrivent les unes après les autres et, bien que personne ne soit vraiment ravi d'avoir à attendre son tour, chacun respecte la règle, qui régit une file d'attente ; l'ordre de passage correspond à l'ordre d'arrivée. Étant donné que chacun sait qui est arrivé avant et qui est arrivé après, chacun est en mesure de contrôler qu'il n'y a pas de fraude. Enfreindre ces règles nous expose à une désapprobation sociale forte, et une exclusion de la file d'attente.
La toile de confiance
Duniter fait le choix d'un système auto-régulé par ses membres.
Rappelons l'objectif qui est de s'assurer que les individus ne puissent s'enregistrer qu'avec une seule identité numérique.
Le système distingue deux types d'identités numériques : les identités membres et les identités non-membres. Seules les identités membres sont co-créatrices de monnaie.
Chaque individu déjà membre est en capacité, à l'aide d'un document numérique signé, de certifier des identités (membres et non-encore-membres). Cela revient à délivrer des certificats d'authenticité.
Ces certificats, donnés les uns aux autres, forment un maillage appelé « toile de confiance ». Cette toile de confiance est utilisé par Duniter pour déterminer qui est membre et qui ne l'est pas.
Les règles de fonctionnement de la toile de confiance
Les règles régissant la toile de confiance d'une monnaie Duniter est paramétrée lors de la création (l'initialisation) de cette monnaie, par ses fondateurs, et ne peuvent pas être modifiés ultérieurement. Il est donc important d'y porter une attention particulière.
L'auto-déclaration d'identité numérique
Un individu, s'il souhaite devenir membre d'une communauté, doit créer son identité numérique.
Sur Duniter, une identité numérique est composée de :
-
une clé cryptographique privée, connue uniquement de l'individu et donc non diffusée sur le réseau, lui servant à signer des documents numériques
-
une clé cryptographique publique, connue de tous, permettant de vérifier qu'un document a été signé par la clé privée de l'individu
-
un pseudonyme
L'auto-déclaration d'identité à elle seule ne suffit pas pour devenir membre mais est la première étape du processus.
Tout comme une carte d'identité, une identité numérique a une durée de validité. Si elle n'est pas renouvelée régulièrement, elle devient invalide.
Dans une monnaie créée par Duniter, la durée maximale de validité d'une identité membre est configurée avec le paramètre msValidity (Membership expiry Delay)
Les certifications
Pour devenir membre, un individu doit collecter un certain nombre de certifications de la part de membres déjà existants. Ces certifications ont une durée de validité. Pour conserver un statut membre, une identité numérique doit donc être continuellement re-certifiée par des individus membres.
Le nombre de certifications nécessaires pour devenir membre est configuré avec le paramètre sigQty (Min Required Certs). La durée de vie d'une certification est configurée avec le paramètre sigValidity (Cert Expiry Delay).
Les protections anti-Sybil
Des règles complémentaires sont mises en place pour assurer la sécurité de la toile de confiance contre un groupe d'attaquants.
- Le nombre de pas
Un groupe d'individus membres pourrait s'entendre pour créer des identités fictives et les certifier pour leur permettre de devenir membres à leurs tour. Plus encore, ils pourraient utiliser ces membres fictifs pour certifier de nouvelles identités fictives, créant ainsi un très grand nombre de membres illégitimes.
Pour prévenir cette attaque, Duniter s'assure que les membres soient suffisamment proches les uns des autres dans la toile de confiance. Dans l'exemple ci-dessous, le membre C est à deux pas (deux sauts) de A.
Lorsqu'un individu est susceptible de devenir membre (c'est-à-dire qu'il a obtenu suffisamment de certifications), Duniter déroule le protocole de vérification suivant :
- Les membres ayant émis suffisamment de certifications sont utilisés comme « points de contrôle » (membres référents).
Le nombre de certifications qu'il faut émettre et recevoir dépend du nombre de membres en cours. N est le nombre de membres, Y(N) est le nombre de certifications qu'il faut émettre et recevoir pour que le membre soit considéré « référent ».
Pour qu'une identité devienne membre, il faut qu'il existe un chemin de stepMax pas ou moins de xpercent % des membres référents vers l'identité considérée.
Dans le cas de la monnaie Ğ1 stepMax=5
et xpercent=0.8
(80%)
Y(N) = CEIL(N^(1/stepMax))
Avec stepMax = 5
N Y(N)
1 1
2 2
33 3
244 4
1025 5
3126 6
7777 7
Limiter les pouvoirs
Afin de se protéger contre une création de membres sybils massive, les membres sont dotés d'un stock limite de signature. Ce stock se vide à mesure que le membre émet des certifications, et se remplit à mesure que ces certifications expirent.
Le stock de certifications est configuré avec le paramètre sigstock (Max cert stock).
De plus, afin d'enrayer une éventuelle attaque, Duniter ne permet pas qu'un membre puisse émettre plusieurs certifications simultanément. Duniter les traite les unes après les autres en observant une pause entre chaque traitement.
Cette période est configurée avec le paramètre sigPeriod (Delay between two certs).
L'expiration des certifications en cours de traitement
Une certification qui n'a pas été traitée dans un certain laps de temps est détruite. Cela se produit lorsque qu'un membre émet de nombreuses signatures au même moment. Duniter observant une pause entre chaque traitement, les certifications qui n'ont pas eu le temps d’être traitées sont détruites.
Ce laps de temps est configurable avec le paramètre sigWindow (Cert Time Window).
Il existe un paramètre similaire utilisé lors de l'inscription de nouveaux membres.
Comme vu précédemment, pour devenir membre un individu doit :
-
publier sa déclaration d'identité
-
collecter un nombre de certifications suffisantes
-
respecter la règle des pas
Ces trois étapes doivent être réalisées dans le laps de temps configuré par idtyWindow.
Résumé des règles de la toile de confiance (TdC)
- Pour devenir un nouveau membre CCM de la TDC Ğ1 il faut obtenir, dans les 2 mois qui suivent sa demande à devenir membr e CCM, 5 certifications et respecter la règle de distance.
- La règle de distance consiste à se trouver, au travers de ces certifications, à une distance inférieure ou égale à 5 pas de 80% des membres référents de la TDC.
- Les membres référents de la TDC sont des membres qui ont reçu et émis un nombre minimum de certifications. Ce nombre varie en corrélation avec la variation du nombre total de membres (formule?). Les membres référents sont donc les plus actifs dans le maillage des certifications de la TDC.
- Pour rester membre il faut renouveler son accord tous les 12 mois et s'assurer d'avoir toujours au moins 5 certifications actives et respectant la règle de distance.
- Chaque membre CCM peut émettre des certifications.
- Elles seront prisent en compte au rythme maximum d'une tous les 5 jours.
- Au maximum, 100 certifications émises par un même compte peuvent être actives.
- Chaque certification est valable 2 ans.
- Le compte certifié peut forger des blocs dans la blockchain V1.
- Dans la V2 plusieurs de ces règles seront probablement gérées différement.
Lexique
- Membre CCM : Membre Co-Créateur de Monnaie
- TDC : Toile De Confiance