![]() |
Ordinateurs-de-Vote.org | Citoyens et informaticiens pour un vote vérifié par l'électeur |
1er juillet 2005
Beaucoup d’entre nous pensent que les ordinateurs donnent toujours des résultats exacts. Quand un problème d’informatique est invoqué, on a tendance à penser que c’est un humain qui a rentré les mauvaises informations dans la machine. Ou alors on imagine une panne genre coupure de courant. Bref, l’ordinateur reste infaillible. Heureusement, le contact régulier avec des PC capricieux ébranle ces certitudes.
La vérité est que la majorité des problèmes viennent de défauts dans les logiciels (appelés bugs). Un programme qui laisse son utilisateur y entrer de mauvaises informations peut souvent être considéré comme mal conçu. C’est à l’ordinateur de s’adapter à l’humain, pas l’inverse. La principale propriété d’un ordinateur n’est pas de fournir un résultat toujours exact, mais de faire exactement ce qu’on lui demande. Mais lui demande-t-on toujours avec suffisamment de précision ?
Même faire des additions n’est pas si simple qu’il n’y parait... Car il y a un espace limité pour stocker un nombre. Par exemple, il sera stocké sous forme de 32 zéros ou uns (chacun de ces zéros ou uns est appelé un bit [1], c’est pour cela que l’on parle d’ordinateur 32 bits), ce qui donne 2 puissance 32 possibilités, soit un peu plus de 4 milliards. Donc seul un nombre valant entre 0 et 4 milliards peut être mémorisé. Si on additionne 2 milliards et 3 milliards, on entre en terre inconnue :
un logiciel conçu à la va-vite ne s’apercevra de rien, et trouvera 1 milliard (il tronçonne sauvagement ce qui dépasse).
un logiciel sérieux affichera un message d’erreur.
un logiciel plus sophistiqué contournera les limitations de l’ordinateur, et trouvera bien 5 milliards.
Et d’autres problèmes avec les nombres avec virgule [2].
Le logiciel faisant des additions dont nous venons de parler pourrait être celui d’une calculatrice. Eh oui, même les calculatrices contiennent un logiciel ! Imaginez maintenant la navette spatiale... ou mieux lisez cet admirable texte[eng] (traduction en cours). Il est assez long, il mérite d’être imprimé et ensuite lu confortablement installé. Rien ne vaut le papier... Qui disait ça, déjà ? Ooups, c’est nous ;-)
Vous y apprendrez que les logiciels proches de la perfection (tel celui de la navette) ne sont pas écrits par des adolescents attardés nourris de pizzas et travaillant jusqu’à point d’heure... Ni dans des compagnies soumises à des délais stressants. Que pour une grande part, l’industrie du logiciel devrait plutôt s’appeler artisanat... Que les programmeurs de la fusée Ariane ont certainement essayé de faire aussi bien que leurs homologues américains, mais qu’un bug a conduit à l’explosion de la première Ariane 5...
Revenons à nos moutons. Et les logiciels des machines à voter, comment se classent-ils ? Pourquoi les cachent-ils ? Pas beau à voir ? Y a des taches de sauce tomate ? Une anchois est restée coincée dans une boucle ?
Jugeons plutôt aux résultats. Des militants américains ont mis sur pied un recensement d’incidents (de toute nature) lors d’élections : l’EIRS (Election Incident Reporting System). 42760 incidents y sont répertoriés dont 2396 liés aux machines [3]. C’est très varié : cela va de files d’attente de plusieurs heures dûes à un nombre d’appareils insuffisant, jusqu’à des machines qui plantent ou pire perdent des votes (voire en génère spontanément), en passant par des électeurs qui choisissent Kerry et voient Bush s’afficher [4].
(à compléter)
[1] contraction de l’anglais “binary digit”, chiffre binaire.
[2] Quand vous utilisez des nombres réels (avec une virgule et beaucoup de chiffres après), il n’y aura pas de maximum indépassable, mais une limite à la précision : le résultat de 4 divisé par 3 ne donne pas 1,333... à l’infini. Faites une longue série de calculs sur ce genre d nombres, et vous obtiendrez des résultats divers selon les calculatrices : le cumul des imprécisions sera différent.
[3] à dater du mois d’août 2005
[4] Il court une théorie du complot assez marrante. Au moyen de ces votes qui se transforment magiquement, ce serait des programmeurs rebelles à l’intérieur des fabricants qui enverraient un message : « Hey, réveillez-vous ! Tout ça, c’est pipeauté ! ».
Une grande partie de l’industrie du logiciel nous a, en effet, habitué à la non-fiabilité de ses produits.
Fort heureusement ce n’est pas le cas pour tous les logiciels, notamment ceux qui permettent le pilotage des centrales électrique et nucléaire, ou encore des logiciels pour l’avionique ou le spatial.
Certes la première ariane 5 se crache au milieu des années 1990. Cet événement a eu pour conséquence le début d’un grand effort de recherche sur la vérification formelle des programmes informatiques. Par exemple une concrétisation de cet effort, parmi tant d’autre, est l’analyseur ASTREE.
Mais notez que la complexité d’une machine à voter est loin d’être comparable à celle des applications que je viens de citer, ou encore d’un lanceur de satellites. Leur fiabilité est envisageable.
Deux choses sont nécessaires pour permettre l’usage de ces machines. Premièrement, obliger à ce que leur licence soit “libre”, permettant à tout citoyen d’accéder à son code source. Deuxièmement, que le code soit assorti d’une preuve mathématique de correction (au moins du coeur du programme), elle aussi publique. La société civile aurait donc tout en main pour s’assurer qu’elle n’est pas dupée.
Reste que ce n’est pas suffisant : il se pose la question des attaques comme l’écoute à distance, permettant de connaître le vote d’une personne, ou encore d’un possible accès physique à la machine qui permettrait d’en changer le fonctionnement. C’est sur ces points que je rejoins vos réserves. Mais il faut cesser de dire que l’on est pas capable aujourd’hui d’écrire des programmes fiable et dont le comportement peut-être prouvé mathématiquement.