Archives de Tag: démocratie directe

Réflexion : concept de système de vote en P2P


Flattr this

Salux !

En tant que gros geek velu pirate, je me suis amusé (chacun occupe ses vacances comme il peut) à élaborer un système de vote électronique, qui soit transparent et respecte l’anonymat, tout en empêchant la fraude. Un vaste programme donc, je poste ici le résultat de ma réflexion, afin d’avoir des avis extérieurs pour l’améliorer si nécessaire.

À qui se destine ce logiciel ?

Je l’ai dit et je le redis ici, j’ai toujours exprimé de grandes réserves sur le vote électronique. Même si je pense avoir résolu les problèmes d’opacité et d’anonymat, le bulletin papier restera toujours le moyen le plus universel.

Pour un usage associatif, surtout dans un cadre comme celui du Parti Pirate où les membres sont tous plus ou moins sensibilisés aux problématiques techniques, le système que je propose ici peut être une solution. Dans le cadre d’un vote plus large, où toute une population est amenée à s’exprimer, le papier reste accessible à n’importe qui puisqu’en tant qu’objet matériel il est facile à observer et contrôler si fraude il y a eu. Nul besoin de connaissances informatiques pour cela.

La solution que je propose est donc certes imparfaite, mais elle vient combler un vide et je pense qu’elle peut trouver rapidement des applications.

Objectifs

Afin d’en omettre aucune et de les expliciter dès le départ, voici les contraintes à respecter :

  1. Le système doit être ouvert & documenté
  2. Un annuaire contrôle l’accès au scrutin
  3. Les bulletins doivent être anonymes
  4. Chaque votant doit pouvoir accéder à son bulletin et le vérifier
  5. Chaque votant ne peut déposer qu’un seul bulletin pour une question
  6. L’annuaire ne doit pas avoir les informations nécessaires pour lier un bulletin au votant
  7. Un votant doit être capable de contester son vote si falsifié

Système distribué

Premier point et le plus important : il faut éclater la structure technique en un système décentralisé pour assurer la 6ème contrainte : l’annuaire sera l’un des seuls points centraux et il ne doit pas voir circuler les informations de vote ; auquel cas s’il est compromis tous les bulletins deviendraient publics.

Le processus de vote est relativement complexe et met en œuvre de nombreux intervenants ; chacun possède un rôle très précis et encadré pour limiter les possibilités de frauder ou de révéler un bulletin.

La solution technique prendrait la forme d’un logiciel que chacun télécharge et installe sur son poste. Comme le protocole est tout à fait documenté, un votant aurait la possibilité d’écrire son propre logiciel s’il le souhaite.

Lexique

Annuaire : contient un listing des personnes invitées à s’exprimer
Assesseur : pair désigné pour contrôler que le votant ne s’exprime qu’une fois
Bulletin public : empreinte (algorithme à déterminer, type MD5 ou SHA) du timestamp du vote, du numéro de la question, de l’identifiant du votant (pseudo ou email) et du grain de sel.
Bulletin privé : conservé par le votant, il contient toutes les informations du bulletin public en clair + la signature du témoin.
Droit de participation : code généré et signé par l’annuaire dont la seule utilité est de prouver aux autres pairs qu’un votant a le droit de siéger.
Donneur de sel : pair qui génère le grain
Grain de sel : condensat généré aléatoirement par un pair pour anonymiser son vote.
Pair : autre votant
Proxy de vote : Le votant A transmet des informations au pair B par l’intérmédiaire d’un pair C. Les informations sont chiffrées donc opaques du point de vue de C puisque la clé a été générée par D. Voir « Élaboration du proxy de vote ».
Témoin : pair désigné aléatoirement pour signer un bulletin de vote et attester que ce bulletin a été émis

Processus général

Certains points du processus contiennent des enchaînements expliqués plus loin pour alléger la lecture.

  1. Le votant s’identifie auprès de l’annuaire et reçoit son droit de participation
  2. Le votant demande un grain de sel à un pair aléatoire (et le reçoit)
  3. Le votant établit un proxy de vote avec un pair aléatoire, qui devient témoin
  4. Le votant lui transmet son bulletin public + le grain de sel
  5. Le témoin lui retourne le bulletin signé
  6. Le votant stocke cette signature et est prêt pour déposer dans l’urne

Collecte des bulletins

  1. Le témoin contacte l’urne et transmet le grain de sel
  2. L’urne valide le grain de sel
  3. Le témoin dépose le bulletin public dans l’urne

Dernière étape : les témoins signent le résultat

  1. L’urne notifie l’assemblée de la fin de la collecte
  2. Chaque témoin retourne les signatures des bulletins qu’il a déposé pour attester de leur véracité
Chaque pair a alors la possibilité de contrôler les signatures des bulletins pour contrôler que l’urne n’est pas compromise.
Il peut aussi contrôler son propre bulletin dans le cas où son témoin serait compromis.

Processus complémentaires

Proxy de vote

V = Votant, T = Témoin, P = Proxy, G = Générateur

  1. V contacte P et lui demande l’ouverture d’un proxy en désignant T.
  2. P se place en attente de la validation de T.
  3. V contacte G et lui demande de générer une clé.
  4. G transmet la clé à V.
  5. G notifie T qu’il est solicité par P et lui transmet la clé.
  6. T contacte P pour indiquer qu’il est prêt à dialoguer
Le proxy se ferme dès que le votant a validé la signature du bulletin public par le témoin.

V et T peuvent communiquer sans que T sache que V est son interlocuteur. De plus, G & P qui sont les intermédiaires ne connaissent chacun que la clé ou le message chiffré mais ne sont pas capable de connaître ce qui est dit.

Génération du grain de sel

  1. Le votant contacte le donneur pour obtenir un grain
  2. Le donneur en génère un
  3. Le grain est donné au votant puis transmis à l’urne

L’urne sait que le donneur a généré le grain mais ne peut savoir à qui est-il destiné.

Validation du grain de sel

  1. Le témoin transmet le bulletin et le grain de sel à l’urne
  2. L’urne contacte le donneur
  3. Le donneur va contrôler auprès de chaque assesseur du votant s’il n’a pas voté
  4. Le donneur enregistre que le grain a été utilisé
  5. Le donneur confirme l’utilisation du grain à l’urne
  6. L’urne accepte le bulletin

Identification

  1. Le votant s’identifie auprès de l’annuaire
  2. L’annuaire lui transmet son droit de participation ainsi que la liste des pairs
  3. Le votant détermine aléatoirement deux assesseurs
  4. L’annuaire détermine aléatoirement le 3e assesseur

Si le votant ou l’annuaire est compromis on limite la casse.

Bref.

Voici le concept, j’avoue que je suis assez excité à l’idée que ça puisse marcher. J’attends vos retours qui me permettront d’améliorer ce dispositif, car il y a encore de nombreuses choses à voir !

Notamment l’implémentation, dont j’espère pouvoir fournir un prototype rapidement.

Le Manchot Enragé

Tagué , , , , , ,