ESTHÉTIQUE
SIMPLICITÉ
EFFICACITÉ

Aneartiste sur deviantartAneartiste sur twitter Aneartiste sur scoop-it

La curieuse invention de Monsieur Satoshi

Qu'est-ce que le hashing ?

On nomme fonction de hachage, de l'anglais hash : "pagaille, mélanger", une fonction particulière qui, à partir d'une donnée fournie en entrée, calcule une empreinte numérique unique permettant d'identifier rapidement la donnée initiale, d'où son analogie avec la notion de signature numérique. Les fonctions de hachage sont utilisées en informatique et en cryptographie notamment pour valider rapidement le contenu de fichiers ou l'intégrité d'un mot de passe. Pour qu'une fonction de hachage soit efficace, elle doit répondre à 3 exigences : il doit très difficile de trouver le contenu du message à partir de la signature (attaque sur la première préimage) ; il doit être très difficile de générer un autre message qui donne la même signature (attaque sur la seconde préimage) ; et il doit être très difficile de trouver deux messages aléatoires qui donnent la même signature (résistance aux collisions). L'encart suivant permet de tester une fonction de hash MD5. Comme vous pouvez le constatez en tapant des lettres au clavier dans la zone de saisie, quel que soit le contenu de celle-ci, la chaîne de hachage comportera toujours 32 caractères héxadécimaux, ce qui donne au total 16^32, soit plus de 3 billions de milliards de combinaisons possibles.

Si vous entrez successivement plusieurs mots différents dans la première zone de saisie, vous constaterez que le hachage obtenu ne se répète quasiment jamais hormis si la combinaison de caractères initiale est la même.

Empreinte digitale,Image PixabayImage Pixabay

Le hashing, élément clé de la blockchain

Une fonction de hachage cryptographique est ce que l'on appelle une fonction à sens unique, ce qui veut dire que le calcul de la fonction de hachage est facile et rapide tandis que le calcul de sa fonction inverse est impratiquable par calcul. Grâce à la valeur de hachage (le hash), on peut discriminer deux entités apparemment proches, ce qui permet de garantir l'intégrité des contenus, autrement dit leur non-modification par une erreur ou un acteur malveillant. Il existe plusieurs algorithmes de hachage, le MD5 est le plus ancien, et ne comporte que 128 bits. On lui préfère le SHA-1 dont l'empreinte comporte 160 bits ou le SHA-256, qui intègre l'architecture de base de la blockchain, et qui comme l'indique son nom, est condensé en 256 bits.

La première blockchain est apparue en 2008 en même temps que le bitcoin, développée par un inconnu se présentant sous le pseudonyme Satoshi Nakamoto. Cette technologie répond parfaitement aux impératifs de transparence et de sécurité, car elle fonctionne sans organe central de contrôle. Une blockchain est un registre ouvert et partagé simultanément avec tous ses utilisateurs et contenant l’historique de tous les échanges effectués depuis sa création. L'ensemble est fixé selon des procédures spécifiques réglées par un protocole sécurisé grâce à la cryptographie. À chaque bloc de donnée constitué, un algorithme est appliqué par les ordinateurs du réseau aboutissant à sa validation collective. Pour s'appliquer, la blockchain exploite la solution du « problème des généraux byzantins ». Ce problème mathématique consiste à s'assurer qu’un groupe d'acteurs fonctionnant de concert arrive à produire un consensus en dépit de toutes les défaillances probables.

pièces de puzzle,Image PixabayImage Pixabay

« Si vous pensez que la cryptographie résoudra votre problème, soit vous ne comprenez pas la cryptographie, soit vous ne comprenez pas votre problème. »
—John von Neumann


Le problème des généraux byzantins

Plusieurs généraux de l'armée byzantine font le siège d'une cité ennemie. Afin d'établir un plan d'attaque commun, ils doivent échanger leurs informations à l'aide de messagers. Étant donné qu'un certain nombre de ces généraux peuvent s'avérer être des traîtres, qui essayeront donc de semer la confusion parmi les autres, le problème est de trouver un algorithme pour s'assurer que les généraux loyaux arrivent tout de même à s'entendre. Le but étant qu'une majorité suffisante partage en commun une information identique. Il s'agit en conséquence d'aboutir à un consensus sans pour autant avoir à recueillir le consentement de l’ensemble des membres du réseau. Toutes les situations impliquant théoriquement une proximité physique relèvent de cette allégorie. La synchronisation d'horloges ou le partage authentifié de clés publiques sont ainsi impossibles de façon asynchrone. En pratique, on devra donc se contenter d'atténuer les effets de l'incertitude à des niveaux acceptables. Dans le cadre de la blockchain, pour qu’un bloc soit validé, il faut que toutes les signatures (le hash est difficile à calculer mais très simple à vérifier) soient identiques. Le réseau rejette ainsi automatiquement toute unité non concordante, ce qui empêche la fraude.

« On mesure l’intelligence d’un individu à la quantité d’incertitudes qu’il est capable de supporter. »
—Emmanuel Kant


Some Hashes and Many Nodes

Chaque bloc est composé des informations suivantes : date, heure et objet de la transaction, identifiant des personnes participantes sous forme de “signature numérique” distincte, ainsi qu'un code unique (hash) qui permet de le distinguer de tous les autres blocs. Lorsqu’un bloc stocke suffisamment de nouvelles données, il demande à être ajouté à la blockchain. Pour qu’un bloc soit validé par les participants du réseau, les mineurs doivent satisfaire à une épreuve (le minage ou preuve de travail). Celle-ci consiste en un processus algorithmique qui permet de découvrir le nombre qui “libère” le bloc, c'est-à-dire qu'il doit se conformer à une condition particulière (la cible). Le mineur choisit un code aléatoire dénommé nonce qui après association au bloc, permettra d'en calculer l'empreinte. Si cette empreinte a une valeur inférieure à la cible, son bloc est accepté ; autrement, il doit recommencer. La génération d’empreinte avec la fonction SHA-256 donne un résultat complètement aléatoire. En conséquence, la capacité à trouver un résultat correspondant à la cible dépend uniquement de deux facteurs : la chance et la capacité à effectuer un hachage SHA-256 rapidement. La difficulté de ce processus est ajustée de manière à limiter le taux de génération de nouveaux blocs par le réseau à une toutes les 10 minutes. En raison de la très faible probabilité de génération réussie, il est impossible de prédire quel ordinateur pourra générer le bloc suivant.

schéma du lien entre les blocs de transactions,d'après Blockchain Franced'après Blockchain France

« Quiconque tente de générer des nombres aléatoires par des moyens déterministes vit, bien entendu, dans un état de péché. »
—John von Neumann


L'arbre de Merkle

Dans chaque bloc, les transactions sont ordonnées selon une structure appelée "arbre de Merkle". Les empreintes sont concaténées deux à deux de manières récursives jusqu'à ce qu'il n'en reste qu'une (la racine de Merkle). Après validation, cette racine sera reportée dans l'entête du bloc suivant. Chaque nouveau bloc est ainsi chaîné avec le précédent. Par conséquent, la modification d’un des blocs impliquerait la modification de l’ensemble des blocs de la chaine, ce qui est impossible. Une démonstration explicite de ce principe est visible sur le site andersbrownworth.com. De plus la décentralisation bloque toute tentative de falsification des transactions, une copie étant transmise à tous les nœuds du réseau (le nombre de « full node » répartis dans le monde est estimé par les experts à plus de 9.000 rien que pour la blockchain bitcoin). L'impossibilité de la double dépense était primordiale pour l'établissement d'une monnaie numérique. Comme le résume Satoshi dans son livre blanc : « Pour résoudre cela, nous proposons un réseau peer-to-peer utilisant des preuves de travail pour enregistrer un historique public de transactions qui, rapidement, devient informatiquement impossible à modifier pour un pirate dans le cas où les nœuds honnêtes sont contrôlés par la majorité de la puissance de calcul CPU ». Chacun peut à tout moment télécharger l'historique complète d'une blockchain. Celle du bitcoin est disponible ici et pèse actuellement 231,54 GB… (À suivre)

publié le 06/01/2022, à 23h32 par Frédéric Schäfer

Précédentsuivant