[Cocorico] Questions sur la preuve de vote

Bonjour,

il m’a été demandé (par @Sly notamment) de créer un sujet pour traiter les questions concernant le principe de la preuve de vote. Pour rappel, voilà le fonctionnement en 3 étapes clefs :

A vos questions ! :wink:

1 « J'aime »

Si je comprend bien c’est un moyen offert pour chaque votant de contrôler si son vote à bien été décompté par la plateforme.
Je vais prendre le risque de dire un connerie, ça permet donc, si tout le monde utilise cette fonction, de valider à 100% un vote ? C’est théorique évidemment.

Est ce que c’est une preuve de « participation », ou une preuve de « valeur de vote ». En fait dans les captures d’ecrans, je vois mal ce qu’il se passe une fois que le QRCode ou le fichier SVG est enregistré sur le site web. Est ce que le site web réponds… « Ok j’ai retrouvé ton code dans la blockchain coco, c’est cool raul! » ou est ce qu’il réponds « Ok j’ai retrouvé ton code dans la blockchain coco, sa valeur c’est ca (pour, contre, abstention), est ce que c’est bien ce que tu avais voté? », et l’utilisateur verifie ou non la valeur de son vote.
Merci d’apporter cette petite précision.

En fait dans ma réflexion, la « preuve de participation » est totalement nécessaire, car si on modélise numériquement un bureau de vote, alors elle correspond au tampon sur sa carte d’électeur coté électeur, et à la signature sur le bordereau coté bureau de vote. En gros il n’y a pas de soucis à dire en sortant « He oué mec, moi je suis allé voter, je suis trop un citoyen! »

Par contre dans l’état actuel de ma réflexion j’ai du mal avec la preuve de « valeur de vote ». Pourquoi…, et bien parce que je pense qu’on sort de la modélisation du bureau de vote, parce que ca n’existe pas ca dans un bureau de vote. J’irais même plus loin, c’est volontairement empêché, c’est le secret du vote et ca a deux objectif bien précis.

  • 1/ Personne n’est capable, vu que j’ai utilisé un isoloire, une enveloppe, et que je l’ai mélangé a pleins d’autres bulletin dans une urne scellée, de savoir CE QUE j’ai voté
  • 2/ Et là c’est le deuxième point tout aussi fondamental qu’on oublie vite, JE ne suis pas capable, de prouver CE QUE j’ai voté. Et donc je ne peux pas, avant ou après le vote, faire le commerce de mon opinion. Le vote n’est alors pas corruptible, en effet aucune personne maléfique ne peut exercer de pression sur moi, car je ne pourrais jamais lui prouver ce que j’ai voté.

Dans le cas d’un vote en ligne, même si on prends en compte la corruptibilité qui existe, car l’isoloir est impossible à modéliser, c’est à dire que n’importe quel internaute peut avoir un pistolet sur la tête, au moment où il va voter, et bien ce cas n’est pas pire en terme de corruptibilité que de fournir une preuve de vote. Car il faudrait un certain nombre d’hommes de mains, et de violences discrètes pour corrompre chaque internaute, alors que si on fournit une preuve de « valeur de vote » après chaque vote, on va voir fleurir des plateformes à Lobby (genre ebay), qui vont payer les citoyens pour voter comme il le souhaite. Et là l’échelle est bien plus désastreuse.
Je ne dis pas qu’il ne faut absolument pas de « preuve de valeur de vote », je dis qu’il faut avoir ces éléments en tête, et qu’il faut penser à des systèmes pour réduire ces risques.

Des bisous

5 « J'aime »

Trop fort ta remarque. Je crois que ça nécessite de creuser…

Oui.
L’idéal est d’avoir 100% de votes vérifiés (« qui ont été soumis à la vérification ») et 100% de vote validés (« qui ont été soumis à la vérification et ont été testé valides »).

La preuve de vote inclus :

  • C : l’adresse de l’urne dans la blockchain
  • A : l’adresse du compte blockchain qui a été généré pour faire la transaction du bulletin de vote
  • B : la valeur inscrite sur le bulletin de vote tel qu’il a été transmis

Lorsqu’on soumet la preuve de vote pour une vérification, le serveur :

  • retrouve le vote V désigné par C
  • vérifie la signature de la preuve de vote avec la clef secrète de V
  • cherche une transaction T émise par A vers C
  • vérifie que la valeur présente dans T est bien égale à B

Si une de ces vérifications échoue, on enregistre un bulletin vérifié « invalide ».
Sinon, on enregistre un bulletin vérifié « valide ».

La preuve de vote veut donc dire « a voté pour tel vote » et « voilà ce qui a été voté ».
Mais ne contient pas d’information personnelle sur « qui » a voté et n’est stockée par personne si ce n’est par l’utilisateur.

Pas tout a fait, car la signature tu ne l’emportes pas avec toi.
La preuve de vote c’est en gros un équivalent de ton souvenir (mais certifié valide) de ton bulletin de vote + le tampon sur ta carte d’électeur. C’est « tout à toi ».
La signature dans le bordereau d’émargement, c’est pas toi qui conserve la donnée. C’est le bureau de vote (en l’occurrence ici le serveur).

Certes. Mais cela implique donc une activité à priori répréhensible. Comme le bourrage d’urne.
Je ne dis pas que ça n’est pas un problème. Je dis qu’il faut prendre le souci dans sa globalité : la loi ne t’empêche pas de mettre un flingue sur la tempe de quelqu’un, elle dit juste que si tu le fais tu seras puni.

Je botte un peu en touche… mais c’est pas complètement absurde non plus je pense.
Mais c’est clair qu’on est pas dans la « garantie ». C’est très faible comme raisonnement/argument.

Si la preuve de vote ne contient pas la valeur, alors on est soumis au risque des gens qui vont - consciemment ou pas - ne pas se rappeler de leur vote et créer des « faux positifs ».
Ce qu’on pourrait faire, c’est mettre dans la preuve de vote un hash du bulletin plutôt que la valeur en clair. Ca n’empêche pas :

  • qu’au moment ou il sera vérifié, on verra la statistique changer ;
  • qu’en allant chercher dans la blockchain, on trouve la transaction et donc on trouve la valeur du bulletin.

Pas évident…

Bonsoir,
Seriez-vous intéressés par un usage blockchain ? Mardi soir à Paris j’ai échangé avec Quitteriez et Jean-Louis, étant une association d’accro aux blockchains (World of blockchains), si nous pouvons vois aider.

2 « J'aime »

Qu’entends-tu par « usage blockchain » ?

L’usage de blockchain dans sa certification/validation dans le processus de vote et outil anti-fraude comme il est fait pour les diplômes, le cadastre (Ghana) etc. Pour la « démocratie liquide » trop tôt à mettre en oeuvre (je renvoie au livre Blockchain France « la blockchain décryptée »)

La blockchain est déjà utilisée dans Cocorico.
La preuve de vote sert justement à comparer la transaction de vote telle que générée lors du vote sur le poste client et celle enregistrée dans la blockchain.

Bonjour,

Je viens de voter et je cherche maintenant à vérifier/valider mon vote au travers des preuves de vote que j’ai téléchargé.

Où cela se passe-t-il ? sur le site laprimaire.org ? ailleurs ?

Merci

Pour l’instant, la vérification se passe une fois que les résultats sont disponibles.
Pour ne pas donner les résultats en temps réel, la vérification n’intervient donc qu’une fois que le vote est fini.

Cela sera surement changé pour le second tour.

Les votes ne sont-ils pas inscrits sur une blockchain public ? C’est Ethereum n’est ce pas ? Car si c’est le cas il semble assez facile d’aller compter les résultats en temps réel pour autant qu’on découvre les adresses…

Pour le premier tour c’est une blockchain privée, pour plusieurs raisons.
Mais c’est effectivement un problème que j’aborde ici.

1 « J'aime »

Bonsoir,

Le résultats sont publiés donc je reviens vers vous au sujet de la preuve de vote.

A quel endroit devons nous aller pour vérifier que son vote a bien été pris en compte ?

Autre question : Quel moyen avez-vous prévu pour vérifier le comptage ?

Merci

Je vais essayer de mettre ça en ligne d’ici à dimanche soir. Il faut que je dorme un peu :grinning:

De quoi parle-t-on exactement ?

J’évoque la vérifiabilité universelle. Si les votes sont stockées sur une blockchain il devrait être possible de les recompter et de vérifier les résultats :slight_smile:

En fait je suis en train de faire un tour d’horizon pour un grand groupe des solutions de vote en ligne qui utilisent la blockchain et je vais également publier d’ici peu un article sur le sujet. Donc non je ne suis pas l’enquiquineuse de service :slight_smile:

Nous pourrions peut-être envisager de nous rencontrer ou bien de se programmer un créneau sous skype (j’ai aussi des questions sur l’architecture logicielle). Qu’en dites-vous ?

Histoire de laisser @Jean-Marc_Le_Roux dormir un peu et en espérant avoir tout bien suivi…

le schéma ci-dessus déjà présenté peut peut-être répondre à la question :slight_smile:

https://forum.mavoix.info/uploads/mavoix/original/1X/0f7d1e163a1a2326abb75cd2623baa313b9367b4.PNG

La preuve de vote fait double emploi :

1 - elle permet à l’utilisateur qui la détient de vérifier qu’il existe bien une transaction correspondant au vote,
2 - et au passage le serveur comptabilise les vérifications pour faire des statistiques et ainsi recompter les bulletins.

Ca correspond effectivement aux deux piechart plus petits ("% de votes vérifiés" et « % de votes vérifiés valides ») :

https://forum.mavoix.info/uploads/mavoix/original/1X/0f7d1e163a1a2326abb75cd2623baa313b9367b4.PNG

On pourrait même afficher un autre piechart avec les résultats du scrutin en prenant uniquement en compte les bulletins vérifiés et valides. Mais comme je ne suis pas sûr du taux de participation au dépouillement, j’ai préféré ne pas perdre de temps à l’implémenter pour l’instant.

Maintenant que le premier tour est terminé, est-il possible de rendre publique cette blockchain ?

Ok grosse difficulté à dormir sereinement hier à cause de cette preuve de vote. Oui je sais des fois j’ai des questions existentielles comme ça qui émergent dans ma tête et qui m’empêche de dormir… (je suis fou que voulez vous…)

cas pratiques:

  • Je vends mon vote sur Leboncoin
  • Un groupe malintentionné promet de récompenser financièrement ceux qui voteront comme celui ci le propose.

Problématique:
Comment conserver la preuve de vote pour sa vertu de vérification du scrutin mais réduire la confiance de l acheteur ou du vendeur à zéro pour que ce soit inintéressant de faire le commerce des preuves de vote.

Idées en vrac:

  • Protéger une preuve de vote par mot de passe choisi par la votant.
    Ainsi si un votant propose une preuve de vote sur internet, l’acheteur doit récupérer la bonne preuve de vote mais aussi le bon mot de passe. (idée à la con finalement… qu’est ce qui l’en empêcherait…)

  • Créer de fausses preuves de votes.
    Comme un votant peut générer de fausses preuves de votes, l’acheteur n’a plus confiance. Mais ca ne suffit pas, car la transaction peut être soumise à vérification de la preuve de vote, et la plateforme cocorico ne pourra pas simuler/mentir bien longtemps sur le fait que ce soit une fausse preuve de vote, à fortiori si les votes sont enregistrés sur une blockchain publique.

  • Créer des Vraies/fausses preuves.
    Genre on donne la preuve de vote du votant, et, facultativement, 2 preuves de votes d’autres votants (mais anonymisée les preuves de vote évidemment), pour les votes d’une autre valeur.
    Exemple:
    je vote Pour, on me file la preuve de vote correspondant à MON vote Pour et je peux, si je le souhaite, accéder à 2 preuves de vote tirées au hasard dans la blockchain pour les valeur Contre et Abstention.
    Ce système crée une telle incertitude sur ce que tu peux vendre, qu’il n’y a plus d’intérêt d’acheter, et banco. Par contre, ca veut dire qu’un unique votant, peux vérifier 3 vrai votes votes quelque part… et là je suis bloqué. Peut être que mon insomnie de ce soir me donnera la solution. :expressionless:

1 « J'aime »