Vous êtes sur la page 1sur 7

Java,

le maillon faible du vote par internet.


Par Romo Gallabert, ingnieur systmes et rseaux. rgallabert@gmail.com La France est un pays prcurseur dans lusage du vote par internet pour divers types dlections relevant de la sphre prive et publique depuis une dizaine dannes. La lgislation franaise a permis son usage pour des lections politiques pour les franais rsidant ltranger ds 2003, pour les lections professionnelles dans le cadre du Code du Travail ds 2004 ou pour les votes en assembles gnrales dactionnaires dans le cadre du Code du Commerce. Ce sont donc des milliers de scrutins qui sont grs en vote par internet en France chaque anne et pour lesquels la sincrit du scrutini devrait tre une garantie absolue. Mais lors des dernires lections lgislatives de juin 2012 o le vote par internet tait possible pour les franais de ltranger, un informaticien, Laurent Grgoire, a dmontr quil tait trs simple de modifier les bulletins de vote des lecteurs leur insu par une simple manipulation dune applet Java sur le poste du votant.ii Suite ce scrutin, de nombreux recours avaient t dposs auprs du Conseil Constitutionnel qui a reconnu lexistence danomalies.iii Le dtail des dcisions rendues le 15 fvrier 2013 est assez loquent sur la possibilit de bulletins de vote corrompus : ..Considrant que la circonstance, la supposer tablie, qu'un lecteur de la 4me circonscription est parvenu exprimer par voie lectronique, au second tour du scrutin, un vote en faveur d'un candidat ne figurant pas sur la liste des candidats autoriss se maintenir ce tour n'est pas susceptible d'avoir altr la sincrit du scrutin il rsulte de l'instruction, en particulier du procs-verbal du bureau du vote lectronique, que le dpouillement automatique des suffrages exprims dans la 4me circonscription a t initialement interrompu par la prsence d'un vote ne correspondant pas aux paramtres retenus par le systme. Il apparat donc officiellement que des bulletins lectroniques ont pu tre corrompus lors dune lection politique en France et la dmonstration de faisabilit qui en avait t faite par Laurent Grgoire apparat encore plus dactualit depuis quelques mois avec les cyber-attaques dont ont fait lobjet divers sites gouvernementauxiv et de mdias ainsi que les socits Apple, Microsoft, Facebook ou encore Twitter qui reconnat que plus de 250.000 comptes pourraient avoir t viols.v Lampleur du danger est telle que le gouvernement Amricain a qualifi dans un discours de Barak Obama de cyber-guerrevi les attaques menes par les pirates exploitant les failles de Javavii et appelle tous les utilisateurs dinternet restreindre voire supprimer Java de leurs ordinateurs.viii Or la majorit des prestataires de vote par internet en France imposent lusage de Java pour assurer le chiffrement des bulletins de vote via des programmes applets ix ou de programmes inspirs du langage Java appels Javascript x qui seront tlchargs sur le poste internet du votant. Ces programmes utilisent des algorithmes de chiffrement asymtrique tel que RSA ou El Gamalxi impliquant lusage combin dune clef publique et dune clef prive correspondante. Le bulletin de vote est chiffr par la clef publique et ne peut tre dchiffr que par la clef prive conserve par les membres du bureau de vote ou le prestataire. La clef publique est directement envoye sur tous les postes des votants puisquelle ne peut tre utilise pour dchiffrer un bulletin de vote chiffr sans la clef prive assurant ainsi thoriquement le secret du vote.

Comme le chiffrement asymtrique ncessite plus de puissance CPUxii, il peut savrer trs lent. Pour acclrer ce type de chiffrement, il est normalement fait appel une applet Java qui est tlcharge sur le poste du votant pour permettre le chiffrement du bulletin. Lalternative lusage dune applet Java est lusage dun Javascript sur le poste du votant, mais un Javascript sera beaucoup plus lent quune applet Java effectuer le grand nombre de calculs que ncessite un algorithme de chiffrement asymtrique et aussi beaucoup plus simple pirater via un malware xiii ou un cheval de troie .xiv De plus, il sinstalle facilement linsu du votant sur son poste internet via le chargement de la page web du bulletin de vote et contourne ainsi les rgles de scurit rseaux qui peuvent imposer les gestionnaires de scurit informatique. Quelque soit le type de programme utilis pour le chiffrement du bulletin, applet Java ou Javascript , le principal problme reste que le chiffrement et la transmission du bulletin est effectu uniquement sur le poste du votant qui est le maillon faible de la chane de traitement du vote car impossible scuriser par les ingnieurs en scurit informatique du prestataire de vote. De plus comme le bulletin est envoy chiffr directement du poste du votant jusqu la base de donnes du prestataire hbergeant lurne virtuelle sur ses serveurs, aucun contrle dintgrit des donnes et donc de sincrit du vote ne peut tre effectu en dehors du poste du votant, ce qui ouvre un certain nombre dactes de piratage possibles : Attaque 1 : modification de lapplet Java. Cette attaque a t trs bien dmontre par Laurent Grgoire qui a t capable de prendre la main sur lapplet java , de dcompiler le code et de modifier le programme pour quil puisse voter linsu du votant pour un autre candidat. Le piratage du bulletin tait simple raliser et le prestataire du Ministre des Affaires Etrangresxv navait aucun moyen de dtecter la fraude, par ailleurs le bulletin ntant pas corrompu et juste modifi il aurait t dchiffr sans erreur par le systme. Linstallation dun virus de type cheval de troie spcifique sur divers postes de votants aurait ainsi permis de modifier linsu des nombreux votants leurs votes sans quils sen aperoivent. Attaque 2 : interception et manipulation dun composant html de la page Web du bulletin de vote Nous montrons ci-aprs une partie du programme ( snippet )xvi utilise pour le vote des lections des reprsentants aux TPExvii organis par le Ministre du Travail en dcembre 2012.

<input type="hidden" name="maxSelection" value="1" id="maxSelection"> <input type="hidden" name="minSelection" value="1" id="minSelection">
Le code ci-dessus gre les variables de contrle du nombre autoris de listes de candidats que lon peut voter sur un bulletin. La rgle de vote tait que lon pouvait soit choisir une liste soit voter blanc , le votant devait slectionner un minimum de 1 choix et un maximum de 1 choix parmi les listes proposes. Il tait donc trs simple dintercepter lexcution de la page Web sur le poste du votant, de lire le code et de changer le contenu, la plupart des navigateurs offrent cette possibilit aux dveloppeurs lorsquils dveloppent des pages web. On pouvait donc modifier la variable maxSelection 2 ou plus, ce qui permettait au programme de choisir plusieurs listes de candidats linsu du votant, de chiffrer le bulletin puis de lenvoyer lurne virtuelle. Comme le seul contrle effectu se faisait sur le navigateur du votant 2

dont le pirate aurait pris le contrle, le systme de vote navait donc aucun moyen de dtecter quun bulletin non conforme ait t reu dans lurne. Le rsultat aurait t alors un cart entre le nombre de vote exprims pour des listes et le nombre de votants Attaque 3 : interception de lexcution du vote entre la page web affichant le bulletin de vote et la page de confirmation du vote. Ceci est une autre partie de lapplet Java utilise pour le vote des lections des reprsentants aux TPE de dcembre 2012. <script> function voter() { $("#btnVoter").attr("disabled", "disabled"); $("#btnVoter").addClass("disabled"); document.getElementById('applet').setButtonClick(); } </script> <applet i d='applet' code='CypherApplet.class' archive='../applet/SVoteApplet.jar;jsessionid=nnnnnnnnnnn' width='0' height='0'> <param name="codebase_lookup" value="false" /> <param name="MAYSCRIPT" value="yes" /> <param name="scriptable" value="true" /> <param name="sessionId" value="nnnnnnnnnnn" /> <param name="cache_option" value="no" /> </applet> <input type="button" id="btnVoter" value="VOTER" class="button disabled" onclick="voter()" disabled="disabled"> La dernire ligne du programme ci-dessus commande au navigateur laffichage du bouton VOTER sur la page Web du bulletin de vote. Lorsque le votant a fait son choix sur le bulletin puis la vrifi sur la page dite de confirmation, il devait alors cliquer sur ce bouton. Cette action du programme est effectue lorsque le clic est effectu (vnement onclick ) appelant la fonction Javascript voter. Ce code est visible dans les 7 premires lignes du programme. Laffichage du bouton VOTER est en fait simplement cach sur la page du bulletin (disabled) pour ensuite lancer lapplet Java, tel que dfini au milieu du programme ci-dessus. En prenant le contrle du navigateur, un pirate peut alors ajouter un point de contrle sur la fonction voter, modifier le choix du bulletin et ensuite lancer lapplet Java normalement linsu du votant. Ainsi mme si le votant a cru vrifier son choix sur sa page de validation, son vote a pu tre modifi sans quil sen aperoive aprs que le votant ait dj confirm son vote. Le bulletin peut tre ainsi transmis chiffr lurne virtuelle avec un autre choix que celui effectu par le votant. Attaque 4 : rtro-ingnierie (reverse engineering) du protocole de conception du bulletin de vote permettant de crer sa propre version de lapplet de chiffrement. Cela consiste tudier le programme pour en dterminer le fonctionnement interne. Comme le code du programme ( applet java ou javascript ) est disponible sur le poste du votant soit en clair soit par dcompilation de lapplet Java, il est possible un pirate de dterminer exactement comment est construit le bulletin avant chiffrement.

Parce que la clef publique de chiffrement est connue sur le poste du votant, le pirate peut crer une nouvelle applet qui votera pour le candidat voulu et effectuera le chiffrement dun bulletin conforme pour le systme de vote qui pourra ensuite tre dchiffr normalement. Le pirate peut donc aisment substituer son applet ( malware ) en lieu et place de lapplet du prestataire et ainsi faire voter le navigateur du votant comme il le souhaite tout en faisant croire au votant que cest son choix lui qui aurait t effectu. La rtro-ingnierie de lapplet nest dailleurs pas toujours indispensable car la plupart des prestataires de vote par internet en France utilisent le mme programme de chiffrement asymtrique dvelopp en javascript par un chercheur, Tom Wu, de lUniversit de Stanfordxviii aux USA en 2005. Ainsi la lecture du programme dans un bulletin de vote utilis pour une lection professionnelle organise chez ORANGE en fvrier 2013xix, on peut constater des failles supplmentaires. Le bulletin de vote web est chiffr par le programme de Tom Wuxx, le systme va ensuite changer en clair avec le serveur le choix du votant avant son chiffrement sur le poste du votant. On peut ainsi lire dans le snippet de la page du bulletin de vote que le choix pour une liste est affect un numro (par exemple, ici la valeur 15 pour le choix de la liste CFE-CGC/UNSA)

Cette valeur est envoye en clair au serveur via le protocole SSLxxi en utilisant une commande http POST xxii, le votant restant identifi lors de lchange avec le serveur par un cookie de session temporaire JSESSIONIDxxiii Le serveur rpond en affichant une page web de confirmation montrant le vote pour la liste CFE- CGC/UNSA llecteur avec la variable 15. Lorsque le bouton VOTE est cliqu par le votant, la page du bulletin est alors chiffre avec le programme Javascript en remplaant le texte du bulletin par une version chiffre RSA en base 64xxiv puis envoy lurne virtuelle via une commande http post.

Dautres failles sont donc introduites dans ce type de solution : Les clefs de choix dune liste ou dun candidat sont aisment comprhensibles. En interceptant la page html de confirmation du vote, un pirate peut simplement remplacer une valeur de clef par une autre sans que le votant saperoive de la modification. - Comme le format du bulletin est connu, les valeurs de chaque choix (liste ou candidat) sont comprhensibles, ainsi quest connue la clef publique de chiffrement transmise avec le bulletin par le serveur. Un pirate peut donc sans difficult crer un bulletin chiffr avec son propre choix et le faire envoyer lurne virtuelle via un http post linsu du votant. Attaque 5 : rendre le bulletin illisible. Une autre attaque trs simple par rtro-ingnierie de lapplet se fera en dterminant comment le protocole rseau et le format du message est construit entre lapplet et le serveur du prestataire lorsque le bulletin chiffr est retransmis vers le serveur. Le pirate peut alors crire un malware qui va examiner cet change puis simplement modifier quelques octets au hasard du bulletin chiffr. Ainsi le bulletin ne sera plus dchiffrable. De cette manire, un bulletin qui tait normalement conforme pourra tre transform en bulletin illisible donc nul. Si le pirate arrive distribuer son malware sur un certain nombre de poste de votants, par exemple via un site web de campagne dun candidat ou via un rseau social de supporters dun candidat ou encore via la distribution demails de campagne lectorale du candidat, il pourrait nullifier systmatiquement tous les bulletins manant des postes des votants qui se seraient intresss ce candidat et qui auraient leur insu t infects par le malware. Cette possibilit de dtournement en masse dapplets a t dmontre lors des attaques dont ont fait lobjet Apple, Microsoft, Facebook ou encore Twitter ces deux derniers mois. D'aprs le site Arstechnicaxxv, qui reprend une hypothse prcdemment dfendue par RSA Securityxxvi, les auteurs de l'attaque auraient en ralit commenc par infecter un forum Web frquent par des dveloppeurs travaillant sous Mac (iphonedevdsk.com, qu'il vaut mieux donc ne pas visiter), selon la tactique dite du waterhole .xxvii Cette tactique consiste donc plutt que de s'en prendre directement une cible donne, l'ide est de distribuer l'infection partir d'un point d'intrt susceptible d'attirer les publics chez qui l'on souhaite s'introduire. Dans le cadre dlections politiques, un site web de campagne serait donc une cible idale pour distribuer le malware . Dans le cadre dlections professionnelles o le service informatique de la socit est en charge de la gestion des postes de travail de tous les salaris et donc de leur scurit, on pourrait imaginer aussi quun informaticien assurant la gestion des versions de logiciels par exemple pourrait introduire ce type malware et ainsi faire voter pour les candidats de son choix dont il pourrait dailleurs faire partie.. -

Dans un document nomm Cyber-conflits, quelques cls de comprhensionxxviii publi en 2011 par lagence gouvernementale franaise de scurit en informatique lANSSIxxix, il est rappel lvolution exponentielle du nombre de malware apparus ces dernires annes

Source : The Cyber-Crime Black-Market: Uncovered, Panda Security Press

Le danger est donc bien rel, et vouloir faire reposer la scurit du vote par internet sur le seul poste internet du votant, quil soit usage priv, public ou professionnel, que ce soit par lusage dapplet Java, de Javascript ou autres plug-in , est donc proscrire. Lors du Symposium sur la scurit des technologies de l'information et des communications (SSTIC) de 2012, un ingnieur de la SERMAxxx , socit agre Centre dvaluation de la Scurit des Technologies de lInformationxxxi, a dmontr qu'une vulnrabilit d'apparence anodine permettait de compromettre intgralement une application bancaire utilisant des cartes puce sur une plateforme Java Cardxxxii pourtant reconnue particulirement scurise par le monde bancaire. Il confirmait dans ses conclusions la ncessit faite aux banques de privilgier des applications permettant de vrifier lintgrit des changes entre la carte bancaire de lutilisateur et le serveur central et dviter lusage de Java embarqu. Ce qui est applicable au monde de la banque devrait donc tre entendu par les acteurs du vote lectronique afin dviter la liste des risques ici cits et ainsi mettre en doute la sincrit du vote sur la plupart des scrutins organiss par internet en France. Il ne sagit donc pas dans cet article de rejeter lusage dinternet pour diverses pratiques dmocratiques comme les lections, les rfrendums ou ptitions mais bien de garder les yeux ouverts sur les ralits techniques quil convient de prendre en compte pour offrir un systme de vote qui offre toutes les garanties de sincrit du scrutin et de secret du vote qui simposent toute dmocratie moderne.
http://www.conseil-constitutionnel.fr/conseil-constitutionnel/francais/cahiers-du-conseil/cahier-n-13/la- notion-de-sincerite-du-scrutin.52035.html ii http://www.scribd.com/doc/94990325/Comment-mon-ordinateur-a-vote-a-ma-place-et-a-mon-insu
i


http://www.conseil-constitutionnel.fr/conseil-constitutionnel/francais/les-decisions/acces-par- date/decisions-depuis-1959/2013/2012-4597/4626-an/decision-n-2012-4597-4626-an-du-15-fevrier- 2013.136040.html iv http://venturebeat.com/2013/01/11/homeland-security-java/ v http://blog.twitter.com/2013/02/keeping-our-users-secure.html vi http://www.courrierinternational.com/article/2013/02/05/barack-obama-commandant-en-chef-de-la- cyberguerre vii http://www.us-cert.gov/ncas/alerts/ta13-010a viii http://www.kb.cert.org/vuls/id/625617 ix http://fr.wikipedia.org/wiki/Applet_Java x http://fr.wikipedia.org/wiki/JavaScript xi http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique xii http://fr.wikipedia.org/wiki/CPU xiii http://fr.wikipedia.org/wiki/Logiciel_malveillant xiv http://fr.wikipedia.org/wiki/Cheval_de_Troie_(informatique) xv http://www.diplomatie.gouv.fr/fr/vivre-a-l-etranger/elections-2012-votez-a-l-etranger/ xvi http://fr.wikipedia.org/wiki/Snippet xvii http://www.electiontpe.travail.gouv.fr/ xviii http://www-cs-students.stanford.edu/~tjw/jsbn/LICENSE xix https://www.votes.voxaly.com/electionsccp-communication/ xx http://www-cs-students.stanford.edu/~tjw/jsbn xxi http://fr.wikipedia.org/wiki/Transport_Layer_Security xxii http://en.wikipedia.org/wiki/POST_(HTTP) xxiii http://en.wikipedia.org/wiki/Session_ID xxiv http://en.wikipedia.org/wiki/Base_64 xxv http://arstechnica.com/security/2013/02/web-forum-for-iphone-developers-hosted-malware-that-hacked- facebook/ xxvi http://fr.wikipedia.org/wiki/RSA_Security xxvii http://fr.slideshare.net/symantec/waterhole-attack xxviii http://www.ssi.gouv.fr/fr/anssi/publications/autres-publications-233/cyber-conflits-quelques-cles-de- comprehension.html xxix http://www.ssi.gouv.fr/ xxx https://www.sstic.org/2012/presentation/compromission_application_bancaire_javacard/ xxxi http://www.ssi.gouv.fr/fr/certification-qualification/cesti/presentation-6.html xxxii http://fr.wikipedia.org/wiki/Java_Card
iii