Proof of Work

March 29th, 2018
Inhaltsverzeichnis

Proof of Work (auch cryptographic puzzle, zu Deutsch: Arbeitsnachweis, kurz: PoW) wird in der Informatik verwendet um z. B. Denial-of-Service-Attacken zu verhindern.

Unter Denial-of-Service-Attacken versteht man den automatisierten, übermäßigen Gebrauch eines Services. Eine Website kann z. B. von einem Botnetz angegriffen werden indem das Netz unaufhörlich Anfragen an die Website schickt. Der Server auf dem die Website läuft wird daraufhin überlastet und kann auf Anfragen normaler Nutzer nicht mehr antworten.

Verhindert werden kann eine solche Attacke indem dem Nutzer (bzw. dem Computer des Nutzers) eines Dienstes eine mittelschwere Aufgabe gestellt wird, welche er lösen muss bevor er den Dienst nutzen kann. Der Computer errechnet also die Lösung der Aufgabe und sendet diese Lösung wieder an den Dienst. Dieser verifiziert ob das Ergebnis korrekt ist. Wenn ja, darf der Nutzer den Dienst nutzen.

Die Idee hinter Proof of Work

Wie schon beschrieben, muss der Computer eines Service-Nutzers, bevor er den Service nutzen kann eine Aufgabe lösen. Man könnte dies auch als Benutzungsentgeld bezeichnen.

Das Ergebnis der Aufgabe zu berechnen ist, für den Computer des Nutzers, schwieriger als das Abgleichen des Ergebnisses für den Dienst. Dadurch entsteht der Effekt, dass die Anfrage des Nutzers um einen kurzen Zeitraum verzögert wird (da er ja erst die Aufgabe lösen muss). Der Dienst wird für diesen Zeitraum entlastet, da er keine weiteren Informationen an den Nutzer ausliefern muss.

Beispiel: Denial-of-Service
Sagen wir ein Angreifer möchte eine Webseite überlasten indem er hunderte Anfragen pro Minute an die Webseite sendet.

Wenn die Webseite einen Proof of Work Mechanismus verwendet muss der Angreifer vor jeder Anfrage eine Aufgabe lösen. Sagen wir das Lösen der Anfrage dauert 2 Sekunden. Dann kann der Angreifer maximal 30 Anfragen pro Minute an die Webseite schicken.

Dieser Fall ist zwar etwas konstruiert, verdeutlicht jedoch die Funktionsweise

In der Kryptographie gibt es einige Probleme, deren Lösung länger benötigt als die Überprüfung der Richtigkeit des Ergebnisses. Beispiele hierfür sind:

  • die Lösung von Differentialgleichungen
  • Brute-Force Attacken auf abgeschwächte kryptografische Primitive (z. B. Blockchiffren, oder Hashfunktionen)
  • Berechnungen auf große Matrizen

Proof of Work in Kryptowährungen

In vielen Kryptowährungen, wie Bitcoin, Ethereum und vielen anderen, wird das Konzept Proof of Work verwendet um neue Blöcke in die Blockchain mit aufzunehmen. Damit ein Block in die Blockchain mit aufgenommen werden kann, muss dieser erst geschürft werden. Mit dem Schürfen von z. B. Bitcoins ist das Lösen der Rechenaufgabe gemeint, der Proof of Work.

Hierbei muss der Miner eine Nonce errechnen die mit dem eigentlichen Inhalt des Blocks gehasht wird. Wenn im Ergebnishash die ersten x Bits 0 sind ist die Aufgabe gelöst.

Beispiel - Errechnung der Nonce

// Beispiel
Hello, world!0    => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
Hello, world!1    => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
Hello, world!2    => ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7
...
Hello, world!4248 => 6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965
Hello, world!4249 => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6
Hello, world!4250 => 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9

Sagen wir der Inhalt der Transaktion wäre Hello World!, der verwendete Hashing Algorithmus sha256 und die Aufgabe bestände darin, einen Hash zu errechnen bei dem die ersten 4 Bits 0 sind.

In diesem Fall würde der Computer hergehen und den Inhalt Hello World! so lange mit einer Nonce versehen bis das Ergebnis 4 Nullen am Anfang hätte. Diese Variante entspräche der oben erwähnten Brute-Force Attacke auf abgeschwächte kryptografische Primitive.

Der Computer würde diese Aufgabe nach 4250 Wiederholungen gelöst haben: Hello World!4250 ergibt wenn man den sha256 Hash daraus bildet einen Hash mit 4 Nullen am Anfang.

Auszug aus - Nonce

In der Kryptografie bezeichnet eine Nonce eine Nummer, die nur einmal für einen bestimmten Zweck verwendet wird. Nonce ist die Abkürzung für used only once oder auch number used once.

Der Arbeitsnachweis schützt das Netzwerk davor, dass einzelne Nutzer keine Transaktionen vorziehen oder in großer Menge in das Netzwerk einspielen können und somit die Blockchain mit Transaktionen vollzuspammen.

Mein Name ist Tobias. Ich beschäftige mich beruflich wie auch privat mit allerlei technischen Dingen und interessiere und investiere nebenbei in Kryptowährungen. Wenn du Fragen hast, zögere nicht mir zu schreiben!