Qu’est-ce que HashCash ?

Tiempo de lectura: 5 minutos

Vous ne le savez probablement pas, mais le bitcoin est une technologie créée à partir de la combinaison d’autres projets et de technologies antérieures. Par conséquent, nous pouvons dire que le protocole Proof of Work est un héritage de HashCash. Mais qu’est-ce que HashCash et comment a-t-il été utilisé dans le contexte des crypto-monnaies ? Si vous voulez le savoir, lisez la suite.

Histoire de HashCash

Hashcash est un système de preuve de travail (PoW) créé par Adam Back en 1997, bien que son livre blanc ait été publié en 2002.

L’objectif principal de Hashcash était de minimiser la réception de grandes quantités de courriels non désirés, en utilisant la collision de hachage pour ce faire. À l’origine, sa création visait à lutter contre le spam électronique et les attaques DDoS. Cependant, plus récemment, le système est devenu populaire avec le bitcoin et d’autres crypto-monnaies, en tant que pièce essentielle de l’algorithme de minage.

Avant le bitcoin, SpamAssasin et Microsoft utilisaient hashcash dans hotmail, exchange, outlook, etc.

Dans l’algorithme original de 1997, le hashcash utilisait SHA1 car à l’époque, c’était le hash recommandé par le NIST.

Le bitcoin, lancé en 2008/2009, utilise SHA256 car SHA1 a commencé à montrer quelques faiblesses.

Comment fonctionne HashCash ?

¿Cómo funciona HashCash?

Le hachage peut être défini comme un algorithme qui transforme une entrée de données en une adresse alphanumérique caractérisée par un nombre fixe de chiffres, qui résume et protège les informations insérées.

C’est-à-dire qu’avec le hachage, toute donnée peut être formalisée, devenant un numéro unique, apparemment aléatoire, mais d’une longueur prédéterminée.

Comme nous l’avons déjà mentionné, avant le Bitcoin, Hashcash a été inventé comme un moyen d’empêcher le spam.

Son inventeur, Adam Back, pensait que le seul moyen de freiner l’envoi de courriers en masse était de fixer un coût minimum (par exemple un penny). Ce ne serait pas une limite pour un utilisateur normal, puisqu’il n’envoie généralement pas des milliers d’e-mails. Mais pour un spammeur, cela coûterait des millions de centimes par jour et découragerait son comportement.

Mais comment Hashcash pourrait-il obliger les spammeurs à dépenser un centime numérique ? La réponse se trouve dans l’idée centrale de Hashcash, qui est maintenant aussi un élément clé du Bitcoin : la preuve de travail.

Dans le cas spécifique de l’utilisation du courrier électronique, pour résoudre le problème du spam, un codage textuel d’un timbre hashcash doit être ajouté à l’en-tête du courrier électronique pour prouver que l’expéditeur a passé un modeste temps de CPU à calculer le timbre avant d’envoyer le courrier électronique.

Ainsi, en sachant si l’expéditeur a pris un certain temps pour générer le timbre et envoyer l’e-mail, nous saurons si l’expéditeur est un spammeur. En d’autres termes, les destinataires du courrier peuvent vérifier si un expéditeur a fait un tel investissement (en payant la redevance minimale) et utiliser les résultats pour aider à filtrer le courrier électronique.

Un exemple d’en-tête de courriel ressemblera à cet exemple :

X-Hashcash : 1:20:1303030600:mymail@domain.com::McMybZIhxKXu57jd:ckvi

L’en-tête contient :

  • L’adresse électronique du destinataire (mymail@domain.com) qui nécessite le calcul d’un en-tête différent pour chaque destinataire ;
  • La date qui permet au destinataire de s’assurer que l’en-tête est unique au message électronique ;
  • L’information qui prouve que le calcul requis a été effectué.

Comment savoir si l’e-mail n’est pas un spam ?

CÔTÉ DE L’ÉMETTEUR

Du côté de l’expéditeur, votre ordinateur prépare un en-tête et ajoute une valeur de compteur initialisée à un nombre aléatoire. Il calcule ensuite le hachage SHA-1 de 160 bits de l’en-tête. Si les 20 premiers bits (les 5 chiffres hexadécimaux les plus significatifs) du hachage sont tous des zéros, l’en-tête est acceptable.

Si l’en-tête est autrement invalide, l’expéditeur incrémente le compteur et réessaie le hachage.

Sur les 2160 valeurs de hachage possibles, il y a 2140 valeurs de hachage qui satisfont à ce critère et la probabilité de sélectionner au hasard un en-tête qui aura 20 zéros au début du hachage est de 1 sur 220 (environ un sur un million).

L’expéditeur devra essayer en moyenne 220 valeurs pour trouver un en-tête valide, ce qui lui prendra environ une seconde. Un utilisateur normal d’ordinateur ne souffrira pas de manière significative du temps de traitement nécessaire pour générer la chaîne hashcash. Cependant, les spammeurs souffriraient considérablement de la grande quantité de messages de spam envoyés.

 

CÔTÉ Déstinataire

Du côté des bénéficiaires, le système fonctionne comme suit :

L’ordinateur du destinataire calcule le hachage SHA-1 de 160 bits de la chaîne entière (en deux microsecondes environ sur une machine à 1 GHz).

Si les 20 premiers bits ne sont pas tous nuls, le hachage est invalide.

L’ordinateur du destinataire vérifie la date figurant dans l’en-tête (par exemple, « 130421 », qui représente la date du 13 avril 2021). Si elle n’est pas à moins de deux jours de la date actuelle, elle n’est pas valide (ceci parce qu’elle compense le décalage de l’horloge et le temps de routage du réseau entre les différents systèmes).

L’ordinateur du destinataire vérifie si l’adresse électronique correspond à l’une des adresses électroniques valides enregistrées par le destinataire ou à l’une des listes de diffusion auxquelles le destinataire est abonné. Si aucune correspondance n’est trouvée, la chaîne de hachage est invalide.

Enfin, l’ordinateur du destinataire insère la chaîne de hachage dans une base de données. Si la chaîne figure déjà dans la base de données (c’est-à-dire que l’on tente de réutiliser la chaîne de hachage), elle est invalide.

Si la chaîne de hachage passe tous ces tests (qui prennent quelques secondes), elle est considérée comme une chaîne de hachage valide.

À ce jour, il n’existe aucune méthode connue plus efficace que ce système de force brute pour trouver un en-tête valide.

HashCash et Bitcoin

HashCash y Bitcoin

Satoshi Nakamoto a fait référence au terme HashCash dans le Whitepaper de Bitcoin, expliquant que l‘algorithme Back était la source d’inspiration qui l’a conduit à créer l’algorithme minier Proof of Work que l’on trouve dans le registre distribué de Bitcoin.

Le réseau Bitcoin utilise un système de preuve de travail pour permettre de miner de nouveaux jetons Bitcoin, créer des blocs sur la blockchain et assurer la sécurité du réseau.

Pour qu’un mineur (nœud) puisse créer un bloc, il devra découvrir un code algorithmique permettant de répondre à l’objectif de difficulté du réseau.

Les blocs qui sont vérifiés sont empilés les uns sur les autres et forment la blockchain.

L’objectif de la preuve de travail est de protéger le réseau contre les activités malveillantes. Comment y parvient-elle ? Eh bien, en incitant les mineurs à sauvegarder et à sécuriser le réseau Bitcoin et en faisant en sorte qu’il soit rentable de le faire et non rentable d’essayer de pirater le réseau.

La différence entre l’algorithme HashCash utilisé pour détecter les spams et le réseau Bitcoin est que la preuve de travail Bitcoin utilise deux hachages SHA-256 continus, ce qui limite le taux moyen de 6 nouveaux blocs de transaction par heure.

Cette limitation, ainsi que la popularité croissante du minage de Bitcoin, augmente la difficulté du minage.

Avantages et inconvénients de HashCash

Les avantages de HashCash

  • Tout d’abord, Hashcash est assez facile à mettre en œuvre dans les comptes de messagerie et les filtres anti-spam et aucun serveur central n’est nécessaire ;
  • Il est invisible pour les utilisateurs ;
  • Il est efficace à 100% contre les spambots, car presque aucun d’entre eux n’a la capacité de lire et d’exécuter Javascript.

 

Inconvénients de HashCash

Le principal inconvénient de HashCash est qu’il nécessite un navigateur compatible Javascript, et si l’utilisateur ne dispose pas d’un ordinateur puissant, le calcul peut prendre plusieurs secondes.


Leave a comment
Your email address will not be published. Required fields are marked *