Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Dies ist Teil 3 meiner Blog-Serie über Kryptogeld. Den ersten, einführenden Teil finden Sie hier. Der zweite Teil über das sogenannte Schürfen von Bitcoin ist hier zu finden.

Kurze Wiederholung – Bitcoin = direkte elektronische Transaktionen ohne Mittelsperson

Im ersten Teil habe ich die Hauptidee hinter dem Bitcoin-Protokoll erläutert, das elektronische Peer-to-Peer-Transaktionen ohne eine Mittelsperson ermöglicht. Kurz zusammengefasst funktioniert das Verfahren folgendermaßen:

  1. Ich besitze eine bestimmte Summe Bitcoin. Dies kann öffentlich überprüft werden, da jede Bitcoin-Transaktion seit der allerersten (dem sogenannten Genesis Block) in ein öffentliches Kassenbuch eingetragen wird, der Blockchain (vormals auch auf Deutsch Blockkette genannt). Deshalb kann ich nicht vorgeben, mehr zu besitzen, als ich habe.
  2. Ich kann dann eine bestimmte Bitcoin-Summe an einen Empfänger senden, und ich kann dabei nicht schummeln, da die Transaktion öffentlich an alle Knoten im Netzwerk übermittelt wird.
  3. Ich könnte natürlich gleichzeitig mehr Bitcoins versenden, als ich besitze, aber das Netzwerk entscheidet durch eine öffentliche Abstimmung (wobei tatsächlich ein kompliziertes mathematisches Problem gelöst wird), dem sogenannten Mining oder Schürfen, welche Transaktionen gültig sind und welche nicht.
  4. Die Transaktionen, die als gültig gewählt wurden, werden in die Blockchain eingetragen und sind endgültig. Und wenn mein nachweisliches Bitcoin-Guthaben erschöpft ist, kann ich nicht mehr ausgeben, als ich besitze, da jeder und jede das in der Blockchain nachprüfen kann.

Die zwei Schlüsselelemente im Bitcoin-Prozess sind das öffentliche Kassenbuch, die Blockchain und das Abstimmverfahren, das Schürfen (Mining), das im Wesentlichen daraus besteht, dass die Knoten des Bitcoin-Netzwerks ein komplexes mathematisches Problem lösen. Ich habe Mining im vorangegangenen Blog-Beitrag erläutert, den Sie hier finden. Sehen wir uns nun das Kassenbuch, die Blockchain genauer an.

Die Blockchain (vormals auch Blockkette)

Die Blockchain ist, wie schon mehrmals erwähnt, das öffentliche Kassenbuch mit allen Bitcoin-Transaktionen seit der ganz ersten Transaktion, dem Genesis-Block. Alle aktiven Knoten im Bitcoin-Netzwerk haben eine Kopie der Blockchain. Jedes Mal, wenn ein neuer Block via Schürfen entdeckt wird, wird er an die Blockchain angehängt, wie schon der Name andeutet. Die Blockchain ist also nichts anderes als eine sehr lange Liste mit Bitcoin-Transaktionen.

Grob umrissen und ohne Crypto-Lingo enthält ein Block die folgenden Hauptelementen (plus ein paar weitere, das sind aber hier nicht relevante technische Details):

  • Einen Zeitstempel
  • Einen Verweis auf den folgenden Block — deshalb die Bezeichnung „Kette“
  • Die Transaktionen, die mit diesem Block bestätigt und damit endgültig abgeschlossen und öffentlich bekanntgegeben werden
  • Das komplexe mathematische Problem, das von den Schürfern zur Auffindung des nächsten Blocks gelöst werden muss

Auf die Blockchain kann man öffentlich über eine lokale API, d. h. einen Bitcoin-Client, zugreifen, oder auch via Webbrowser auf Blockchain.info, wie unten abgebildet.

Wie kann ich zwei gleiche schlüsselvonenander unterscheiden
Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Blockchain.info

In der webbasierten API sehen Sie die Höhe der Kette, wie die Blocknummer genannt wird, das Alter (den Zeitstempel), die Anzahl und den Gesamtwert der gesendeten Transaktionen im jeweiligen Block, den Namen des Computers (oder Mining-Pools), der das jeweilige mathematische Problem gelöst hat (also den Block geschürft hat) und die Speichergröße des Blocks. Darunter ist links eine Liste der neuesten Transaktionen sowie ein Suchfeld rechts, wo Sie nach bestimmten Transaktionen suchen können, und ein News-Feed.

Wenn Sie auf einen bestimmten Block klicken (also auf die Nummer des Blocks in der Spalte „Höhe“), werden detaillierte Informationen über den Block und die Transaktionen darin angezeigt, wie in der Abbildung unten illustriert. Die folgenden Abbildungen stammen von der englischsprachigen Schnittstelle von Blockchain.info, die Schnittstelle ist jedoch auch auf Deutsch verfügbar. Wenn Sie auf die eingebettete Karte klicken, können Sie sogar sehen, woher die Transaktionen stammen. Die Karte ist jedoch mit Vorsicht zu interpretieren, da viele BTC-Benutzer aus den verschiedensten Gründen VPNs benutzen, um ihren tatsächlichen Standort zu verbergen.

Wie kann ich zwei gleiche schlüsselvonenander unterscheiden
Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Detaillierte Block-Informationen

Wenn Sie weiter nach unten scrollen, wird eine Liste der Transaktionen angezeigt, wie unten illustriert. Alle Transaktionen sind für den Laien etwas ungewohnt mit einem sogenannten Hash-Wert nummeriert. Die erste Transaktion „647b…“ zeigt die Belohnung für den Miner, der den Block gefunden hat, in diesem Fall 25 BTC. Die Belohnung ist daran zu erkennen, dass es bei dieser Transaktion keinen Eingang gibt, d. h. die Bitcoins wurden geschürft.

Wie kann ich zwei gleiche schlüsselvonenander unterscheiden
Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Transaktionen im Block

Die anderen Transaktionen zeigen Ein- und Ausgänge sowie die BTC-Menge, die übermittelt wurde. Die Ein- und Ausgänge sind mit Bitcoin-Adressen gekennzeichnet, die ebenfalls in Form von Hash-Werten kodiert werden. Bitcoin-Adressen starten im Allgemeinen mit „1“, in manchen Fällen mit „3“. Die Adressen haben eine ähnliche Funktion wie Kontonummern, sind jedoch nicht mit fixen Kontonummern gleichzusetzen, die sich im Allgemeinen nicht ändern! Bevor ich jedoch die restlichen Eigenschaften der Blockchain erklären kann, muss ich zuerst die folgende Frage beantworten:

Wie werden diese komischen Adressen erzeugt, und was ist eigentlich ein Hash?

Hash-Funktionen

Als Hash bezeichnet man das Ergebnis einer Hash-Funktion. Hash-Funktionen sind mathematische Funktionen, die beliebig lange alphanumerische Eingaben in eine alphanumerische Ausgabe mit einer bestimmten Länge umwandeln. Nicht-Mathematiker, keine Angst, in diesem Beitrag gibt es so gut wie keine Formeln und Gleichungen.

Wie kann ich zwei gleiche schlüsselvonenander unterscheiden
Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Nehmen wir die berühmte Phrase „To be, or not to be“ aus Shakespeares Hamlet als Eingabe in eine bestimmte Hash-Funktion, SHA-1. Wir erhalten die Ausgabe
03c6691ebdd161363457e3c73a8ed44186536cf9.

Nehmen wir nun an, dass Shakespeare und sein Lektor einen Disput über die richtige Interpunktion haben, und letzterer gibt „To be or not to be“ ohne Komma in SHA-1 ein. Das Ergebnis lautet nun
6025f94596c2445f0a776d9bac929829de3c948d.

Angenommen, Shakespeare wird ins 21 Jahrhundert gebeamt und tweetet „2B~not2B„. Die Ausgabe von SHA-1 lautet nun
5ed97a13c423c7abea25de49472f7043f156d31c.

Wie Sie sehen können, sind alle Hashes exakt gleich lang, unabhängig von der Länge der Eingabe. Außerdem sind alle Hashes sehr verschieden voneinander, auch wenn die Eingaben die gleiche Bedeutung haben, und auch wenn sich zwei der Eingaben nur in einem Komma voneinander unterscheiden.

Zusammengefasst haben Hash-Funktionen also die folgenden Eigenschaften:

  • Eine bestimmte Eingabe resultiert in einer bestimmten Ausgabe einer vorbestimmten Länge, die üblicherweise, jedoch nicht unbedingt, kürzer als die Eingabe ist.
  • Auch wenn die Eingabe nur leicht geändert wird, ändert sich die Ausgabe enorm.
  • Wenn die Hash-Funktion eine kryptografische ist, ist es darüber hinaus extrem schwer, wenn nicht praktisch unmöglich, die ursprüngliche Eingabe aus der Ausgabe zu rekonstruieren. Der Grad der Unmöglichkeit hängt von der jeweils eingesetzten Verschlüsselung ab.

Aufmerksame Leserinnen und Leser werden nun bemerkt haben, dass es möglich ist, dass mehrere verschiedene Eingaben die gleiche Ausgabe liefern, da die Eingaben im Allgemeinen viel länger als die Ausgaben sind, die ebenfalls aus den gleichen alphanumerischen Zeichen bestehen, das Ganze also keine eineindeutige Zuordnung ist. Wenn also mehrere Eingaben die gleiche Ausgabe liefern, kommt es zu einer Kollision. Im oben verwendeten Beispiel ist SHA-1 ein Algorithmus mit 160 Bits, d. h. mit 160 Stellen, die entweder 0 oder 1 sein können. Deshalb gibt es 2^160 oder mehr als 10^48 (eine 1 mit 48 Nullen) verschiedene Werte. Ohne hier zu sehr ins Detail zu gehen, sei gesagt, dass bei den meisten heute verwendeten Algorithmen eine Kollision sehr unwahrscheinlich ist.

Kehren wir nun zu den Bictoin-Transaktionen zurück, die wir uns weiter oben angesehen haben. Eine Bitcoin-Adresse dient also nur der Kennzeichnung des Senders und des Empfängers jeder Transaktion. Da jedoch alle Knoten Zugriff auf die Blockchain haben, kann jedermann und jederfrau sehen, wer wo wann wem wieviel Geld übermittelt hat. Wenn Sie dies zu sehr an Orwell’s 1984 erinnert, keine Sorge, Bitcoin hat ein gewisses Maß an Pseudonymität, wenn nicht gar Anonymität, eingebaut. Bevor ich jedoch genauer erklären kann, wie das funktioniert, muss ich ein weiteres Konzept aus der Kryptografie erklären, die asymmetrische Kryptografie, auch Public-Key-Kryptografie genannt.

Public-Key-Kryptografie oder Die Rückkehr der byzantinischen Generäle

Ja, die byzantinischen Generäle aus Teil 1 tauchen hier wieder auf, um asymmetrische Kryptosysteme zu erklären. Ich habe die folgende ausgezeichnete Erklärung von Panayotis Vryonis geborgt (und leicht abgeändert).

Nehmen wir an, es gibt einen byzantinischen General, der mit seinen Leutnants über einen geheimen Briefkasten kommuniziert. Da sich die Geschichte im Altertum abspielt, handelt es sich hierbei um einen echten, physischen Briefkasten mit einem physischen Schloss. Bei diesem Schloss handelt es sich um ein Spezialschloss mit 3 Positionen, A, B und C, wie in der Abbildung unten illustriert. Der Briefkasten ist in den Positionen A und C versperrt, in Position B kann er geöffnet werden.

Wie kann ich zwei gleiche schlüsselvonenander unterscheiden
Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Schloss mit 3 Positionen, A und C sind versperrt, B ist geöffnet.

Der General hat mehrere Spezialschlüssel für dieses Schloss, und zwar einen Satz identischer Schlüssel, die er unter seinen Leutnants verteilt, die sich nur nach links gegen den Uhrzeigersinn drehen lassen, also von C nach B nach A. Wir nennen diese Schlüssel öffentliche Schlüssel. Es gibt auch einen ganz besonderen Schlüssel, den der General selbst behält, der nur nach rechts im Uhrzeigersinn drehbar ist, von A nach B nach C, der private Schlüssel des Generals.

Wie kann ich zwei gleiche schlüsselvonenander unterscheiden
Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Byzantinischer Schlüssel

Wenn nun der General seinen Leutnants eine Nachricht hinterlassen will, schreibt er diese auf Pergament und sperrt sie mit seinem (privaten) Schlüssel in den Briefkasten, wobei er das Schloss ganz nach C dreht. Der nächste Leutnant, der vorbeikommt, sperrt den Briefkasten mit seinem (öffentlichen) Schlüssel auf, wobei er den Schlüssel gegen den Uhrzeigersinn in die geöffnete Position B dreht, um die Nachricht zu lesen. Dieser Leutnant ist aber ein Verschwörer, der den General stürzen will. Um seinen Plan umzusetzen, entwirft er eine eigene Nachricht, wobei er vorgibt, der General zu sein, und sperrt sie in den Briefkasten. Dabei dreht er den Schlüssel ganz nach links in Position A, da dies die einzige Richtung ist, in der sich der (öffentliche) Schlüssel drehen lässt. Dabei hat er die Schlauheit des Generals nicht bedacht, denn der Einzige, der nun den Briefkasten öffnen kann, ist der General selbst, da dieser den einzigen Schlüssel besitzt, der nach rechts drehbar ist. So kann der General sicherstellen, dass er der Einzige ist, der Nachrichten in den Briefkasten sperren kann, die von den Leutnants mit den öffentlichen Schlüsseln gelesen werden können. Auf diese Weise ist die Authentizität der Nachricht garantiert.

Genauso funktionieren auch Public-Key-Kryptoverfahren, nur sind hier die Schlüssel digital und nicht aus Bronze. Das oben beschriebene Verfahren wird auch als digitale Unterschrift bezeichnet, wobei die Asymmetrie zwischen öffentlichen und privaten Schlüsseln die Echtheit der Unterschrift garantiert.

Nochmals in Kurzform:

  1. Es wird ein eindeutiges Paar aus einem öffentlichen und einem privaten Schlüssel erstellt.
  2. Der öffentliche Schlüssel wird an alle Empfänger übermittelt.
  3. Der private Schlüssel bleibt geheim.
  4. Alle Nachrichten oder (im Fall von Bitcoin) Transaktionen werden mit dem privaten Schlüssel verschlüsselt, d.h. also virtuell in den obigen Briefkasten gesperrt.
  5. Die Nachricht wird dann an die Empfänger versandt.
  6. Die Nachricht (oder Transaktion) wird mit dem öffentlichen Schlüssel authentifiziert und entschlüsselt.
  7. Es ist (fast) unmöglich, ohne Kenntnis des privaten Schlüssels falsche Nachrichten (oder Transaktionen) zu versenden. Schwindler haben hier also das Nachsehen. (Mit ausreichend Computerleistung können natürlich alle bekannten Verschlüsselungsverfahren im Prinzip geknackt werden. Praktisch ist es jedoch so gut wie unmöglich, denn das würde mehr Computerleistung erfordern, als es derzeit auf dem gesamten Planeten gibt. Es sei denn, jemand erfindet endlich einen voll funktionsfähigen Quantencomputer.)

Warnung: Da für Bitcoin-Transaktionen private Schlüssel erforderlich sind, sollten Sie NIE Ihren privaten Schlüssel an andere weitergeben. Außerdem, falls Sie Ihren privaten Schlüssel verlieren, haben Sie ebenfalls Pech gehabt, denn alle mit diesem Schlüssel getätigten Transaktionen sind für immer verloren!

Die Blockchain – Teil 2

Sehen wir uns nochmals die Transaktionen von oben an:

Wie kann ich zwei gleiche schlüsselvonenander unterscheiden
Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Transaktionen im Block

Jede der gezeigten Adressen ist als Hash-Wert kodiert, der im Wesentlichen aus einem öffentlichen Schlüssel berechnet wird. Deshalb ist also jede Adresse mit einem privaten Schlüssel verknüpft, der im Allgemeinen vom jeweiligen Eigentümer bzw. der jeweiligen Eigentümerin in einer elektronischen Brieftasche, der „Wallet“, gespeichert wird. Mit einem privaten Schlüssel können Sie eine fast unbegrenzte Anzahl an öffentlichen Adressen erzeugen, wenn Sie wollen, eine neue Adresse für jede einzelne Transaktion. Der wesentliche Punkt hier ist, dass Sie keine Bitcoin-Adressen „besitzen“, Sie haben einen privaten Schlüssel, der mit einer großen Anzahl an öffentlichen Adressen assoziiert ist. Da alle Transaktionen öffentlich zugänglich sind, wird empfohlen, nicht für jede Transaktion die gleiche Adresse zu verwenden.

Sehen wir uns nun die zweite Transaktion, „7cdb…“ oben genauer an. Hier sendet die Adresse „1M4sn…“ 1,2 BTC an die Adresse „1A83Re…“. Was jedoch ist mit den 28,79999671 BTC, die im Bild oben in der gleichen Transaktion an die Adresse „18TLH…“ gesandt werden? Dies ist die BTC-Entsprechung von Wechselgeld. Bevor Sie nun komplett verwirrt werden, muss ich erklären, dass Bitcoins nicht als Münzen in Einheiten von BTC oder gar Satoshi (0,00000001 BTC oder ein hundert Millionstel BTC, die derzeit kleinste Einheit eines BTC) gespeichert werden. Bitcoins werden nirgendwo gespeichert. Es werden ausschließlich Transaktionen gespeichert, über die Blockchain. Wie wir oben gesehen haben, können die Transaktionen öffentlich von jedem und jeder eingesehen werden. Sehen wir uns diese Transaktion hier nun etwas genauer an. Die Details können durch Anklicken der Hash-Nummer der Transaktion angezeigt werden, wie in der Abbildung unten.

Wie kann ich zwei gleiche schlüsselvonenander unterscheiden
Wie kann ich zwei gleiche schlüsselvonenander unterscheiden

Detail einer Bitcoin-Transaktion

Nehmen wir an, Sie sind brandneu und fangen mit Bitcoin von Null an. Sie besorgen sich eine Wallet (siehe nächster Blogbeitrag), richten Ihren privaten Schlüssel ein und generieren eine oder mehrere Emfpangsadressen. Eine (sehr) großzügige Person sendet Ihnen 30 BTC. Nun haben Sie 30 BTC in Ihrer Geldbörse. Sie wollen nun 1,2 BTC an jemanden senden, in diesem Fall an die Adresse „1A83Re…“. Sie richten also die Transaktion ein, aber der Bitcoin-Algorithmus funktioniert nur mit ganzen Transaktionen, deshalb frisst der Algorithmus quasi die gesamten 30 BTC auf, senden 1,2 BTC an Adresse „1A83Re…“ und sendet das Wechselgeld von 28,8 BTC minus Mining-Gebühr (Transaktionsgebühr) 0,00000329 BTC, also 28,79999671 BTC wieder an Sie zurück, unter einer neuen Adresse „18TLH…“. Stellen Sie sich vor, Sie hätten 30 Euro in Ihrer Brieftasche, in Form eines 30-Euro-Scheins. Wenn Sie nun jemandem 1,2 Euro geben wollen, reißen Sie auch nicht 4 Prozent des Geldscheins herunter, sondern geben der Person den gesamten Schein und bekommen dementsprechend Wechselgeld zurück. Genau dies geschieht hier auch, Sie erhalten 28,79999671 BTC Wechselgeld, das in der Blockchain vermerkt wird.

Sie können diese 28,79999671 BTC oder einen Teil davon nun unter der in der Blockchain vermerkten Adresse „18TLH…“ versenden oder auch eine ganz neue Adresse erstellen und Ihre BTC unter dieser neuen Adresse versenden. Der Beweis, dass diese BTC Ihnen gehören, oder eigentlich, dass Sie der Empfänger der Transaktion sind — wie schon gesagt, Sie besitzen eigentlich keine Bitcoins, Sie besitzen nur Quittungen der Transaktionen — , erfolgt über die Adresse, die nur Sie mit Ihrem privaten Schlüssel erstellen können, und ihrer digitalen Unterschrift, die ebenfalls nur Sie mit Ihrem privaten Schlüssel erstellen können. Beide können von allen Knoten im Bitcoin-Netz mithilfe des öffentlichen Schlüssels, der zu Ihrem privaten Schlüssel passt, überprüft werden.

Die Bitcoin-Entwickler empfehlen die Verwendung einer neuen Adresse für jede Transaktion aus Anonymitätsgründen, aber das ist Ihnen überlassen. Bitte bedenken Sie, dass alle Transaktionen seit der ganz ersten Genesis-Transaktion öffentlich sichtbar sind. Es gibt viele legitime Gründe, warum Sie nicht alle Transaktionen öffentlich bekanntgeben möchten, auch wenn Sie keine Geldwäsche betreiben oder in sonstige dubiose Geschäfte verwickelt sind. Es ist mir zum Beispiel egal, ob die ganze Welt weiß, dass ich gerade Brokkoli beim Gemüsehändler gekauft habe. Ich will jedoch nicht, dass alle Fahrraddiebe der Umgebung genau über meinen letzten Fahrradkauf Bescheid wissen.

Wenn Ihnen nach Teilen 1, 2 und 3 dieser Beitragsreihe der Kopf brummt, keine Sorge, im Grunde ist die Sache nicht kompliziert. Die praktische Umsetzung ist mit Hash-Funktionen, Kryptoverfahren usw. einigermaßen verwirrend, die grundlegende Idee bleibt jedoch, dass Bitcoin das virtuelle Äquivalent von Bargeld darstellen will, wobei Verbrechern Diebstähle möglichst schwer gemacht werden sollen. Deshalb enthält der Algorithmus ein öffentliches Abstimmungssystem, Mining genannt, eine Überprüfung der Besitzverhältnisse durch Public-Key-Kryptoverfahren und eine gewisse Anonymität durch kryptografische Hash-Funktionen.

Im nächsten Beitrag werde ich mich praktischeren Dingen zuwenden und erklären, wie man nun eine elektronische Bitcoin-Brieftasche einrichtet und BTC sendet und empfängt. Wie jedoch schon mehrmals erwähnt, ist Kryptogeld mancherorts illegal, und an manchen Orten ändert sich die Rechtslage ständig, wie auch hier in Kalifornien. Deshalb stellt keine Aussage auf dieser Website und in diesem Blog-Beitrag eine rechtliche oder finanzielle Beratung dar, einfach deswegen, weil ich bereits vollzeitbeschäftigt bin und die Verfolgung der sich ständig ändernden Rechtslage mehr als eine Vollzeitbeschäftigung darstellen würde.