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.
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
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