Vote électronique libre et vérifiable

Oui je voulais dire en fait paire privée / publique, mais clé privée suffit. Il faut donc générer ces clés privée aléatoirement sans que quiconque puisse les voir avant de les mettre dans les boules.

J’ai l’impression qu’i n’y a pas de protection contre la malhonnêteté de ceux qui organisent le vote.
Ils peuvent prendre des clefs non distribuées et faire voter les morts.

Anonymiser le vote est vital, mais anonymiser le votant me semble impossible pour garantir le vote unique.
C’est le même problème que pour les certifications G1 et ce qui me fait proposer de graver des hashs de données privées dans la blockchain…

D’ailleurs cela me fait penser que le vote en lui même devrait se faire dans une blockchain avec un compte anonyme.

1 Like

C’est pour ça qu’il faut que la liste des inscrits soit publique. Tout le monde peut vérifier que la définition du vote est correcte et que tous les inscrits sont membres.

1 Like

il faut aussi que l’info “a voté” et le nombre de votant soient publiques.
il y a une grosse confiance de mise dans la liste des inscrits aussi, c’est un peu déporter le problème de l’unicité des votants. Comment garantir une liste des votants propres? A priori, pas d’anonymat, c’est vraiment le même problème que pour les comptes certifiés G1.

1 Like

Un peu tard pour être utile, mais une recherche avec la loupe :mag: mène à ce sujet : Système de vote à l'aide des clés ğ1 datant de mai 2019 dans lequel j’introduis déjà belenios :slight_smile:

1 Like

A creuser:

(le projet semble sérieux, @zooma connait le développeur)

2 Likes

J’aurais bien testé un apk … Dommage que ça soit pas sur f-droid

Belenios a été utilisé lors des élections 2021 de la Ligue d’Occitanie du Jeu d’Échecs (lien vers l’urne tout en bas).

Le principe découvert est très élégant : le bulletin est chiffré, envoyé avec l’identifiant du votant, donc l’émargement est vérifiable, tout autant que le bulletin visible dans l’urne, mais pas son contenu bien entendu.

Le truc réside fondamentalement dans le fait que la clé de dépouillement consiste à pouvoir déchiffrer uniquement la SOMME des votes, mais pas les bulletins individuels. Le principe est exposé ici.

Le principe cryptographique qui permet de décoder une somme, sans pouvoir déchiffrer les éléments de la somme est très réduisant, j’ai pas plus d’éléments pour être plus précis.

2 Likes

Alors en fait ce n’est pas ça. Les trustees peuvent déchiffrer les éléments de la somme. On doit leur faire confiance sur le fait qu’ils ne déchiffreront que la somme, et pas ses éléments.

On appelle ça du chiffrement homomorphique, c’est basé sur le fait que x^a * x^b = x^(a+b). Dit autrement : «le produit des éléments chiffrés est égal au chiffrement de la somme des éléments en clair».

Mais pour connaître le montant de cette somme, il faut déchiffrer.

C’est pour cela que l’on choisit des trustees qui ont des intérêts divergeant, mais ça reste un protocole centralisé, avec un risque de casser l’anonymat si les trustees se mettent d’accord pour le faire.

2 Likes

juste pour bien comprendre, vous parlez de belenios ou de voteID ?

belenios. Il faudrait tester voteID, lire les specs, et discuter avec ces gens.

2 Likes

C’est pas ce qui est expliqué :

L’un des intérêts du chiffrement homomorphe est qu’un tiers peut faire des calculs sur les messages chiffrés sans les déchiffrer et que le résultat est utilisable, c’est-à-dire peut être décodé

Si si c’est bien ce que je dis.

Tu peux sommer les éléments chiffrer sans les déchiffrées. Lorsqu’ils disent que le résultat du calcul «peut être décodé» ça veut juste dire que faire cette opération à un sens.
Car dans le cas général, faire des calculs sur des éléments chiffrés n’a aucun sens.

Mais dans tous les cas pour passer de la version chiffrée à la version «en clair» il faut la clé de déchiffrement, et si tu as la clé de déchiffrement alors rien ne t’empêche techniquement de déchiffrer les éléments de départ.

C’est d’ailleurs bien expliqué dans la source du paragraphe que tu cite :

He can compute with data he can’t inspect. The numbers in the file remain encrypted at all times, so Bob cannot learn anything about them. Nevertheless, he can run computer programs on the encrypted data, performing operations such as summation. The output of the programs is also encrypted; Bob can’t read it. But when he gives the results back to Alice, she can extract the answer with her decryption key.

1 Like

Autrement dit, on code un nombre n1 en c1, un nombre n2 en c2, et quand on fait c1+c2, on obtient un c3 qui, miracle, est le codage du nombre n3=n2+n1 ; c’est bien ça ?

Oui c’est presque ça, à la subtilité prêt que l’opération sur les membres chiffrés n’est pas une addition, mais une opération complexe permettant d’obtenir un nombre c3 tel que le déchiffrement de c3 donnera la somme n3=n2+n1 :slight_smile:

Le chiffrement homomorphisme est un outil cryptographique que je connais bien, car je l’ai notamment étudié dans le cadre de l’étude du protocole mimblewimble :

Il est vrai que la formulation de l’article wikipedia FR porte à confusion, et peut laisser penser que l’on pourrait déchiffrer la somme sans déchiffrer les éléments, mais il n’en est rien. Soit on peut tout déchiffrer, soit on ne peut rien déchiffrer.

Il est en revanche possible pour tout observateur extérieur de vérifier si la valeur chiffrée correspond à une valeur particulière V, il lui suffit de chiffrer V avec la clé publique, et de vérifier si la valeur chiffrée obtenue est identique. C’est pour cela que les votes contiennent aussi un commitment aléatoire, bref je m’égare, retenez juste que c’est infiniment plus complexe et subtil que vous ne le pensez.

Le seul moyen d’être sûr d’avoir correctement compris c’est de lire le papier scientifique d’origine, ou de lire le code source d’une implémentation certifiée conforme, c’est ce que je fais :slight_smile:

2 Likes

Un use case pour le chiffrement homomorphique est de faire faire des calculs par un tiers qui ne peut pas déchiffrer les données sources et de récupérer le résultat que l’on saura déchiffrer.