Comment fonctionnent la cryptographie et la fonction hash
25 juin, 2020
8 min
Structurellement, la Blockchain est une liste croissante de transactions, enregistrées dans des blocs, qui sont concaténées via la cryptographie. En effet, chaque bloc contient un hash cryptographique du bloc précédent. Approfondissons ces concepts un à la fois, sans se précipiter.
L’origine de la blockchain
Satoshi Nakamoto est souvent considéré à tort comme l’inventeur de la blockchain, mais ce n’est pas le cas.
En effet, Nakamoto n’a fait qu’améliorer les formulations de Stuart Haber et W. Scott Stornetta de l’année 1991 sur un système de « chaîne de blocs » protégé par cryptographie pour l’archivage de documents. À cela s’ajoutent les découvertes de l’informaticien et cryptographe Hal Finney (2004), qui a introduit un système appelé RPoW, Reusable Proof-Of-Work (preuve de travail réutilisable), comme nous le verrons décisif pour l’histoire des cryptomonnaies. Le grand mérite de Satoshi par rapport à ses prédécesseurs était de pouvoir donner une applicabilité concrète à la technologie blockchain grâce au Bitcoin.
La blockchain : une chaîne de blocs
Blockchain signifie littéralement « chaîne de blocs ». Les blocs constituent l’élément principal de la blockchain. Ils sont disposés dans une séquence linéaire qui forme une chaîne potentiellement infinie. Nous pouvons imaginer les blocs comme une sorte de classeur numérique où sont conservés des milliers de factures et reçus.
Les données enregistrées dans le bloc
Chaque classeur, c’est-à-dire chaque bloc, enregistre les données d’une transaction telles que, par exemple, l’heure, la date, le montant et qui a participé à l’échange. Les blocs sont concaténés les uns aux autres dans un ordre chronologique séquentiel et ont un identifiant spécifique qui les distingue de tous les autres, appelé hash.
Chaque bloc peut représenter un certain nombre de transactions. Une fois son espace de stockage rempli, un nouveau bloc est créé et “enchaîné” au précédent. En remontant, on retrouve le premier bloc créé dans une blockchain : le bloc de genèse.
Lien entre les blocs : à quoi sert la fonction hash ?
Le hash est la colle qui maintient les blocs ensemble. En effet, le hash sert à relier et condenser des groupes de transactions en blocs, ainsi qu’à produire des liens cryptographiques entre chaque bloc, créant ainsi une blockchain.
Lorsqu’ils sont combinés avec la cryptographie, les algorithmes hash peuvent être très polyvalents, en offrant de la sécurité et de l’authentification de plusieurs façons. Dans un sens, le hash est ce qui donne à chaque bloc une identité unique. Si nous considérons un bloc comme une pièce d’un puzzle, le hash est ce qui définit sa forme, de sorte qu’il ne puisse être accroché qu’au bloc chronologiquement précédent et suivant.
Sécurité et immuabilité de la blockchain : la fonction hash
Tous les blocs de la blockchain sont liés entre eux ; la falsification d’un seul bloc nécessite la falsification de tous les blocs qui y sont liés. Non seulement cela est difficile, mais il existe aussi d’autres protections offertes par la blockchain. Les clés privées sont une autre mesure de sécurité pour garantir que les biens numériques ne sont pas indûment volés. Pour réussir à attaquer une blockchain, au moins 51 % du réseau devrait être contrôlé par un attaquant en même temps. Comme cela est presque impossible, la blockchain est beaucoup plus sécurisée que les systèmes de paiement existants.
Pour comprendre le mécanisme, essayons de dessiner deux colonnes sur une feuille de papier. Chaque case de la première colonne représente un bloc et les données de transaction qui y sont enregistrées. La deuxième colonne contient le hash correspondant à chaque bloc.
Lorsque le bloc 0 a épuisé son espace de stockage de transaction, les données enregistrées sont converties en un identifiant à deux lettres – AA – qui sera utilisé dans le cadre de la prochaine entrée. De même avec le bloc 1, qui convertira les données en hash YQ.
Par exemple, si quelqu’un essayait d’annuler une transaction enregistrée dans le bloc 1, la modification changerait la combinaison des lettres du bloc, puis le hash, et enchaînerait enfin sur tous les blocs suivants et précédents. Même si nous voulions changer le dernier bloc, ce serait une opération presque impossible. Selon la mécanique que nous venons de voir, le hash OL est le produit de toutes les combinaisons précédentes. Le changer modifierait visiblement l’ensemble de la blockchain.
L’identifiant à deux lettres de la deuxième colonne est une simplification pour montrer comment fonctionne un hash. Voyons maintenant de quoi il s’agit de manière plus précise.
La fonction hash : qu’est-ce que c’est ?
Le hashing consiste à prendre les données du bloc (entrée), à les faire passer par une fonction mathématique et à les transformer en un hash (sortie) qui a toujours la même longueur. Lorsqu’un petit détail dans l’entrée change, la sortie change immédiatement. Le fait que tu ne puisses jamais obtenir la même sortie à partir de deux entrées différentes (il n’y a donc pas de collision) est un élément de sécurité fort et la raison pour laquelle si tu essaies de trafiquer un bloc, tu génères par inadvertance un changement dans toute la blockchain.
Dans la blockchain, la fonction hash est également appliquée à chaque transaction enregistrée. Au sein d’un bloc, chaque transaction génère un hash qui contient également le hash de la transaction précédente.
De plus, la fonction hash est conçue pour être unidirectionnelle (one-way), ce qui est une fonction difficile à inverser : la seule façon de recréer les données d’entrée à partir de la sortie d’une fonction hash est de tenter des choses, en essayant de faire correspondre toutes les combinaisons possibles. Nous parlons de milliards et de milliards de tentatives, pratiquement impossibles à résoudre même par l’ordinateur doté de la capacité de calcul la plus avancée et la plus puissante du monde.
Voilà pourquoi une fois qu’une transaction sur la blockchain est enregistrée, elle ne peut être ni modifiée ni annulée. Les transactions sont donc irréversibles, ce qui signifie que, même dans le cas improbable où un réseau est piraté avec succès, les transactions existantes ne pourront jamais être annulées.
Cette capacité de la blockchain à empêcher l’altération des transactions déjà confirmées conduit à la définir comme immuable. Comme nous le verrons, l’immuabilité, associée à des algorithmes de consensus, fournit le cadre de sécurité des données pour le réseau blockchain. Pour simplifier, alors que les algorithmes de consensus assurent le respect des règles du système, l’immuabilité assure l’intégrité des données.
En résumé : l’innovation de la blockchain
Ce que nous avons vu ne sont que les premières fonctionnalités pour comprendre ce que sont la cryptographie et la fonction hash. Celles-ci rendent la blockchain sécurisée et différente des méthodes d’archivage traditionnelles. On peut imaginer quelle révolution Satoshi Nakamoto a apportée lorsqu’il l’a utilisée pour construire un système de paiement avec Bitcoin.
Contrairement aux paiements que nous effectuons quotidiennement, les paiements sur blockchain ne sont pas gérés par une autorité centrale telle qu’une banque ou un gouvernement. En effet, pour effectuer un paiement sur la blockchain, il n’est pas nécessaire d’avoir un compte bancaire, ni de vivre dans un pays libre et démocratique ou de fournir un quelconque type de garantie. Toute personne disposant d’une connexion Internet peut utiliser la blockchain pour effectuer des paiements en cryptomonnaie.