Comment organiser une élection avec Belenios?
Quelques conseils

Pour organiser une élection, le plus simple est d'utiliser notre plateforme en ligne et de vous laisser guider par le système. Pour une élection test, quelques clics suffisent. Vous aurez besoin d'un compte sur la plateforme (mais les électeurs, eux, n'ont pas besoin de compte). Comment se connecter à la plateforme ?


Avertissements

  • La plateforme Belenios est libre et gratuite. Il s'agit d'une plateforme de recherche développée par un petit groupe de chercheurs. Elle vous est offerte "en l'état".
  • Nous faisons de notre mieux pour que la plateforme de vote soit disponible à tout moment, mais sans garantie. En particulier, il y a régulièrement des opérations affectant notre serveur (coupure d'électricité par exemple). Lorsque nous en avons connaissance, nous prévenons de l'indisponibilité future de la plateforme sur la liste de diffusion. Nous vous recommandons de vous y abonner. Vous pouvez également installer votre propre plateforme de vote Belenios sur vos propres serveurs et échapper ainsi à ces contraintes en installant le code source.
  • La CNIL a émis des recommandations sur l'organisation d'élections électroniques. Nous en décrivons les grandes lignes ici.
  • Nous vous recommandons fortement de vous familiariser avec la plateforme de vote avant de lancer la "vraie" élection. Faites une répétition générale (une élection test) avec les personnes concernées (autorités de déchiffrement, générateur de codes de vote) quelques jours avant l'élection.
  • Notre plateforme de vote permet d'organiser des élections avec au plus 1000 électeurs. Au-delà, il est préférable d'installer votre propre serveur ou de nous contacter.


De quoi avez-vous besoin en tant qu'organisateur d'une élection ?

  • Pour former la liste électorale, vous aurez besoin de la liste des adresses email de tous les électeurs (et également leur login si vous pouvez vous reposer sur un CAS existant comme le CAS INRIA). Attention : les adresses email ne pourront pas être modifiées une fois l'élection lancée. Si une adresse est incorrecte, l'utilisateur ne recevra pas ses identifiants de connexion et ne pourra pas voter. Nous vous recommandons de tester la liste des électeurs en envoyant des mails d'information par exemple.
  • Vous devez désigner parmi vous (commission électorale par exemple) des autorités de déchiffrement (3 autorités est un bon compromis). Ces personnes devront se connecter avant l'élection et au moment du dépouillement. Elles se verront confier un morceau de la clé de déchiffrement de l'élection. Que doivent faire les autorités de déchiffrement ?
  • Vous devez également désigner une personne, chargée de la génération des codes de vote. Elle devra se connecter avant l'élection, posséder des notions d'informatique et être disponible pendant l'élection (au cas où un électeur perd son code de vote). Cette tâche est optionnelle mais très fortement recommandée, d'une part pour des raisons de sécurité, mais également au cas où un électeur n'aurait pas reçu ou perdrait son code de vote, car le serveur ne permet pas de le réenvoyer.

De quoi un électeur a-t-il besoin pour voter ?

Un électeur recevra par mail un double moyen d'authentification : un code de vote (demandé pour commencer à voter) et un login et mot de passe (pour être autorisé à déposer son bulletin dans l'urne). Cette double protection permet de prévenir les risques de bourrage d'urne : même en cas d'attaque de notre serveur, il est impossible d'ajouter des bulletins.

  • Le login et mot de passe seront envoyés par le serveur de vote à l'électeur. Si vous pouvez vous reposer sur un CAS existant (CAS de votre université par exemple), c'est une solution à privilégier : les électeurs risquent moins de perdre ou de transmettre leur mot de passe.
  • Le code de vote est envoyé par la personne chargée de la génération des codes de vote. À défaut, le code de vote peut être envoyé par le serveur mais il est alors impossible de le renvoyer à l'électeur en cas de perte ou de non-réception, et il ne pourra pas voter.


Autorités de déchiffrement

Les votes sont envoyés chiffrés à l'urne, en utilisant la clé publique de l'élection. Par défaut (lors d'élections test par exemple), la clé de déchiffrement est stockée sur le serveur. Cela signifie qu'une personne ayant accès au serveur est en capacité de savoir qui a voté quoi. Ce mode par défaut est donc fortement déconseillé pour une vraie élection.
La solution recommandée est de confier la clé de déchiffrement à plusieurs autorités de déchiffrement : chaque autorité possède un bout de la clé, il faut tous les bouts pour déchiffrer. Lors de la mise en place de l'élection, vous pourrez enregistrer autant d'autorités que vous le souhaitez (3 semble un bon compromis). Pour chacune d'entre elles, vous aurez une url à transmettre à l'autorité. En cliquant sur ce lien, l'autorité génèrera (sur son propre ordinateur) sa clé privée de déchiffrement et enverra la clé publique au serveur. Cependant, il faut être attentif aux deux risques suivants :

  • Les autorités doivent stocker leur clé de déchiffrement précieusement. Si l'une des clés est perdue, il n'est pas possible de déchiffrer et l'élection est annulée.
  • Les autorités doivent stocker leur clé dans un endroit sûr (coffre-fort ou bien à l'aide de techniques cryptographiques). Sinon, le secret du vote peut être compromis.
Il peut être pratique que les autorités de déchiffrement gardent la même clé de déchiffrement entre l'élection test et la "vraie" élection. C'est une chose possible : lorsque vous créez une nouvelle élection, vous avez la possibilité d'importer les clés d'une élection précédente (sur la page "Trustees", utiliser le bouton "Import trustees from another election").

Génération des codes de vote

En tant qu'organisateur d'une élection, vous avez deux options : ou bien les codes de vote sont généres et envoyés par le serveur, ou bien vous devez désigner une autorité de codes de vote qui se charge de cette tâche.

  • Codes de vote générés sur la plateforme. C'est la solution la plus simple. Notre serveur génère les codes de vote (privés), les envoie par mail aux votants et stocke uniquement la partie publique correspondante. Il y a cependant deux inconvénients.
    • Si un électeur perd son code de vote (ou ne reçoit jamais l'email), alors cet électeur ne pourra tout simplement pas voter. Dès que l'élection implique plus d'une ou deux dizaines d'électeurs, la probabilité que ceci se produise est très grande.
    • Cette solution offre moins de sécurité : si notre serveur est compromis au moment de la mise en place de l'élection, alors un attaquant pourra ajouter des bulletins dans l'urne et modifier ainsi le résultat de l'élection.

  • Autorité de génération de codes de vote. Lors de la mise en place de l'élection, vous aurez une url à transmettre à l'autorité de génération des codes de vote. En cliquant sur cette url, l'autorité génèrera (sur son propre ordinateur) les codes de vote privés et enverra la partie publique au serveur. Cette solution offre une meilleure sécurité et permet de renvoyer si besoin les codes de vote aux électeurs. Il y a cependant un inconvénient.
    • L'autorité de génération de codes de vote devra envoyer un code à chaque votant. Cela demande quelques compétences comme celui d'écrire (ou d'utiliser) un script pour envoyer des mails. Vous pouvez par exemple utilisez le script Python send_credentials.py dont la dernière version est disponible dans le dossier contrib/ du paquet source de Belenios. Pour un très faible nombre d'électeurs (moins de 10), il est envisageable d'envoyer les codes de vote manuellement.