Was ist Hashing?

Teilen
Copied to clipboard!
Was ist Hashing?
Diesen Artikel anhören
00:00 / 00:00

Hashing bezieht sich auf den Prozess der Erzeugung einer festen Größe aus einer Eingabe von Variablen. Dies geschieht durch die Verwendung mathematischer Formeln, die als Hash-Funktionen bekannt sind (implementiert als Hashing Algorithmen). 

Obwohl nicht alle Hash-Funktionen die Verwendung von Kryptographiebeinhalten, sind die sogenannten kryptographischen Hash-Funktionen im Kern von Kryptographie-Währungen. Dank dieser Systeme können Blockchains und andere Systeme bedeutsame Stufen von Datenintegrität und Sicherheit erreichen.

Sowohl konventionelle als auch kryptographische Hash-Funktionen sind deterministisch. Deterministisch zu sein bedeutet, dass der Hashing-Algorithmus immer dieselbe Ausgabe erzeugt (auch Digest oder Hash genannt), solange sich die Eingabe nicht ändert.

Typischerweise werden die Hashing-Algorithmen von Kryptographien als Einwegfunktionen konzipiert, was bedeutet, dass sie ohne große Mengen an Rechenzeit und Ressourcen nicht leicht zurück geleitet werden können. Mit anderen Worten, es ist ziemlich einfach, die Ausgabe aus der Eingabe zu erstellen, aber relativ schwierig in die entgegengesetzte Richtung (um die Eingabe allein aus der Ausgabe zu erzeugen). Allgemein gesprochen, je schwieriger es ist, die Eingabe zu finden, desto sicherer wird der Hashing-Algorithmus als sein.


Wie funktioniert ein Hash?

Verschiedene Hash-Funktionen erzeugen die Ausgabe in unterschiedlichen Größen, aber die mögliche Ausgabegröße für jeden Hashing-Algorithmus ist immer konstant. So kann der SHA-256-Algorithmus nur eine Ausgabe von 256 Bit erzeugen, während der SHA-1 immer eine 160-Bit-Ausgabe erzeugt.

Um dies zu veranschaulichen, lassen wir die Wörter “Binance” und “Binnce” durch den SHA-256 Hashing-Algorithmus (der in Bitcoin verwendeten) ausführen.

SHA-256

Eingabe

Ausgabe (256 Bit)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe4044dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Beachte, dass eine kleine Änderung (die Änderung des ersten Buchstabes) zu einem völlig anderen Hash-Wert führte. Da wir jedoch SHA-256 verwenden, werden die Ausgänge immer eine feste Größe von 256 Bit (oder 64 Zeichen) haben - unabhängig von der Eingabegröße. Außerdem spielt es’keine Rolle, wie oft wir die beiden Wörter durch den Algorithmus ausführen, die Ausgabe bleibt konstant.

Wenn wir hingegen die gleichen Eingaben durch den SHA-1 Hashing-Algorithmus ausführen, hätten wir folgende Ergebnisse:

SHA-1

Eingabe

Ausgabe (160 Bit)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Das Akronym SHA steht für "Secure Hash Algorithmen". Es bezieht sich auf eine Reihe von kryptographischen Hash-Funktionen, die die SHA-0- und SHA-1-Algorithmen zusammen mit den Algorithmen SHA-2- und SHA-3 umfassen. Der SHA-256 Algorithmus ist Teil der SHA-2 Gruppe, zusammen mit SHA-512 und anderen Varianten. Derzeit werden nur SHA-2 und SHA-3 als sicher angesehen.


Warum ist das wichtig?

Die Funktionsweise der herkömmlichen Hash-Funktionen hat eine breite Palette von Anwendungsszenarien, darunter fallen Datenbanksuchen, umfangreiche Dateianalysen und Datenmanagement. Andererseits werden kryptographische Hash-Funktionen in Informations-Security-Anwendungen, wie z. B. der Nachrichtenauthentifizierung und im Bereich der digitalen Fingerabdrücke umfassend genutzt. Bei Bitcoin sind kryptographische Hash-Funktionen ein wesentlicher Bestandteil des mining Prozesses und spielen auch eine Rolle bei der Generierung neuer Adressen und Schlüssel.

Die wirkliche Leistung des Hashings wird bei der Benutzung von enormen Informationsmengen deutlich. So kann man beispielsweise eine große Datei oder einen Datensatz durch eine Hash-Funktion ausführen und dann ihre Ausgabe verwenden, um die Genauigkeit und Integrität der Daten schnell zu überprüfen. Dies ist möglich, weil die Hash-Funktionen deterministisch sind: Die Eingabe führt immer zu einer vereinfachten, kondensierten Ausgabe (Hash). Eine solche Technik macht die Speicherung und “ das Merken” von großen Datenmengen überflüssig.

Das Hashing ist im Zusammenhang mit der Blockchain-Technologie besonders nützlich. Die Bitcoin Blockchain hat mehrere Operationen, die das Hashing beinhalten.Die meisten davon beim minen. Tatsächlich vertrauen fast alle kryptographischen Protokolle darauf, dass sie die Transaktionsgruppen in Blöcken verknüpfen und auch kryptographische Verbindungen zwischen jedem Block herstellen, was eine Blockchain bildet.


Kryptografische Hash-Funktionen

Eine Hash-Funktion, die kryptographische Techniken einsetzt, wird als kryptographische Hash-Funktion definiert. Generell erfordert die Auflösung einer kryptographischen Hash-Funktion eine Vielzahl von brute-force Angriffen. Falls jemand eine kryptographische Hash-Funktion zurückleiten möchte, ginge dies nur durch Vermuten der Eingabe, bis die entsprechende Ausgabe erzeugt wurde. Es gibt jedoch auch die Möglichkeit, dass verschiedene Eingaben die exakt gleiche Ausgabe erzeugen, in diesem Fall tritt eine “Kollision” auf.

Technisch muss eine kryptographische Hash-Funktion drei Eigenschaften aufweisen, um als sicher angesehen werden. We may describe those as collision resistance, preimage resistance, and second preimage resistance.

Bevor wir über jede Eigenschaft diskutieren, lass uns die Logik in drei kurzen Sätzen zusammenfassen.

  • Collision resistance: infeasible to find any two distinct inputs that produce the same hash as output.

  • Preimage resistance: infeasible to “revert” the hash function (find the input from a given output).

  • Second-preimage resistance: infeasible to find any second input that collides with a specified input.


Kollisionsvermeidung

Wie erwähnt, kommt eine Kollision vor, wenn verschiedene Eingaben den gleichen Hash erzeugen. So wird eine Hash-Funktion als Kollisionserresistent angesehen, bis jemand eine Kollision findet. Beachte, dass es immer Kollisionen für jede Hash-Funktion gibt, da die möglichen Eingaben unendlich sind, während die möglichen Ausgaben endlos sind.

Anders ausgedrückt, ist eine Hash-Funktion kollisionsbeständig, wenn die Möglichkeit einer Kollision so niedrig ist, dass sie Millionen von Jahren an Kalkulationen erfordern würde. Obwohl es keine kollisionsfreien Hash-Funktionen gibt, sind einige von ihnen stark genug, um als resistent zu gelten (z.B. SHA-256).

Unter den verschiedenen SHA-Algorithmen sind SHA-0- und SHA-1 nicht mehr sicher, weil Kollisionen gefunden wurden. Derzeit werden SHA-2 und SHA-3 als widerstandsfähig gegen Kollisionen betrachtet.


Preimage resistance

Das Eigentum der Vorbildresistenz ist mit dem Konzept der Einbahnfunktionen verbunden. Eine Hash-Funktion wird als preimage-resistent angesehen, wenn es eine sehr geringe Wahrscheinlichkeit gibt, dass jemand die Eingabe findet, die eine bestimmte Ausgabe generiert.

Beachte, dass sich diese Eigenschaft von der vorherigen unterscheidet, da ein Angreifer versuchen könnte, die Eingabe zu erraten, indem er eine bestimmte Ausgabe betrachtet. Eine Kollision hingegen tritt auf, wenn jemand zwei verschiedene Eingaben findet, die die gleiche Ausgabe erzeugen, aber es ist nicht egal welche Eingaben verwendet wurden.

Die Eigenschaft von Vorbildresistenz ist für den Schutz von Daten wertvoll, da ein einfacher Hash einer Nachricht seine Richtigkeit nachweisen kann, ohne die Informationen offen zu legen. In der Praxis speichern und verwenden viele Dienstleister und Webanwendungen Hashes, die aus Passwörtern erzeugt werden, anstatt die Passwörter in Klartext.


Second-preimage resistance

To simplify, we may say that the second-preimage resistance is somewhere in between the other two properties. A second-preimage attack occurs when someone is able to find a specific input that generates the same output of another input that they already know.

In other words, a second-preimage attack involves finding a collision, but instead of searching for two random inputs that generate the same hash, they search for an input that generates the same hash that was generated by another specific input.

Daher ist jede Hash-Funktion, die gegen Kollisionen resistent ist, auch gegen Zweitpräbild-Angriffe resistent, da letztere immer eine Kollision implizieren wird. However, one can still perform a preimage attack on a collision-resistant function as it implies finding a single input from a single output.


Mining

Es gibt viele Schritte beim Bitcoin mining, die Hash-Funktionen beinhalten, wie z. B. die Verknüpfung von Transaktionseingaben und Ausgaben und das Hashing von Transaktionen innerhalb eines Blocks, um einen Merkle Tree zubilden. Aber einer der Hauptgründe, warum die Bitcoin Blockchain sicher ist ist, ist die Tatsache, dass Miner eine Vielzahl von Hashing-Operationen durchführen müssen, um schließlich eine gültige Lösung für den nächsten Block zu finden.

Speziell muss ein Miner mehrere verschiedene Eingaben versuchen, wenn er einen Hash-Wert für seinen Block erstellt. Im Wesentlichen können sie ihren Block nur validieren, wenn sie einen Ausgabehash erzeugen, der mit einer bestimmten Anzahl von Nullen beginnt. Die Anzahl der Nullen bestimmt die Mining Difficulty. Diese variiert je nach der Hash Rate, die dem Netzwerk zugeteilt ist.

Die Hash-Rate stellt dar, wie viel Computer Energie aktuell in Bitcoin-Mining investiert wird. Wenn die Hash-Rate des Netzwerks steigt, wird das Bitcoin-Protokoll automatisch die Mining Difficulty anpassen, so dass die durchschnittliche Zeit, die für das Minen eines Blocks benötigt wird, bei circa 10 Minuten bleibt. Wenn mehrere Miner sich entscheiden, das Mining stoppen, würde die Hash-Rate deutlich sinken und die Mining-Difficulty würde angepasst werden. Dadurch wäre es einfacher zu Minen (bis die durchschnittliche Blockzeit wieder bei 10 Minuten ist).

Beachte, dass Miner keine Kollisionen finden müssen, da es mehrere Hashes gibt, die sie als gültige Ausgabe generieren können (beginnend mit einer bestimmten Anzahl von Nullen). Es gibt also mehrere mögliche Lösungen für einen bestimmten Block, aber Miner müssen nur eine davon finden. Diese wird durch die Mining-Difficulty bestimmt. 

Da das Mining eine kostenintensive Aufgabe ist, haben Miner keinen Grund zu betrügen, da es zu erheblichen finanziellen Verlusten führen würde. Je mehr Miner einer Blockchain beitreten, desto größer und stärker wird sie.


Gedanke zum Schluss

Es besteht kein Zweifel, dass Hash-Funktionen wesentliche Werkzeuge in der Informatik sind, insbesondere wenn es um riesige Datenmengen geht. Wenn sie mit Kryptographie kombiniert werden, können Hashing-Algorithmen ziemlich vielseitig sein, was Sicherheit auf verschiedene Weise bietet. So sind kryptographische Hash-Funktionen für fast alle kryptographischen Netzwerke von entscheidender Bedeutung, daher ist das Verständnis ihrer Eigenschaften und Arbeitsmechanismen für jeden, der an der Blockchain-Technologie interessiert ist, sicherlich hilfreich.

Loading