A l’heure où l’on se souvient des soucis du franc, où l’on a trop vite tendance à accuser l’euro de tous les maux, nous arrive une monnaie 100 % numérique, le bitcoin. De nombreux articles ont insisté sur des aspects financiers ou sociétaux du bitcoin qui sont passionnants. Binaire a demandé à Rémy et Stéphanie de nous raconter quelque chose de tout aussi passionnant : les algorithmes qui rendent possibles les bitcoins.

@Ray Clid.



(*) Un qubit est l’état quantique qui représente la plus petite unité de stockage d’information quantique. C’est l’analogue quantique du bit.

Comment ça marche ?

Bitcoin est une monnaie virtuelle sans contrepartie physique. A l’inverse des monnaies classiques, elle ne repose pas sur l’existence d’une autorité comme la Banque centrale européenne pour son émission ou sa régulation. Le bon fonctionnement des échanges est garanti par un protocole public et transparent. Cette nouvelle monnaie a été conçue avec un mécanisme d’autorégulation. Ainsi, nous allons découvrir comment ces bitcoins sont créés, échangés, et parfois même perdus.

Mais concrètement, comment se passe une transaction ?

Contrairement à l’intuition naïve d’une monnaie virtuelle, un utilisateur de bitcoin ne dispose pas d’un porte-monnaie sous forme d’un fichier ou dossier qui contiendrait les bitcoins qu’il possède. A la place, il a accès à un registre consignant toutes les transactions en bitcoins ayant eu lieu depuis la mise en place du protocole, registre à partir duquel il peut calculer sa fortune personnelle. Supposons par exemple qu’Alice souhaite acheter un livre à Bob en réalisant une transaction en bitcoins. Tout d’abord, il est important de veiller à la sécurité des messages échangés, et on utilise pour cela le mécanisme de signature électronique reposant sur le concept de clé privée et de clé publique. Chaque utilisateur dispose d’un tel couple de clés.

Bob communique sa clé publique pub(Bob) à Alice ; Alice construit le message M indiquant qu’elle souhaite transférer N bitcoins à Bob :

M = “transfert à pub(Bob) d’un montant de N bitcoins” ; Alice donne son accord pour effectuer ce transfert en signant ce message avec sa clé privée priv(Alice), et en diffusant la transaction :

T = signature(M, priv(Alice)) ; Bob, à la réception de cette transaction T, peut vérifier la signature et s’assurer que le message vient bien d’Alice. Il vérifie aussi qu’Alice dispose bien des bitcoins qu’elle se propose de lui transférer en consultant le registre.

Il est à noter aussi que le protocole n’exige pas de révéler son identité lors d’une transaction. Derrière chaque paire de clés, il y a un porte-monnaie et un propriétaire anonyme.

Qui gère les comptes ?

Comme mentionné précédemment, toutes les transactions sont consignées dans un grand livre de comptes publics appelé “registre” ou encore “blockchain”. Ce registre permet à chacun de calculer le nombre de bitcoins existant sur chaque compte et rend possible la validation des nouvelles transactions par tous ceux qui souhaitent participer à ce processus. Autrement dit, lors de l’échange précédent, tout le monde peut s’assurer que la transaction provenant d’Alice est bien valide. Cette opération n’est pas du seul ressort de Bob. En fait, chacun a son propre registre où il consigne les différentes transactions dont il a connaissance, et l’absence d’autorité centrale pose le problème de la cohérence entre tous ces registres. C’est un problème sur lequel nous reviendrons.

Est-il possible de dépenser un même bitcoin plusieurs fois ?

Considérons un scénario où Alice essaie de dépenser un même bitcoin pour payer un achat effectué auprès de Bob (transaction TBob), et régler sa dette envers Charlie (transaction TCharlie). En supposant une communication un peu lente entre Bob et Charlie, il se pourrait que parallèlement ces deux transactions se trouvent validées. Le réseau est alors divisé en deux, ceux qui ont été informés de la transaction TBob, et ceux qui ont été informés de la transaction TCharlie. Dans les deux cas, la transaction correspondante a été ajoutée au registre des comptes, et les deux registres résultants ne sont plus cohérents (mais personne n’est encore au courant de cette situation). Lorsqu’un participant apprendra l’existence des transactions TBob et TCharlie, la supercherie sera révélée, et il faudra alors décider du registre qui fait foi, et donc de la transaction à garder. On connaîtra enfin l’heureux détenteur du bitcoin d’Alice.

L’idée de base est de travailler sur le registre le plus long dont on ait connaissance. Il se pourrait qu’il y ait localement des divergences, mais, dans un réseau où la communication est suffisamment rapide et où une majorité de nœuds jouent le jeu, il devrait se dégager un registre significativement plus long assez rapidement. Une fois une transaction réalisée, il faudrait donc laisser passer ce temps nécessaire à la synchronisation des registres pour garantir que la transaction se retrouve bien dans le registre qui fait foi, et pouvoir la valider définitivement.

Le problème est que la longueur d’un registre serait alors facilement manipulable par quelqu’un de mal intentionné. Alice pourrait en ajoutant des transactions faire en sorte que les registres contenant respectivement TBob et TCharlie deviennent les registres de références à tour de rôle. Elle pourrait ainsi faire croire à Bob qu’il doit lui faire parvenir son livre, puis à Charlie qu’elle a réglé sa dette. Bob se rendrait compte que le bitcoin est finalement dans les mains de Charlie… mais ce serait trop tard.

Comment empêcher Alice de manipuler le registre des transactions ?

L’idée centrale est de rendre la validation d’une transaction (ou en réalité d’un bloc contenant une dizaine de transactions) coûteuse. Ainsi, Alice ne pourra pas aisément ajouter des transactions au registre et ainsi valider l’opération avec Charlie. Pour expliquer ce mécanisme central de Bitcoin, on a besoin d’introduire une nouvelle notion : celle de fonction de hachage.

Le hachage est une opération qui consiste à transformer un texte de longueur arbitraire en un texte de longueur fixe. Dans le cas de Bitcoin, une suite de 256 bits. Mais cette suite (appelée hash du texte) doit vérifier une propriété fondamentale : il est virtuellement impossible de reconstituer le texte original à partir de son hash.

Dorénavant, mettre à jour le registre des transactions sera plus compliqué. Plutôt que de simplement vérifier si la transaction TBob est valide avant de l’ajouter au registre, il faudra aussi trouver un nombre x tel que le message “TBob + x” ait un hash se terminant par dix zéros (par exemple). Trouver une bonne valeur pour x demande du temps de calcul mais il est en revanche très facile, étant donné x, de vérifier que la valeur convient bien. Ainsi, pour chaque transaction, ou pour être précis bloc de transactions, des utilisateurs de Bitcoin, appelés « mineurs », vont vérifier que celui-ci est valide et trouver une valeur de x. Le premier mineur ayant réussi à trouver x l’enverra aux autres utilisateurs, qui pourront ajouter ces transactions à leur registre. On appelle cette opération réaliser une preuve de travail ou encore « minage » dans le vocabulaire des crypto-monnaies.

Qu’est-ce qui a changé ?

Maintenant, si Alice veut ajouter un nouveau bloc de transactions au registre pour tenter de faire valider TCharlie plutôt que TBob, elle va devoir effectuer de lourds calculs en un temps très réduit (avant que d’autres mineurs ne minent les blocs correspondants), ce qui lui sera concrètement impossible, à moins qu’Alice ne contrôle l’essentiel de la puissance de calcul de l’ensemble du réseau. L’utilisation d’une fonction de hachage permet par ailleurs de chaîner les différents blocs de transactions : en ajoutant à tout nouveau bloc le hash du bloc précédent, il est désormais impossible pour quiconque d’introduire de nouvelles transactions au milieu du registre commun. Création des bitcoins : qui, quand, et comment ? Nous avons vu comment s’échanger des bitcoins, mais, en l’absence d’autorité centrale, il demeure une question essentielle. Quelles sont les mécanismes permettant à cette monnaie de s’autoréguler ? Comment les bitcoins sont-ils créés ? Toutes les dix minutes environ, un bloc de transactions est miné. Mais que gagnent les mineurs à faire tourner leurs machines et consommer de l’énergie ? Des bitcoins fraîchement créés ! Le mineur reçoit une récompense de 25 bitcoins, ce qui correspond, au cours actuel, à environ 8 500 euros ! C’est en fait la seule et unique façon de créer de nouveaux bitcoins. Il faut savoir que cette récompense diminue en pratique tous les quatre ans. L’unité bitcoin n’étant pas divisible à l’infini, cette récompense atteindra aux alentours de 2 140, la plus petite sous-unité, appelée “satoshi”, et plus aucun bitcoin ne pourra alors être créé. Ils seront alors au nombre de 21 millions. Les plus pessimistes verront cette limite comme annonçant la fin des bitcoins… mais, pour continuer à assurer le bon fonctionnement du protocole au delà de cette date, un mécanisme de commission (similaire à des frais bancaires) a été prévu. Les mineurs pourront donc toujours prétendre à leur récompense, mais l’utilisateur devra payer !

Enfin, sachez que…

Si vous avez choisi de vous lancer dans l’aventure, veillez à conserver votre clé privée précieusement. La perte de cette dernière rend inutilisables ses propres bitcoins, et ce sans aucun recours possible.

Si vous souhaitez devenir riche en vous lançant dans le minage de blocs, sachez qu’en pratique la compétition est telle que les ordinateurs de bureau actuels n’ont plus aucune chance de gagner de l’argent via la minage.

Si vous souhaitez utiliser cette monnaie pour effectuer des opérations en toute discrétion, il faut savoir que, même si le détenteur d’un compte peut rester anonyme, les bitcoins sont, eux, parfaitement traçables. On peut à tout moment calculer la fortune détenue par une adresse quelconque ou obtenir la liste des transactions qu’elle a réalisées dans le passé. Alice est donc peut-être anonyme, mais ses bitcoins sont marqués, permettant de les suivre à la trace sur le réseau.

Bitcoin est enfin avant tout un protocole cryptographique utilisant nombre d’éléments traditionnels en sécurité informatique. La conception de tels objets est notoirement difficile et a, par le passé, laissé paraître des failles longtemps après leur diffusion. La résistance du protocole Bitcoin est encourageante et prometteuse. Cependant, peu d’analyses de sécurité ont été menées, et on ne peut, à l’heure actuelle, que spéculer sur l’absence de failles dans ce protocole.

Bitcoin n’est qu’une expérience, n’y investissez que le temps et l’argent que vous pouvez vous permettre de perdre.

Rémy Chrétien, doctorant ANR VIP & Stéphanie Delaune, CNRS

Pour aller plus loin :