A propos de vote électronique

A propos de vote électronique

En lien avec les bonnes pratiques de développement informatique

Il était encore question du vote électronique il y a peu dans la presse. C’est l’occasion de revenir sur le lien entre ce dossier et les bonnes pratiques de développement informatique, sur lesquelles le CETIC est actif.

Date: 27 mai 2015

Expertises:

Co-création pour le numérique 

Thème d'innovation: Cyber Sécurité 

A propos du projet: CE-IQS 

Analyse des besoins

Lors des nombreuses discussions, on revient finalement peu au fond du problème : pourquoi recourir au numérique quand il s’agit du vote. Il semble que la demande principale concerne la facilité et rapidité du dépouillement, qui est un processus long, fastidieux, où même l’humain peut commettre des erreurs... et où certaines manipulations restent possibles.
D’autre part, le vote doit bénéficier d’une série de caractéristiques que la mise en œuvre numérique doit respecter. On doit s’assurer, par exemple, que

  • le vote n’est pas contraint (ce qui est un frein au vote à domicile par exemple).
  • le vote est « inclusif », l’interface doit être utilisable par tout le monde.
  • le bulletin de vote est anonyme
  • le dépouillement est transparent et vérifiable.
  • etc

L’informatisation est très certainement possible, mais diffère néanmoins des solutions informatiques habituelles qui sont plus souvent confrontées à des demandes d’augmentation de l’efficacité que de transparence.

On constate également beaucoup de confusion dans ce processus d’informatisation. En parlant de vote électronique, on se focalise souvent sur l’interface utilisateur (vote électronique = écran tactile représentant le bulletin de vote). Or ceci est plutôt une conséquence d’un choix du concepteur du système. Celui-ci cherche plutôt à collecter les votes sous un format qui se prête au traitement informatique, et qui sera stocké sur un disque, clé USB, carte à puce, bande magnétique, ticket,…

Il est assez surprenant qu’à ce stade, plusieurs systèmes laissent déjà tomber une caractéristique essentielle du vote : le citoyen n’est pas en mesure de vérifier que le bulletin qui sera dépouillé porte bien son choix.

Une analyse des besoins structurée devrait être réalisée. Il existe diverses méthodes, l’analyse orientée but en est une. Les résultats de ce type de processus devraient être publics.

Qualité du processus de développement

L’affaire qui nous occupe a été révélée par un bug informatique dont l’impact était très visible. Celui-ci a finalement été bien décrit. En résumé, un changement de liste en cours de vote provoquait une erreur dans l’enregistrement du vote.

Tout d’abord, en terme de transition avec la section ci-dessus, on notera que les spécifications du processus de vote, résultant de l’analyse des besoins devraient être également publiées. Avec un vote papier : changer de liste, après un premier vote, demande de changer de bulletin, et d’avoir une procédure d’élimination du bulletin erroné. Avec un vote électronique, il faut définir précisément ce qui doit pouvoir être réalisé.

Ensuite, le résultat doit être testé exhaustivement envers ces cas d’utilisation. On peut également souhaiter que le citoyen puisse participer aux tests. On est évidemment sensible à la possibilité que des bugs informatiques puissent permettre à l’utilisateur de découvrir et exploiter des failles qui permettent de réaliser des opérations qui soient contraires à ce que le vote prévoit, mais ceci doit être évité par le test et non par le secret en ne permettant pas de tester longuement les machines.

Entre ces deux étapes, un point important est à prendre en compte : le code source. On peut envisager ou pas que le code source soit révélé au public. Cela aurait des conséquences sur l’écosystème économique des fournisseurs de solutions de vote électronique. Dans tous les cas, une analyse du code par des outils appropriés est fortement souhaitable et permet d’en savoir plus sur les bonnes pratiques qui ont été suivies pour élaborer le logiciel de vote. Cela permet de cerner également des situations problématiques au cœur du code. Des outils plus avancés peuvent vérifier directement que le code garantit les propriétés demandées.

Il ne s’agit pas de pointer du doigt les développeurs, qui souhaitent livrer le logiciel le meilleur possible, mais de s’assurer que le code puisse être relu par des tiers, et de s’assurer que les développeurs aient pu travailler dans de bonnes conditions organisationnelles et techniques.

Transparence et Robustesse

Il est finalement assez simple de produire un logiciel qui permette de voter et compter des votes, mais les conditions de transparence et de robustesse sont quant à elles de nature à complexifier et contraindre très fortement la solution à mettre en place, sachant que les moyens de fausser les résultats en informatique sont extrêmement variés et potentiellement sophistiqués. Ces conditions ne semblent pas avoir été considérées à ce jour, mais peut-on laisser ce point au hasard pour une fonction aussi critique que le vote ?

Conclusions (partielles)

Cette note n’a pas l’ambition d’être une analyse rigoureuse et complète, mais lève le coin sur certains éléments qui manquent à la discussion d’un point de vue informatique. Sachant que des discussions sont toujours en cours à ce sujet.

On notera dans ce cadre :

  • En face de la propriété principale supposée (la rapidité du dépouillement), il est possible de proposer des solutions plus adaptées, mais il faut aussi mettre en regard le coût estimé de ces solutions. Un choix éclairé est alors plus aisé.
  • Le manque de maturité des solutions de vote électroniques actuelles se traduit par le fait que le citoyen et la force publique doivent se soumettre et s’adapter aux contraintes techniques (et financières) de la solution informatique retenue, conduisant à un système imparfait au regard des caractéristiques souhaitables.
  • Vu les contraintes s’appliquant au vote, on peut s’étonner que le processus de production et de comptage des votes ne soit pas clairement découplé, avec entre les deux un enregistrement qui soit lisible et vérifiable par le citoyen (par exemple, un papier).
  • On notera que, du côté de l’enregistrement du vote du citoyen, le coût et la simplicité du bulletin papier peine à être rejoint par l’outil informatique.
  • Le contrôle citoyen est compliqué dans le cadre des solutions électroniques actuelles
  • Dans le cadre du vote électronique, le fonctionnement « papier » d’un bureau de vote est également surprenant. On pourrait vouloir améliorer le traitement des convocations et des cartes d’identités (qui sont pourtant électroniques), pour simplifier la gestion d’un bureau de vote.

Il serait souhaitable de garder un meilleur lien entre le besoin initial et la mise en œuvre : un vote qui réponde aux attentes de la démocratie, et un dépouillement rapide par une machine, qui soit facilement vérifiable par un humain.

Pour finir, et pour prendre un peu le contrepied de cet article, il est important de réaliser que la contribution peut aussi se faire dans l’autre sens. Les capacités jusqu’à présent inenvisageables dans le cadre du vote « papier » sont aujourd’hui possibles. Il est par exemple techniquement possible de stocker exhaustivement le résultat d’une élection et de naviguer à travers des millions de bulletins de vote anonymes.

En toute généralité, la situation exposée dans cet article se rencontre dans d’autres solutions informatiques, peut-être moins sensibles, mais où l’informatique apporte des contraintes « parasites » au fonctionnement normal souhaité.