1« Blockchains : quels enjeux de sécurité, juridiques, économiques, et énergétiques ? », voilà le titre de l’appel à articles en vue de constituer ce numéro spécial de la revue Terminal. Les blockchains étant depuis quelques années de plus en plus présentes dans de très nombreux secteurs d’activité, la question des enjeux liés à cette technologie sur les quatre axes énumérés ici est en effet capital.
2Cependant, avant de s’intéresser à ces enjeux, il semble essentiel de commencer par comprendre ce qu’est concrètement une blockchain ainsi que son fonctionnement, afin d’en saisir pleinement les possibilités, mais surtout, les limites. Les nombreux usages qui en sont faits sont-ils justifiés ? Ont-ils seulement un sens ? Qu’en est-il dans les faits des promesses de sécurité, de décentralisation, et de désintermédiation presque systématiquement associées aux projets s’appuyant sur une blockchain ?
3C’est notamment à ces questions que nous répondrons dans cet article, qui se veut, dans son ensemble, une sorte d’introduction aux enjeux techniques dont traite ce volume. Dans cette optique, nous commencerons par définir et expliquer ce qu’est une blockchain, ainsi que son fonctionnement, en nous efforçant de ne faire appel à aucun prérequis technique. Ensuite, nous étudierons plus précisément trois cas d’usage typiques qui affineront notre compréhension de la nature et des limites des blockchains. Enfin, en regard de ce que nous aurons expliqué jusque là, nous questionnerons en conclusion le caractère d’« innovation de rupture » que l’on associe souvent à cette technologie.
- 1 Notez que le mot « registre » n’est pas en gras : il s’agit ici d’une version numérique du sens com (...)
4On peut définir une blockchain comme « un registre distribué et immuable dans lequel sont écrites des informations qui font consensus » de façon plutôt exacte, mais ça n’aide probablement pas beaucoup ceux et celles qui ne savent pas déjà vraiment ce qu’est une blockchain, tant les termes utilisés (en gras) dans cette description sont techniques1. Commençons donc par les définir.
- 2 On appelle « pair » un participant au réseau.
5« Distribué » veut dire que chaque pair2 dispose d’une copie complète du registre, de façon à pouvoir le consulter ou le partager sans dépendre de quiconque. Ce terme est souvent confondu avec « décentralisé » ou « pair-à-pair », bien qu’il n’ait pas du tout le même sens.
6Dans un réseau complètement décentralisé / pair-à-pair, deux pairs peuvent échanger des informations sans qu’aucun autre n’ait même besoin d’être au courant de l’existence de l’échange. C’est le cas lors d’une transaction monétaire en argent liquide. Ce pourrait théoriquement être le cas pour le courrier électronique si chaque personne auto-hébergeait son propre serveur de courriels.
7Au contraire, dans un réseau centralisé, tout échange d’informations passe par un unique centre qui a donc une connaissance parfaite du réseau et des échanges qui y ont lieu. C’est ce qui se passe pour des transactions monétaires d’un compte PayPal à un autre. C’est aussi comme ça que fonctionnent les échanges de messages sur une plateforme comme Facebook.
8Un réseau n’est pas nécessairement en totalité centralisé ou décentralisé ; entre les deux, il existe des réseaux dits fédérés, qui se comportent comme plusieurs réseaux centralisés dont les centres peuvent communiquer entre eux pour faire le lien entre les pairs qui ne sont pas connectés au même « centre ». Pour ce qui est des transactions monétaires, on peut penser aux virements bancaires SEPA qui peuvent s’effectuer entre deux comptes rattachés à des établissements bancaires distincts. C’est aussi comme ça que fonctionnent en pratique le courrier électronique : l’ensemble des serveurs sont interopérables grâce à l’utilisation de protocoles ouverts, et cela permet aux utilisateurs de Gmail d’échanger avec ceux de Yahoo comme avec ceux de n’importe quelle entreprise, université, ou particulier qui choisirait d’auto-héberger ses courriels.
- 3 Notamment, il n’est pas possible d’effectuer une transaction d’une blockchain à une autre.
9Sur une blockchain, une transaction en « cryptomonnaie » consiste en un jeu d’écriture comptable (qui, dans le cas le plus simple, a pour effet de diminuer le montant associé à un compte sur cette blockchain d’autant qu’on augmente le montant associé à un autre compte sur cette même blockchain) dans le registre distribué, qui joue du coup le rôle de centre. Il s’agit donc bien d’un réseau de type centralisé3, mais dont le centre est distribué sur l’ensemble des pairs, qui, comme dans un réseau centralisé classique, disposent de l’ensemble des informations passant sur le réseau. La différence est dans la répartition de l’autorité, qui est entièrement détenue par l’acteur central dans un réseau centralisé classique, mais qui dans le cas d’une blockchain réside dans les deux notions complexes d’immuabilité et de consensus.
10« Immuable » veut dire que ce qui est écrit dans le registre l’est définitivement, de sorte à pouvoir faire confiance pour toujours à ce qu’on y lit. En pratique, le registre n’existe que sous la forme d’un fichier présent sur les machines des pairs qui participent au réseau, et il est techniquement impossible d’empêcher un pair de modifier sa version locale du fichier. L’immuabilité n’existe donc que virtuellement : il s’agit en fait de rendre impossible une modification discrète du registre, au sens où n’importe qui peut facilement vérifier son intégrité. Cette vérification est permise par la structure de chaîne et l’utilisation de condensats cryptographiques.
- 4 C‘est-à-dire qu’avec les mêmes données en entrée de l’algorithme, on aura toujours le même nombre e (...)
11Un condensat cryptographique est une empreinte numérique qui doit pouvoir servir à identifier des données. C’est en pratique un grand nombre de taille fixe (par exemple, 256 bits) calculé par un algorithme déterministe4 conçu de façon à ce que le moindre changement dans les données d’entrée (ne serait-ce qu’un bit) provoque une modification importante de la sortie (chaque bit de la sortie a 50 % de chance de changer).
- 5 En base 16, où les chiffres de 0 à 9 puis de a à f représentent les nombres de 0 à 15, c’est-à-dire (...)
Par exemple, avec l’algorithme SHA-256 (NIST, 2002) le texte « Terminal », encodé en ASCII, a pour condensat le nombre suivant (il est écrit sur 64 chiffres, en hexadécimal)5 :
e0926fdac700b09497b5f0218ea3dd54fa13c0bdeaee6caa7b85e50b852aa05f. Tandis que le texte « terminal » qui, encodé en ASCII également, ne diffère du précédent que d’un seul bit (le « T » majuscule est encodé par l’octet « 01110100 », tandis que le « t » minuscule l’est par l’octet « 01010100 »), a pour condensat le nombre suivant :
4e686af7bdcc5ae005a247624fd8c7283257c2514f6b3ad2ff5d4cb6d95196e6.
12Il est donc très facile de vérifier, quand on dispose du condensat associé à des données, si celles-ci sont intègres. Dans une chaîne de blocs, chaque bloc est identifié par son condensat, et un ordinateur personnel peut vérifier l’intégrité de plusieurs millions de blocs par seconde. Mais ce qui fait réellement l’immuabilité d’une chaîne de blocs est justement la structure chaînée. L’idée est que chaque bloc contient parmi ses données l’identifiant du bloc précédent dans la chaîne, de sorte à ce que la modification d’un bloc entraîne, en plus de celle de son identifiant, celle de tous les blocs suivants et de leurs identifiants, par réaction en chaîne. La suppression ou l’ajout d’un bloc quelque part dans la chaîne pose le même problème. La seule façon de modifier un bloc de manière discrète, de façon à ce que la nouvelle version de la chaîne soit perçue comme valide pour l’ensemble des pairs, serait de trouver une collision dans l’algorithme de calcul de condensat, ce qui est possible en théorie, mais est censé être complètement impossible en pratique.
- 6 C’est le principe mathématique des « tiroirs à chaussettes » : si on range C chaussettes dans T tir (...)
13On appelle « collision » le fait que deux données différentes se retrouvent avec le même condensat. Il y a nécessairement des collisions existantes, puisqu’il y a un nombre fini de condensats possibles (par exemple, sur 256 bits, on ne peut écrire « que » les nombres de 0 à 2256 ˗ 1) qui est bien inférieur à la taille de l’ensemble des données qu’on peut passer en entrée de l’algorithme6. Mais trouver une collision sur l’identifiant précis d’un bloc, entre sa version originale et une nouvelle version contenant les modifications qui nous arrangent (faire disparaître une dépense, par exemple), demande des ressources dont il est impossible de disposer en pratique, tant en termes de temps que de puissance de calcul : même avec toute la puissance de calcul disponible sur Terre, il faudrait bien plus de temps que l’âge de la planète pour y arriver – à moins de trouver une faille dans l’algorithme bien sûr.
14C’est bien l’utilisation de condensats cryptographiques et de la structure de chaîne qui fait l’immuabilité d’une blockchain, et rien d’autre (notamment pas la preuve de travail comme on peut régulièrement l’entendre). Cette technique d’immuabilité est utilisée dans d’autres technologies et l’était déjà avant l’invention des blockchains : il s’agit d’un cas particulier d’utilisation d’arbres de Merkle (Merkle, 1987). Cela ne suffit donc pas à caractériser ce qu’est une blockchain, et l’ingrédient manquant est la notion de consensus.
15« Consensus » est ici une notion technique, qui n’a rien à voir avec la définition du mot « consensus » du langage courant, dans lequel sa définition est « accord et consentement du plus grand nombre, de l’opinion publique »7. On atteint le consensus quand l’ensemble des participants sont d’accord, ou, dans une version plus faible, quand aucun désaccord n’est exprimé. On parle ici d’accords et de désaccords au sens politique, d’une volonté des participants. En informatique, le problème du consensus consiste à mettre d’accord un ensemble de machines sur une valeur unique. Il n’est plus question ici de choix politique ou de consentement d’ordre moral. Le consensus est atteint quand toutes les machines (non défaillantes) tombent d’accord sur une valeur, quelle que soit cette valeur, du moment quIelle a été proposée par au moins une des machines (donc pas forcément par la majorité). Dans le cas d’un système centralisé, une machine faisant autorité peut simplement imposer une valeur aux autres en la leur transmettant. Dans les systèmes distribués, non seulement ceci n’est plus possible, mais en plus certaines machines participant à l’établissement du consensus peuvent être défaillantes (par panne ou par malice). Dans le cas particulier des blockchains, cela va même plus loin puisque non seulement l’ensemble des machines n’est pas connu et peut varier, mais en plus chaque machine est considérée comme a priori suspecte8.
16L’objectif dans le cas d’une blockchain est de se mettre d’accord sur le prochain bloc à ajouter à la chaîne (c’est-à-dire sur les nouvelles informations à écrire dans le registre), et il est nécessaire que la valeur choisie (le nouveau bloc) soit acceptée par l’ensemble des participants. Une façon d’atteindre ce but pourrait être de récompenser systématiquement tous les participants et d’honorer toutes les demandes d’ajouts légitimes au registre dans le nouveau bloc, mais cela est impossible pour de multiples raisons : on ne connaît pas la liste complète des participants, la taille des blocs est limitée, et récompenser tout le monde systématiquement avantagerait sensiblement les plus anciens participants et donc découragerait l’arrivée de nouveaux. Pour les mêmes raisons, ça ne peut pas être « chacun son tour » non plus. En fait, les contraintes qui s’imposent dans le cas d’une blockchain font que la seule façon de trouver une valeur qui ne soit pas contestable est de tirer au sort l’une des propositions. Bien sûr, le tirage au sort ne peut être effectué par une entité particulière (que ce soit une tierce partie ou un participant) : cela nécessiterait de lui faire confiance et elle deviendrait donc une autorité centrale. C’est là que le concept de preuve de travail entre en jeu.
- 9 Cela peut paraître très peu, voire presque transparent, et ça l’est quand on a un usage légitime du (...)
17La preuve de travail est une invention du début des années 1990 dont l’objectif était initialement de lutter contre le spam (Dwork et Naor, 1992). L’idée est de rendre prohibitif le coût de l’envoi massif de courriels en demandant à la machine qui envoie les courriels de réaliser du calcul inutile par ailleurs pour chaque message. Dans l’implémentation Hashcash (Back, 1997) de cette idée par exemple (qui est celle reprise avec quelques modifications dans Bitcoin), le protocole demande à l’expéditeur de calculer en boucle le condensat cryptographique de données du message à envoyer (date d’expédition et adresse du destinataire) agrémentées d’un nombre à modifier à chaque fois (généralement en l’incrémentant) jusqu’à trouver une collision partielle, typiquement, que les 20 premiers bits du condensat soient à zéro (ce qui nécessitera donc environ 220 calculs de condensat, c’est-à-dire approximativement une seconde de calcul sur un ordinateur personnel9). L’expéditeur doit alors envoyer au destinataire (dans les métadonnées du courriel) le nombre qui a permis de trouver la collision partielle comme preuve de son travail de calculs inutiles. Le destinataire peut alors facilement vérifier la preuve, il lui suffit de calculer le condensat avec ce nombre pour voir si les 20 premiers bits sont bien à zéro.
Si on reprend notre exemple précédent avec le texte « Terminal » et qu’on lui ajoute un nombre, en commençant avec « Terminal0 », il faut aller jusqu’à « Terminal1277191 » pour trouver un condensat (toujours avec SHA-256) qui satisfasse la collision partielle. Cela a donc demandé plus d’un million de tentatives. En revanche, si on nous fournit le nombre 1277191 comme preuve de travail, on peut directement calculer le condensat de « Terminal1277191 », qui se trouve être :
0000061c3401962f21905bec7299328d495d1b10846ac6cf699be03e96497a8f pour observer que les 20 premiers bits (et donc les 5 premiers chiffres hexadécimaux) sont bien à zéro, en n’ayant eu à effectuer qu’un seul calcul de condensat.
- 10 Le mot anglais « nonce » vient de la contraction de « number » et de « once ».
- 11 En fait, ce n’est jamais le cas, comme on le verra plus bas.
18Dans les blockchains qui utilisent ce mécanisme de consensus, la preuve de travail consiste à chercher une collision partielle sur le condensat qui servira d’identité au bloc que l’on souhaite ajouter à la chaîne. C’est cela qu’on appelle le minage. En plus de l’identifiant du dernier bloc (pour la structure de chaîne comme on l’a vu plus haut) et des informations que son mineur souhaite ajouter au registre, chaque bloc contient donc un nombre, qu’on appelle un nonce10, qui ne sert qu’à être modifié en boucle jusqu’à tomber sur un condensat valide, c’est-à-dire qui a une collision partielle avec le nombre de zéros voulu au début (nombre qui varie en fonction de la difficulté de minage décidé pour la blockchain en question). L’identifiant du dernier bloc est le même pour tout le monde, mais pas forcément11 les informations que l’on souhaite ajouter sur la chaîne, et c’est ce qui fait que malgré la puissance de calcul (qui joue tout de même un rôle prépondérant), on ne peut pas prédire à l’avance qui va trouver un bloc valide en premier et le transmettre au reste des machines participant au réseau pour vérification, puis ajout à la chaîne (et du coup, abandon de leurs calculs en cours, pour recommencer à zéro à partir de ce nouveau bloc).
Par exemple, si on avait choisi le texte « terminal » (sans la majuscule) comme donnée initiale dans l’exemple précédent, il aurait suffit d’aller jusqu’à « terminal296762 » pour trouver un condensat valide :
000007085de78efeec7e3e9f120ca34fadfb782f5b386fa63989d5ddbd86269d, soit près d’un million de calculs de condensat à faire en moins, pour, rappelons-le, un seul bit de différence.
- 12 En tout cas, dans un laps de temps ne permettant pas au premier des deux de s’être propagé à l’ense (...)
19C’est ainsi qu’est effectué le tirage au sort non contestable qui sert de mécanisme de consensus pour mettre tout le monde d’accord sur quel sera le prochain bloc dans la chaîne, et donc, les nouvelles informations ajoutées au registre. Il n’est pas impossible que deux blocs valides différents soient trouvés de cette façon presque simultanément12. Dans ce cas, chaque mineur choisit, en fonction de ses propres intérêts, à partir duquel il souhaite poursuivre. Si plusieurs versions de la chaîne évoluent ainsi en parallèle, celle qui fait foi est la plus grande (celle qui a le plus de blocs), et les informations contenues uniquement dans les autres n’existent plus dans le registre.
- 13 À l’heure où ces lignes sont rédigées, la collision partielle demandée pour la blockchain de Bitcoi (...)
20Bien sûr, il est nécessaire qu’il existe une incitation à miner, car le coût de faire ces calculs inutiles par ailleurs se révèle vite très élevé, notamment en matière de consommation d’énergie13. Le mineur qui trouve le nouveau bloc doit donc être récompensé. Comme pour le tirage au sort, il n’est pas possible que cette récompense soit distribuée par une entité particulière : cela nécessiterait de lui faire confiance et elle deviendrait alors une autorité centrale. Il est donc impératif que la récompense provienne intrinsèquement de la blockchain elle-même. C’est là qu’entrent en jeu les cryptomonnaies, comme nous le verrons plus bas.
- 14 Dans la cryptomonnaie Peercoin par exemple, les participants ne peuvent miser que la cryptomonnaie (...)
21Par souci d’exhaustivité, mentionnons également un autre mécanisme de consensus, la preuve d’enjeu. Contrairement à la preuve de travail, la preuve d’enjeu ne nécessite pas de calculs inutiles, elle met en place un tirage au sort pondéré par l’enjeu de chaque participant dans la blockchain, avec l’idée que plus on a d’enjeu dans une blockchain, plus on a envie que celle-ci soit digne de confiance, et donc moins on a intérêt à tricher. L’enjeu est directement lié au montant de « cryptomonnaie » détenu et au temps depuis lequel celui-ci l’est14. Ces informations étant détenues par l’ensemble des pairs, le résultat du tirage au sort ne doit pas les surprendre. Ce mécanisme de consensus est moins sûr que la preuve de travail, notamment car il n’impose pas naturellement aux mineurs de ne choisir qu’un seul bloc pour poursuivre la chaîne. Dans le cas de la preuve de travail, faire coexister plusieurs blocs nécessite de diviser sa puissance de calcul entre ceux-ci, et donc de diminuer ses chances de miner le prochain bloc et de recevoir la récompense associée. En revanche, la preuve d’enjeu permet sans surcoût des attaques où l’on fait coexister plusieurs versions du registre en parallèle, par exemple l’une où l’on a bien payé un tiers, et l’autre où l’on dispose encore des mêmes fonds, pour en payer un autre – c’est ce qu’on appelle la double dépense. Plusieurs méthodes pour résoudre ce problème ont été proposées, mais aucune n’arrive au niveau de sécurité de la preuve de travail sans en atteindre le coût. Quoi qu’il en soit, il est aussi nécessaire de récompenser le mineur tiré au sort dans la preuve d’enjeu, sinon il n’y a pas d’incitation à subir l’inconvénient de devoir stocker sa cryptomonnaie sans pouvoir y toucher. Comme pour la preuve de travail, et pour les mêmes raisons, cette récompense doit nécessairement provenir intrinsèquement de la blockchain elle-même.
- 15 Un montant de cryptomonnaie défini par le protocole, et qui sera vérifié par les autres participant (...)
22Les mécanismes de « consensus » utilisés dans les blockchains impliquent donc que chaque mineur propose un bloc différent de ceux des autres, puisque chacun tente de s’auto-attribuer la récompense qui va avec le bloc15. On remarque donc que le « consensus » dont il est question ici n’a absolument rien à voir avec celui du langage courant, et ne pourrait d’ailleurs pas en être plus éloigné : ce n’est pas seulement que la valeur de consensus n’était pas voulue par une majorité des participants, mais bien que c’est systématiquement la volonté d’un seul, contre celles de tous les autres, qui est sélectionnée comme valeur de consensus, et qui s’impose à tout le monde.
23À présent, la définition que l’on a donnée d’une blockchain en début d’article devrait être effectivement compréhensible. Il reste tout de même deux points essentiels à la compréhension non pas de la nature mais du fonctionnement d’une blockchain : les aspects réseaux techniques, et la cryptomonnaie. Nous mettrons de côté les aspects réseaux techniques (c’est-à-dire le fonctionnement du protocole pair-à-pair utilisé pour la transmission des transactions, des blocs, etc., entre les participants), qui, d’une part, nécessiteraient un article à eux seuls pour réellement expliquer leur fonctionnement sans trop de prérequis, et, d’autre part, n’ont pas vraiment d’impact sur ce qui nous intéresse ici, à savoir discerner les limites de ce que peut faire et ce que ne peut pas faire une blockchain. Ce qu’il faut retenir, c’est que les usagers de la blockchain peuvent envoyer des transactions (c’est-à-dire des informations à ajouter dans le registre pour modifier l’état de la blockchain) sur le réseau en espérant qu’elles seront ajoutées par des mineurs dans l’un des prochains blocs qui seront ajoutés à la chaîne ; et que les blocs valides trouvés par les mineurs sont transmis à l’ensemble des participants pour vérification (de la validité des transactions et de la preuve de travail), puis ajout à la chaîne.
24En revanche, comme on l’a vu plus haut, il est impossible de comprendre le fonctionnement d’une blockchain sans comprendre celui des cryptomonnaies. En effet, les mécanismes de consensus utilisés par les blockchains nécessitent de récompenser les mineurs qui trouvent de nouveaux blocs, et, la récompense devant nécessairement provenir intrinsèquement de la blockchain, elle ne peut qu’être un montant de la cryptomonnaie associée à la blockchain, qui fait donc partie intégrante de son fonctionnement.
25On appelle cryptomonnaie un actif financier numérique échangeable de pair à pair sans nécessiter d’autorité centrale. Dans ce mot, « crypto » fait référence à la cryptographie, qui est utilisée pour assurer le bon fonctionnement et la sécurité des cryptomonnaies ; « monnaie », quant à lui, fait directement référence à leur nature proclamée, mais bien discutable, comme le souligne la Banque de France (2018). Le concept de cryptomonnaie existe depuis le début des années 1980 (Chaum, 1982), mais c’est vraiment en 2008 que la version actuelle voit le jour avec l’arrivée du bitcoin (Nakamoto, 2008), et c’est d’ailleurs pour le bitcoin que la technologie de la blockchain a été mise au point. Depuis, de très nombreuses autres cryptomonnaies ont vu le jour, parfois avec certaines différences ou innovations, mais c’est sur l’exemple du bitcoin, qui reste de loin la plus répandue, que se base cette première étude de cas.
26Transaction. Pour comprendre le fonctionnement d’une cryptomonnaie, on peut partir de celui d’une transaction. Chaque transaction a un identifiant (un condensat des données qui la composent), et est composée d’un ensemble d’entrées (les sources) et d’un ensemble de sorties (les cibles). Les sorties sont des paires associant chacune un des destinataires de la transaction et le montant qui lui est destiné. Les entrées sont des paires associant chacune une sortie de transaction passée (identifiée elle-même par une paire composée de l’identifiant de la transaction passée en question et du numéro de la sortie en question dans cette transaction) et une signature cryptographique prouvant l’autorisation de la dépense. Pour être valide, une transaction doit respecter plusieurs contraintes :
-
la somme des montants (qui doivent tous être positifs) dans l’ensemble des sorties doit être inférieure ou égal à celle dans l’ensemble des entrées (si elle est inférieure, le mineur qui permet l’ajout du bloc contenant cette transaction peut récupérer le surplus) ;
-
aucune des sorties de transactions listées en entrée ne doit avoir déjà été dépensée dans un bloc précédent, ni ailleurs dans le même bloc ;
-
et bien sûr, chaque signature cryptographique doit être valide.
27Avant d’expliquer ce que veut dire « signature valide », puis de donner un exemple concret de transaction, remarquons que la seconde contrainte impose, pour pouvoir vérifier la validité d’une transaction, de connaître la liste des sorties de transactions non encore dépensées (UTXO, pour « unspent transaction outputs »). Cela nécessite de maintenir cette liste à jour, sans quoi il faudrait reparcourir l’ensemble de la chaîne (au mieux, si on a cette information, depuis le bloc contenant la plus ancienne UTXO listée en entrée de la transaction), ce qui serait bien trop long. Nous reviendrons sur ce fait et ce qu’il implique dans le cas d’usage que nous étudierons ensuite (la certification de documents).
- 16 Cela nécessiterait de nombreuses circonvolutions, impliquant entre autres des militaires états-unie (...)
- 17 C’est-à-dire n’être divulguée à personne, et donc pas même aux tiers avec qui l’on souhaite communi (...)
- 18 Sauf bien sûr si Bob n’a pas soigneusement protégé sa clef privée et que celle-ci a fuité.
28Signature. Pour comprendre ce qu’est une signature cryptographique, il nous faut d’abord introduire rapidement le concept de cryptographie asymétrique, qui date des années 1970. Jusqu’alors, on ne disposait que de la cryptographique qu’on appelle aujourd’hui « symétrique », c’est-à-dire qui utilise la même clef secrète pour le chiffrement et le déchiffrement. Cela posait un problème de poule et d’œuf dans la distribution de la clef : deux parties ne peuvent communiquer via un canal sécurisé que si elles possèdent cette information commune, mais ne disposent donc pas avant ça d’un moyen sécurisé de se la transmettre. Sans entrer dans les détails historiques16, l’invention de la cryptographie asymétrique, qui vient répondre à cette problématique, peut être attribuée à Diffie et Hellman (1976) pour l’idée, et à Rivest, Shamir, et Adleman (1978) pour la première mise en œuvre pratique. L’idée est que chaque partie dispose d’une paire de clefs : une clef publique qui peut être distribuée à tout le monde, et une clef privée qui doit être gardée absolument secrète17. Ces deux clefs sont mathématiquement liées de sorte qu’une donnée chiffrée avec une clef ne puisse être déchiffrée qu’avec l’autre clef de la même paire. Cela permet d’assurer la confidentialité des messages adressés à un destinataire en ne connaissant que sa clef publique : par exemple, si Alice chiffre un message avec la clef publique de Bob, elle a la garantie que seul Bob pourra le lire puisque sa clef privée est nécessaire pour déchiffrer le message18. Mais cela permet également (en plus ou par ailleurs) d’assurer l’intégrité et l’authenticité des messages : en calculant un condensat de son message, puis en le chiffrant avec sa clef privée, Alice obtient ce qu’on appelle une signature cryptographique. En joignant la signature à son message, elle permet à Bob de vérifier que le message n’a pas été altéré (intégrité) et qu’il a bien été envoyé par Alice (authenticité). Il suffit pour cela qu’il calcule le condensat du message qu’il a reçu, et qu’il vérifie qu’en déchiffrant la signature avec la clef publique d’Alice, il obtient bien la même valeur. Si la clef publique d’Alice a bien permis le déchiffrement correct de la signature, on a la preuve qu’Alice est l’expéditrice puisque sa clef privée a été nécessaire à la production de la signature.
29Voilà ce qu’on appelle une signature valide dans le cas des transactions sur une blockchain : une preuve que le détenteur de la cryptomonnaie associée à une UTXO autorise sa dépense en ayant signé cryptographiquement cette partie de la transaction avec la clef privée qui correspond à l’identifiant du destinataire de l’UTXO, qui est justement identifié par sa clef publique.
- 19 Alice peut encourager la prise en compte de sa transaction en se rendant moins de 3 BTC pour offrir (...)
Exemple concret de transaction. Dans le passé, Alice a reçu 10 BTC auxquels elle n’a pas encore touché : il existe une sortie de transaction non dépensée (UTXO) qui associe le montant 10 BTC à la clef publique d’Alice. Alice veut maintenant payer 7 BTC à Bob. Elle va créer une transaction qui a pour entrée son UTXO de 10 BTC signée cryptographiquement par ses soins, et deux sorties : la première associe 7 BTC à la clef publique de Bob, la seconde les 3 BTC restant à sa propre clef publique (son « rendu monnaie »). Alice envoie cette transaction sur le réseau en espérant qu’elle soit prise en compte dans l’un des prochains blocs qui sera miné19. Dès que ce sera le cas, Alice disposera d’une UTXO de 3 BTC, et Bob d’une UTXO de 7 BTC. La sortie de transaction qui associait le montant 10 BTC à la clef publique d’Alice a maintenant été dépensée : ce n’est plus une UTXO.
Si Alice n’avait jamais reçu plus de 7 BTC d’un coup, mais par exemple plusieurs fois 5 BTC, elle aurait pu de façon équivalente utiliser deux UTXO de 5 BTC comme entrées de la transaction.
- 20 Soit environ tous les quatre ans, car le protocole de Bitcoin adapte la difficulté du minage – c’es (...)
- 21 Ce qui correspond à une décision arbitraire du ou des créateurs de bitcoins, et qui est codé en dur (...)
- 22 Cf. le fonctionnement des mécanismes de consensus et de la preuve de travail en particulier, expliq (...)
30Récompense. Exception aux règles que nous venons d’énoncer, la première transaction de chaque bloc n’a pas d’entrée, et, s’il n’y a pas d’obligation spécifique concernant ses sorties, elle sert en pratique systématiquement d’auto-récompense pour le mineur qui a trouvé le bloc. Les règles pour cette transaction particulière sont donc différentes. La somme des montants des sorties de cette transaction ne doit pas dépasser celle de la récompense et des frais de transactions. La récompense provient de la « coinbase » : il s’agit de cryptomonnaie nouvellement créée, et son montant est défini par le protocole de la blockchain. Pour le bitcoin, il a démarré à 50 BTC le 9 janvier 2009 dans le premier bloc miné, et est divisé par deux tous les 210 000 blocs20, jusqu’à ce qu’il atteigne zéro quand un peu moins de 21 millions de bitcoins auront été distribués de cette façon21 – il ne restera alors plus que les frais de transaction comme incitation au minage. Les frais de transactions sont récupérés sur les transactions dont la somme des montants associés aux entrées est supérieure à celle des sorties. Soumettre au réseau une transaction qui permet aux mineurs d’espérer récupérer des frais élevés est donc une façon de s’assurer qu’elle sera prise en compte, éventuellement même plus rapidement que les autres. Enfin, dernière règle particulière, les sorties de cette transaction ne deviennent des UTXO utilisables que 100 blocs plus tard, pour s’assurer qu’elles ne disparaîtront pas en cas de coexistences temporaires de plusieurs versions parallèles de la blockchain22.
31Le fonctionnement global d’une cryptomonnaie en tête, on peut déjà faire plusieurs remarques.
- 23 Certaines estimations donnent un chiffre autour de 10 % des bitcoins qui seraient ainsi perdus.
32Usabilité et démocratie. La première concerne l’usabilité de cette technologie. Pour en être réellement maître, il est nécessaire de comprendre et de s’approprier de nombreux concepts du domaine de la cryptographie, ainsi que les bonnes pratiques qui en découlent et ne sont pas du tout évidentes à mettre en œuvre : typiquement, la gestion de ses clefs privées. Si elles ne sont pas correctement sécurisées et qu’un tiers malveillant s’en empare, on peut se faire voler sa cryptomonnaie. On peut également perdre définitivement l’accès à sa cryptomonnaie simplement en perdant la clef privée associée23. Dans les deux cas, il n’existe aucun moyen de récupérer la valeur perdue. En pratique, une grande partie des utilisateurs de cryptomonnaie le font via des plateformes qui hébergent leur « portefeuille » (y compris les clefs privées), et ce sont donc en vérité ces plateformes qui détiennent le contrôle de la cryptomonnaie associée à ces « portefeuilles». On se retrouve finalement avec ces tiers de confiance imposés à la majorité des utilisateurs non formés techniquement. Cela remet déjà fortement en question les promesses de désintermédiation régulièrement associées aux blockchains.
- 24 « La P2P Foundation est une organisation internationale consacrée à l’étude, la recherche, la docum (...)
33Ce débat n’est pas sans rappeler celui sur le vote électronique, dont les défenseurs oublient bien souvent la nécessité démocratique de la simplicité et de la transparence de l’urne. Ces deux débats sont d’ailleurs liés puisque le vote électronique est l’une des applications régulièrement proposées des blockchains (voir l’analyse de Enguehard (2019) à ce sujet, ou encore la critique par Blanchard et al. (2022) d’un article défendant le vote électronique sur blockchain). Il n’est en fait pas étonnant que les défenseurs des blockchains ne se préoccupent pas plus que ça des enjeux d’usabilité et de démocratie : Michel Bauwens, qui a fondé et dirige la P2P Fondation24, qualifie par exemple régulièrement les blockchains de « rêve technocratique totalitaire ».
34« Portefeuille ». Le mot « portefeuille » tel qu’il est utilisé dans le cadre des cryptomonnaies prête à confusion. L’objet qu’on appelle normalement un « portefeuille » contient physiquement de l’argent liquide, et effectuer une transaction dans ce système ne nécessite que les portefeuilles de l’émetteur et du destinataire : il s’agit simplement du déplacement d’objets physiques (l’argent liquide) du premier vers le second. Le système est réellement décentralisé, il est même acentré : la transaction s’effectue directement de pair à pair, sans dépendre d’aucun tiers. Dans le cas d’une cryptomonnaie, comme on l’a expliqué plus haut mais contrairement à ce qui en est le plus souvent dit, ça ne se passe pas du tout de façon décentralisée ou pair à pair : le réseau sous-jacent est décentralisé, mais la transaction passe par un centre distribué, le registre. La transaction existe comme une écriture comptable, et correspondrait donc, par analogie avec de la monnaie, à un virement bancaire et non à un paiement en argent liquide. L’utilisation de l’analogie du portefeuille plutôt que de celle du compte en banque (ou d’interface de gestion de son compte en banque) est trompeuse et renforce certaines des illusions qui collent aux blockchains (décentralisation, anonymat, etc.). Notons qu’il est possible d’avoir un équivalent numérique de portefeuille avec la technologie Taler (Burdges et al., 2016), un système de transaction numérique respectueux de la vie privée et indépendant des devises utilisées (et ne reposant pas sur une blockchain).
35Écriture performative. Enfin, une dernière (mais pas des moindres) remarque, qui découle d’une certaine façon de la précédente : il est impératif de comprendre que ce qui fait qu’une cryptomonnaie fonctionne, c’est que l’écriture dans le registre est par définition performative. La vérité de l’état du monde qu’on cherche à modifier par des transactions de cryptomonnaie est l’état de la blockchain elle-même : quel est le solde disponible sur chaque compte ? Ce solde se calcule à partir des écritures dans le registre : pour chaque compte on part de zéro, et on parcourt la liste des transactions qui le concernent en additionnant les montants des sorties qui lui sont associés et en soustrayant les montants des entrées (ou, de manière équivalente, en additionnant l’ensemble des montants des UTXO associés à ce compte). Cette particularité unique des cryptomonnaies doit bien être comprise pour ce qu’elle est, sans quoi le risque d’attribuer aux blockchains des vertus qu’elles n’ont pas arrive vite, comme nous allons le voir dans les deux cas d’usage suivants.
- 25 L’exemple des diplômes correspond a une utilisation de plus en plus répandue, bien qu’injustifiée t (...)
36En dehors des cryptomonnaies, la certification de documents est, avec la traçabilité qui lui est techniquement tout à fait similaire, l’un des principaux usages proposés et vendus des blockchains. Les promoteurs de ces pratiques mettent systématiquement en avant des avantages comme la « sécurité », la « confiance », la « vérifiabilité », la « fiabilité », la « pérennité », etc., de leur produit. Concrètement, il s’agit d’inscrire des certificats, c’est-à-dire des condensats signés cryptographiquement de documents, dans une blockchain, de sorte que, théoriquement, n’importe qui puisse vérifier l’existence, l’intégrité, et l’authenticité du document de façon décentralisée. Évidemment, ce n’est pas parce qu’il est écrit sur une blockchain qu’Alice est diplômée de l’Université Paris 42 que c’est vrai25. Si l’Université Paris 42 est un établissement reconnu et accrédité à délivrer des diplômes, alors sa signature cryptographique du diplôme permet d’améliorer significativement la confiance dans le diplôme d’Alice… pourvu qu’on dispose à l’avance et de manière certaine de la clef publique de l’Université Paris 42, et bien sûr, qu’on fasse confiance à cet établissement, à ses formations et à sa bonne gestion de sa clef privée. On est donc en présence de tiers de confiance naturels : sans établissements de confiance (étant accrédités eux-mêmes par une autorité externe telle qu’un État), un diplôme n’a pas de valeur. Dans ce type de situation, le recours à une blockchain pour stocker les certificats apporterait deux choses. La première, c’est l’aspect décentralisé : si tout le monde peut avoir une copie à jour du registre, il est possible de vérifier dedans la présence d’une certification de diplôme (et l’absence d’une révocation ultérieure de ce diplôme) sans dépendre d’un tiers. Notons que, pour être réalistement faisable, cela demande en pratique de maintenir à jour une base de données de l’ensemble des diplômes valides pouvant éventuellement nous intéresser. Tout cela suppose qu’on est sûr de l’intégrité de sa copie du registre. C’est la seconde chose qu’apporterait l’usage d’une blockchain : l’immuabilité du registre, que l’on peut vérifier à condition d’en conserver une copie à jour (à moins qu’on en récupère une copie au besoin auprès d’un… tiers de confiance).
- 26 Il semble même préférable que ce ne soit pas les acteurs disposants de la plus grande puissance de (...)
37En plus de la distribution et de l’immuabilité, la troisième propriété d’une blockchain est de résoudre le problème du consensus distribué, mais il n’y en a pas besoin ici : seule une liste finie d’acteurs identifiés (les établissements accrédités à délivrer des diplômes) ont la permission d’écrire dans le registre (on parle de « blockchain permissionnée », ce qui implique qu’une autorité externe a le pouvoir d’autoriser ou non des acteurs à écrire dans le registre). Dans ce cas, on peut s’économiser toute la partie mécanisme de consensus26 : il est inutile de recourir à une blockchain.
- 27 Git a été créé en avril 2005, et est lui-même inspiré du logiciel BitKeeper, qui a été créé en mai (...)
38D’autres technologies plus simples et bien moins coûteuses peuvent tout à fait faire l’affaire, et ce même en cas de défiance des acteurs autorisés entre eux et en voulant conserver le type de fonctionnement attendu d’une blockchain pour les aspects qui nous intéressent : par exemple, il serait possible d’utiliser le logiciel de contrôle de versions Git27 (Torvalds, 2005) en imposant par dessus un simple protocole à respecter quant au format et à la cadence des écritures dans le registre.
39Mais en réalité, dans le cas des diplômes typiquement, puisque nous ne sommes absolument pas dans la situation de défiance généralisée supposée par les blockchains, il s’agit d’un problème beaucoup plus simple et que l’on sait parfaitement résoudre depuis longtemps. La distribution de diplômes numériques est en effet largement similaire à celle de certificats électroniques, problème résolu au moins depuis l’introduction de la recommandation X.509 (UIT, 1988) à la fin des années 1980, que l’on utilise encore quotidiennement dans nos navigateurs Web quand on visite un site en HTTPS. Les institutions qui délivrent des diplômes (par exemple les universités) joueraient le rôle d’autorités de certification, et celles qui accréditent les premières (par exemple, les gouvernements) celui d’autorités de certification de confiance disposant de certificats racines. Un certificat (ou donc, un diplôme) valide consiste en une chaîne de signatures cryptographiques qui remonte jusqu’à un certificat racine (et dont aucun dans la chaîne n’a été révoqué depuis). En matière de coût, et d’autant plus avec l’usage peu intensif qu’implique le cas de la vérification de diplômes, cela n’a rien à voir avec une blockchain. Et cela pourrait encore être optimisé en admettant qu’on n’a pas forcément besoin de faire de la vérification de diplôme de façon décentralisée, en acceptant simplement la mise en place d’une base de données (qui doit exister de toute façon, rappelons-le) étatique interrogeable par quiconque qui dispose de l’identifiant d’un diplôme.
- 28 En France par exemple, les notaires sont nommés par le garde des Sceaux et à ce titre investis d’un (...)
40Il en va de même pour la certification d’actes notariés par exemple, qui perdraient complètement leur sens en l’absence du tiers de confiance représenté par le notaire (c’est-à-dire luÉtat et la Justice28) rendant possible un recours en cas de litige. Comme toutes les blockchains dites « privées », la « blockchain notariale » n’a d’ailleurs de blockchain que le nom puisqu’elle n’implémente pas du tout de mécanisme de consensus (Chaserant et al., 2021). Il ne s’agit finalement que d’une centralisation des données des notaires dans une base de données inefficace qui ne peut exister qu’en plus de celle qui sera effectivement utilisée.
41En ce qui concerne la traçabilité, typiquement dans l’agroalimentaire, c’est encore pire : le seul rôle des blockchains utilisées dans ce cadre est de rendre publics des enregistrements de déclarations faites par les différents intermédiaires sur la chaîne de production jusqu’au consommateur. Il ne peut bien sûr exister aucune garantie technique de la véracité de ces déclarations.
42On est ici exactement devant un exemple de confusion sur la performativité de l’écriture, avec la croyance que si c’est écrit dans une blockchain c’est forcément vrai, qui est due d’une part à l’incompréhension totale à la fois du fonctionnement de cette technologie et de celui de son usage historique, les cryptomonnaies, et d’autre part, à une idéologie politique libertarienne mêlant solutionnisme technologique et culte du contrat (ce dernier étant, par ailleurs, lui aussi mal compris, comme le prouve la croyance de certains en la désintermédiation permise par les blockchains).
- 29 Au moment de soumettre la proposition de cet article, il semblait impensable de ne pas y faire cas (...)
- 30 En anglais dans le texte : “[NFTs] should not be implemented, as there is currently no ethical use (...)
43Fondamentalement, un NFT29 (« non fungible token », « jeton non fongible » en français) est simplement une cryptomonnaie dont il n’existe qu’une seule unité (appelée un « jeton ») qui a la propriété d’être indivisible (elle peut être transmise, mais pas découpée). Un NFT est un morceau d’information (le jeton) uniquement identifiable enregistré sur une blockchain, qui lie une identité (son propriétaire) à une donnée représentant un objet numérique ou physique. Il est ainsi censé servir à établir un certificat de propriété transmissible. En tant que certificat de propriété, il souffre de tous les problèmes que l’on a déjà évoqués concernant l’idée d’actes notariés en l’absence de tiers de confiance : l’inscrire dans une blockchain n’a aucun effet particulier sur le monde extérieur à celle-ci. En pratique, il ne s’agit donc que d’objets numériques dont la rareté est créée artificiellement de façon coûteuse pour en faire des actifs spéculatifs. t ce niveau, la différence avec les cryptomonnaies réside dans le fait que la valeur accordée à chaque NFT suit son propre cours. Les nombreuses promesses qui sont faites autour de cette technologie, notamment à propos d’un « web3 » décentralisé basé sur cette technologie, n’ont donc, sans exception, aucun sens techniquement. Une étude récente (Flick, 2022) de l’éthique des NFT conclue ainsi contre leur implémentation : « Il n’y a actuellement aucun cas d’usage ni mise en œuvre possible des NFT qui soit éthique »30.
44La technologie de la blockchain n’est pas neutre : elle est issue d’une idéologie libertarienne (Golumbia, 2016) qui présuppose un monde de défiance généralisée. Dès que l’on sort du cadre d’un monde sans aucune confiance possible, l’usage d’une blockchain ne se justifie plus. On a vu qu’il existe de multiples alternatives moins coûteuses pour arriver au même résultat si on peut se reposer sur la confiance en certains acteurs. On a vu aussi que le coût d’une blockchain ne vient souvent pas à la place de l’alternative, mais en plus, car la base de données représentant l’état courant de la blockchain doit exister de toute façon pour des questions d’efficience. Les nombreux projets à base de blockchains qui fleurissent partout ne sont jamais le résultat de réflexions sur la façon de résoudre un problème existant, mais plutôt sur l’inverse : en partant du postulat que la solution est une blockchain, et ensuite cherché le problème à résoudre.
45Pourtant, quand on admet un cadre de défiance généralisée justifiant l’utilisation d’une blockchain, la seule chose permise par cette technologie est de modifier, seulement par ajout de nouvelles écritures, l’état d’un registre distribué. Pour ce faire de manière sécurisée, une incitation interne à participer à la blockchain doit exister : elle a besoin de sa cryptomonnaie. En même temps, il est essentiel de comprendre que la seule vérité garantie par l’écriture d’une information dans une blockchain est que l’information en question est écrite dans la blockchain en question. N’importe quelle information de plus concernerait l’extérieur de la blockchain et ne pourrait être garantie que par un tiers de confiance, inexistant dans ce cadre. S’imposent alors les conséquences pratiques de cette réalité : l’usage d’une blockchain n’a de sens que si les écritures qu’on y réalise sont directement performatives, sans dépendre d’un tiers pour être « rendues vraies ». Le seul usage valide d’une blockchain semble donc être celui des cryptomonnaies. Finalement, il ne reste qu’à savoir si cet usage est socialement utile et politiquement désirable…