2016-05-13-Introduction-a-la-toile-de-confiance.md 8.86 KB
Newer Older
1
Title: Fonctionnement de la toile de confiance
Cédric Moreau's avatar
Cédric Moreau committed
2 3 4 5
Date: 2016-05-13
Category: Toile de confiance
Tags: wot, toile de confiance
Slug: introduction-a-la-toile-de-confiance
6
Authors: greyzlii, elois
Cédric Moreau's avatar
Cédric Moreau committed
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
Thumbnail: /images/network.svg

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.

 <center>![Toile de confiance globale de la monnaie de test Méta Brouzouf en juin 2015]({filename}/images/intro-wot/wot.png)</center>



## 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.

<center>![Réseau Sybil]({filename}/images/intro-wot/attack-edges.jpg)</center>

 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.

<center>![Nombre de pas à 2]({filename}/images/intro-wot/graph_steps.jpg)</center>

 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 :     

94
* Les membres ayant émis suffisamment de certifications sont utilisés comme    « points de contrôle » (*membres référents*).
Cédric Moreau's avatar
Cédric Moreau committed
95

96 97 98 99 100 101 102
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))
Cédric Moreau's avatar
Cédric Moreau committed
103 104

```
105
Avec stepMax = 5
Cédric Moreau's avatar
Cédric Moreau committed
106
N         Y(N)
107 108 109 110 111 112 113
1         1
2         2
33        3
244       4
1025      5
3126      6
7777      7
Cédric Moreau's avatar
Cédric Moreau committed
114 115
```

116

Cédric Moreau's avatar
Cédric Moreau committed
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

 **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*.