/13 Le système de vote électronique Belenios Véronique Cortier (Cassis), David Galindo (Cassis), Pierrick Gaudry (Caramel) et Stéphane Glondu (Cassis/Caramel) 4 décembre 2014
/13 Protocole de vote Belenios http://belenios.gforge.inria.fr/ Développé au Loria, équipe Cassis et Caramel Développeur : Stéphane Glondu Variante de Helios, développé et utilisé à l'université de Louvain (start-up BlueKrypt) Assure la condentialité des votes Permet la transparence du scrutin L'urne est publique à tout moment. Les calculs (comptage,...) sont vériables par tous.
/13 Brique de base : la cryptographie
/13 Chirement asymétrique Une invention des années 80 W. Die M. Hellman clef publique clef privée Bonjour Obawbhe Bonjour Chirement Déchirement Chirement avec la clef publique et déchirement avec sa clef privée.
/13 Une grande inventivité - Chirement à clef multiples Il faut plusieurs clefs pour déchirer.
6/13 Chirement à seuil Inversement On chire avec une clef construite à partir de n clefs On déchire avec n'importe laquelle des n clefs On complique : (chirement à seuil) On chire avec une clef construite à partir de n clefs il faut (et il sut) de k clefs parmi n
/13 Chirement à seuil Inversement On chire avec une clef construite à partir de n clefs On déchire avec n'importe laquelle des n clefs On complique : (chirement à seuil) On chire avec une clef construite à partir de n clefs il faut (et il sut) de k clefs parmi n Ça existe en vrai!
/13 Chirement à seuil - au Texas http ://www.ickr.com/photos/86078043@n08/7880120310/
7/13 Chirement à seuil - au Texas http ://www.ickr.com/photos/86078043@n08/7880120310/
Fonctionnement de Belenios (simplié) Phase 1 : vote Urne {v A } pk(e) v A = 0 or 1 {v B } pk(e) v B = 0 or 1 {v C } pk(e) v C = 0 or 1 8/13 Phase 2 : Dépouillement - chirement homomorphique (El Gamal) n n {v i } pk(s) = { v i } pk(s) i=1 i=1 Seul le résultat nal doit être déchiré! pk(e) : clef publique, la clef privée est partagée entre les autorités.
Fonctionnement de Belenios (simplié) Phase 1 : vote Urne {v A } pk(e) v A = 0 or 1 {v B } pk(e) v B = 0 or 1 {v C } pk(e) v C = 0 or 1 8/13 Phase 2 : Dépouillement - chirement homomorphique (El Gamal) n n {v i } pk(s) = { v i } pk(s) i=1 i=1 Seul le résultat nal doit être déchiré! pk(e) : clef publique, la clef privée est partagée entre les autorités.
Fonctionnement de Belenios (simplié) Phase 1 : vote Urne {v A } pk(e) v A = 0 or 1 {v B } pk(e) v B = 0 or 1 {v C } pk(e) v C = 0 or 1 v D = 0 or 1 8/13 Phase 2 : Dépouillement - chirement homomorphique (El Gamal) n n {v i } pk(s) = { v i } pk(s) i=1 i=1 Seul le résultat nal doit être déchiré! pk(e) : clef publique, la clef privée est partagée entre les autorités.
8/13 Fonctionnement de Belenios (simplié) Phase 1 : vote Urne {v A } pk(e) v A = 0 or 1 {v B } pk(e) v B = 0 or 1 {v C } pk(e) v C = 0 or 1 v D = 0 or 1...... Phase 2 : Dépouillement - chirement homomorphique (El Gamal) n n {v i } pk(s) = { v i } pk(s) repose sur g a g b = g a+b i=1 i=1 Seul le résultat nal doit être déchiré! pk(e) : clef publique, la clef privée est partagée entre les autorités.
9/13 Trop simplié! Urne {v A } pk(e) v A = 0 or 1 {v B } pk(e) v B = 0 or 1 {v C } pk(e) v C = 0 or 1...... Résultat : {v A + v B + v C + v D + } pk(e)
9/13 Trop simplié! Urne {v A } pk(e) v A = 0 or 1 {v B } pk(e) v B = 0 or 1 {v C } pk(e) v C = 0 or 1 v D = 100...... Résultat : {v A + v B + v C + 100 + } pk(e) Un votant pourrait tricher!
9/13 Trop simplié! Urne {v A } pk(e) v A = 0 or 1 {v B } pk(e) v B = 0 or 1 {v C } pk(e) v C = 0 or 1 v D = 100...... Résultat : {v A + v B + v C + v D + } pk(e) Un votant pourrait tricher! Utilisation d'une preuve à connaissance nulle (zero-knowledge proof), ZKP{v D = 0 ou 1}
10/13 Encore trop simplié Urne {v A } pk(e) {v B } pk(e) {v C } pk(e)...
10/13 Encore trop simplié Urne {v A } pk(e) {v B } pk(e) {v C } pk(e) {1} pk(e) {1} pk(e) L'urne pourrait ajouter des bulletins!
10/13 Encore trop simplié vk(cred 3 ), vk(cred 1 ), vk(cred 2 ),... Urne [{v A } pk(e)] sk(cred 1 ) [{v B } pk(e)] sk(cred 2 ) [{v C } pk(e)] sk(cred 3 ) L'urne pourrait ajouter des bulletins! Les votants signent avec un code de vote qu'ils ont reçu (un droit de vote = un code). L'urne ne connait que la partie publique des codes de vote
11/13 Sécurité de Belenios Un protocole assurant à la fois la condentialité des votes et la vériabilité du processus Condentialité : nul ne peut connaître la valeur des votes Vériabilité Vériabilité individuelle : Chaque votant peut vérier que son bulletin est dans l'urne. Vériabilité universelle : Tout le monde peut vérier que le résultat correspond aux bulletins dans l'urne. Vériabilité de l'éligibilité : Tout le monde peut vérier que les bulletins de l'urne proviennent de votants légitime.
12/13 Limitations de Belenios Pas de réel isoloir Le vote par Internet EST du vote par correspondance Il faut faire conance à l'ordinateur Un ordinateur infecté pourrait : faire fuiter le choix du votant voter pour un candidat diérent exemple de l'attaque de Laurent Grégoire lors des législatives 2012, pour les français de l'étranger (injection de code). Belenios n'est pas sans reçu On peut prouver pour qui on a voté.
13/13 Merci à tous ceux qui ont bien voulu se prêter au jeu! Organisatrice de l'élection : Olivia Brenner Générateur de codes de vote : Philippe Dosch Autorités de déchirement : Maxime Amblard, Arnaud Laprévôte, Sylvain Lefebvre Nos beta-testeurs : Olivia Brenner, Cédric Villa, Chantal Chrétien et tous les membres de Cassis et Caramel