Blockchain einfach erklärt
  • Start
  • Kryptowährungen
  • Blockchain Technologien
  • Glossar

Hash

29/8/2016

1 Kommentar

 
Mathematisch ausgedrückt, ist eine Hashfunktion eine Funktion, die gewisse Eingangsdaten beliebiger Länge durch Verschlüsselung auf eine Zeichenfolge mit fester Länge abbildet.
Man kann sich ein Hash aber auch als eine Art Fingerabdruck vorstellen. Wie der Fingerabdruck zu einer bestimmten Person gehört, gehört der Hash zu einem ganz bestimmten Datensatz. Ein Hash beweist das Vorhandensein eines Dokuments zu einem bestimmten Zeitpunkt. Da in einer Blockchain nur wenig Speicherplatz zur Verfügung steht, begnügt man sich meistens mit einem kostengünstigen Hash. Man kann sogar sagen, dass eine Blockchain praktisch nur aus Hashes besteht.
Beispiel einer Hashfunktion ist der SHA-256 Algorithmus (Secure Hash Algorithm). Der resultierende Hash kann hier ausprobiert werden. Unten derjenige für "ich heisse Reto".
Bild
Für SHA-256 werden 512 Bits gebraucht. Dazu wird dem Computer zuerst angegeben aus wie vielen Bits die zu verschlüsselnde Nachricht besteht. Mein Vorname "Reto" wird im binären System durch 32 Bits abgebildet, jeder Buchstabe entspricht 8 Bits oder 1 Byte (siehe oberste Zeile unten). Die Zahl 32 sieht im binären System folgendermassen aus:

32 = 100000 = 1x32 + 0x16 + 0x8 + 0x4 + 0x2 + 0x1
​
Diese Zahl steht am Ende des Codes (siehe unten). Die nicht gebrauchten Stellen zwischen binärem Text und dessen Längenangabe werden mit Nullen aufgefüllt, um schliesslich auf die 512 Bits zu gelangen (siehe unten). Die 1 zu Beginn der zweiten Zeile gibt an, dass ab dort nicht mehr die ASCII Tabelle verwendet wird, sonst würde 1OOOOO = 20 statt 32 interpretiert.  
Bild
Dies ist der Input für die SHA-256 Hashfunktion. Der Output besteht dann aus 256 Bits. Der Hash in der obigen Grafik sieht optisch kürzer aus, was aber auf die hexadezimale Schreibweise zurückzuführen ist. 

Anwendung 1: Passwörter

Meistgebrauchte Anwendung von Hashes ist die Passworteingabe. Die Speicherung von Passwörtern auf der Datenbank einer Internetseite ist keine gute Idee. Oft wird deshalb nicht das Passwort selber, sondern nur dessen Hash gespeichert. 

​Beispiel: Falls ich das Passwort "blockchain-nachrichten" benutzen würde, ergibt der Hash: 
Bild
Dieser wird in die Datenbank geschrieben. Um das Passwort bei der Anmeldung zu prüfen, wird erneut der Hash generiert und mit dem gespeicherten verglichen. 
Viele Leute benutzen jedoch weiterhin einfache Passwörter, an die sie sich erinnern können. Für die gibt es aber ein Wörterbuch mit tabellierten Hash-Werten, womit der Hacker wieder einfaches Spiel hat. Deshalb werden heutzutage ein paar zufällige Zeichen an das Passwort angehängt (Salt genannt), bevor der Hash berechnet wird. Hier 2?5tq:
Bild
Die Internetseite generiert nun ein sichereres Passwort. Der Zusatz muss nicht geschützt werden, da er nur dazu dient, dass ein Hacker kein Hash-Wörterbuch mehr benutzen kann.
In der Datenbank der Internetseite steht nun:

3231835c22e0ae528dc92da96b8de2afec4aaca6844d39bc37a571a3a44be3e1
2?5tq

Als zusätzliche Sicherheit kann die Hashfunktion mehrere Male durchlaufen werden. 
 
Anwendung 2: Sicherung der Bitcoin-Blockchain (Proof-of-Work)
​
Jeder kann sich an der Sicherung der Bitcoin Blockchain beteiligen. Dazu muss er lediglich eine Software auf seinen Server runterladen und sicherstellen, dass er einen leistungsfähigen Prozessor sowie eine schnelle Internetverbindung (Bandbreite) hat. Die Software lädt die Blockchain auf den Server runter und führt gewisse Funktionen aus. Für die geleistete Arbeit dürfen sie an einer Lotterie teilnehmen. Diese läuft wie folgt ab:
​
Zuerst wird der Kopfzeilen-Hash des Blocks generiert.
Bild
Nun gilt es dem Blockinhalt Zahlen (Nonce) anzufügen, die einen Hash mit einer Null zu Beginn generieren. Wenn die Zahl 1 an den Text angehängt wird, resultiert per Zufall bereits ein Hash mit einer 0 am Anfang. 
Bild
Nun wird jeweils um 1 erhöht, bis ein Hash mit 2 Nullen gefunden wird. Dies geschieht erst nach 394 Versuchen beim Anhängen der Zahl 395. 
Bild
Als Bitcoin 2009 startete, musste ein Hash gefunden werden, der mit 32 Nullen begann:
Bild
Der hexadezimale Wert beginnt mit weniger Nullen, da dies ja einem kompakteren Format entspricht. Es ist kein Zufall, dass im hexadezimalen System lauter F stehen, da im binären System nach den Nullen die grösstmögliche Zahl steht (224x1) und F im hexadezimalen System auch für den höchsten Wert steht. 

0 und 1 entsprechen Kopf und Zahl bei einer Münze. Die Wahrscheinlichkeit, bei einem Münzwurf 32x Kopf (=0) zu werfen, beträgt: 

O,5^32 =   O,OOOOOOOOO2325581 oder 1:43OOOOOOOO. 

Im Durchschnitt wurde zu Beginn von Bitcoin folglich nach 4,3 Mrd. Versuchen in der Lotterie gewonnen. Schauen wir mal, wie viele Nullen heute erforderlich sind. Dazu gehen wir auf blockchain.info:
Bild
Da der Hash im hexadezimalen Format drin steht, muss er im Konverter ins binäre umgewandelt werden:
Bild
Nun können die Nullen abgezählt werden. Da sich heute viele Computer an der Sicherung beteiligen und die Leistung der Prozessoren seit 2009 gestiegen ist, werden im Schnitt bereits 73 Nullen gefordert, damit immer noch nur all 10 Minuten ein Bitcoin Block entsteht.
 
O,5^73 =    O,OOOOOOOOOOOOOOOOOOOOO4235165 oder 1:944473296573929OOOOOOO
 
Im Durchschnitt wird heute nach 9,4 Trilliarden Versuchen in der Lotterie gewonnen. ​
​
Da Zahlen wie eine Trilliarde schwierig zu erfassen sind, wird der sogenannte Schwierigkeitsgrad (englisch Difficulty) definiert:

Difficulty = benötigte Versuche heute / benötigte Versuche bei Start von Bitcoin 2009

9,4 Trilliarden / 4,3 Milliarden = 219 644 952 691
Anwendung 3: Light Wallets

​
Die Grösse der Blockchain beträgt bereits ca. 85 GB. Dies ist zu viel für normale PCs oder Smartphones. Deshalb laden Light Wallets nur eine abgespeckte Version herunter, die keine Transaktionen, sondern nur die Kopfzeilen der Blockchain herunterladen. Die fehlenden Daten können dann bei den Minern angefordert werden. Die Hashes dienen als Beweismittel, dass der Miner die korrekten Daten liefert. Um möglichst wenig Beweis-Hashes zu brauchen, werden diese in einem sogenannten Merkle Tree geordnet (untere Grafik). 
Beispiel: Ein Smartphone Wallet fordert Transaktion Tx2 von einem Miner an. Der Root-Hash (Root für Wurzel des umgekehrten Baumes) ist in der Kopfzeile verankert. Führen die Hashes im Endeffekt zum Root-Hash, wurden keine Daten manipuliert. Hash2 kann das Wallet selber aus der angeforderten Transaktion Tx2 berechnen. Bei der oberen Anordnung werden also noch Hash1, Hash3 und Hash4 gebraucht, um den Root-Hash zu berechnen. Bei der unteren Anordnung genügen jedoch Hash1 und Hash34, da aus Hash1 und Hash2 Hash12 berechnet werden kann. Ein Hash wird über den Merkle Tree eingespart. Bei mehreren tausend Transaktionen pro Block ist die Einsparung immens. 
Bild
Bild
1 Kommentar

    Archiv

    April 2017
    Januar 2017
    Dezember 2016
    November 2016
    September 2016
    August 2016

    Kategorien

    Alle
    ASCII
    Bitcoin Blockchain
    Colored Coins
    DASH
    Definition Bitcoin
    Elliptic Curve (ECC)
    Ethereum Blockchain
    Hash
    Monero
    Skalierbarkeit
    Wallet
    Zahlensysteme
    Zcash

Disclaimer:
Bei den Informationen auf dieser Seite handelt es sich um keine Empfehlungen. Zur Verständlichkeit werden gewisse Sachverhalte stark vereinfacht dargestellt. Jeder Besucher muss für sich selber entscheiden, wofür er diese Informationen verwendet.
Copyright © 2017, www.blockchain-nachrichten.com
Alle publizierten Informationen bekommen über die Steemit Blockchain ihren Hash / "FIngerabdruck".


Copyright © 2016
  • Start
  • Kryptowährungen
  • Blockchain Technologien
  • Glossar