Professional Documents
Culture Documents
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
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