Pourquoi faut-il refuser les machines à voter ?

 

Ce billet, écrit par un ingénieur électronicien expérimenté en informatique, se veut une tentative d'expliquer dans un langage accessible au non spécialiste, en quoi une machine à voter, fût-elle utilisée localement, pour s'affranchir des risques liés à l'utilisation des réseaux, ne peut être considérée comme un moyen technique susceptible de garantir la sincérité des scrutins.

Même si cet article reste fondamentalement technique, aucune connaissance technique pointue préalable n'est nécessaire à sa compréhension.

 

Abrégé

D'un point de vue technique, une machine à voter ne peut être considéré comme un moyen acceptable pour garantir la sincérité du décompte des votes. Accepter le vote électronique, c'est accepter que le citoyen soit dépouillé de son droit de regard celui-ci.

 

Une machine à voter est en beaucoup de points comparable à un ordinateur. Elle l'est principalement par ses faiblesses en terme de garantie de sa crédibilité face à des tentatives de détournement des votes.

Le programme d'une telle machine pourrait avoir été conçu pour passer les contrôles de fonctionnement avec succès puis se comporter de manière déloyale une fois ceux-ci passés.

Une condition sine qua non de sa crédibilité serait le recours à du logiciel transparent : c'est à dire du logiciel dont le code source (le code intelligible aux informaticiens) serait à la disposition de tous. Comme le bulletin de vote papier est visible par tous lors du dépouillement des votes.

Or, si le recours à du logiciel transparent (cas du logiciel libre) est une condition nécessaire, cette condition est loin d'être suffisante.

D'une part, les procédures qui pourraient garantir que c'est bien tel logiciel qui est installé dans une machine seraient très lourdes et échapperaient totalement au contrôle citoyen. D'autre part, les circuits électroniques, absolument nécessaires à l'exécution des programmes peuvent eux-mêmes contenir des programmes cachés, indétectables qui pourraient s'activer (ou être activés) une fois la phase des vérifications effectuée.

Toute affirmation de la crédibilité de la sincérité d'une machine à voter relèverait soit d'un mensonge éhonté, soit d'une prétention inqualifiable des ses vérificateurs.

 

De plus, la machine à voter, outre son insuffisance technique, ouvre la porte à des risques nouveaux. Accepter le vote électronique conduira inéluctablement à accepter le vote à distance avec comme conséquence la possibilité d'exercer des pressions sur les votants les plus faibles et celle d'usurper l'identité d'une personne comme cela se voit déjà couramment aujourd'hui sur les réseaux informatiques. De nombreux articles ont déjà été écrits sur ces sujets et je ne les développeraient pas plus avant.

 

Si on réfléchit un moment à ce qui pourrait advenir si par malheur un groupe politique mal intentionné prenait le pouvoir, on s'aperçoit que le risque pour la démocratie est énorme car il pourrait bien ne plus y avoir de retour possible.

 

 

Machine à voter et ordinateur. Les similitudes.

Nous allons dans un premier temps expliquer comment, pour les aspects qui importent ici, fonctionne un ordinateur. Dans un deuxième temps nous présenteront en quoi une machine à voter est un ordinateur spécialisé qui en pratique présente la même problématique de crédibilité.

 

D'un certain point de vue, un ordinateur est un assemblage de matériels électroniques capables de recevoir, de conserver et de traiter de l'information et de l 'échanger avec le milieu extérieur.

L'information stockée dans l'ordinateur l'est soit sous forme semi-permanente1 par gravure magnétique sur la surface de ses disques durs, soit sous forme temporaire et évanescente2 dans des circuits électroniques appelés « mémoire vive ».

Cette information peut, en première approche, être répartie en deux classes :

  • les données

  • les programmes.

     

Nous ne nous appesantissons pas sur la notion de donnée qui est assez commune ; il s'agit de textes, de valeurs numériques diverses, de documents sonores ou vidéo, etc..

Mais, arrêtons nous plutôt sur la notion de programme. Un programme est une suite de valeurs numériques stockées, dans un premier temps, sur le disque dur et qui, après avoir été placées dans la mémoire vive, sont interprétées par un circuit électronique spécialisé : le processeur. Ces valeurs numériques sont interprétées, non seulement comme des données, dans certains cas, mais aussi comme des codes représentant des ordres de travail à effectuer (instructions) , dans d'autres cas.

 

Ainsi, à titre d'exemple, un code numérique élémentaire pourra signifier « lire le contenu de la case mémoire dont l'adresse suit et le placer dans le registre3 A ». En présence d'un telle instruction, le processeur, lira la case mémoire suivant la case contenant l'instruction, interprétera le contenu de cette case comme l'adresse d'une case mémoire dont il ira chercher la valeur pour la copier dans son registre A. Un programme n'est, ni plus ni moins, qu'une suite de telles instructions, consécutives et cohérentes, en vue d'effectuer un travail plus complexe. Comme ce langage est intelligible directement à la machine, on parle de « code machine ».

 

Prenons un exemple simple:

  • Instruction 1 : lire la case mémoire dont l'adresses suit (adresse 1) et la placer dans le registre A

  • Adresse 1 : 2400

  • Instruction 2 : lire la case mémoire dont l'adresse suit (adresse 2) et la placer dans le registre B

  • Adresse 2 : 2401

  • Instruction 3 : additionner le contenu du registre A avec celui du registre B et placer le résultat dans la case mémoire dont l'adresse suit

  • Adresse 3 : 2402

 

Ainsi si les cases mémoires contiennent les valeurs suivantes avant exécution du programme :

case 2400 → 26

case 2401 → 45

case 2402 → 0

Après exécution du programme elles contiendront :

case 2400 → 26

case 2401 → 45

case 2402 → 71

Bien-sûr, il s'agit ici d'un exemple ultra simple. Dans la réalité, les programmes les plus évolués tels que les programmes de traitement de texte, les navigateurs Internet etc ; sont faits de millions, voire de milliards, de micro programmes de ce type.

 

Mais, en quoi une machine à voter est-elle comparable à un ordinateur ? En fait elle est, pour ce qui importe ici, presque en tout point comparable. La différence viendra peut-être de son interface homme-machine. Sur un ordinateur, l'utilisateur interagit avec le programme en lui envoyant des signaux électriques au travers d'un clavier. Sur une machine à voter se sera peut être des boutons ou un écran tactile. De plus la machine à voter n'a pas besoin d'exécuter de nombreux programmes. L'essentiel de son programme consistera à additionner des appuis bouton en faveur de tel ou tel candidat. Son logiciel sera comparativement plus rudimentaire. Mais sur le fond, les principes évoqués restent les mêmes.

Code machine et code source

Les instructions conservées sur le disque dur sont bien-sûr, prises individuellement, intelligibles à un informaticien. Cependant, dans un programme réel, la multitude d'instructions et des comportements qui en résultent font qu'en réalité il est impossible d'analyser un tel programme et de s'en faire une représentation satisfaisante. Pour programmer, les informaticiens n'utilisent pas le langage de base de la machine (code machine) mais font appels à des langages beaucoup plus macroscopiques appelés langage source. Avec ces langages source, ils peuvent se représenter les programmes et comprendre ce qu'ils font. Il s'agit du « code source » qui est ensuite traduit par des programmes spécialisés (les compilateurs) en « code machine » intelligible à l'ordinateur.

 

Code source disponible ou caché : logiciel libre ou logiciel propriétaire

Dans la vie courante, les éditeurs de logiciels remettent généralement des copies du code machine de leur programmes qui sont exécutables sur les ordinateurs, mais ils se gardent bien de fournir le code source, seul susceptible d'être analysé et compris par les informaticiens. Il peuvent donc - même s'il ne s'agit pas d'accuser a priori, mais de montrer que le doute est légitime- dissimuler au sein d'un programme de traitement de texte ou d'un navigateur Internet certains programmes espion ou certains programmes dont le comportement échappe totalement à son utilisateur.

Ce qui caractérise le logiciel libre, c'est justement de rendre le code source accessible à tous et donc d'empêcher qu'une telle situation existe.

Une condition nécessaire serait donc que dans une machine à voter, le code source du programme soit à la disposition de tous pour analyse et vérification.

 

La lecture et l'interprétation des instructions nécessitent des circuits électroniques

Les instructions du programme ne sont rien sans les circuits électronique qui leur donnent vie.

Une instruction dans un programme informatique a besoin d'un support physique pour être enregistrée (par exemple un disque dur ou un circuit électronique assurant un rôle équivalent). Elles ont aussi besoin pour être interprétées d'être portées à la connaissance d'un organe spécialisé : le processeur. Pour cela un grand nombre de circuits électroniques intervient pour sa lecture sur le disque et son transfert vers des espaces physiques accessibles au processeur. Tous, y compris le processeur, sont des circuits électriques (électroniques) à base de fils de cuivre et de pastilles de silicium.

 

L'exécution des instructions du programme nécessite elle aussi le recours aux circuits électroniques .

Prenons un exemple simple. Le programme dit de prendre la valeur A en mémoire , de la placer dans le registre 1 Puis de prendre la valeur B en mémoire et de la placer dans le registre 2 ensuite il ordonne de faire l'addition du contenu de registre 1 avec celui du registre 2 et de placer le résultat dans le registre 3. Au stade d'effectuer physiquement l'opération, ce sont les circuits électroniques qui prennent le relais. Les informations se combinent uniquement sous forme de courants électriques circulant dans des composants électroniques. Sans ces composants la multiplication n'est pas possible. Les registres , comme les cases mémoire, sont eux-mêmes des circuits électroniques qui stockent les informations temporairement alors que les emplacement mémoire du disque dur de votre ordinateur sont des petits espaces de la surface magnétiques de ce même disque magnétisés adéquatement.

 

Un programme ne réagit pas toujours de la même façon à un signal de commande.

Les vérification de bon fonctionnement ont une portée limitée.

Supposons qu'une commission électorale décide de vérifier que la machine à voter fonctionne bien. Pour cela elle vérifiera en simulant de façon aléatoire des votes successifs pour tel et tel candidat, que le décompte de voix s'est bien effectué.

Pourra-t-elle en conclure que la machine fonctionne bien ? La réponse est bien évidemment non ? Car rien ne dit que le programme se comportera toujours de la même manière. En effet, un programme non seulement combine entre elles les différentes informations de l'instant présent, appui sur un bouton, résultats intermédiaires tels que total des votes, votes en faveur de X, etc) mais peut également prendre en compte des informations élaborées au cours du temps (aspect historique)

Ainsi, pour faire court, le programme pourrait-il être conçu pour ajouter 1 vote aux candidats chaque fois que je presse un bouton en leur faveur et ceci jusqu'au 10000 éme vote -largement le temps de passer le cap du contrôle- puis à ce moment prendre la décision de favoriser la candidat A une fois sur trois par rapport au candidat B.

 

La seule façon de savoir ce que fait un programme c'est d'avoir accès à son code source (garantie offerte, rappelons le, uniquement par les logiciels libres).

 

Disposer de logiciel libre est une condition nécessaire mais pas suffisante.

 

Le fait que le logiciel est libre ou « propre » ne permet pas d'affirmer que c'est lui qui est installé dans la machine. On peut certes imaginer des procédures de vérification mais ces procédures devant être confiées à des spécialistes, risquent ainsi d'échapper totalement au contrôle citoyen.

 

Même si le logiciel, transparent et dûment vérifié, est correctement installé, le détournement du vote reste possible. Pourquoi ?

Parce que rappelons le, les circuits électroniques sont capable de stocker des programmes. Or le contenu des circuits électroniques peut être invisible. Le comportement d'un circuit électronique n'est visible qu'au travers de ses broches (pattes) sur certaines desquelles (entrées) il est possible d'appliquer des signaux électriques pour en recueillir d'autres sur d'autres pattes (sorties). Mais ils peuvent aussi contenir des circuits internes contenant eux-mêmes des parties de code indétectables. Ces parties de code peuvent très bien faire en sorte que le circuit électronique change de comportement soit de manière pré-décidée (programme caché) soit sur réception d'un signal (combinaison ou séquence de touches particulières activées par un votant complice à un moment donné, donnée chronométrique ou réception d'un signal radio etc..)

Rappelez-vous maintenant que le programme ne sait rien faire sans les circuits électroniques. Ceux-ci sont donc au cœur du système. Or, nous venons de voir que ces circuits peuvent être des agents doubles non dignes de confiance.

La vérification d'un composant électronique pose des problèmes de nature identique à la vérification du comportement d'un programme en général. C'est à dire qu'il peut se comporter comme un composant authentique et sincère pendant les phases de vérification puis changer de comportement à volonté de son créateur le moment venu.

 

La vraie menace pour la démocratie

Imaginez un moment les conséquence d'une prise du pouvoir par un groupe politique maitrisant le choix des fournisseurs de machines à voter. Un simple composant électronique, recommandé par telle ou telle obscure commission d'experts, pourra lui donner l'avantage décisif.

Rien ne sera alors plus facile pour lui que de se maintenir au pouvoir en donnant l'illusion d'une vraie démocratie par la mise en scène de scrutins disputés mais globalement toujours à son avantage.

Alors réfléchissez ! Non, en refusant le vote électronique, vous ne serez pas des amish, pour paraphraser un maire bien connu de la proche banlieue parisienne qui a seulement l'excuse de ne rien y connaître mais a qui on peut reprocher, compte tenu de son incompétence en matière d'informatique et d'électronique , de porter un jugement aussi catégorique et disqualifiant sur ceux qui ne pensent pas comme lui. Un tel comportement est risible quant on sait que parmi les détracteurs de la machine à voter on compte nombre d'experts en matière de haute technologie.

 

Quand on n'y connait rien, on la ferme. Mais en politique c'est une toute autre affaire !

1Ce stockage est semi-permanent dans la mesure où il dure aussi longtemps que son utilisateur le souhaite, par opposition au stockage en mémoire vive qui disparaît à la première mise hors tension électrique.

2Ce stockage est évanescent dans la mesure où il disparaît lors de la mise hors tension électrique.

3Un registre n'est ni plus ni moins qu'une case mémoire incorporée au processeur lui-même.

Le Club est l'espace de libre expression des abonnés de Mediapart. Ses contenus n'engagent pas la rédaction.