READ IN English
Computer Science / Review Essay

Vol. 2, NO. 4 / December 2016

Les monnaies cryptographiques et les systèmes à blockchain

Jean-Paul Delahaye

Letters to the Editors

In response to “Les monnaies cryptographiques et les systèmes à blockchain


Un évènement important s’est produit au mois de novembre 2008 : une nouvelle façon de concevoir la monnaie a été proposée. Dans un article posté sur le réseau internet et intitulé « Bitcoin: A Peer-to-Peer Electronic Cash System », un certain Satoshi Nakamoto décrivait en termes techniques un système d’émission et de gestion d’unités monétaires, dénommées bitcoin, dont la caractéristique principale est qu’il ne nécessite aucune autorité centrale d’émission, de contrôle et de régulation1. On ne sait toujours pas aujourd’hui qui est Satoshi Nakamoto : certaines personnes assez peu crédibles, dont Craig Steven Wright, ont prétendu être ce génial inventeur ; d’autres, dont Nick Szabo, sont considérés comme de bien plus plausibles candidats, mais ont toujours nié être le personnage recherché2.

Comme pour le courrier électronique ou internet qui ne sont aux mains d’aucune autorité et conduisent donc à une meilleure appropriation de l’information par tous, et des pratiques démocratiques nouvelles de communication entre citoyens, il semble que dans le domaine de la monnaie et plus généralement de toutes les interactions exigeant de la confiance (engagements, contrats, propriétés, jeux, etc.) tout pourrait fonctionner sans autorité centrale dominante de contrôle.

L’énigmatique Satoshi Nakamoto explique dans son article de 2008 comment mettre en place, grâce à un réseau pair à pair – c’est-à-dire sans nœud central jouant un rôle de chef d’orchestre – et à la cryptographie mathématique moderne, une monnaie autonome et décentralisée, à l’opposé de toutes les monnaies existantes et de tous les systèmes de paiement, en ligne ou non. Le 3 janvier 2009, les programmes nécessaires au lancement de ce qu’on appelle maintenant une cryptomonnaie sont prêts et les premiers bitcoins sont émis. Après des débuts confidentiels où seuls quelques cryptologues avertis s’y intéressent, elle commence à prospérer et son cours, totalement dérisoire en 2009, prend alors son envol lui donnant une réalité concrète.

Début 2013, un bitcoin vaut une dizaine d’euros. L’année 2013 est celle du décollage du bitcoin qui acquiert alors une notoriété mondiale. Il voit sa valeur d’échange multipliée par 50 en un an, pour atteindre environ 600 euros pour un bitcoin, le 1er janvier 2014. Trois ans tard, le 28 décembre 2016, après une assez longue période de baisse et d’hésitation, un bitcoin vaut plus de 900 euros. La capitalisation totale des bitcoins émis atteint alors plus de 14 milliards d’euros. À partir de rien, la cryptologie mathématique et les réseaux pair à pair viennent de créer des devises numériques qui s’échangent contre de l’argent sonnant et trébuchant, permettant par exemple à un étudiant norvégien – Christoffer Koch – qui avait acquis 5 000 bitcoins pour 27 dollars en 2009, de les revendre et de s’acheter un appartement au centre d’Oslo3.

Comme toute bonne idée, celle du bitcoin a été copiée. Il existe en 2016 plus de 700 monnaies cryptographiques concurrentes du bitcoin4. Leur capitalisation cumulée n’atteint toutefois qu’environ 20 % de celle du bitcoin qui est donc, de très loin, la monnaie cryptographique dominante. C’est pourquoi nous nous attacherons ici principalement à décrire son fonctionnement sans nous attarder sur les copies du bitcoin aux succès limités. La présentation que nous allons faire du mécanisme de la blockchain du bitcoin permet de saisir l’idée de la nouvelle technologie des blockchains dont on comprend aujourd’hui qu’elle est appelée à jouer un rôle important dans de nombreux secteurs financiers, économiques ou autres, où elle permet d’éviter de s’appuyer sur un tiers de confiance qui, grâce à elle, est remplacé par un mécanisme de confiance partagée et collectivement surveillée.

Le fonctionnement du protocole bitcoin

L’idée de Nakamoto est que grâce à un subtil agencement de composants de base cryptographiques, on peut émettre une monnaie dont le contrôle s’opère collectivement sur le réseau internet, sans qu’aucune autorité centrale ne dispose du pouvoir d’agir sur elle. Le protocole de Nakamoto a été rendu possible grâce aux progrès de la cryptographie mathématique qui a créé depuis cinquante ans une multitude de composants numériques aux propriétés souvent inattendues.

Nous passons rapidement en revue ces composants dont l’usage s’est répandu partout sur les réseaux. Il y a bien sûr les composants classiques de chiffrement : transformations d’un message clair en un autre, chiffré, impossible à lire sauf si on connaît une clé particulière qui est parfois différente de la clé utilisée pour le chiffrage (chiffrement asymétrique). Il y a les composants d’authentification : des méthodes assurant qu’une personne agissant à l’autre bout du réseau est bien celle qui en a le droit, par exemple pour l’utilisation d’une carte bancaire. Il y a les composants de signatures numériques : créations de traces numériques certifiant qu’un message est bien émis par une personne donnée et interdisant que le message signé soit modifié. Le protocole bitcoin utilise un système de signature numérique fondé sur les courbes elliptiques étudiées par la géométrie algébrique. L’algorithme de signature des transactions se nomme ECDSA pour Elliptic Curve Digital Signature Algorithm ; il a été proposé en 1992 par Scott Vanstone. Il assure la création des paires de clés (clé privée/clé publique) nécessaire aux signatures des transactions. La clé privée permet de signer les transactions et la clé publique (qui est assimilable à un numéro de compte) autorise qui le souhaite à vérifier rapidement que la signature est correcte, c’est-à-dire que la transaction provient bien de celui qui possède la clé privée associée.

L’algorithme ECDSA est considéré sûr. La sécurité de ECDSA (l’impossibilité en pratique de passer de la clé publique à la clé privée) repose sur la difficulté de calculer le « logarithme discret » d’un grand nombre entier : connaissant les trois nombres entiers a, b et c, et sachant que a = bn modulo c, comment retrouver n ? Le système ECDSA utilisé avec des clés de 256 bits pour le bitcoin donne une sécurité comparable à celle du protocole RSA (plus ancien, considéré lui aussi comme sûr, mais exigeant des clés plus longues) sur 3 072 bits5.

Lorsque le détenteur d’un compte bitcoin que l’on crée anonymement et gratuitement en téléchargeant un porte-monnaie numérique – ou wallet – souhaite envoyer une somme en bitcoins à un autre compte, il émet sur le réseau pair à pair du bitcoin une transaction et la signe6. Lui seul peut le faire car lui seul dispose de la clé secrète du compte. Cependant, tout le monde voit la transaction sur le réseau et peut vérifier que c’est bien lui qui émet la transaction. Bien sûr, ces opérations sont effectuées automatiquement par les porte-monnaie numériques sans que l’utilisateur ait à les programmer lui-même.

Un autre composant cryptographique central est utilisé par le bitcoin : les fonctions de hachage (voir Annexe 2). Celle du bitcoin est le SHA-256. Il s’agit d’une fonction f qui à chaque fichier associe une suite de 256 bits (des « 0 » et des « 1 ») et qui possède les deux propriétés suivantes.

  1. Connaissant f(x) il est impossible en pratique de retrouver x, ou même seulement de retrouver un y tel que f(y) = f(x).
  2. La modification d’un seul caractère du fichier x en donne un autre, x’, tel que f(x) et f(x’) sont totalement différents, et de plus, chaque valeur de f(x) semble tirée au hasard.

La fonction de hachage SHA-256 sert en plusieurs points du protocole bitcoin. La fonction de hachage RIPEMD-160 est aussi utilisée pour la création des adresses, mais son rôle est moins important.

La fonction SHA-256 sert d’abord à lier les différentes pages du registre de toutes les transactions – ce qu’on appelle la chaîne de blocs, ou blockchain. Ces liens entre pages rendent impossibles de modifier un quelconque symbole de ce fichier de transactions sans que cela soit instantanément apparent (voir Annexe 3).

La fonction de hachage SHA-256 sert aussi dans le système d’émission de nouveaux bitcoins. Dans un premier temps, 50 bitcoins étaient créés et attribués toutes les 10 minutes environ. Puis il y en a eu 25 toutes les 10 minutes, puis, depuis le 9 juillet 2016, il y en a 12,5 toutes les 10 minutes. Tous les quatre ans environ, la somme émise par tranche de 10 minutes est divisée par deux. En 2140, les émissions de nouveaux bitcoins cesseront complètement : il y en aura alors 21 millions en tout. En décembre 2016, plus de 16 millions de bitcoins sur les 21 millions prévus ont déjà été émis.

Le SHA-256 permet de choisir parmi les nœuds du réseau qui gardent une copie de la blockchain – ils sont environ 5 000 en décembre 2016, on les nomme nœuds principaux ou full node – celui qui reçoit les nouveaux bitcoins créés. Les candidats appelés mineurs qui s’occupent de ces nœuds principaux du réseau des bitcoins sont anonymes, comme les simples détenteurs de comptes qui ne sont connus que par le numéro de leur compte. Ces candidats, les mineurs, sont en compétition pour résoudre des problèmes du type trouver un x tel que f(x) (avec = SHA-256) possède une certaine propriété, par exemple « commence par cinq fois ‘0’ ». Chaque mineur s’attaque à un problème qui lui est propre et automatiquement déterminé par protocole général, mais tous les problèmes soumis à un instant donné ont la même difficulté.

Résoudre le problème posé qui fait gagner des bitcoins est d’autant plus facile que le mineur dispose de moyens puissants lui permettant de calculer rapidement de nombreuses valeurs de f, car pour résoudre le problème posé, on ne connaît pas d’autres méthodes que calculer beaucoup de f(x). En clair : la probabilité de gagner pour un mineur est directement proportionnelle à sa puissance de calcul de la fonction SHA-256. La méthode se nomme une preuve de travail, ou proof of work (voir Annexe 3). Le candidat mineur qui résout son problème en premier emporte les bitcoins créés. C’est lui qui choisit alors les transactions qui sont en attente sur le réseau et les regroupe en une page – un bloc – qu’il ajoute à la blockchain. Celle-ci s’allonge donc d’une page toutes les dix minutes environ. Ce gagnant empoche aussi pour lui (c’est-à-dire sur son compte bitcoin) toutes les commissions facultatives qui sont associées aux transactions. Ces rémunérations complémentaires assurent que lorsqu’il n’y aura plus d’émission de nouveaux bitcoins toutes les 10 minutes, les mineurs continueront d’être rémunérés, et qu’il y aura donc toujours des volontaires pour participer à la gestion et à la surveillance de la blockchain. Ces commissions, que chaque émetteur d’une transaction associe volontairement à sa transaction signée, ne jouaient pratiquement aucun rôle jusqu’en 2016. Progressivement, elles ont acquis de l’importance, surtout depuis que la taille des pages ajoutées toutes les 10 minutes est devenue insuffisante – cette taille est de un mega-octet (un million de caractères) – pour le nombre de transactions émises par tranches de 10 minutes. Cette taille des blocs devrait être augmentée. C’est un sujet de discussions entre les nœuds principaux du réseau, les mineurs. Lorsqu’ils sont d’accord entre eux, ils disposent en effet de la possibilité de changer certains paramètres ou composants du protocole général du bitcoin par un système de vote auquel eux seuls participent.

Notons aussi que la difficulté des énigmes à résoudre (les preuves de travail) pour être le gagnant désigné toutes les 10 minutes est périodiquement et automatiquement réajustée pour que le temps effectif de résolution par le réseau reste en moyenne de dix minutes. Ce système a malheureusement engendré une course à la puissance entre les mineurs. Aujourd’hui, les mineurs utilisent des circuits spécialisés ASIC (Application-specific integrated circuit) qui sont conçus et fabriqués pour calculer rapidement SHA-256 (et ne savent rien faire d’autre !). La puissance totale du réseau des mineurs est colossale ; elle atteint, en décembre 2016, la valeur ahurissante supérieure à 1,5 × 1018 calculs de SHA-256 par seconde. Ces calculs correspondent à une dépense en électricité que certains évaluent comme allant devenir équivalente à celle du Danemark en 20207. L’analyse de la robustesse cryptographique du bitcoin et des blockchains entièrement publiques montre cependant que cette dépense en achat de matériel spécialisé et en électricité pour gagner les nouveaux bitcoins émis, est l’une des garanties de la résistance aux attaques de la blockchain (en particulier contre l’attaque dite des « 51 % » qui permet à un mineur qui détiendrait plus de 50 % de la puissance de minage de perturber gravement tout le fonctionnement du protocole). Précisons cependant – c’est essentiel pour que la technologie blockchain soit largement utilisée – que pour la mise en place de blockchains privées (ouvertes à un ensemble d’utilisateurs cherchant à établir une confiance entre eux, ensemble fixé au départ et ne cherchant pas à s’élargir) on peut éviter totalement d’avoir un système de mise en compétition des nœuds principaux conservant et gérant la blockchain, et qu’on peut donc échapper à ce qui apparait parfois comme un gâchis énorme du protocole bitcoin. Il est faux que l’utilisation de la technologie blockchain oblige à mettre en œuvre le coûteux mécanisme de preuve de travail adopté par le bitcoin : ce mécanisme ne concerne que les blockchains qu’on souhaite totalement ouvertes et publiques.

L’incitation à participer à la surveillance perdurera

On le voit, Nakamoto a imaginé un système complexe mais très subtil. Ce système assure qu’il existe et existera toujours des volontaires, les mineurs, pour s’occuper de la blockchain du bitcoin et pour se surveiller les uns les autres. Chaque mineur vérifie que l’état de la blockchain est correct à chaque ajout d’une nouvelle page, et dans le cas contraire, il ne prend pas en compte l’ajout. De plus, ce système fixe une fois pour toutes dans le protocole la quantité de nouvelles unités monétaires qui sera émise. Il n’est dans le pouvoir de personne de la modifier et elle cessera quand les 21 millions de bitcoins prévus seront en circulation. Dans le cas d’autres monnaies cryptographiques, certains de ces points varient. Souvent, la durée entre deux ajouts de pages n’est pas de dix minutes mais plus courte. Parfois, l’émission de nouvelles unités monétaires ne cesse jamais, créant au fur et à mesure du temps un nombre de plus en plus grand de ces unités. C’est le cas pour la blockchain de Ethereum, la seconde cryptomonnaie en importance dont la capitalisation évolue aujourd’hui autour du milliard d’euros.

Ce que nous venons d’expliquer montre bien que c’est l’existence de primitives cryptographiques, résultant de la maturité d’un domaine des mathématiques, et leur assemblage convenable qui sont le cœur des monnaies cryptographiques et des systèmes à blockchain. Ces assemblages autorisent la réalisation de dispositifs numériques qu’on pensait impossibles auparavant : personne n’avait imaginé avant Nakamoto qu’une monnaie non centralisée puisse être émise, circuler et résister aux inévitables tentatives de fraude et attaques qu’elle susciterait.

La mise en place du protocole bitcoin doit aussi son existence à la puissance informatique dont chacun dispose aujourd’hui et qui fait, qu’avec son ordinateur personnel, il peut participer au contrôle de la monnaie bitcoin à travers un réseau décentralisé qui n’est aux mains d’aucun acteur dominant, mais est contrôlé collectivement par les mineurs. C’était impossible il y a quinze ans et ce sont trois types de progrès techniques qui sont arrivés presque simultanément à un niveau permettant ce petit miracle.

  1. Il y a la vitesse de calcul pour valider et gérer en chaque nœud principal les transactions. Manipuler, explorer, contrôler la blockchain exige une capacité de calcul que nous fournissent les microprocesseurs d’aujourd’hui, mais qui n’était pas disponible il y a 15 ans.
  2. Il y a la capacité de stockage qui est essentielle en chaque nœud : la blockchain du bitcoin pèse aujourd’hui environ 95 giga-octets, ce qui est acceptable même pour un micro-ordinateur de cartable, mais ne l’était pas il y a quinze ans.
  3. Il y a enfin la rapidité de la circulation des informations sur les réseaux qui sont devenus de plus en plus fiables et performants et autorisent ainsi l’existence et la mise à jour quasiment instantanée d’une même blockchain partout autour du globe par l’échange d’informations sur le réseau pair à pair associée à la cryptomonnaie.

Signalons qu’en cas de rupture des communications en certains points du réseau (ces ruptures peuvent isoler des secteurs entiers du réseau) il se peut que deux blockchains différentes coexistent pendant quelques minutes créant un danger d’incohérence dans les comptes : certains comptes pouvant dépenser deux fois la même somme du fait du dédoublement de la blockchain. Une procédure de choix basée sur le contenu en calcul de chacune des blockchains – celle qui en a le plus est préférée –, permet de retrouver la cohérence du système dès que les communications sont rétablies.

Importante aussi est la conception ouverte et transparente du bitcoin et que pour d’autres types de blockchain on peut limiter ou même totalement abandonner. Tous ceux qui le souhaitent peuvent télécharger des logiciels (libres et ouverts, dont le code est accessible à tous ; on parle de logiciels open source) et participer à la surveillance de la monnaie bitcoin, c’est-à-dire vérifier que personne ne crée de bitcoins non prévus par le protocole, et que toutes les transactions se déroulent conformément aux règles fixées et, en particulier, que personne n’émet des transactions dépensant des bitcoins qu’il n’a pas sur son compte.

L’examen possible par tous des programmes qui font fonctionner le réseau pair à pair assure qu’aucune porte dérobée ou backdoor n’est cachée8. On a donc une garantie collective de correction des protocoles implémentés.

Précisons encore quelques points pratiques. Comme nous l’avons déjà dit, pour posséder des bitcoins, il faut disposer d’un compte, mais il n’est pas besoin de donner son identité pour en créer un : l’anonymat des détenteurs de bitcoins est l’une des caractéristiques de cette monnaie. Il serait toutefois naïf de le croire absolu. En effet, on peut suivre toutes les transactions entre comptes : répétons-le, toutes les transactions depuis 2009 sont sur la blockchain en clair et y restent. On peut aussi imaginer un suivi des numéros IP des machines utilisant le réseau pair à pair. Un autre facteur limite encore l’anonymat des comptes bitcoin : au moment de l’achat de bitcoins, en euros par exemple, ou de leur revente, pour obtenir des euros par exemple, on est presque toujours obligé de faire connaître son identité.

Comment obtenir des bitcoins ?

Pour être très concret, interrogeons-nous sur les moyens d’entrer en possession de bitcoins. On obtient des bitcoins, soit en en achetant contre de l’argent usuel (dollars, euros, etc.) sur les plateformes de change : elles prennent vos euros ou vos dollars et vous envoient en retour des bitcoins qui s’inscrivent sur le compte que vous gérez sur votre machine ou votre téléphone portable. Vous pouvez aussi garder vos bitcoins sur des comptes gérés et gardés par des opérateurs indépendants qui sont alors pour le bitcoin l’équivalent de banques de dépôt. Certaines machines (bitcoin ATM, Automated Teller Machine) acceptent des billets (par exemple en euros) et font en échange parvenir sur un compte, dont vous leur indiquez le numéro, la somme correspondante en bitcoins.

On peut bien sûr acquérir des bitcoins en faisant du commerce : vous vendez un livre à quelqu’un qui vous paie en versant des bitcoins sur votre compte. De nombreux commerçants et sites internet acceptent d’être payés en bitcoins, mais assez souvent pour éviter les risques liés aux variations du cours du bitcoin, ils sont équipés de systèmes qui changent automatiquement en monnaies usuelles les bitcoins qu’ils reçoivent. Aujourd’hui, l’un des problèmes du bitcoin et des monnaies cryptographiques en général, est qu’elles ne sont pas assez utilisées comme monnaie usuelle pour payer des achats divers. Les choses progressent, mais lentement.

Une troisième façon d’obtenir des bitcoins est de participer activement à la surveillance de la monnaie, être un mineur, comme nous l’avons expliqué. Aujourd’hui, un très grand nombre de mineurs – environ 5 000 – travaillent à la surveillance de la monnaie. C’est très bien, car cela rend la monnaie plus solide, mais cela rend aussi très faible la probabilité que votre machine soit choisie pour recevoir les bitcoins distribués toutes les dix minutes, d’autant plus que cette probabilité de gagner est proportionnelle à la puissance de votre machine et que des concurrents très puissants, utilisant des puces spécialisées ASIC, sont apparus, diminuant encore plus vos chances de gagner avec votre petit ordinateur isolé. C’est ce qui explique l’apparition de guildes de minage ou pool de minage. Plusieurs utilisateurs intéressés par le minage se regroupent et travaillent comme s’ils n’étaient qu’un seul mineur (ils cherchent donc collectivement à résoudre la même énigme toutes les dix minutes). Lorsqu’ils gagnent, ils se partagent la somme obtenue au prorata de la puissance de calcul (de SHA-256) engagé par chacun. Chaque membre d’un pool gagne des sommes plus faibles, mais plus régulièrement.

Craintes par incompréhension et enthousiasmes excessifs

Le bitcoin est une sorte d’argent liquide numérique, et c’est pourquoi il a servi à blanchir de l’argent et à mener toutes sortes de transactions frauduleuses ou illégales. On a souvent confondu cette utilisation condamnable avec une faiblesse du bitcoin. C’est absurde, l’argent liquide en euros ou en dollars permet, lui aussi, toutes sortes de trafics, et pourtant cela ne remet pas en cause l’utilité de ces devises ni n’entache leur réputation. Insistons sur l’idée que le protocole général de fonctionnement du bitcoin n’est en rien concerné par ces problèmes qui portent sur l’utilisation de cette monnaie liquide numérique, et qui existent exactement de la même façon pour toutes les monnaies liquides. La solidité du protocole s’appuie sur sa conception et sur la cryptographie mathématique dont aucun des éléments depuis plus de sept ans ne s’est révélé défaillant.

Certains ont présenté le bitcoin et toutes les cryptomonnaies comme des pyramides de Ponzi, c’est-à-dire des escroqueries qui, profitant à certains les ayant mises en place, s’enrichissent aux dépens d’autres qui se retrouvent ruinés lorsque la pyramide s’effondre, comme cela s’est produit en 2008 avec la fameuse affaire Bernard Madoff9. Il est vrai que les premiers mineurs – dont sans doute Nakamoto dont on a évalué qu’il possédait au moins 5 % de tous les bitcoins en circulation – ont acquis pour presque rien des quantités de bitcoins qui, aujourd’hui, valent l’équivalent de centaines de millions d’euros. Cependant, ils ne l’ont pas fait aux dépens des mineurs ou acheteurs de bitcoins d’aujourd’hui qui, en pleine connaissance des risques et des coûts de minages, choisissent d’acquérir des bitcoins directement en échange d’argent usuel ou par le biais d’investissements en puces ASIC et en électricité. Rien non plus dans le protocole du bitcoin ne semble conduire, comme c’est le cas pour une pyramide de Ponzi, à un écroulement inéluctable du système où, insistons encore, tout est public : la quantité de bitcoins émise, les programmes les gérant qui sont vérifiables par tous, le contenu des comptes présents sur la blockchain qui est le registre public de toutes les transactions passées, indestructible et infalsifiable.

Dureté et persistance des bitcoins

Les bitcoins n’existent pas matériellement, ils n’existent que sur le réseau, et sont le résultat d’un consensus entre utilisateurs qui, grâce aux informations présentes sur le réseau et que chacun peut consulter et contrôler, indiquent quelles sommes d’argent se trouvent sur les comptes. Le protocole cryptographique général de la monnaie assure que personne ne peut manipuler les comptes, fausser les transactions, ou émettre d’autres bitcoins que ceux qui sont prévus. Il y en a environ 16 millions aujourd’hui et leur nombre ne dépassera jamais 21 millions (ce maximum est inscrit dans le protocole).

La robustesse du protocole – confirmée par plus de 7 ans de fonctionnement – rend l’existence virtuelle et purement numérique des bitcoins aussi réelle et solide que celle des lingots d’or ou des billets de banque que vous avez en poche. La cryptographie a réussi à créer des objets virtuels infalsifiables, aussi résistants et persistants que s’ils étaient faits de métal. On peut les faire circuler à la vitesse de la lumière (c’est un des avantages des bitcoins sur toutes les autres monnaies) presque sans coût, d’un endroit à l’autre du monde.

Comme toute monnaie depuis l’abandon général de la convertibilité des monnaies en or, le bitcoin ne tient que par la confiance de ses utilisateurs, mais ici, celle-ci s’établit non pas parce qu’une banque centrale émettrice prétend se porter garant des devises qui circulent – on sait ce qu’il en est en cas de crise ! – mais parce que le protocole cryptographique empêche quiconque de truquer les comptes et en particulier d’émettre sans retenue des masses de devises qui feraient s’effondrer sa valeur. La nouveauté principale des cryptomonnaies est que cet argent numérique n’est contrôlé par aucune banque centrale et qu’elle est gérée collectivement – démocratiquement disent certains – par tous ceux qui le souhaitent et qui se surveillent mutuellement.

Les caractéristiques des bitcoins ont des conséquences positives dont une protection des détenteurs de bitcoins contre l’inflation. Celle-ci provient habituellement de l’émission massive par les banques centrales de devises créées à partir de rien : la fameuse planche à billets. Pour le bitcoin, aucune émission en dehors de celle inscrite dans le protocole (et qui est de plus en plus faible, au cours du temps) n’est possible, et donc, a priori, il ne peut y avoir de dévaluation de la monnaie. Certains prétendent que, par nature, le bitcoin est déflationniste : il ne pourrait que prendre de la valeur.

Aujourd’hui, la capitalisation totale des bitcoins, environ 14 milliards d’euros, n’en fait pas un concurrent de l’euro ou du dollar qui, en ne comptant que les billets, font circuler environ cent fois plus de valeur chacun. Si le bitcoin devait devenir un concurrent de ces monnaies cela ne pourrait se faire que par une augmentation de sa valeur : est-il envisageable que le cours du bitcoin soit encore multiplié par cent ? Nul ne saurait le dire, mais une chose est certaine, cela ne pourra pas être rapide.

Incertitudes, fragilités et risques

Malheureusement les propriétés de la monnaie bitcoin ont aussi des conséquences négatives. Citons-en quelques-unes.

  • Il faut être très attentif lors de la manipulation informatique de son compte, car si un pirate réussit à trouver votre clé secrète en s’introduisant sur votre ordinateur, il pourra en dépenser entièrement le contenu. C’est déjà arrivé ! N’effacez pas non plus votre porte-monnaie numérique par erreur, l’argent contenu serait définitivement perdu. C’est déjà arrivé !
  • L’anonymat partiel des comptes intéresse toutes sortes de gens peu recommandables qui utilisent le bitcoin pour échapper au fisc ou mener des trafics en tout genre. Le bitcoin en a tiré une détestable réputation, dont nous avons expliqué qu’elle est très injuste.
  • Le fait qu’aucun contrôle centralisé ne soit opéré par une autorité centrale a pour conséquence que le cours des bitcoins est soumis à certaines variations spéculatives. Certains affirment même que le cours du bitcoin est manipulé par ceux qui en détiennent beaucoup. La valeur du bitcoin varie parfois de plusieurs pourcents par jour, et il est arrivé autrefois qu’elle varie de plus de 30 % dans une même journée. Cela rend difficile son usage pour le commerce ! Cependant, ces variations ont largement diminué depuis deux ans. Il n’est pas absurde de penser que, bien que non régulée par une autorité centrale, la forte valeur de la capitalisation totale des bitcoins agisse et produise un effet de régulation automatique général.
  • Le fait que le bitcoin soit concurrent des monnaies des banques centrales a pour conséquence que les États lui sont souvent hostiles, et que des réglementations existent limitant son usage, ou même l’interdisant (par exemple en Russie). L’évolution de ces réglementations sera essentielle pour l’avenir du bitcoin et plus généralement de toutes les monnaies cryptographiques. Il faut cependant être optimiste : même si le courrier électronique facilite toutes sortes de fraudes et de trafics, son intérêt général est tel que, sauf en de rares exceptions, il a pu se développer et prospérer au bénéfice de tous. Pourquoi en serait-il différemment des monnaies cryptographiques et de la technologie blockchain ?
  • Le fait que tous les programmes contribuant au fonctionnement de la monnaie bitcoin soient libres et publics amène une facilité de conception et de fonctionnement d’autres monnaies du même type. C’est d’ailleurs ce qui se produit : comme nous l’avons dit, il existe aujourd’hui plus de 700 monnaies cryptographiques basées sur des principes analogues à ceux du bitcoin. Légèrement différentes du bitcoin, elles peuvent posséder des propriétés intéressantes pour certains usages (par exemple celle d’assurer un anonymat total que n’assure pas le bitcoin) qui feront se détourner du bitcoin.
  • Le protocole Ethereum émet une monnaie appelée éther. Il possède une caractéristique assez originale qui en fait sa force et la faiblesse. On peut non seulement créer des transactions et les envoyer sur le réseau qui les inscrit sur la blockchain d’Ethereum, mais on peut en créer en utilisant un langage de programmation qui permet de déposer sur la blockchain de véritables applications. On peut, par exemple, créer un programme qui détiendra des éthers et qui, lorsque vous l’utiliserez, opérera un tirage au sort et selon le résultat s’emparera des éthers engagés si vous avez perdu, ou vous en donnera si vous avez gagné. Non seulement une telle loterie automatique et indépendante est rendue possible par Ethereum, mais une multitude de smart-contract (selon la terminologie proposée) peuvent être envisagés et mis en place. On peut les voir comme des Organisations autonomes décentralisées, ou DAO, fonctionnant grâce à cette blockchain. L’idée de ce type d’applications fonctionnant sans autre contrôle que celui automatique de la blockchain est très certainement appelée à prendre de l’importance. Cependant, un enthousiasme excessif a été à l’origine d’une mini-catastrophe en juin 2016 : une DAO (appelée « The DAO ») qui détenait l’équivalent de 150 millions d’euros (c’était imprudent de l’avoir ainsi enrichie) s’est vue vidée d’un tiers de son contenu par un hacker qui avait repéré une erreur dans le programme et a su l’exploiter. L’écriture de smart-contract – c’est la leçon de cette histoire – doit être menée avec un soin extrême, car une fois déposé sur la blockchain un smart-contract n’est plus modifiable dans l’immédiat et donc ne peut être corrigé en cas de bug. Des techniques de vérification et de preuve de bon fonctionnement de programmes, comme on en utilise dans l’aéronautique et plus généralement dans l’informatique embarquée, devront être développées et systématiquement mises en œuvre pour l’écriture des smart-contracts.

Quel avenir ?

Les cryptomonnaies ont chacune une ambition globale et sont conçues aujourd’hui dans la majorité des cas pour faire circuler le plus facilement possible de la valeur d’un endroit sur terre à un autre. Elles viennent s’ajouter aux monnaies locales complémentaires (MLC : le sol alpin à Grenoble, la graine à Montpellier, le miel dans le Libournais, etc.) qui fonctionnent dans le but de favoriser les échanges locaux et le troc mais qui s’appuient toujours sur un contrôle centralisé. Il est remarquable et sans doute significatif de voir qu’aujourd’hui, le fonctionnement monétaire imposé par les États, et qui semblait immuable, est contesté à la fois localement et globalement.

On s’interroge sur ce que va devenir le bitcoin né des mathématiques et de la loi de Moore (c’est-à-dire des progrès rapides en efficacité de tous les dispositifs informatiques). Comme aucune monnaie de ce type n’a jamais existé auparavant, il est vraiment difficile de faire un pronostic et les avis sont partagés. Certains pensent que son cours d’aujourd’hui est une bulle qui éclatera et fera perdre toute valeur aux bitcoins : ceux qui en achètent finiront par perdre tout ce qu’ils investissent10. Cependant année après année ces détracteurs deviennent moins nombreux. Que le protocole tienne le coup aussi bien a fait diminuer les craintes d’un effondrement brutal. Du côté des optimistes et des défenseurs des cryptomonnaies, on insiste sur l’idée que le bitcoin possède des propriétés telles qu’il gardera toujours un certain intérêt pour mener des transactions rapides, sans presque aucun coût et relativement anonymes, ou pour conserver de l’argent à l’abri de l’inflation. C’est en effet possible sous une forme discrète – vous mémorisez votre numéro de compte secret et vous l’effacez de votre ordinateur, il vous permet partout dans le monde de retrouver vos bitcoins. C’est certainement ce type de propriétés qui explique qu’on s’y intéresse tant en Chine. Pour ses défenseurs, le bitcoin persistera et son cours ira en s’accroissant au fur et à mesure que les utilisateurs seront plus nombreux.

Plus important encore, il est possible d’envisager des variantes du protocole de Nakamoto qui corrigent certains défauts ou qui ouvrent de nouvelles possibilités. Le principe de la blockchain peut en effet être décliné d’une multitude de façons en particulier sous des formes qui conduiraient à éviter les graves problèmes posés par le minage très couteux en énergie. En effet, à la condition de fixer un nombre limité de mineurs au départ – pouvant évoluer par consensus – qui ont un intérêt propre au maintien et à la surveillance de la blockchain, le mécanisme de preuve de travail à base de SHA-256 utilisé pour choisir un gagnant toutes les 10 minutes pour la blockchain du bitcoin devient facultatif. Ces modèles de blockchain privées ou semi-privées (tout le monde peut lire les informations sur la blockchain, mais seuls certains peuvent y écrire) intéressent le monde de la finance et des banques. Partout dans le monde, elles sont aujourd’hui en train de développer et de tester cette technologie nouvelle issue de l’invention géniale du mystérieux Nakamoto.

Annexe 1 : Quelques questions pour aller plus loin

En quoi et pourquoi les systèmes à blockchain sont supérieurs aux modèles conventionnels et internationaux de transfert d’argent. Les systèmes pair à pair sont-ils réellement meilleurs que les systèmes incluant un intermédiaire qui ont, bien souvent, été raffinés durant des siècles ?

Les systèmes à blockchain du type bitcoin ont pour principale qualité d’assurer que ce qui est convenu entre les utilisateurs est effectué (par exemple une transaction, un transfert d’argent, le paiement d’un pari, etc.), et cela car tout est public et contrôlé par tous les nœuds principaux (les « mineurs ») du réseau et que personne ne peut interrompre les transactions ou procédures engagées sur une blockchain. Tout est aussi plus sûr car tout est calculé par chaque nœud principal, donc un grand nombre de fois. Dans un système avec un nœud central ou une série de nœuds intermédiaires, il faut faire confiance à chaque intervenant séparément ou le contrôler par une procédure spécifique. Il faut aussi faire confiance à ce qui est calculé par chaque sous-système et qui pourrait être erroné ou sujet à un bug. Dans les systèmes classiques, des contrôles et des re-calculs sont possibles et nécessaires, mais cela oblige à des constructions compliquées et lourdes dont finalement le modèle général de sécurité est confus et mal prouvé. Il faut aussi comprendre que les systèmes anciens étaient basés sur des méthodes où on ne pouvait envisager que relativement peu de calculs, peu de mémorisation, et une faible vitesse de circulation de l’information. Les solutions adoptées étaient donc lourdes, lentes et couteuses, même si heureusement elles fonctionnaient assez bien après mise au point. Leur conception est un empilement de composants difficiles à maîtriser et dont la sécurité générale est en définitive incertaine. La technologie ne permettait pas auparavant que tout soit mémorisé plusieurs fois, que tout soit calculé plusieurs fois. Les progrès des réseaux où l’information circule vite et massivement permettent cette mise en accord de tous les acteurs qui se contrôlent les uns les autres en refaisant les mêmes calculs et mémorisent les mêmes informations : une nouvelle forme de consensus a été rendu possible. Les nouveaux systèmes sont plus simples et la confiance est fondée sur une logique lisible et claire impossible auparavant. Ce qui était inenvisageable est devenu facile ; il serait absurde d’y renoncer. Le passage à des méthodes sans nœud dominant, sans tiers de confiance, sans intermédiaires qu’il faut contrôler spécifiquement, et auquel on doit se fier, est maintenant possible. Puisque c’est mieux pour la sureté globale de l’ensemble des systèmes, il est rationnel de changer la façon de penser et d'aller vers ces nouvelles méthodes.

Les blockchains publiques de type bitcoin ont quelques inconvénients : elles ne semblent concevables qu’avec un système de minages à base de preuves de travail. C’est un point discuté, mais les autres idées proposées – « proof of stake » par exemple – ne sont pas passées par une mise à l’épreuve équivalente à celle du bitcoin. Les preuves de travail entraînent une course à la puissance et en conséquence un gâchis considérable d’énergie et de dispositifs de calcul spécialisés (puces ASIC). De plus, ces blockchains entièrement publiques sont limitées en puissance et ne peuvent exécuter que quelques dizaines de transactions par seconde au plus (pour le bitcoin on considère que 7 transactions par seconde est une limite). Les blockchains privées ou semi-privées (tout le monde peut lire, mais pas écrire) n’ont pas ces deux inconvénients. (a) Pas besoin de minage pour désigner qui ajoute une nouvelle page si les nœuds principaux sont fixés et connus de tous et fonctionnent à tour de rôle. (b) Ce qui entraîne aussi qu’il n’y a quasiment plus de limitation du nombre d’opérations faisables par seconde. Ces systèmes privés assurent aussi la confiance entre les utilisateurs, mais cette fois ils sont en nombre limité, ils sont fixés à l’avance et peuvent évoluer difficilement (par exemple par consensus) ce qui n’est pas nécessairement très ennuyeux. Les systèmes à blockchain privées ou semi-privées sont certainement une solution bien meilleure à de nombreux problèmes qu’il est devenu possible de traiter plus simplement qu’on ne le faisait quand on ne disposait pas de la puissance de traitement de l’information actuelle rendue disponible par 40 ans de loi de Moore.

Quel est le problème des doubles dépenses (dépenser deux fois la même somme présente sur un compte) ? Pourquoi n’est-il pas simple ?

Bien sûr lorsqu’une seule blockchain est présente sur le réseau pair à pair et que tous les nœuds sont en phase, le problème des doubles dépenses est simple : il suffit de contrôler qu’un compte ne dépense pas plus qu’il ne contient ; information présente sur la blochchain. C’est évidemment un contrôle prévu par le réseau bitcoin et les réseaux analogues. La difficulté survient du fait que les communications entre nœuds du réseau pair à pair ne sont pas instantanées et que des parties du réseau peuvent être temporairement isolées. Cela peut conduire à l’ajout de deux pages différentes par deux mineurs différents qui ne sont pas informés l’un de l’autre, ce qui entraîne alors la présence sur le réseau de deux blockchains concurrentes. Ces duplications de la blockchain sont rares, mais se produisent parfois. Lorsque les communications sont rétablies ou simplement lorsque l’information circule entre les parties éloignées, le réseau, les mineurs se trouvent en présence de deux blockchains différentes. Chacune a pu de son côté valider une dépense du compte X avec des destinataires différents : c’est une double dépense. Le système prévu par Nakamoto pour traiter ces situations et rétablir un consensus du réseau est qu’en cas de présence de plusieurs blockchains différentes sur le réseau, celle ayant un contenu en calcul le plus grand est la seule valide et à prendre en considération. Le contenu en calcul est déterminé par les difficultés cumulées de toutes les preuves de travail de la blockchain, et c’est pourquoi on soupçonne qu’éviter le recours aux couteuses preuves de travail et à la compétition qui naît entre mineurs est impossible. Dans un tel cas (sélection d’une blockchain parmi plusieurs), certaines dépenses peuvent être annulées pour rétablir la propriété qu’un compte ne dépense qu’une fois ce qu’il contient. C’est à cause de cette difficulté et des potentielles annulations qu’elle entraîne qu’on dit qu’une transaction bitcoin ne doit être considérée comme définitivement validée qu’à la suite de l’ajout de plusieurs pages (donc qu’à l’issue de plusieurs périodes de 10 minutes). On le voit, éviter les doubles dépenses a été délicat !

Pourquoi un contrat intelligent est nécessairement respecté ? Est-ce que le problème des prêts et des risques de non remboursement est changé par l’utilisation de blockchains ?

Un programme sur une blockchain (comme celle d’Ethereum) – qu’on appelle parfois contrat intelligent ou smart-contract – est nécessairement respecté, car c’est un programme dont personne ne peut empêcher le fonctionnement. Ce que le programme prévoit s’exécute toujours. Si par exemple il s’agit d’un programme de jeu de type pile ou face, les joueurs auront engagé leurs mises sur la blockchain, ils ne pourront pas les retirer (comme quand elles sont gérées par un croupier) et ne pourront que se soumettre au résultat du tirage au sort et donc perdre la somme engagée quand le tirage est défavorable. Le problème général des prêts n’est pas résolu par une blockchain : si un utilisateur prête de l’argent à un autre qui ne le rembourse pas, le prêteur ne pourra pas forcer le débiteur du seul fait de l’utilisation d’une blockchain. Cependant, la publication automatique de l’information (validée par la blockchain et donc incontestable) que le prêt n’est pas remboursé entraînera une perte de réputation grave pour l’emprunteur qu’aucune menace ne pourra annulée puisque ce sera présent définitivement sur la blockchain. On peut aussi imaginer dans le cas d’un prêt pour acquérir un bien que le certificat de propriété du bien soit lié sur la blockchain à la bonne exécution des remboursements et automatiquement annulé en cas de défaut. Enfin, si les blockchains acquièrent un statut légal, ce qu’on peut espérer, on pourra engager une action en justice en cas de défaut : le prêt n’aura pas nécessité de tiers de confiance tant que son exécution aura été conforme à l’accord déposé sur la blockchain, mais le prêteur fera appel à une autorité en lui fournissant des informations indiscutables pour demander à l’autorité de forcer l’exécution des remboursements ou poursuivre le débiteur défaillant.

Le protocole du bitcoin est-il parfait ? Sinon quels points pourraient être améliorés ou corrigés ?

Le protocole du bitcoin n’est pas parfait. Cela est apparu à l’usage. Il semble certain par exemple que Nakamoto n’a pas envisagé la création de pool de minage qui ont pour effet de centraliser le minage et finalement de limiter le nombre de nœuds principaux gérant vraiment la blockchain et la surveillant (dans un pool de minage, un seul des acteurs détient vraiment une copie de la blockchain), ce qui est une porte ouverte à certaines attaques. Le protocole d’Ethereum utilise un autre algorithme de preuve de travail qui exige une quantité importante de mémoire pour fonctionner et ne peut pas être accéléré par la mise au point de puces spécialisées couteuses inaccessibles aux acteurs peu puissants du réseau. Il en résulte dans le cas d’Ethereum qu’il reste intéressant pour tous les acteurs, même peu puissants, de miner des éthers, et on espère que la situation ne changera pas.

Autre défaut du bitcoin : la division par deux de la rétribution des mineurs tous les quatre ans (on est passé de 50 à 25 bitcoins par dix minutes en 2012, et à 12,5 en 2016). Cette division entraîne une discontinuité dans le fonctionnement du minage ou du moins de sa rétribution. De plus, cette division entraîne aussi qu’il n’y aura jamais plus de 21 millions de bitcoins en circulation et que la rémunération des mineurs à partir d’un certain moment ne pourra se faire que par le versement de commissions. Le protocole Ethereum a corrigé cela : l’émission est constante.

Quelles pourraient être les utilisations des chaînes de blocs dans le futur, autres que les transactions financières ? Les évangélistes et les médias ont suggéré, par exemple, que la technologie des chaînes de blocs pourrait être utilisée pour voter de façon numérique. Est-ce réaliste ?

Oui. Des protocoles de vote sûrs et non centralisés peuvent bénéficier de la technologie blockchain (voir Annexe 5). En Ukraine, certains envisagent son utilisation pour organiser et garantir des élections11. Les limites de la technologie sont difficiles à préciser mais en la déclinant sous des formes variées, il semble qu’elle pourrait concerner beaucoup plus de domaines qu’aujourd’hui, quels qu’en soient les tailles. Vitalic Buterin par exemple affirme que

L'objectif à long terme pour Ethereum 2.0 et 3.0 est que le protocole puisse garantir une blockchain capable de traiter les niveaux de transaction à l'échelle de Visa, voire supérieurs, en s’appuyant sur un réseau constitué d'un nombre suffisant d'utilisateurs exécutant des nœuds sur les ordinateurs portables grand public.12

L’anonymat est-il essentiel au bon fonctionnement d’une blockchain ?

L’anonymat partiel des utilisateurs du bitcoin n’est pas une propriété essentielle au bon fonctionnement d’un système à blockchain. On peut facilement imaginer un bitcoin où l’ouverture d’un compte oblige à décliner son identité. Le plus simple serait de gérer cela par une sorte de nœud central qui aurait le pouvoir de valider une identité et donc l’inscription des utilisateurs. D’autres idées non centralisées sont sans doute envisageables pour limiter l’anonymat ou l’interdire qui ne viendraient pas en contradiction avec l’absence de nœud privilégié du réseau. On peut imaginer aussi des blockchains privées où seuls des utilisateurs fixés une fois pour toutes détiennent le pouvoir d’écrire et de lire la blockchain. Une grande variété de systèmes à blockchain est envisageable et s’il se révèle que l’anonymat est plus ennuyeux qu’utile ce seront des systèmes sans anonymat qui seront développés.

Est-ce une idéologie libertarienne, anti-autoritaire ou autre qui est à l’origine de la création des systèmes à blockchain ?

Ce n’est pas très clair dans la mesure où on continue d’ignorer qui est Satoshi Nakamoto. Même s’il est vrai que certains défenseurs des monnaies cryptographiques le font pour des raisons de nature idéologique ou politique, il semble qu’aujourd’hui cela ne soit plus majoritairement le cas. Les potentiels de la technologie blockchain sont reconnus par un nombre d’acteurs de plus en plus grand qui ne jugent pas qu’elle doit servir des projets anti-autoritaires. On considère que, comme le web, c’est une technologie dont tout le monde peut profiter aussi bien les individus que les institutions (bancaires, financières, administratives, ou autres). Cette technologie a été rendue possible par les progrès fantastiques des dispositifs informatiques, qui ont permis un saut qualitatif dans le traitement des problèmes de confiance. Les transactions pair à pair, que ce soit dans les domaines des contrats, des jeux, des hypothèques ou des monnaies sont la rencontre entre une nouvelle idée qui s’appuie sur une augmentation fulgurante du pouvoir de traitement de l’information (calcul, mémoire, circulation) et un désir généralisé de système faisant reposer la confiance, non plus sur une autorité centrale et le secret, mais sur des partages d’information et une répartition équitable des pouvoirs d’agir.

Ces technologies engendrent sans aucun doute de nouveaux dangers et de nouvelles opportunités pour les mafias, les groupes politiques dissidents ou révolutionnaires, mais ce fut le cas de toutes les technologies nouvelles qui, en même temps qu’elles servent l’intérêt commun, sont aussi des outils aux mains de ceux qui s’y opposent ou qui veulent instaurer des ordres nouveaux13.

Annexe 2 : Le hachage, une technique aux multiples usages

Une fonction de hachage est une fonction qui à un x donné (une suite de caractères ou un nombre) de longueur quelconque associe une valeur f(x) de taille fixe appelée « empreinte de x » ou « condensé de x » ou hash. Le passage de x à f(x) se fait par une série d’opérations qui commencent en général en découpant x en petits morceaux – d’où le nom de hachage. Les morceaux sont ensuite rassemblés et emmêlés de façon à obtenir un mélange aussi parfait que possible. Pour la fonction classique de hachage SHA-256, la longueur de f(x) est de 256 bits. Il y a donc 2256 ≈ 1077 valeurs possibles, ce qui est considérable.

Les fonctions de hachages à usage cryptographique possèdent les propriétés suivantes.

  1. Elles sont « à sens unique » : le passage de x à f(x) se calcule facilement et rapidement, mais pour un y donné, trouver un x tel que f(x) = y est impossible en pratique.
  2. Il est impossible en pratique de trouver deux valeurs x et x′ différentes telles que f(x) = f(x′).
  3. Elles produisent des valeurs assimilables à des valeurs aléatoires uniformes (prises dans l’ensemble des valeurs possibles) et en particulier, même si x et x’ sont deux suites de caractères n’ayant qu’un seul caractère différent, les valeurs f(x) et f(x′) sont sans aucun lien apparent.

Exemple simple. La donnée x est transformée en une suite de « 0 » et de « 1 » qui est découpée en morceaux de longueur 8. Les morceaux sont ensuite additionnés comme des nombres en base 2. On ne garde du résultat que les 4 chiffres en position 3, 4, 5, 6 à partir de la droite :

x = 010100101001010100100101010 →
01010010 + 10010101 + 00100101 + 010 = 100001110 →
f(x) = 0011

Cet exemple est bien sûr trop simple pour avoir les propriétés (a), (b) et (c). La fonction de hachage SHA-256 mélange soigneusement les bits de la donnée x selon un algorithme public14.

Les fonctions de hachage cryptographiques ont de multiples usages dont voici deux exemples.

  • Elles permettent d’assurer l’intégrité d’un fichier x. Si on dépose un gros fichier sur un serveur, on lui associera son empreinte f(x) beaucoup plus courte. Celui qui téléchargera x s’assurera que x lui parvient sans erreur et en totalité en calculant l’empreinte du fichier qu’il aura reçu qui doit être la même que celle publiée sur le site. Si x a mal été copié, il le saura car la probabilité que la modification n’ait pas changé l’empreinte est infinitésimale.
  • Pour produire une suite de nombres aléatoires dépendant d’un fichier x, on calculera f(x.1) f(x.2) f(x.3) … où x.i désigne le fichier x suivi de l’écriture du nombre i (par exemple en binaire). De telles suites aléatoires sont utiles pour simuler des jeux de hasard, mais aussi pour chiffrer un message ou engendrer des clés.

L’importance des fonctions de hachage est telle en cryptographie qu’un grand soin est mis à les élaborer et à les soumettre à toutes sortes de tests et d’attaques. Le NIST (National Institute of Standards and Technology) aux États-Unis propose des fonctions bien contrôlées. La fonction SHA-256 utilisée par bitcoin en est une. Il publie aussi des recommandations concernant le choix et l’usage des fonctions de hachage. Le NIST a récemment organisé une compétition pour concevoir une nouvelle génération de fonctions de hachage qui a abouti à la norme SHA-3 en 201215.

Annexe 3 : Preuves de travail

Ajuster l’énigme d’une preuve de travail

Soit f une fonction de hachage transformant une suite x de « 0 » et de « 1 » de longueur quelconque en une autre y de longueur 256 (comme le SHA-256). Puisqu’en pratique, il est impossible de trouver, pour un y donné, un x tel que f(x) = y (inversion complète de f), on crée une énigme plus facile et exigeant un travail faisable en temps raisonnable, en demandant une inversion partielle de f : trouver un x tel que f(x) soit une suite de caractères commençant par k fois « 0 » (donc de la forme 0 0 0 … 0 a1 a2 a3an).

Plus l’entier k est grand, plus il sera difficile de trouver un x satisfaisant. On peut même être plus précis : pour trouver un tel x, il faut en moyenne essayer environ 2k valeurs de x. L’énigme « trouver un x tel que f(x) commence par 10 fois ‘0’ », demande donc environ 210 = 1 024 calculs de f(x). Pour 20 fois « 0 », il en faudrait un million environ. En choisissant k, on ajuste donc la difficulté de l’énigme qu’on formule. On a là une méthode rapide pour formuler des énigmes de preuve de travail dont la difficulté est facile à évaluer et à ajuster.

Méthode plus fine

Pour un ajustement encore plus fin, on considère que la valeur f(x) représente un nombre réel écrit en base 2. La suite 11010001…01 représente donc le nombre 0,11010001...01 = 1/2 + 1/4 + 1/16 + 1/256 + … et on demande de trouver un nombre x tel que f(x) < yy est un seuil positif fixé entre 0 et 1. Le temps moyen de résolution est alors déterminé avec une très grande précision en choisissant y.

C’est cette méthode avec la fonction SHA-256 qui est utilisée dans la preuve de travail du protocole de la cryptomonnaie bitcoin.

Introduction d’un paramètre

Dans les preuves de travail (pour se protéger du spam ou interdire les attaques par déni de service), il faut éviter que les mêmes énigmes soient soumises plusieurs fois. Si c’était le cas, des bibliothèques de solutions seraient calculées par avance et utilisées par les attaquants qui, au lieu de faire les calculs attendus, se contenteraient d’aller y lire les solutions des problèmes qu’on leur soumet.

Pour éviter cela, c’est assez simple : on fait dépendre l’énigme posée d’un paramètre p. On demandera par exemple de trouver un x commençant par la suite de caractères p = 0100011010100 et tel que f(x) < y. Le nombre de paramètres possibles p étant illimité, l’idée de constituer des bibliothèques de solutions calculées par avance n’est plus applicable.

Les énigmes possibles posées par la méthode de l’inversion partielle des fonctions de hachage sont donc à la fois parfaitement ajustables, et si nombreuses que celui à qui on les propose n’a pas d’autre choix que de faire le travail de les résoudre en essayant de très nombreux x, ce qui, en moyenne, lui prendra le temps qu’on aura choisi. Quand il aura trouvé la solution, il aura vraiment prouvé qu’il a travaillé !

Plusieurs petits problèmes

Notons encore que si on est gêné par le fait que le temps de travail varie trop selon que celui qui tente de résoudre le problème posé a de la chance ou pas (variance importante), on peut remplacer la demande de résoudre un problème par la demande de résoudre plusieurs petits problèmes, ce qui a pour effet de diminuer la variance du temps nécessaire pour aboutir.

Annexe 4 : L’impossibilité pratique de créer une fausse blockchain

Voici une méthode pour rendre robuste et impossible à simuler une blockchain. Les procédés utilisés pour les blockchains réelles fonctionnent sur les mêmes principes.

On utilisera une fonction de hachage h. C’est une fonction rapide à calculer qui à tout fichier F associe un code h(F) (une courte suite de caractères dénommée empreinte) de telle façon que quand un seul caractère de F est changé, h(F) est totalement changé et cela d’une manière imprévisible. On utilisera aussi une preuve de travail p. C’est une fonction qui à toute valeur V donnée (en général V est une suite de caractères qui détermine un problème) associe une solution p(V) qui ne s’obtient qu’en menant un long calcul – par exemple d’une durée moyenne d’une heure avec une machine de bureau ordinaire. En revanche, vérifier que p(V) est la bonne valeur associée à V est rapide. Calculer le résultat R de p(V) est difficile, mais vérifier que p(V) = R est facile. Voir l’Annexe 3 où est présentée une preuve de travail ajustable et paramétrable.

Imaginons qu’on souhaite construire une blockchain en ajoutant des blocks les uns derrière les autres contenant des messages, ou des transactions, c’est-à-dire des suites de caractères.

blockchain = block(1)–block(2)–…–block(n)

Pour que la blockchain soit robuste et infalsifiable, on exigera que block(i) commence par deux informations particulières h(i) et p(i) venant en plus des messages qui en constituent le contenu. Ces informations h(i) et p(i) vont assurer qu’on ne pourra ni modifier la blockchain, ni fabriquer a posteriori de fausses blockchain.

h(i) sera l’empreinte du début : h(i) = h(block(1)–block(2)–…–block(i–1)).

p(i) sera une preuve de travail associée à h(i) : p(i) = p(h(i)).

Le calcul des h(i) et p(i) se fera progressivement jour après jour à l’occasion de l’ajout progressif des blocs. Chaque p(i) exige par exemple h heures de calcul en moyenne à une machine seule. Cependant, comme il résulte d’un calcul collectif mené par k machines, la résolution a pris beaucoup moins que h heures. Si chacun tente sa chance indépendamment des autres et qu’ils sont k, le temps de résolution est h/k heures de calcul. C’est ce qui se produit pour le bitcoin. Le calcul de tous les p(i) s’est fait progressivement sur une longue période avec pour chaque page un grand nombre de mineurs actifs. Pour le bitcoin, on a ajouté un block toutes les 10 minutes depuis janvier 2009 et une rétribution a été accordée à ceux qui ont mené les calculs.

Quand la blockchain comporte de nombreuses pages (la blockchain du bitcoin en comporte plus de 400 000), faire une fausse blockchain est impossible car cela demande trop de calculs : pour 400 000 pages chacune « coutant une heure de calcul », il faudrait mener un calcul de 400 000 heures, soit presque 50 années. Pour le bitcoin, c’est en fait bien plus que ça. Cependant, vérifier que la blockchain est cohérente est facile :

  • on vérifie que chaque h(i) est convenable. C’est rapide et cela assure que rien n’a été modifié dans les blocks ;
  • on vérifie les p(i), ce qui par définition est rapide aussi.

Une telle blockchain est un objet numérique que tout le monde peut contrôler rapidement, mais que personne ne peut modifier sans se faire repérer et que personne ne peut imiter, car pour cela il faudrait mener un énorme calcul. Elle est infalsifiable. Si, de plus, elle est présente dans la mémoire d’un grand nombre de machines sur un réseau pair à pair, la blockchain est aussi indestructible.

Annexe 5 : Votes sécurisés grâce à la blockchain

Une blockchain permet l’organisation de votes décentralisés contrôlables par chacun et que la cryptographie garantit sans tricherie.

L’organisateur du vote V détermine la liste de personnes qui ont le droit de voter, et la rend publique en la publiant sur la blockchain. Il y a par exemple 12 personnes pouvant voter : E1, E2, … , E12.

L’organisateur choisit un couple clés (P1, P2) de chiffrement asymétrique. Avec P1, on peut chiffrer un texte, mais pour le déchiffrer il faut utiliser P2. Il publie P2. Il envoie la clé P1 (par la blockchain ou par un autre moyen) à chaque personne de la liste E1, E2, … , E12. Cet envoi se fait de manière chiffrée pour que seuls les 12 personnes prévues connaissent P1. Entre deux dates fixées à l’avance, chaque électeur écrit sur la blockchain de manière anonyme son vote avec la clé P1, et avec l’information qu’il s’agit du vote V (c’est nécessaire pour qu’on puisse retrouver l’ensemble des votes en parcourant la blockchain).

Une fois la date limite passée, chaque participant au vote collecte sur la blockchain tous les votes, les déchiffre en utilisant P2. Il connaît donc le résultat du vote. Les personnes extérieures au vote peuvent aussi vérifier le résultat puisque P2 a été publié au départ (des variantes sont possibles si on trouve cela gênant). Personne ne peut connaître les votes individuels qui ont été faits anonymement. Personne ne peut tricher car la blockchain est robuste et infalsifiable.

Notons quand même que dans ce protocole, il faut que tous ceux qui ont le droit de voter le fasse, car sinon certains pourraient voter deux fois ou plus. Si tous ceux qui en ont le droit votent, personne ne peut voter deux fois car cela conduirait à un nombre de votes supérieur au nombre connu de votants (dans un tel cas, le vote est annulé). L’obligation que tout le monde vote peut être levée en compliquant un peu le protocole.

Annexe 6 : Jeux prouvablement équitables

Le monde des cryptomonnaies avec ses preuves de travail à base de fonctions à sens unique est à l’origine d’une intéressante innovation en matière de jeu de hasard. La maîtrise des protocoles cryptographiques a en effet conduit à la mise en place de casinos en ligne qui ne peuvent absolument pas tricher, chose que le joueur lui-même vérifie sans qu’aucune autorité centrale ne s’en occupe.

Puisque le minage des bitcoins détermine un gagnant de quelques bitcoins toutes les 10 minutes parmi les machines participantes et qu’on ne peut pas tricher, on pourrait concevoir des jeux de hasard basés directement sur ce protocole. Cependant, les chances de gagner d’un joueur dépendraient de la puissance de calcul de sa machine. Cela ne serait pas très juste, ni satisfaisant.

Des méthodes plus directes conduisant à des tirages au hasard parfaitement équitables et contrôlables existent pour, par exemple, lancer des dés en ligne sans qu’aucune tricherie ne soit possible, ni pour le casino, ni pour le joueur. Ces protocoles sont connus depuis longtemps en cryptographie (Manuel Blum a proposé une méthode de tirage à pile ou face par téléphone en 1981), mais c’est seulement depuis peu que des casinos en ligne proposent des jeux prouvablement équitables (provably fair) aux joueurs16. On peut donc aujourd’hui jouer en ligne à des jeux de hasard dont l’honnêteté est garantie par la cryptographie mathématique et cela sans faire intervenir aucune autorité de contrôle des casinos auxquels on se connecte. Le paiement des taxes dues par le casino et son honnêteté commerciale – le casino paye-t-il toujours ce qu’il doit aux joueurs ? –ne sont pas garantis par ces protocoles qui ne concernent que le hasard des tirages aléatoires. (Avec des smart-contracts comme le permet Ethereum, ces questions-là peuvent aussi être traitées).

Voici, ci-dessous, un protocole réalisant un tirage au sort ayant une chance sur k de réussir (k étant un entier plus grand ou égal à 2). Pour jouer, vous engagerez la somme S ; si le tirage vous est défavorable le casino gardera votre mise ; si vous gagnez le casino vous rendra votre mise, y ajoutera (k - 1)S, et enlèvera par exemple 1 % du total pour ses frais.

Protocole prouvablement équitable pour faire un tirage ayant une chance sur k de réussir (on prendra k = 2 pour simuler un lancer de pièce à pile ou face) :

  1. Le casino choisit un nombre x, et envoie le résultat du calcul de f(x) = y au joueur. La fonction f est une fonction à sens unique produisant des résultats assimilables à du hasard, comme c’est le cas de la fonction SHA-256.
  2. Le joueur envoie au casino un nombre z qu’il choisit comme il veut.
  3. Le casino calcule t = x + z, puis u = f(t) mod k (le reste de la division de f(t) par k).
  4. Si u = 0, le joueur a gagné, sinon il a perdu.
  5. Après le tirage, le casino fait parvenir x au joueur. Le joueur contrôle que le casino n’a pas triché en vérifiant que le y qu’il avait reçu avant de choisir z est bien f(x) ; il contrôle aussi les calculs de t = x + z et de u = f(t) mod k.

Le casino n’a pas pu manipuler le résultat car, quand il a choisi x, il ne connaissait pas z. Le joueur n’a pas pu lui non plus manipuler le résultat car, quand il a choisi z, il ne connaissait pas x. Le protocole est donc équitable et il n’existe aucune possibilité de triche, ni pour le casino, ni pour le joueur.

Endmark

  1. Satoshi Nakamoto, « Bitcoin: A peer-to-peer electronic cash system, » (2008). 
  2. Andrew O’Hagan, « The Satoshi Affair, » London Review of Books 30, no. 13 (2016). 
  3. Daniel Cawrey, « This Man Bought $27 of Bitcoins in 2009 and They’re Now Worth $980k, » CoinDesk, 29 octobre, 2013. 
  4. Voir aussi :  
  5. La courbe employée par le bitcoin est secp256k1. 
  6. Voir bitcoin.fr, « ‘Bitcoin Wallets’, que choisir? ». 
  7. Pierre Buntinx, « Bitcoin’s Electricity Use to Match Denmark, but It’s worth It, » Bitcoin News, 30 mars, 2016. 
  8. Le backdoor est une système autorisant quelqu’un connaissant une fonction secrète des programmes à opérer des opérations particulières dont personne n’a été informée de l’existence à l’exception de celui qui a écrit le programme. 
  9. Voir Matt O’Brien, « Bitcoin Isn’t the Future of Money — It’s Either a Ponzi Scheme or a Pyramid Scheme, » Washington Post, 8 juin, 2015 ; P. H. Madore, « Financial Times Writer Calls Bitcoin A ‘Pyramid Scheme’, » cryptocoins news, 10 novembre, 2015. 
  10. Voir « The Bitcoin Bubble, » The Economist, 30 novembre, 2013 ; Rory Cellan-Jones, “The Bitcoin Bubble, » BBC News, 11 avril, 2013 ; Henry Blodget, « Bitcoin is the Perfect Asset Bubble—Prices Could Go Vastly Higher From Here, » Business Insider, 7 novembre, 2013 ; Alex Wilhelm, « The Bitcoin Bubble, » TechCrunch, 6 novembre, 2013 ; Edward Chancellor, « Review: The Virtual Bubble of Bitcoin, » Reuters, 15 mai, 2015. 
  11. Nick Abouzeid, « Ukraine Government Plans to Trial Ethereum Blockchain-Based Election Platform, » Bitcoin Magazine, février 16, 2016. 
  12. Pete Rizzo, « R3 Publishes Vitalik Buterin Report on Ethereum for Banks, » Coindesk, 1 juin, 2016. Traduction par les éditeurs. 
  13. Voir Ari Juels et al., « The Ring of Gyges: Using Smart Contracts for Crime, » (2015). 
  14. Voir Wikipedia, « SHA-2 ». 
  15. Voir NIST, « Cryptographic Hash Algorithm Competition ». 
  16. Manuel Blum, « Coin Flipping by Telephone” » (1981). 

Jean-Paul Delahaye is a mathematician and professor emeritus in computer science at the University of Lille.


More from this Contributor

More on Computer Science


Endmark

Copyright © Inference 2024

ISSN #2576–4403