Vote électronique

Ceci est une réflexion personnelle, mais comme elle concerne le traitement sécurisé de certaines données, je pense qu’elle a aussi sa place sur le blog nebule.

Le vote électronique, vu par un non spécialiste, est un monde assez étrange. D’un côté une grande variété de sociétés commerciales qui disent toutes avoir trouvé le système parfait, et j’image un minimum rentable. De l’autre côté une variété tout aussi diverse de personnalités du monde de la sécurité informatique (peut-être un peu usurpée pour certaines) qui s’évertuent à démonter les fameuses solutions miracles et commerciales. Démonter est à prendre dans le sens commun, mais aussi dans le sens péjoratif.

En y regardant de plus près, on découvre que certaines réflexions ont déjà été menées, par exemple par la Commission Nationale de l’Informatique et des Libertés (CNIL). On trouve notamment la Délibération n° 2010-371 du 21 octobre 2010 portant adoption d’une recommandation relative à la sécurité des systèmes de vote électronique. Mais on trouve aussi des avertissements sur les produits de certaines sociétés.

On peut regarder un résumé de délibération de 2010 comparée à celle de 2003. On y parle toujours de sécurité du système hôte et de son (ses) logiciel(s) et de scellement. Ce scellement est finalement quelque chose que l’on pourrait assez facilement mettre en place avec un système comme nebule, c’est nativement sa façon de fonctionner…

Mais on accepte aussi désormais de faire de la virtualisation sur le système centrale !?
Pardon?
Cela veut dire de fait la nécessité de certifier aussi l’intégralité de la plate-forme de virtualisation au même niveau que les serveurs dédiés aux votes. Pourquoi vouloir complexifier la chose alors qu’il est nécessaire au contraire de simplifier l’ensemble du système si on veut espérer pouvoir le certifier. Autant mettre le serveur dans les nuages (le cloud) tant qu’on y est…

Mais quelles sont les exigences d’un vote?
On parle ici de confidentialité du vote. Ici de reproductibilité, traçabilité et intégrité. Ici d’impossibilité de vérification de la machine. Etc…
Le code électoral est de son côté une mise en application mais ne décrit pas les fondements, les principes.

Bref, bon courage pour ceux qui voudraient essayer de comprendre quelque chose au débat et démêler les intérêts de chacun…

Je propose de repartir du début. Que représente le vote pour moi ?

  1. Je veux être capable à tout instant de pouvoir vérifier que mon vote, c’est à dire mon choix, est pris en compte et n’est pas modifié ou oublié.
  2. Je veux être capable de vérifier à tout instant les voix recueillies par chaque candidats. Je dois pour cela avoir accès à l’intégralité des votes et voir que chaque votant est unique.
  3. Ce que je demande, tout citoyen doit pouvoir lui aussi le demander. Cela veut dire aussi que mon voisin doit être capable de vérifier mon vote, et vice versa.

Certaines règles sont optionnelles :

  1. Les citoyens sont pré-enregistrés par une autorité, c’est à dire une entité de confiance. L’autorité de confiance peut ou non être lié au précédent élu. Les citoyens sont généralement les personnes référencées par le gouvernement d’un pays.
  2. La manière de calculer le candidat vainqueur est déterminée à l’avance. C’est normalement celui qui remporte le plus de voix. Ce peut être aussi avec un pourcentage minimum.

Pour résoudre toutes ces demandes :

  1. Il faut que chaque partie en présence, électeurs et candidats, soit identifiés.
  2. Il faut matérialiser le vote, c’est à dire le lien entre l’électeur et le candidat.

L’identification peut être faible (papier) ou forte (signature cryptographique). Dans le cas du vote papier, le votant prouve son identité avec sa pièce d’identité. Un registre empêche le rejeu du vote. Un unique papier permet de matérialiser le vote pour un candidat. Si l’ensemble de la chaîne de vote est solide, cela revient à faire un lien entre un votant unique et un candidat unique. Avec nebule, il suffit de ne prendre que le dernier lien vers les candidats, ainsi un seul vote est possible.

Comment peut-on gérer un anonymat du vote?
Le lien direct et public entre votant et candidat ne permet pas de maintenir l’anonymat. Pourtant celui-ci est nécessaire mais pas obligatoire. Un votant peut très bien décider de rendre public son vote. C’est dans ce cas au votant de casser l’anonymat de son vote.
On peut donc accepter une entité anonyme, dépendante de notre vraie entité, pour voter. Il faut prévoir le mécanisme qui permet à une autorité de reconnaître cette entité dépendante comme étant l’entité qui a le droit de vote, et elle seule. Ce mécanisme doit inclure des liens secrets entre les entités maîtres et les entités votant réellement.

A gratter…