Was ist Hashing?
Startseite
Artikel
Was ist Hashing?

Was ist Hashing?

Fortgeschritten
Veröffentlicht Jul 29, 2019Aktualisiert Jan 31, 2023
7m

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. Wir können diese als Starke Kollisionsresistenz, Einwegfunktion und Schwache Kollisionsresistenz beschreiben.

Bevor wir √ľber jede Eigenschaft diskutieren, lass uns die Logik in drei kurzen S√§tzen zusammenfassen.

  • Starke Kollisionsresistenz:¬†es ist nicht m√∂glich, zwei verschiedene Eingabewerte zu finden, die den gleichen Hash wie der Ausgabewert erzeugen.

  • Einwegfunktion:¬†es ist nicht m√∂glich, die Hash-Funktion ‚Äúzur√ľckzusetzen‚ÄĚ (den Eingabewert von einem bestimmten Ausgabewert zu finden).

  • Schwache Kollisionsresistenz:¬†es ist nicht m√∂glich, irgendeinen zweiten Eingabewert zu finden, der mit einem bestimmten Eingabewert kollidiert.


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.


Einwegfunktion

Das Eigentum der Vorbildresistenz ist mit dem Konzept der Einwegfunktionen 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.


Zweiter Vorbildwiderstand

Um es zu vereinfachen, können wir sagen, dass der zweite Vorbildwiderstand irgendwo zwischen den anderen beiden Eigenschaften liegt. Ein zweites Vorbild-Angriff tritt auf, wenn jemand eine spezifische Eingabe finden kann, die die gleiche Ausgabe eines anderen Input erzeugt, den sie bereits kennen.

Mit anderen Worten: Ein zweites Vorbild-Angriff beinhaltet die Suche nach einer Kollision, aber anstatt nach zwei zufälligen Eingaben zu suchen, die den gleichen Hash erzeugen, suchen sie nach einer Eingabe, die denselben Hash erzeugt, der von einem anderen bestimmten Eingabewert erzeugt wurde.

Daher ist jede Hash-Funktion, die gegen Kollisionen resistent ist, auch gegen Zweitpr√§bild-Angriffe resistent, da letztere immer eine Kollision implizieren wird. Allerdings kann man noch einen Vorbild-Angriff auf eine kollisionsbest√§ndige Funktion ausf√ľhren, da es bedeutet, eine einzige Eingabe aus einer einzigen Ausgabe zu finden.


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.

Beitrag teilen
Eröffne ein Konto
Setze dein Wissen in die Praxis um und eröffne noch heute ein Binance-Konto.