KAPITEL 3 – PRIVATE KEYS UND PUBLIC ADDRESSES
Das erste Problem, das wir in einem digitalen Währungssystem lösen müssen, ist ein Kontensystem.
WIE FUNKTIONIERT DEZENTRALES ACCOUNT MANAGEMENT?
Im Bankwesen erhält ein Kunde bei einer Kontoeröffnung eine Kontonummer, damit Menschen ihm Geld senden können. Diese Bankkontonummer ist einzigartig. Es gibt niemanden, der ein Konto mit derselben Nummer hat. Sonst würde ja jemand anderes und nicht der betreffende Bankkunde selbst eine Überweisung erhalten. Auf gleiche Weise funktionieren E-Mail-Accounts: Wenn man sich zum Beispiel bei Gmail oder GMX anmeldet, prüft der Dienst, ob die gewünschte E-Mail-Adresse bereits zuvor vergeben wurde. Indem er Dopplungen gar nicht erst zulässt, werden Adresskonflikte vermieden. Dies funktioniert nur, weil Dienste wie eine Bank oder ein E-Mail-Anbieter zentralisierte Dienste sind. Solange sie ihre Arbeit zuverlässig machen, ist alles gut, und wir schenken ihnen unser Vertrauen. Aber was, wenn die Bank beschließt, dein Konto zu schließen, wenn PayPal deinen Account einfriert oder wenn du plötzlich nicht mehr auf deine E-Mails zugreifen kannst? All diese Dienste können dir den Zugriff verweigern, weil sie ein zentralisiertes Account Management mit den dazugehörigen Vor- und Nachteilen haben.
In einem dezentralisierten System können diese Szenarien nicht passieren, weil es keine zentrale Instanz gibt, die die Datenbank der Konten kontrolliert. Man kann dich nicht ausschließen oder dir irgendetwas wegnehmen. Wie lässt sich in einem solchen dezentralen System dennoch vermeiden, dass zwei Personen dieselbe Nummer oder Adresse beim Anmelden bekommen? Es gibt ein paar großartige Fortschritte in der Blockchain-Technologie, die den meisten Menschen nicht bewusst sind. Die Lösung des Account Managements durch Kryptographie ist eines der Dinge, die hier definitiv dazu gehören und mithilfe eines Private Keys (zu Deutsch: eines geheimen Passworts) und einer Public Address (zu Deutsch: einer öffentlichen Adresse) funktionieren.
WAS SIND EIN PRIVATE KEY UND EINE PUBLIC ADDRESS?
Da es in einem dezentralen System keine Datenbank geben kann, die abgleicht, ob ein Konto bereits vergeben wurde oder nicht, erhält man bei einer »Neukundenregistrierung« einfach ein Konto nach dem Zufallsprinzip. Im Beispiel von Kryptowährungen bezeichnet man diese Nummer als Private Key.
Im Falle von Bitcoin, der bekanntesten Kryptowährung, gibt es 2256 (2 hoch 256) Möglichkeiten für einen Private Key. Das ist eine unglaublich hohe Zahl – eine 1 gefolgt von achtzig Nullen – etwa dieselbe Anzahl an Atomen ist im sichtbaren Universum vorhanden: 100 000 0 00 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0 00 000 000 000 000 000 000 000
Normalerweise wird dieser Private Key nicht als Zahl angezeigt, sondern in seiner hexadezimalen Form aus 64 Ziffern und Buchstaben. Zum Beispiel so:
E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262
Theoretisch könnte man sich auch hinsetzen und einen Private Key selbst generieren. Da es 2256 Möglichkeiten im Falle von Bitcoin gibt, braucht man lediglich ein Papier, einen Stift und eine Münze. Da die Münze zwei Seiten hat und beim Werfen wie ein Zufallsgenerator funktioniert, kann man sie wie einen binären Code verwenden: Kopf ist 0 und Zahl ist 1. Man wirft die Münze nun 256 Mal und schreibt jedes Mal die 0 oder 1 auf das Blatt Papier. Man bekommt so einen 256-stelligen Binärcode für eine Zufallszahl, bestehend aus Nullen und Einsen, den man dann in einen Bitcoin Private Key in hexadezimaler Form umwandeln kann:
01010101010111010101110010101010101010101010010101010010101 01001 ...
Anstatt diesen Private Key selbst zu erzeugen, lassen die meisten Menschen eine Software, die sogenannte Wallet (zu Deutsch: Geldtasche oder Geldbeutel), diesen Private Key per Zufallsgenerator erzeugen. Dieser Private Key funktioniert ähnlich wie ein E-Mail-Passwort, mit dem du dich beim E-Mail-Konto anmeldest und dann eine E-Mail verschickst, oder wie der Code, mit dem du Geld vom Bankkonto versendest. Der Riesenunterschied in einem dezentralen System ist jedoch der folgende: Anstatt sich die E-Mail-Adresse selbst auszuwählen, wird im Falle einer Kryptowährung die sogenannte Public Address mathematisch vom privaten Schlüssel abgeleitet. Stell dir das so vor, als ob du bei GMX oder Gmail nur ein Passwort eingeben müsstest, weil diesem spezifischen Passwort bereits eine spezifische E-Mail-Adresse zugewiesen wurde. Wenn du dies das erste Mal liest, vergegenwärtige dir das noch einmal kurz, denn es ist wirklich unglaublich wichtig.
Eine Bitcoin-Adresse startet zum Beispiel mit einer 1 oder 3 und besteht aus 34 Zahlen und Buchstaben. Das sieht zum Beispiel so aus:
1HFSx5TPYYzQTQmBXeJNcMhUDT6FNGF11q
Dies ist eine zufällige Adresse, schick also kein Geld dorthin!
Bei Bitcoin erhält man die Public Address eines Private Keys über verschiedenste kryptographische Formeln, wie zum Beispiel Elliptic Curve Cryptography, SHA256- und RIPEMD160. Wenn du das genaue Funktionsprinzip wissen möchtest, gehe einfach auf Google und suche nach »Julian Hosp Kryptographie«. Ich habe viele Videos und Blogbeiträge, in denen ich auf diese Dinge im Detail eingehe.
GEEKY
Falls es dich interessiert, so funktioniert der genaue Algorithmus bei Bitcoin, um von einem Private Key zur Public Address zu gelangen. Dies ist aber NICHT wichtig fürs Verständnis:
1.Starte mit einer zufälligen Zahl zwischen 1 und 2256.
2.Appliziere Elliptic Curve Cryptography, wobei der Private Key der »Multiplier« ist.
3.Jetzt hast du den dazugehörigen Public Key – es ist aber nur ein Zwischenschritt.
4.Führe eine sogenannte »Hash160«-Funktion aus, indem du zuerst eine SHA256-Funktion und dann eine RIPEMD160-Funktion kombinierst.
5.Mach einen Base58Check als sogenannte »CheckSum«, ähnlich wie bei einer Kreditkarte.
6.Jetzt hast du die Public Address.
GEEKY OFF
Das Wichtige an den verwendeten mathematischen Funktionen ist einfach nur, dass es nahezu unmöglich ist, ein »Passwort« (Private Key) zu erraten, wenn man nur die dazugehörige »E-Mail-Adresse« (Public Address) kennt. Es ist jedoch mathematisch sehr einfach, die Public Address zu ermitteln, wenn man den Private Key kennt, welcher diese Public Address erstellt. Wenn du es ein bisschen einfacher und bildhafter haben willst, stell dir vor, der Private Key wäre eine Zufallszahl und die daraus folgende Public Address die zweite Potenz dieser Zahl. Wenn also dein Private Key 8 wäre, ist deine Public Address 82, was 64 ist. Dies ist etwas, was die meisten von uns noch auf einem Stück Papier selbst errechnen könnten. Theoretisch wäre das eine Private-Key-zu-Public-Address-Berechnung, bei Bitcoin ist dieser Vorgang aber natürlich um ein Milliardenfaches komplexer. Doch selbst beim reinen Potenzieren ist der Umkehrweg schon deutlich aufwendiger zu berechnen. Wenn ich dir zum Beispiel sage, dass meine Public Address 289 sei, könntest du den Private Key daraus berechnen, indem du die Quadratwurzel ziehst? Wenn du keinen Taschenrechner zur Hand hast, ist der einzige Weg, dies durch aufwendiges Probieren herauszufinden. Quadratwurzel von 289? 15? Nein, zu klein. 20? Nein, zu groß. Irgendwo in der Mitte also. 17? Korrekt!
Das Gleiche gilt für ein sogenanntes Private-Key-Public-Address-Paar: Es ist einfach, eine Public Address aus einem Private Key zu errechnen, aber es ist buchstäblich unmöglich, einen Private Key von einer Public Address abzuleiten. Das oben angeführte Beispiel des Quadrierens war nur eine Vereinfachung. Wie bereits erwähnt, ist der tatsächliche Prozess bei Kryptowährungen milliardenfach härter. Selbst wenn man alle existierenden Computer kombinieren könnte, um den zugehörigen Private Key einer Public Address zu erraten, würde eher das Universum enden, als dass die zusammengekoppelten Rechner die Lösung ermitteln würden.
Im Falle der meisten großen Kryptowährungen ist es buchstäblich so schwer, einen solchen Private Key zu erraten, dass es statistisch gesehen wahrscheinlicher ist, dass man auf eine Wand zulaufen könnte und alle Atome des Körpers einen sogenannten Quantum-Tunneling-Effekt starten. Man könnte dann einfach durch die Wand gleiten, ohne sie jemals zu berühren. Ich weiß nicht, ob du es jemals selbst erlebt oder jemand anderen dabei gesehen hast, wie sich der Körper einfach so durch die Wand beamt. Nein? Ich auch nicht und um ehrlich zu sein, ist es praktisch unmöglich. Doch immer noch wahrscheinlicher, als den Private Key zu erraten beziehungsweise denselben Private Key für zwei Personen zu generieren. Die Sorge, dass jemand denselben Private Key erhält wie du oder dass jemand deinen Private Key erraten könnte, ist also komplett unbegründet. Wenn du mir nicht glaubst, versuche, durch Wände zu laufen. Erst wenn du dich durchteleportieren kannst, solltest du anfangen, dir über deinen Private Key Sorgen zu machen :-).
Dezentrale Systeme haben einen interessanten Sicherheits-Nebeneffekt: Da es keine Datenbank gibt, die alle Konten und Passwörter speichert, gibt es keinen zentralen Angriffspunkt. Man könnte also die folgende Frage stellen: »Was ist die sicherere Methode, um eine Milliarde Euro aufzubewahren? Ein Safe (eine zentrale Datenbank), von dem jeder weiß, wo er ist, und bei dem man versuchen muss, durch die Firewalls zu kommen, um die Milliarde zu erhalten? Oder unzählige Boxen, genauer gesagt 2256 Stück (eine Zahl beginnend mit...