05 Grundlagen der Kryptowährung Flashcards
Grundlagen der Kryptographie (Bitcoin): Vorgehensweise Key Generierung + Bitcoin Adresse
Kryptopgraphische Hashfunktion
mathematische Funktion, um die Integrität von Daten zu verifizieren, indem identische Daten in einen eindeutigen, repräsentativen Code mit fester Größe umgewandelt werden
Input: String Datentypen beliebiger Länge (Nachricht N)
Output: String-Typ fest definierter Länge (Hash H)
Kryptopgraphische Hashfunktion: 4 Eigenschaften
-
Einweg: Hash ist nur aus einer Richtung erzeugbar und es ist unmöglich in umgekehrte Richtung von H auf den Bitstring N duch hash(N)=H zu schließen
Die erfüllte Einweg-Forderung unterscheidet eine Einweg-Hashfunktion von den gewöhnlichen Hashfunktionen und klassifiziert sie als kryptographisch -
Stark Kollisionsresistent: Der Hashwert ist eindeutig, es ist nicht effizient möglich zwei Bitstrings N1 und N2 zu finden, die denselben Hashwert ergeben, so dass hash(N1)=hash(N2) gilt
Eine kleine Änderung an N hat eine signifikante Änderung in H zur Folge. Dies soll verhindern, dass durch geschicktes Ausprobieren auf den Inhalt von N geschlussfolgert werden kann -
Leichte Berechnung: Die Hashfunktion ist nicht kompliziert und ihre Berechnung somit schnell machbar. Dies wird durch die Verwendung einfach zu implementierender Operationen ermöglicht.
MD5 und SHA Hasfunktionen nutzen lediglich XOR-Verknüpfungen sowie Rotation und Verschiebung von Bitstrings - Beliebig lange Nachricht: Die Hashfunktion lässt sich auf beliebig lange Nachrichten anwenden. Die String-Länge des Output ist dabei fest und unabhänging von der String-Länge des Input.
Konstruktion einer Bitcoin Transaktion T
- Transaktion T wird erstellt
- Eine Teilmenge M der Transaktion T (Transaktions-ID, Transaktionsinstruktionen, etc) wird ausgewählt
- Der Hash H von M mit der Hash-Funktion SHA-256 berechnet: H=sha256(M)
- Eine Signatur S wird erstellt, indem der Hash H mit dem Private Key des Sender verschlüsselt wird: S = encrypt(H, Kpriv)
- Die Signatur S wird mit dem Public Key des Senders und den Informationen der Transaktion T im Bitcoin Netzwerk verteilt
Verifizieren einer Bitcoin Transaktion T
- Eine Teilmenge M der Informationen von T (Transaktions-ID, Transaktionsinstruktionen, etc) wird ausgewählt
- der Hash H von M mit der Hash-Funktion SHA-256 wird berechnet: H=sha256(M)
- Die Signatur S des Senders wird mit dem Public Key Kpub entschlüsselt: H’=decrypt(S, Kpub)
- H und H’ werden verglichen, wenn beide übereinstimmen ist die Signatur valida, folglich auch die Transaktion
Folglich kann das Bitcoin-Netzwerk durch die digitale Signatur überprüfen, ob die Transaktion auch wirklich von der Person getätigt wurde, die sie sagt sie ist (Proof of Ownership)