- Retour au menu
- Retour au menuTarifs
- Retour au menuRecherche
- Retour au menuConsensus
- Retour au menu
- Retour au menu
- Retour au menu
- Retour au menuWebinaires et Événements
Fonctions de hachage Bitcoin expliquées
Tout ce que vous avez toujours voulu savoir sur le hachage Bitcoin , mais que vous aviez peur de demander.
Quiconque s'intéresse au Bitcoin a déjà entendu l'expression « fonction de hachage cryptographique ». Mais que signifie-t-elle exactement et quel est son lien avec la Cryptomonnaie?
Les fonctions de hachage sont un élément essentiel, non seulement du protocole Bitcoin , mais de la sécurité de l’information dans son ensemble.
Dans l'article suivant, nous examinerons quelques exemples simples de leur fonctionnement, avec également une démonstration simple.
Qu'est-ce qu'une fonction de hachage ?
En résumé, une fonction de hachage est un processus mathématique qui prend des données d’entrée de n’importe quelle taille, effectue une opération dessus et renvoie des données de sortie d’une taille fixe.
Dans un exemple plus concret, cela peut être utilisé pour prendre une séquence de lettres den'importe lequellongueur en entrée – ce que nous appelons unchaîne– et renvoie une séquence de lettres d'unfixélongueur. Que la chaîne d'entrée soit une seule lettre, un mot, une phrase ou un roman entier, la sortie - appeléedigérer– aura toujours la même longueur.
Une utilisation courante de ce type de fonction de hachage est de stocker des mots de passe.
Lorsque vous créez un compte utilisateur avec un service Web nécessitant un mot de passe, le mot de passe est exécuté via une fonction de hachage et le résumé de hachage du message est stocké. Lorsque vous saisissez votre mot de passe pour vous connecter, la même fonction de hachage est exécutée sur le mot que vous avez saisi et le serveur vérifie si le résultat correspond au résumé stocké.
Cela signifie que si un pirate informatique parvient à accéder à la base de données contenant les hachages stockés, il ne pourra pas compromettre immédiatement tous les comptes d'utilisateurs, car il n'existe aucun moyen simple de trouver le mot de passe qui a produit un hachage donné.
Fonctions de hachage simples en Python
Vous pouvez expérimenter avec des valeurs de hachage en utilisant Python, un langage de programmation installé par défaut sur les systèmes d'exploitation Mac et Linux. (Ce tutoriel suppose que vous utilisez une version d'OS X ou de Linux, car l'utilisation de Python sur Windows estplus compliqué.)
Tout d’abord, ouvrez un terminal, tapezpython
et appuyez sur ENTRÉE.
Cela vous amènera dans le Python REPL, un environnement dans lequel vous pourrez essayer directement les commandes Python au lieu d'écrire un programme dans un fichier séparé.
Ensuite, tapez ce qui suit en appuyant sur ENTRÉE après chaque ligne et sur TAB là où c'est indiqué :
importer hashlibdef hash(mystring):[TAB] hash_object = hashlib.md5(mystring.encode())[TAB] imprimer(hash_object.hexdigest())[ENTRÉE]
Vous avez maintenant créé une fonction,hacher()
, qui calcule et affiche la valeur de hachage d'une chaîne donnée grâce à l'algorithme de hachage MD5. Pour l'exécuter, insérez une chaîne entre parenthèses, entre guillemets, par exemple :
hash("CoinDesk est génial ")
Et appuyez sur ENTRÉE pour voir le résumé de hachage de cette chaîne.
Vous verrez que l'appel de la fonction de hachage sur la même chaîne générera toujours le même hachage, mais l'ajout ou la modification ONEun caractère générera une valeur de hachage complètement différente :
hash("CoinDesk est génial ") => 7ae26e64679abd1e66cfe1e9b93a9e85hash("CoinDesk est génial ! ") => 6b1f6fde5ae60b2fe1bfe50677434c88
Fonctions de hachage dans Bitcoin
Dans le protocole Bitcoin , les fonctions de hachage font partie du algorithme de hachage de blocsqui est utilisé pour écrire de nouvelles transactions dans la blockchain via le processus d'extraction.
Dans le minage de Bitcoin , les entrées de la fonction sont toutes les transactions les plus récentes, non encore confirmées (ainsi que quelques entrées supplémentaires relatives à l'horodatage et une référence au bloc précédent).
Dans l'exemple de code ci-dessus, nous avons déjà vu que modifier une petite partie de l'entrée d'une fonction de hachage produit un résultat complètement différent. Cette propriété est cruciale pour l'algorithme de « preuve de travail » utilisé en minage : pour résoudre un bloc, les mineurs tentent de combiner toutes les entrées avec leurs propres données.élément arbitraire de données d'entréede telle manière que le hachage résultant commence par un certain nombre de zéros.
À titre de démonstration de base, nous pourrions essayer de « miner » avec notre fonction de hachage Python en ajoutant manuellement des points d'exclamation après «CoinDesk rocks ! » jusqu'à ce que nous trouvions un hachage commençant par un seul zéro.
>>> hash("CoinDesk est génial !!")66925f1da83c54354da73d81e013974d>>> hash("CoinDesk est génial !!")c8de96b4cf781a6373766c668ceac0f0>>> hash("CoinDesk est génial !!")9ea367cea6a2cc4a6f5a1d9a334d0d9e>>> hash("CoinDesk est génial !!")b8d43387d98f035e2f0ac49740a5af38>>> hash("CoinDesk est génial !!!!!")0fe46518541f4739613b9ce29ecea6b6 => RÉSOLU !
Bien sûr, résoudre le hachage d'un bloc Bitcoin – qui au moment de la rédactiondoit commencer par 18 zéros – nécessite unextrêmementune grande quantité de calcul (et donc la puissance de traitement combinée de tous les ordinateurs du réseau prend encore environ 10 minutes pour résoudre un bloc).
C'est la nécessité de cette grande quantité de puissance de traitement qui signifie que les nouveaux bitcoins sont extraits sur une longue période de temps, et non pas tous en même temps.
Pour gagner des bitcoins grâce au minage, vous devez fournir l'énorme quantité de travail nécessaire pour résoudre un bloc - et en gagnant cette récompense, vous verrouillez toutes les nouvelles transactions dans un bloc, qui est ajouté à l'enregistrement permanent de toutes les transactions précédentes : la blockchain.
Souhaitez-vous que je vous explique les bases de la Crypto ? Courriel : CoinDesk.
Image de Bitcoin sur le claviervia Shutterstock
Corin Faife
Corin Faife est contributeur à CoinDesk et a couvert l'impact social et politique des technologies émergentes pour VICE, Motherboard et The Independent. Corin n'investit pas dans les monnaies numériques ni dans les projets blockchain (voir : Juridique éditoriale). Réseaux sociaux Corin : corintxt
