Aller au contenu

Mécanisme PoW

Le mécanisme de preuve de travail est conçu pour empêcher les abus automatisés et le spam en demandant aux visiteurs du site web d’effectuer une tâche informatique. Cette tâche consiste à trouver un nombre spécifique déterminé par le serveur et à utiliser le hachage SHA pour la génération et la vérification du défi. Le système utilise un sel aléatoire et un nombre secret pour créer un défi que les utilisateurs doivent résoudre pour soumettre le formulaire ou accéder au site web.

Génération du défi

  1. Création d’un sel aléatoire
    Un serveur génère une chaîne aléatoire (sel) de longueur suffisante (généralement d’au moins 10 caractères). Ce sel sert d’entrée supplémentaire pour garantir l’unicité et la complexité du défi pour chaque utilisateur.

  2. Génération d’un nombre secret
    Le serveur génère un nombre secret, un entier positif, qui reste caché du client. Ce nombre détermine la complexité du défi.

  3. Calcul du défi
    Le serveur concatène le sel et le nombre secret, créant une chaîne unique. Cette chaîne concaténée est hachée en utilisant l’algorithme SHA, produisant un hachage de taille fixe représentant le défi.

  4. Création de la signature du serveur
    Une clé HMAC est utilisée pour créer une signature basée sur le défi. Cette signature agit comme mécanisme de vérification de la justesse de la solution soumise par l’utilisateur.

Dans ce mécanisme de preuve de travail, la tâche du client implique un calcul itératif pour trouver une solution correspondante au défi fourni par le serveur.

Tâche côté client

La tâche du client consiste à itérer continuellement à travers les nombres, les combiner avec le sel fourni et les hacher en utilisant SHA jusqu’à découvrir un nombre qui, une fois haché avec le sel, correspond au défi reçu du serveur. Ce processus itératif nécessite un effort computationnel du côté du client pour trouver une solution répondant aux critères fixés par le serveur.

Après avoir trouvé une solution correspondante, le client soumet la solution avec le défi original de retour au serveur pour validation. Si la solution soumise correspond au défi original, conformément au processus de vérification du serveur, le client accède aux services du site web, démontrant ainsi qu’il a réussi la tâche de preuve de travail.

  1. Calcul itératif

    • En commençant par zéro, le client itère à travers les nombres, en les incrémentant de manière séquentielle.
    • Pour chaque itération, il concatène le sel reçu du serveur avec le nombre actuel testé.
    • Il applique l’algorithme de hachage SHA à la chaîne concaténée.
    • Le hachage résultant est comparé au défi reçu du serveur.
  2. Solution correspondante
    Le client poursuit ce processus itératif jusqu’à ce qu’il trouve un nombre qui, combiné avec le sel fourni, produit un hachage SHA qui correspond au défi fourni par le serveur.

Vérification de la solution

  1. Validation du défi
    En utilisant le sel et le nombre reçus du client, le serveur recompose le défi en concaténant ces valeurs et en appliquant l’algorithme de hachage SHA. Il compare ensuite ce défi recomposé à celui reçu du client pour confirmer leur égalité.

  2. Validation de la signature
    Le serveur reconstruit la signature basée sur le défi et la clé HMAC. Il compare cette signature reconstruite à celle soumise par l’utilisateur pour authentifier la justesse de la solution.

  3. Vérification du contrôle
    La demande est considérée comme vérifiée uniquement si les deux vérifications (défi et signature) réussissent. En cas de succès, le serveur accorde l’accès ou traite la demande de l’utilisateur; sinon, il refuse l’accès ou traite la demande comme potentiellement malveillante.

Consultez le guide d’intégration du serveur pour des exemples et des détails d’implémentation.