Bitcoin pour des votes gratuits et vérifiables

Le champs d’application des transactions sécurisées est très vaste. Une transaction électronique n’est rien d’autre qu’un message numérique signé.
Dès lors, on peut envisager un vote électronique via le réseau bitcoin.

Votez pour moi

Avant l’invention de bitcoin, les solutions de votes électroniques n’étaient pas satisfaisantes car elles n’étaient pas facilement auditables et pas assez transparentes, ni pour les candidats ni pour les électeurs. De plus elles nécessitaient une mise en place parfois coûteuse.
Avec la blockchain Bitcoin, n’importe quelle communauté peut organiser gratuitement un vote électronique sécurisé.
Je pense à des associations ou des entreprises qui pourraient envisager cette technologie pour les votes aux AG.
Voici comment ça pourrait se dérouler pour une association:

1) Connaître la liste des candidats:
Chaque candidat (C) fournit une clé publique KeyC à l’électeur et publie partout une adresse associée à son nom du genre 1Dupont.. pour le candidat Dupont

2) Contrôler la liste électorale:
Chaque électeur (B) reçoit aussi de l’association (A) une clé publique KeyA qui est listée sur le site.
La liste électorale est contrôlable indépendamment par toutes les parties car chacun peut vérifier qu’il est sur liste et que le nombre de clés publiques est égal au nombre de membres dans l’association. Les clés publiques doivent être quelconques, c’est à dire ne pas se trouver sur la courbe elliptique bitcoin pour éviter que les organisateurs (l’association) puisse produire une signature valide. Cette précaution est aussi vérifiable indépendamment.

3) Préparer son bulletin de vote
Avant le jour du vote, avec ces clés publiques, l’électeur crée une adresse multi-signature 2-sur-3 et envoie vers elle une micro-transaction 0,001 BTC (environ le prix d’un timbre poste) sur cette adresse pour préparer son bulletin de vote qui s’inscrit dans la blockchain.
L’output (destination) de sa micro-transaction a cet aspect:
OP_HASH160 Hash OP_EQUAL

où Hash est l’empreinte numérique calculée par le wallet bitcoin à partir du script SerializedScript suivant:
OP_0 OP_2 KeyA KeyB KeyC OP_3 OP_CHECKMULTISIG

Cette transaction est conforme à BIP-16.
Les « Bitcoin Improvement Proposals » (BIP) sont l’équivalent des RFC pour le web: ce sont des documents techniques qui spécifient une amélioration du protocole que chacun peut implémenter.
L’électeur saisit l’adresse sur le site de l’association sans avoir à s’identifier: le site la valide en vérifiant qu’elle a reçue une transaction de 0,001 BTC.
Le montant de la micro-transaction permet de prévenir une attaque de déni de service: les bulletins de vote ont un coût négligeables pour l’électeur mais prohibitif pour le spam.
Les montants des micro-transactions peuvent d’ailleurs être renvoyés par les candidats aux électeurs nécessiteux ou être comptabilisés comme des cotisations à l’association.

4) Mettre son bulletin dans l’urne
Le jour du vote, le candidat Dupont crée une signature SignatureC qui dépense l’output de la micro-transaction multi-signature (0,001 BTC) vers une adresse V qu’il contrôle et publie SignatureC et V sur le site en regard de l’adresse multi-signature 2-sur-3 enregistrée. Comme l’adresse V est différente pour chaque adresse multi-signature, il est impossible de relier une adresse multi-signature (un électeur) à un candidat.
Avec SignatureC et V, l’électeur peut maintenant confirmer son vote (mettre le bulletin dans l’urne) en créant sa signature SignatureB de la même transaction et en publiant sur le réseau bitcoin la transaction valide combinant sa signature avec celle du candidat, sans avoir à s’identifier (bulletin secret).
La transaction à destination de l’adresse V comprend l’input suivant:
SignatureB SignatureC SerializedScript

A ce stade, seul le candidat et l’électeur savent que V appartient à Dupont de sorte que les résultats du vote ne sont pas encore connus.
En effet, les candidats ne peuvent pas savoir à qui est destinée l’adresse multi-signature préparée par l’électeur de sorte que chaque candidat doit fournir une adresse différente à chaque électeur.
Si l’adresse fournie par Dupont était la même pour tous les électeurs, les résultats du vote seraient connus avant l’étape du dépouillement avec le risque d’influencer les suffrages non encore exprimés.
Notons au passage que ce système exploite un avantage d’une signature numérique par rapport à une signature manuelle: une signature numérique ne permet d’identifier son auteur qu’avec son consentement, lorsqu’il révèle lui-même son identité.

5) Dépouillement des résultats de l’élection
Après les votes, pour le dépouillement, le candidat Dupont transfère simplement les bitcoins de l’adresse V vers l’adresse 1Dupont..
Désormais tout le monde sait que l’adresse V appartient à Dupont et peut compter les votes en faveur de chaque candidat via la blockchain:
Chaque adresse mutli-signature enregistrée (représentant un électeur) qui peut être reliée à l’adresse 1Dupont.. par une transaction est un vote en faveur de Dupont.
Les votes sont parfaitement vérifiables par les candidats et les électeurs, indépendamment de toute organisation , avec des logiciels open source et une base de données publique et sécurisée, la blockchain.

Pierre Noizat

Cette entrée a été publiée dans Bitcoin, Technologie and taguée . Placez un signet sur le permalien.
  • larose75

    Bravo pour cet article. Vous semblez bien être le précurseur du vote blockchain. Compte tenu de l’engouement récent des médias sur cette technologie, une actualisation du sujet serait peut être pertinente ? Une vulgarisation du présent article, à défaut de la mise en place de l’appli parfaite, serait pour ma part très appréciée 😉 .
    Dans tous les cas encore merci.

  • mably

    Je publie pour archive un lien vers un post intéressant sur bitcointalk concernant une solution de vote électronique basée sur bitcoin et zerocoin : https://bitcointalk.org/index.php?topic=413196.0

  • mably

    J’ai une petite interrogation concernant l’étape 4, laquelle nécessite la connaissance par le candidat du SerializedScript. Or il contient les clés suivantes KeyA, KeyB, KeyC. KeyC ne permet-elle pas de faire un lien entre le candidat et l’électeur ? Merci pour vos éclaircissements.

    • Pierre Noizat

      En effet, l’électeur peut faire le lien mais pas le candidat qui ne sait pas à qui appartient KeyB. Par contre l’organisateur peut faire le lien sauf si l’électeur génère lui-même KeyB.
      L’étape 4 ayant lieu après la fin des votes on a la même confidentialité qu’avec un système classique lors du dépouillement: l’enregistrement dans la blockchain apporte la vérifiabilité mais ne change pas la donne par rapport à un système classique en terme de confidentialité (sauf si l’électeur génère lui-même sa clé publique).

      • mably

        La connaissance de KeyC, distribuée à l’électeur par le candidat, ne permet-elle pas d’identifier le vote par le candidat ?

        • Pierre Noizat

          C’est vrai si le candidat distribuait lui-même ses clés KeyC; dans les faits c’est l’application qui les génère pour le candidat et les attribue aux votants sans communiquer au candidat la table de correspondance. Bien entendu, le candidat a accès à la liste complète de ses clés keyC. je vais préparer un nouveau post qui décrira plus précisément ce que fait l’application à ce stade. Il y’a encore une bonne marge de progrès, ce n’est qu’une version beta.

          • mably

            J’essaie de poster une réponse, sans grand succès jusqu’à présent :(

  • mably

    Existe-t-il une version anglaise de ce document?

    • Pierre Noizat

      Le white paper en anglais est en ligne sur http://www.unchain.voting
      N’hésitez pas à me faire part de vos commentaires. Il devrait être publié prochainement dans un manuel sur Bitcoin.

  • http://www.william-theaux.net/ DWT

    étant donné que je cherche une méthode performante
    pour gérer une association – ce que JS écrit à la fin  » renouvellement de son conseil d’administration et des
    membres de son bureau  » m’intéresse bcp mais je ne sais pas ni
    comment ni qui joindre (pas de contact direct sur la page) . Je me trouve ici
    sur une page de technicien, je suis un usager qui chch ce type de produit pour
    son association. Y a-t-il quelque chose de fait ? quelqu’un qui puisse réaliser
    le produit donc j’ai le projet ? merci par avance williamtheaux@gmail.com

    • Pierre Noizat

      Je travaille à une application (beta) que j’espère pouvoir mettre en ligne courant aout.

      • mably

        Avez-vous pu avancer sur le développement de l’application?

        • Pierre Noizat

          L’application est en ligne sur http://www.unchain.voting depuis quelques semaines
          Merci de me contacter si vous voulez organiser une élection (c’est une version beta).

          • DWT

            Très heureux ; je viens de m’inscrire. Cependant en charrette durant la prochaine quinzaine, je suis oqp disons 90% – ensuite j’aimerais bcp approfondir et faire connaissance en détail DWT

            • DWT

              Bonjour, Je suis toujours sans réponse à mon 3em Pierre NOIZAT
              et j’espère qu’il n’y a rien de grave.
              Souhaitons que ce soit simplement que vous ne répondez pas quand ça ne vous
              plait pas – ce qui convient aux mœurs contemporains. Je me permets simplement
              d’insister, avec l’embarras que, sans réponse ni écho, on ne sait pas ce qu’il
              faut préciser, ajouter ou corriger. Les probabilités sont celles de s’enfoncer
              de mieux en mieux. J’insiste simplement parce que votre livre est très
              intéressant. Si vous pensez que mon projet d’offrir à une association une
              petite « machine à gouverner » fait partie des ambitions qu’on ne
              prête pas aux gens pas patentés, je comprends bien. La Cybernétique et
              précisément cette Machine à Gouverner que Wierner identifia à l’extrême de
              sa science, sont attachées au tabou. M’étant averti de la docte prudence de
              ceux-qui-savent et/ou qui-tiennent-les-manettes, je me contente volontiers de la
              théorie et de l’examen-sans-y-toucher. Est-ce qu’il vous conviendrait mieux que
              nous parlions de votre livre et de la manière dont je conçois les
              rattachements d’un BlockChain à l’esprit de l’écologie, voire de la
              psychanalyse.

              • DWT

                merci, je continue par

          • DWT

            Bonjour, 2 questions en cours

            1) pour organiser une élection comment vous contacter ? (ici
            ou par ailleurs?)

            2) j’ai réalisé la maquette d’un projet (une interface
            votants///gestion) – je cherche un techr pour concevoir son moteur (est-ce que
            unchain pourrait procurer une racine dans ce but?)

            • Pierre Noizat

              J’ai développé unchain donc je peux sans doute répondre à votre demande. Merci de me contacter sur pierre.noizat@paymium.com

          • larose75

            pas possible se connecter, bug
            en cours correction ?

            Internal Server Error

  • Flavio

    Bonjour, super, mais rien compris, trop bete surement. Peut etre avec un schema?

    • Pierre Noizat

      Une app web sera le meilleur moyen d’expliquer en mode graphique. En attendant n’hésitez pas à poser des questions précises pour étoffer la FAQ.

  • MatMat Jamar

    Avez-vous pensez à réaliser une infographique pour aider la compréhension de l’article ?

    • Pierre Noizat

      Ce serait bien: je vais essayer de trouver le temps mais je serai intéressé si vous pouvez en proposer une.

  • mably

    Génial. A quand une implémentation accessible à tous?
    Est-il envisageable d’utiliser une autre blockchain que celle du Bitcoin tout en conservant un même niveau de sécurité?

    • Pierre Noizat

      Tout serait plus clair pour tout le monde avec une implémentation fonctionnelle et ergonomique. Il faudrait qu’un développeur talentueux (vous? Oleg ? Davout ?) prenne ce projet à bras le corps. Si personne ne de décide, je me lancerai peut être mais je manque de temps en ce moment ;0)
      Concernant la sécurité, la chaîne de blocs bitcoin, grâce à la puissance de calcul du réseau, me semble à l’abri d’une attaque des 51% qui invaliderait temporairement des transactions. Une autre chaîne (« altcoin ») n’offre pas cette protection car sa puissance de calcul est très inférieure à celle du réseau bitcoin. Il serait contreproductif d’ailleurs qu’une autre chaîne développe une grande puissance de calcul car il y aurait alors gaspillage d’énergie.

      • mably

        Je ne m’intéresse aux crypto-monnaies que depuis quelques mois et ne maîtrise pas encore totalement le sujet. J’ai quelques compétences en développement, Java principalement, et pourrai envisager de donner un coup de main sur le développement d’un tel outil.
        Je suis un peu gêné par le fait de conditionner le vote à la réalisation d’un paiement Bitcoin même si on peut envisager des remboursements. Quels seraient les risques exacts d’utiliser une blockchain spécifique? Des votes en doubles (détectables) entraînant l’annulation et la réorganisation du scrutin? Je pense qu’il serait possible d’identifier et supprimer les forks de la blockchain puis de réintégrer les transactions concernées dans la blockchain valide?
        Je pense au projet Peershares qui utilise les concepts POS de la monnaie Peercoin pour gérer des parts d’entreprise (ou autre organisme). Je verrai bien un projet Peervotes basée sur les mêmes concepts, il suffit que l’organisateur détienne plus de 51% des pièces pour sécuriser la blockchain. Toute fraude resterait facilement détectable et difficilement justifiable par l’organisateur, donc peu probable. Qu’en pensez-vous?

        • Pierre Noizat

          Les systèmes de Proof of Stake n’offrent pas de réelle protection contre une prise de contrôle: les explications du wiki contiennent une erreur de logique. Le wiki affirme que la prise de contrôle serait plus couteuse qu’avec un système de Proof of work. Or un système PoS peu être répliqué à l’infini ce qui fait douter que les peercoins conservent une valeur significative dans la durée. A l’inverse, la puissance de calcul du réseau bitcoin le rend très difficile à répliquer à niveau de sécurité équivalent. Le fait que les peercoins démarrent avec PoW puis basculent vers PoS ne change rien: ce qui compte, c’est le système retenu à l’équilibre (lorsque la plupart des coins sont minés). Dans le cas de peercoin, un autre réseau PoS moins centralisé peut démarrer à tout moment. Dans le cas de bitcoin, les mineurs continuent à miner avec une grande puissance de calcul parce qu’ils sont eux-mêmes détenteurs de bitcoin ou parce qu’ils sont devenus des processeurs de paiement professionnels sur le réseau bitcoin. Le réseau bitcoin reste difficile à répliquer dans la durée. La blockchain bitcoin présente donc des propriétés de sécurité uniques pour toutes les applications de transactions sécurisées (paiements, votes, etc).

          • mably

            Dans le cas d’un organisme souhaitant organiser des élections le problème ne devrait pas se poser. Il serait même possible de mettre en place un checkpointing pour sécuriser la blockchain POS.
            Ce qui m’inquiète avec le POW est la centralisation que l’on observe liée à l’industrialisation du minage. N’y a-t-il pas un risque que le minage finisse entre les mains de quelques multinationales cotées en bourse (c’est déjà le cas pour quelques unes) qui pourront décider entre elles de l’avenir du bitcoin?

            • http://www.bitcoin-info.org/ Marco

              En effet la concentration inévitable des puissances pour la validation des transactions Bitcoin est préoccupante pour moi. Un système dit « décentralisé » se retrouve de jours en jours avec des mineurs sortant face à la compétition mondiale devenue trop risquée et peu rentable pour les plus petits.

              On peut se poser des questions sur l’avenir avec quelques acteurs majeurs qui aurons certe plus d’intérêts dans le système à le faire prospérer. Mais supposément les évolutions du protocole seront plus dans l’intérêt de cet oligopole (rassemblement pour avoir 51% des parts de décision). On se retrouvera avec une minorité riche décisionnaire qui prendra les bénéfices sur les nombreux pauvres, je vous laisse faire le lien avec les banquiers…

              Certe la difficulté s’ajustera et on aura une correction de cette course à la puissance actuellement exponentielle, l’innovation elle est linéaire (ex: loi de moore pour les processeurs), Satoshi Nakamoto n’avait pas anticipé ce phénomène de concentration ou c’est inévitable? Quand il n’y aura qu’une dizaine d’acteurs on fera quoi?

              On est d’accord qu’un système PoS n’en résoud pas le problème par la multiplication à l’infini d’une même entité.

              PS: Petite Analogie avec la ruée vers l’or qui était intéressante au début pour beaucoup de migrants Californien en 1848, puis aujourd’hui uniquement industrielle à certain endroits dans le monde, on voit alors des manipulations d’états puissants (ex: la Chine) sur ces entreprises dirigées et contrôlées.

  • ihaveaquestion

    Ce que je ne comprends pas, c’est comment s’assurer que par exemple, je suis le technicien en charge d’envoyer les clés publiques, je vous envoie votre clé, mais j’ai mis une backdoor pour la connaître, je prépare mon bulletin de vote avant vous, et je vote pour vous, sans que vous ne puissiez prouver quoique ce soit.
    Bref il me semble important que l’étape 2 se fasse de façon décentralisée.

    • Pierre Noizat

      C’est pour cette excellente question que je suggère à l’étape 2 que l’association fournisse des clés publiques quelconques qui ne permettent pas fabriquer une signature Bitcoin. Même en se mettant d’accord avec un candidat, le technicien ne peut pas fabriquer une transaction qui déplace les bitcoins de l’adresse multi-signature fabriquée par l’électeur car il lui faut la clé privée de l’électeur et du candidat. Il faudrait donc qu’il change l’adresse multi-signature : l’électeur s’en apercevrait si son adresse disparaissait. Il y aurait donc une adresse enregistrée en trop.

  • Yamakaky

    Effectivement, ça a l’air simpa ! Encore une application à cet outil formidable. Faudra quand même que je relise, surtout que la présentation n’aide pas à la compréhension.

    Je vois quand même quelques défauts. Sauf erreur de ma part, il n’est pas possible de vérifier si quelqu’un a voté sans connaître son vote, donc de vérifier si le vote a été effectué par quelqu’un de l’association, sans compter le vote multiple.

    De plus, comme d’habitude, ce n’est qu’une preuve technique, il reste à concevoir une interface simple qui cache la technique derrière, sinon ce système ne se développera pas. Déjà, mettre une adresse bitcoin est trop compliqué pour la plupart des gens, sans parler de la gestion des clés. Ce système apporte une solution technique, il reste les problèmes sociaux avec pression pour tel vote, sans compter que le vote est vérifiable facilement par le méchant. Comme quoi, le papier a ses avantages ! Par contre, s’il est possible de vérifier que quelqu’un émis un vote valide sans savoir pour qui il a voté, ce serait un gros avantage face aux systèmes actuels de vote. Si possible, il faudrait que cette propriété soit aussi vérifiée dans le cas où le méchant fournit les clés, et menace le votant en cas de « mauvais » vote. Tout en sachant qu’il restera toujours les cas de pression où le méchant est physiquement avec le votant.

    (je me suis intéressé à la technologie bitcoin, alors vous pouvez y aller dans la réponse 😉

    • Pierre Noizat

      « Sauf erreur de ma part, il n’est pas possible de vérifier si quelqu’un a voté sans connaître son vote »

      Ma proposition résout le problème du vote à bulletin secret mais n’est peut être pas assez claire pour vous sur ce point.

      L’adresse multisignature ne permet d’identifier ni le votant ni le candidat car c’est une empreinte numérique d’un script contenant la clé publique générée par le votant (non publiée), la clé publique du candidat (unique pour chaque votant) et la clé publique fournie par l’association (unique pour chaque votant) qui identifie ce votant. Comme chaque votant reçoit publiquement de l’association cette clé publique différente et unique, la liste électorale peut être vérifiée.

      Par contre, je vous confirme qu’un candidat ou une organisation peut exercer des pressions (à distance) sur un électeur pour qu’il révèle sa clé publique: dans ce cas l’anonymat du vote n’est pas préservé.

      • dahugobez

        Du coup n’est-ce pas plus simple de créer autant d’adresses depuis le même wallet du candidat qu’il existe de votants ? Impossible de savoir qui vote quoi avant que le candidat fasse converger tous les votes vers une adresse publique.

        • Pierre Noizat

          Oui c’est exactement ce qui se passe à l’étape 4: chaque candidat fournit une adresse V et une signature différente pour chaque adresse multi-signature (et donc pour chaque électeur). Lors du dépouillement, le candidat Dupont fait converger les votes des adresses V vers l’adresse 1Dupont..Seul l’électeur sait que l’adresse multi-signature correspond à son vote.