mardi 22 août 2006 - par Marc Bruxman

Vote électronique : la fin de la démocratie

A l’heure ou l’on commence à dire que le vote électronique permettrait d’économiser de l’argent (150 millions d’Euros pour une éléction nationale) il convient de rappeler à quel point celui-ci est un grand danger pour la démocratie. Car il s’attaque à son fondement même : la confiance.

La raison démocratique

Nul besoin de chercher des arguments techniques pour comprendre le danger du vote électronique. Aujourd’hui lorsqu’une élection a lieu, le dépouillement et le vote sont publics. Le dispositif a été fait de telle sorte qu’il est difficile de frauder pendant l’élection (on peut manipuler les listes d’électeurs avant par contre) : les urnes transparentes ou le dépouillement public rendent l’opération contrôlable. N’importe quel citoyen et ce quel que soit son niveau intellectuel peut vérifier que le scrutin s’est bien déroulé. Avec le vote électronique, il faudra s’en remettre aux experts (par définition peu nombreux) qui vont certifier la machine.

Ce problème devrait a lui seul suffire à envoyer le vote électronique aux oubliettes. Dans une démocratie, les élections servent avant tout à donner une légitimité à la personne qui va diriger le pays. Qu’il soit de gauche ou de droite il est incontestablement l’élu du peuple. Mais a quoi bon conduire des élections si les citoyens peuvent douter de leur légalité ? Car si personne ne peut vérifier que les élections se sont déroulées sans triche, cela veut également dire que tout le monde peut en contester le résultat. Et même si les élections se déroulent sans fraude, on trouvera des gens pour dire qu’il y en a eu. Les théories du complot qui vont alors surgir vont affaiblir le dirigeant légitimement élu. Et finiront probablement par tenter quelqu’un de passer à l’acte.

La raison technique

Je suis informaticien bien diplômé par rapport aux standards français. Et pourtant si l’on me demandait de certifier une machine à voter je serai bien ennuyé. Car je serai incapable de garantir à 100% qu’il n’y a pas de fraude. Et j’en sais suffisamment pour savoir qu’aucun des mes collègues le pourrait car c’est tout simplement impossible en pratique.

En théorie, il suffirait en effet de donner le code source du programme et les plans de la machine pour permettre à des ingénieurs de la certifier. Il existe des techniques de preuve de programme très onéreuses (employées uniquement dans l’industrie spatiale et autres activités à haut risque) donc en théorie je vais pouvoir prouver que le programme n’est pas douteux. Une expertise du code source permettra de rechercher les erreurs de programmation potentiellement dangereuses. Tout en sachant que même des codes extrèmement relus comme le noyau Linux contiennent de telles erreurs (je ne parle même pas de Windows).

Je devrais m’arrêter la mais admettons quand même que je suis capable d’accomplir cette tache. Nous avons donc un code source irréprochable mais :

- Ce code source (lisible par l’humain) va être transformé en code objet (lisible par la machine) par un compilateur qui est lui même un programme. Si je veux être sérieux, il faut que je valide aussi le code source du compilateur. Sinon le code objet ne correspondra pas au code source et j’aurais travaillé pour rien. Vaste programme quand on connaît la complexité d’un tel outil. Mais admettons...

- Une fois que j’aurais validé les sources du compilateur, je vais devoir utiliser un compilateur .... pour compiler le compilateur ! Et c’est la que l’on arrive au problème de la poule et de l’oeuf ! Et comment a t’on écrit le premier compilateur me rétorquerez-vous ? Et bien directement en langage machine : Une vraie tache de galérien. Et je ne vous parle même pas de prouver un programme écrit en langage machine.

Mais cela ne suffit pas, admettons que l’on arrive à obtenir un « binaire » (code objet) certifié 100% sur celui-ci va s’éxécuter au sein d’un système d’exploitation. Que l’on va alors devoir certifier...

Stop ! J’en ai assez dit et je pourrai continuer comme cela longtemps. L’absurdité de la situation devrait vous sauter aux yeux.

Si vous ne devez retenir qu’une chose, retenez que de nombreuses entreprises ont dépensés des millions de dollars pour avoir des systèmes inviolables (Microsoft et sa XBox, la RIAA et les DVD, ...). Tous sans exception ont échoué.

L’assurance qualité

Dans la vie, il faut être ISO 9001. Même les éponges sont ISO 9001 maintenant. Tout ça pour respecter un processus qualité. Pour les élections, il devrait donc en être de même. Et bien c’est presque le cas : nos bonnes vieilles élections manuelles remplissent tous les critéres :

  • La reproductibilité : il y a un doute on recompte.
  • La traçabilité : on ne remonte pas jusqu’à l’électeur, par contre jusqu’au bureau de vote. Ce qui permet déjà de repérer les coups fourrés.
  • L’intégrité : il y a beaucoup de contrôles. Vous ne pouvez par exemple pas intervertir deux urnes en fin de scrutin car les bulletins seront recomptés. Pareil pour ce qui est de remplir les urnes de bulletin : il faut signer le registre. Pour chaque bulletin ajouté il vous faut en enlever un. Mais l’urne est scéllée.

Avec le vote électronique :

  • Reproductibilité : il y a un doute... On relance le programme sur les mêmes données ? Absurde ! Il y a le fantasme du log papier vérifiable par l’électeur mais cela serait probablement aussi efficace contre les fraudes qu’un contrôle antidopage aprés une épreuve de cyclisme. Donc pas de reproductibilité.
  • Traçabilité : si il y a fraude, le fraudeur peut éliminer la plupart des traces facilement. Les administrateurs systèmes sont souvent confrontés à des logs modifiés par des hackers. Bref, en cas de fraude, pas de traçabilité. Sinon elle est probablement meilleure qu’avec un vote papier.
  • Intégrité : c’est la même machine qui valide les votes, compte les voix et compte les électeurs. Si elle est compromise, il n’y a plus de contrôle d’intégrité possible. Donc pas d’intégrité à moins que chaque tache soit séparée et entièrement confiée à un prestataire technique différent et indépendant des autres (y compris au niveau de la capitalisation).

Conclusion

Le vote électronique pose donc problème car il est impossible même pour des experts de garantir qu’une e-election va bien se dérouler. Le grand public n’a quant à lui aucun moyen de le savoir. Comment demander au peuple d’accorder sa confiance à des experts qui ne peuvent pas accomplir leur mission. La confiance perdue, il n’y a plus de démocratie. J’espère donc que le vote électronique ne sera jamais d’actualité en France et je vous invite à parler autour de vous de ses dangers.



210 réactions


    • Marc Bruxman 24 août 2006 01:17

      Pour ce qui est des résultats prêts pour le 20h, il faut savoir que les sondages effectués en sortie d’urnes ne se trompent pas contrairement aux autres. Ils ont une marge d’erreur trés faible. Le seul cas d’erreur connu a eu lieu aux Etats Unis pour la derniére éléction de Bush... Notamment dans les états qui votaient éléctroniquement... Brrrr....

      Oui pour la vérification manuelle aléatoire d’une partie des bornes en fin de papier si il y a eu un audit papier vérifiable par le votant. Je pense que cela réduit en effet beaucoup les risques. A condition d’en vérifier sufisamment. Et dans ce cas, l’organisation du scrutin risque quand même de couter cher.


  • Philgri (---.---.140.100) 24 août 2006 08:22

    Vincent,

    Tout d’abord merci de me reprendre sur mes fautes d’orthographes. Ma dyslexie est effectivement un lourd handicape pour l’écriture, il en est une superbe qualité d’en d’autres domaines... et je n’est plus le temps de me relire sur ce genre de sujet. De plus, intéressons-nous sur le fond et non plus de la forme.

    Ton raisonnement, je ne le mets absolument pas en doute et il est plus qu’intéressant. Mais ce qui me dérange, c’est cette philosophie des années 70, ou les informaticiens sont toujours très sûrs d’eux et de leurs concepts, jusqu’au jour où un petit malin rentre et casse le système.

    Alors, on corrige, on colmate, on complique... rien n’y fait. C’est une boucle sans fin...

    La sécu informatique se repose tout simplement sur la Physique fondamentale et non pas sur un concept ou un langage !

    C’est le message que je fais passer. Le ton est dur parfois, mais je ne me permettrais jamais de mettre les personnes dans des cases !

    Je vulgarise, car le plus grand nombre doit comprendre. Aucun informaticien n’est capable de se spécialiser dans tous les domaines qu’induit cette profession. Et une connaissance générale ne suffit plus.

    Le plus grave c’est que jour après jour, l’info envahit nos systèmes de fonctionnement et que nous ne pouvons déjà plus nous en passer. Clash assuré pour certain.

    D’autres pensent que les Banques ne se font pas Hacker ! C’est sûr, elles ne vont pas le crier sur tous les toits !

    Par contre quant un opérateur tombe alors là on se dit tiens je n’ai plus la ligne ! quand cela arrive à deux autres opérateurs, en moins de trois mois avec leurs serveurs de secours en rideau, vous dite quoi ? l’admin et son équipe sont dans la merde, ils n’ont pas mangé et dormi pendant trois jours...

    Si les serveurs tournent en Open Source sous Linux aujourd’hui, c’est juste une question sécu fiabilité. Je ne leur donne pas un six mois pour qu’une belle histoire leur arrive ! D’ailleurs d’après ce que j’ai pu comprendre c’est déjà arrivé !

    Oui, l’info est un bel outil, mais il ne sera jamais parfait ! C’est ce qu’il fait sa faiblesse ! alors que chez l’humain c’est ce qui fait son charme ! voila une différence fondamentale...

    Merci à vous tous de vous préoccuper de ce sujet sécu en général.

    Philgri.


  • Marc Bruxman 25 août 2006 01:41

    Quelques derniéres remarques avant que ce sujet passe dans l’oubli numérique.

    Il est faux de croire qu’avoir prouvé le système théoriquement apporte nécéssairement la sécurité. Le fait de proposer des solutions techniques jusqu’à ce que l’une d’entre elle semble inviolable en théorie est donc dangereux car cela semble légitimer le fait que l’on pourrait être sur de la viabilité d’une solution. C’est faux.

    Lorsque l’on prouve une application de façon théorique, on va la plupart du temps réaliser des abstractions qui permettent de s’éloigner des contraintes bassement matérielles. Les chercheurs en crytographie ont notamment appris à leur dépends que des algorithmes prouvés comme étant trés fiables pouvaient être implémentés de façon maladroite et voir leur sécurité complétement détruite. Seulement il n’y a qu’une petite poignée de personnes dans le monde qui vont le remarquer. On se retrouve dans un cas ou l’algo a été prouvé comme sur. Cet algo a été implémenté (mal mais c’est parfois dur à voir) et pourtant le résultat est profondément insécure.

    De façon général quelques tours de passe passe en matiére de programmation système ont souvent mis à mal des systèmes informatiques complexes. La plupart des programmeurs d’applications n’ont aucune notion de programmation système et il est assez facile pour eux de faire une erreur. Il existe trés peu de véritables experts en programmation système et ils sont tous employés.

    De même quel que soit mon respect pour les chercheurs qui sont derriéres le projet Coq (http://en.wikipedia.org/wiki/Coq) et l’utilité de ce logiciel je ne prendrai pas le risque de l’utiliser dans le cadre du vote éléctronique.

    Enfin, en matiére de sécurité comme en matiére de génie logiciel, les designs les plus simples sont généralement les plus fiables. Rajouter 5 couches de complexité et augmenter les points de controles vont plus augmenter les risques que les réduires. De façon générale, une application avec un design trés complexe va etre un échec cuisant en matiére de conduite de projet et aprés en matiére d’exploitation. A l’inverse si les architectes ont réussi à maintenir un design trés simple, cela sera fiable et efficaces. A cet effet, regardez la façon dont ont été crée les protocoles de routages sur internet (BGP) : Design simple et élégant. Algorithme trivial pour quiquonque à des bases de théorie des graphes. Et pourtant non seulement ca marche mais les specs n’ont pas été retouchées depuis des années.

    Tout ca pour dire que quand je vois : Alors truc avec un RFID + controle biométrique + cryptage + x + y + ... je dis STOP avant la fin.


  • Philgri (---.---.236.175) 25 août 2006 07:17

    Un simple court-jus suffit... bon on aura prévu. Un retour de masse. Aussi. Un rayonnement magnétique. D’accord. Et un bon coup de marteau sur la machine ?

    Bon simpliste... Mais efficace.

    Ce qui ne m’empêche pas d’apprécier ces analyses...

    Philgri.


  • Chantal Enguehard (---.---.99.103) 3 septembre 2006 18:21

    Bonjour,

    j’ai lu avec intérêt votre article qui me paraît très pertinent.

    Je me demandais juste pourquoi vous qualifiez la preuve papier vérifiable par l’électeur de fantasme. Cette solution me paraissait « acceptable », mais peut-être ai-je raté quelque chose...

    CE


  • sixrepublique (---.---.102.41) 6 septembre 2006 17:10

    http://blogs.aol.fr/sixrepublique/sixiemeRepublique2007

    prenons un systeme electronique trés simple et votez avec un bultin papier en plus ,pour voir si c’est fiable ,pour un essai.


  • echarp (---.---.133.96) 10 octobre 2006 16:57

    Il y a une et une vraie solution avec laquelle presque tous ici seront d’accord : la transparence absolue.

    Si toutes les informations sont connues et transparentes, y compris la relation entre un participant et ses votes, alors on pourra presque aisément faire confiance au système.

    N’est ce pas ?

    http://leparlement.org/security

    On peut utiliser parlement en français ici : http://leparlement.org/fr


  • Dominique Boscher (---.---.119.205) 12 novembre 2006 22:37

    Le vote éléctronique n’est peut-être pas la solution universelle mais c’est une solution économique et démocratique. Il suffit de mettre des gardes-fous pour en garantir la validité : validation du vote que si la majorité est enregistrée avec une marge d’erreur et confirmée par différents instituts de sondages reconnus par les principales forces politiques en présence... S’il y a un problème il y a toujours une solution sinon il n’y aurait pas de problèmes : voyez le site www.realisme.org.


  • peufeu (---.---.102.87) 27 février 2007 09:07

    J’ai lu des articles décrivant le piratage par des chercheurs des machines à voter américaines. Édifiant.

    Il est impossible de garantir qu’un système informatique (matériel + logiciel) est inviolable. Mais il est tout à fait possible d’évaluer son niveau de sécurité, de nul à excellent.

    Ensuite, on compare le niveau de sécurité au niveau de confiance accordé au système, et on en déduit sa dangerosité.

    Un système pas ou peu sécurisé, dans lequel ne circule aucune information confidentielle (parce qu’on sait qu’il n’est pas sécurisé, donc on ne lui fait pas confiance) ne comporte pas de risque.

    Par exemple, si je me penche à la fenêtre et crie quelque chose à mon pote qui passe dans la rue, tout le monde l’entend, mais on s’en fout : je lui dis de passer prendre l’apéro, une information non confidentielle et qui n’intéresse personne.

    Un système dans lequel on a confiance est beaucoup plus dangereux.

    Pour un type comme moi, ou vous, le principe de précaution de base est qu’un système inconnu est par défaut « insecure » jusqu’à preuve du contraire.

    Ici se pose un autre problème : le pékin moyen qui utilise la machine est incapable d’en évaluer le niveau de sécurité. Or son utilisation est obligatoire. De plus, le pékin moyen n’est pas sensibilisé au principe de précaution informatique. Nos hommes politiques non plus.

    Pour ce qui est des machines à voter américaines, n’importe qui ayant des connaissances en sécurité informatique est capable, au vu des spécifications (sans même regarder le code source) de conclure que le niveau de sécurité est au niveau « néglicence criminelle ».

    Il apparaît que ces machines n’ont pas été conçues par des gens conscients des divers problèmes de sécurité :

    - Tout le logiciel a été codé en assembleur par des neuneus :L’utilisation d’un langage de plus haut niveau (Java, Python) élimine de fait plusieurs classes de trous de sécurité (buffer overflow, integer overflow notamment).
    - Ils ont implémenté leur propre langage : Une erreur de débutant.
    - La machine exécute un programme qui se trouve sur la carte : On pense immédiatement « Danger ! »
    - N’importe qui avec des compétences suffisantes en électronique et informatique est capable, avec des composants du commerce, de modifier le programme écrit sur la carte de manière indétectable (un lecteur de poche + un PDA suffisent) : alerte rouge !

    Bref, ces machines ont été conçues par des incapables, et ceux qui ont mené l’appel d’offre et choisi ces machines sont aussi des incapables, ou bien avaient intérêt à trafiquer les résultats.

    Je pense donc qu’il est absolument inenvisageable d’utiliser actuellement des machines à voter car :

    - Les compétences du gouvernement en matière de technologies de l’information sont ridicules : on ne peut donc avoir aucune confiance en leur choix de matériel
    - Le commanditaire de l’opération a intérêt à trafiquer les résultats.

    La confiance que l’on doit avoir dans le système est donc la même que celle que l’on a pour celui qui l’a mis en place, c’est-à-dire un politicard véreux.

    Si le but est de gagner du temps et de l’argent sur une élection, tout en ayant une sécurité presque parfaite :

    - le support d’information contenant le vote doit être contrôlable visuellement par l’utilisateur.

    Exemple : une machine avec un joli écran tactile en couleur crache une carte avec le vote dessus. Les cartes ne sont pas imprimées par la machine, celle-ci ajoute juste le vote dessus.

    On supprime l’enveloppe : le vote est matérialisé par un point dans une case correspondant au candidat, avec une encre visible seulement aux UV. Un tube UV permet à l’électeur de vérifier son vote. Mais les gardiens de l’urne ne peuvent pas le voir. Le vote reste secret.

    Autre option, le vote est un trou (plus sûr) et la carte se plie pour le cacher.

    L’utilisateur est certain que son bulletin est conforme à ses intentions, même si la machine est hackée.

    - les cartes sont recomptées par deux autre machines, construites par des fabricants différents.

    - un certain pourcentage des urnes sont recomptées à la main. Puisque le but est de gagner du temps, si on recompte 5% des bulletins à la main, on aura gagné 95% du temps de recomptage.

    Mais il faut que personne ne sache quelles urnes seront recomptées ou non (sinon les machines à recompter seraient programmées pour hacker les résultats en fonction de cette info).

    Donc, à la fin de l’élection, les témoins tirent au hasard (aux dés ou à la pioche) quelle urne sera recomptée.

    On arrive à un système sécurisé même si :
    - toutes les machines sont compromises,
    - des traîtres sont présents parmi les témoins (tant qu’ils ne sont pas en majorité).

    De plus, en cas de contestation, les bulletins peuvent être recomptés.


  • Democratie 13 mars 2013 16:14

    Cela ne prend pas en compte le système de boitier de vote électronique nominatif et la dimension de l’open source qui sont fondamentales.
    Concernant la sécurisation de la procédure de vote le site http://i-pericles.com prend en compte ce critère afin d’assurer la fiabilité des votes.


Réagir