06/06/2014: Généalogie du code source des systèmes DIGIVOTE et JITES
Pour bien comprendre l’origine du #bug2505 du 25 mai 2014, il faut remonter aux sources : l’expérimentation du vote automatisé, son code source, mais aussi ses origines et son passé tumultueux.
Vous découvrirez comment la régionalisation de l’organisation des élections locales et l’abandon par Stéria du vote automatisé pour proposer le vote avec "preuve papier", en consortium avec Smartmatic, ont contribué au bug de 2014.
La première utilisation du vote automatisé par carte magnétique remonte à 1991 où le système JITES a été expérimenté dans la commune de Verlaine pour un test en parallèle au vote traditionnel. Lors de la même élection, la commune de Waarschoot testait un autre système, de la société Nedap, système qui ne fut finalement pas retenu car peu approprié à des élections simultanées (ce qui est toujours le cas en Belgique).
En 1994, deux systèmes de vote électronique à base de carte magnétique ont été déployés en Belgique. D’une part JITES 1 plutôt utilisé en Flandre et DIGIVOTE 1 plutôt utilisé en Wallonie, à Bruxelles et en Communauté germanophone.
En 1999, une deuxième vague d’introduction du vote électronique s’est faite, avec une deuxième version, les systèmes DIGIVOTE 2 et JITES 2.
Initialement, le système DIGIVOTE était produit par la société BULL. Il fut par la suite repris et supporté par la société Stéria. De la même façon, alors que initialement le système JITES était proposé par l’association momentanée Philips-Stésud, depuis longtemps Stésud gère seul le système. Les passages de flambeau se sont effectués entre les élections de 2002 et 2003. Par facilité nous parlerons de DIGIVOTE de la société Stéria et de JITES de la société Stésud.
Bien qu’utilisant du matériel et (initialement) du logiciel différents, les deux systèmes partagent dans leur code source (on pourrait dire leur patrimoine génétique) des origines communes. Il semblerait que la gestion du lecteur de carte magnétique, du format d’enregistrement sur celui-ci ou de la gestion du crayon optique soient communs et datent sans doute du code du prototype de 1991.
De 1994 à 2005, toutes les élections étaient organisées par le Ministère fédéral de l’Intérieur. On peut supposer que chaque année respectivement Stéria et Stésud s’occupaient respectivement des systèmes DIGIVOTE 1/2 et JITES 1/2. Tous les codes sources de l’époque ne sont pas disponibles et on ne peut donc pas facilement retracer les modifications de chacun des deux systèmes ni la quantité de code commun ou différent.
C’est à partir de 2006 que les choses se compliquent. En effet, les élections communales sont dorénavant de compétence régionale. La Wallonie et Bruxelles décident d’unir leurs efforts, de faire des économies d’échelle en faisant un seul appel d’offre commun pour les deux systèmes des deux régions. C’est la société marchoise Stésud qui, à cette occasion, remporte l’appel d’offre et propose un seul logiciel capable de détecter s’il s’exécute sur du matériel DIGIVOTE ou JITES et de quelle génération (1 ou 2).
On peut supposer que, de son côté, Stéria a continué à faire le support en Flandre du système DIGIVOTE avec néanmoins une petite interrogation pour la commune de Hasselt qui, bien que située en Flandre, utilisait le système JITES.
En 2007, 2009 et 2010 les élections ont de nouveau été organisées par le fédéral et on peut supposer que Stéria et Stésud se sont, chacune, occupées de leur système de prédilection respectif. À l’occasion de ces élections, le Ministère de l’Intérieur a introduit différentes modifications et "améliorations" du système de vote électronique. En particulier la fonctionnalité qui nous intéresse le plus est celle qui permet à l’électeur de désélectionner un candidat ou la case de tête. Rappelons que l’affichage des candidats et le grisé des candidats sélectionnés, l’utilisation ou non de la symbolique de la case de vote à côté du nom de l’électeur et toute une série de choses changent d’une année d’élection à l’autre.
En 2012, c’est de nouveau les élections communales, mais Stéria est, cette fois, en consortium avec la société Smartmatic. Ils sont responsables du vote électronique avec « preuve » papier, largement utilisé en Flandre et dans seulement deux communes Bruxelloise. Pour les systèmes DIGIVOTE et JITES, c’est Stésud qui fait le support de ces deux systèmes pour les 17 communes bruxelloise restantes et les 39 communes wallonnes qui décident de poursuivre l’aventure électronique à l’encontre de la volonté politique régionale.
La société Stésud, peu convaincue par la solution de vote hybride « ticket + code QR » décrite dans le rapport BeVoting n’a pas répondu à l’appel d’offre pour un prototype. Néanmoins Stésud continue de fournir des services et son logiciel CODI de collecte et transfert des résultats. Ce système est capable de récolter et totaliser les résultats des différents systèmes de vote électronique et papier, ainsi que le nouveau système de dépouillement assisté par ordinateur DEPASS de leur invention.
Au niveau du code source, Stésud reprend donc le système de 2006 qui gère toutes les révisions et tous les matériels JITES et DIGIVOTE. A cette occasion, la fonctionnalité de désélection n’est pas présente, en effet les améliorations des élections 2007 à 2010 ne sont pas présentes et le vote électronique fait un véritable voyage dans le temps.
En 2014, Stéria s’occupe à nouveau du système Smartmatic, alors que Stésud continue à gérer les système JITES et DIGIVOTE en se basant sur sa solution supportant les deux systèmes dans le même programme. On peut supposer que le Ministère fédéral de l’Intérieur a exigé que la fonctionnalité de désélection soit présente.
Stésud a donc tout logiquement repris le code de 2012 et adapté dans celui-ci la présentation plus moderne de la version de 2010 ainsi que la fonction de désélection en intégrant des parties de code source. Malheureusement, dans cette opération délicate, une petite erreur s’est introduite dans le code source.
On peut supposer que si en 2014 on avait utilisé le même programme qu’en 2012 du seul fournisseur Stésud, sans la déselection, ou les mêmes programmes qu’en 2010 avec deux fournisseurs, Stésud et Stéria, le bug ne serait pas arrivé.
On le voit, la génétique des programmes de vote électronique et les croisements entre différentes versions sont à l’origine du bug de 2014. Néanmoins, l’adaptation de Stésud entre le code de 2010 et 2012 aurait pu être sans erreur. Avec l’erreur, une analyse et des tests sérieux auraient dû permettre à l’auditeur PwC et au Ministère de l’Intérieur de détecter le problème avant que le logiciel soit utilisé le jour des élections.
Il faudrait donc vérifier si ce bug précis était présent dans le code des élections en 2007, 2009 et 2010. Et ceci ne veut pas dire que d’autres bugs n’ont pas été présents, cette année ou par le passé. En effet, il existe deux sortes de bugs en informatique : ceux que l’on détecte... et puis les autres, qui ne sont pas détectés, mais qui peuvent parfois être détectés à posteriori.
Le vote papier n’a pas ce problème de détection de problème à posteriori : en effet, une fois les élections validées, les bulletins de vote et les différents procès-verbaux sont détruits et il n’y a plus aucune possibilité que l’on recompte les bulletins pour détecter une erreur.
Avec le vote électronique on pourrait faire revenir d’"outre-tombe" un bug que personne n’avait détecté à l’époque et prouver, ultérieurement, que le résultat de l’élection antérieure, bien que validée, n’était pas le bon.