Zum Inhalt springen

Proof of Work Mechanism (Nachweisverfahren)

Der Proof-of-Work-Mechanismus ist so konzipiert, automatischen Missbrauch und Spam durch die Anforderung an Website-Besucher zu verhindern, eine Rechenaufgabe auszuführen. Diese Aufgabe besteht darin, eine vom Server festgelegte spezifische Zahl zu finden und SHA-Hashing zur Generierung und Verifikation der Herausforderung zu nutzen. Das System verwendet ein zufälliges Salz und eine geheime Nummer zur Erstellung einer Herausforderung, die Benutzer lösen müssen, um das Formular einzureichen oder auf die Website zuzugreifen.

Generierung der Herausforderung

  1. Erstellung eines zufälligen Salzes
    Ein Server generiert eine zufällige Zeichenfolge (Salz) von ausreichender Länge (in der Regel mindestens 10 Zeichen). Dieses Salz dient als zusätzliche Eingabe, um die Einzigartigkeit und Komplexität der Herausforderung für jeden Benutzer sicherzustellen.

  2. Generierung einer geheimen Nummer
    Der Server generiert eine geheime Nummer, eine positive ganze Zahl, die dem Client verborgen bleibt. Diese Nummer bestimmt die Komplexität der Herausforderung.

  3. Berechnung der Herausforderung
    Der Server verkettet das Salz und die geheime Nummer, um eine eindeutige Zeichenfolge zu erstellen. Diese verkettete Zeichenfolge wird unter Verwendung des SHA-Algorithmus gehasht, was eine Hash-Wert fester Größe ergibt, der die Herausforderung repräsentiert.

  4. Erstellung einer Server-Signatur
    Ein HMAC-Schlüssel wird verwendet, um eine Signatur basierend auf der Herausforderung zu erstellen. Diese Signatur dient als Verifizierungsmechanismus für die Richtigkeit der Lösung, die vom Benutzer eingereicht wird.

In diesem Proof-of-Work-Mechanismus besteht die Aufgabe des Clients darin, iterative Berechnungen durchzuführen, um eine übereinstimmende Lösung für die vom Server bereitgestellte Herausforderung zu finden.

Aufgabe auf der Client-Seite

Die Aufgabe des Clients besteht darin, kontinuierlich Zahlen zu durchlaufen, sie mit dem bereitgestellten Salz zu kombinieren und sie mittels SHA zu hashen, bis eine Zahl entdeckt wird, die, wenn sie mit dem Salz gehasht wird, mit der vom Server erhaltenen Herausforderung übereinstimmt. Dieser iterative Prozess erfordert einen Rechenaufwand auf Seiten des Clients, um eine Lösung zu finden, die die von Server festgelegten Kriterien erfüllt.

Nachdem eine übereinstimmende Lösung gefunden wurde, sendet der Client die Lösung zusammen mit der ursprünglichen Herausforderung zurück an den Server zur Validierung. Wenn die eingereichte Lösung gemäß dem Verifizierungsprozess des Servers mit der ursprünglichen Herausforderung übereinstimmt, erhält der Client Zugriff auf die Dienste der Website, was zeigt, dass er die Proof-of-Work-Aufgabe erfolgreich abgeschlossen hat.

  1. Iterative Berechnung

    • Beginnend bei Null durchläuft der Client Zahlen, die sequenziell inkrementiert werden.
    • Für jede Iteration konkateniert er das Salz, das vom Server erhalten wurde, mit der aktuell getesteten Nummer.
    • Er wendet den SHA-Hashing-Algorithmus auf die konkatenierte Zeichenfolge an.
    • Der resultierende Hash-Wert wird mit der Herausforderung verglichen, die vom Server erhalten wurde.
  2. Übereinstimmende Lösung
    Der Client setzt diesen iterativen Prozess fort, bis er eine Zahl findet, die, wenn sie mit dem bereitgestellten Salz kombiniert wird, einen SHA-Hash erzeugt, der mit der vom Server bereitgestellten Herausforderung übereinstimmt.

Lösungsverifizierung

  1. Herausforderungsvalidierung
    Der Server berechnet die Herausforderung neu, indem er das erhaltene Salz und die Nummer des Clients konkateniert und den SHA-Hash-Algorithmus anwendet. Er vergleicht dann diese berechnete Herausforderung mit der vom Client erhaltenen, um ihre Gleichheit zu bestätigen.

  2. Signaturvalidierung
    Der Server rekonstruiert die Signatur basierend auf der Herausforderung und dem HMAC-Schlüssel. Er vergleicht diese rekonstruierte Signatur mit der vom Benutzer eingereichten, um die Richtigkeit der Lösung zu authentifizieren.

  3. Verifikationsprüfung
    Die Anfrage wird nur dann als verifiziert betrachtet, wenn beide Validierungsprüfungen (Herausforderung und Signatur) erfolgreich sind. Bei Erfolg gewährt der Server Zugriff oder verarbeitet die Benutzeranfrage; andernfalls verweigert er den Zugriff oder behandelt die Anfrage als potenziell bösartig.

Konsultieren Sie den Server-Integrationsleitfaden für Beispiele und Implementierungsdetails.