Wie schützt Kryptographie die Blockchain?
Dieser Artikel ist ein Auszug aus dem Buch Der Leitfaden für Laien zu Bitcoin von Logan Brutsche und wird hier mit Genehmigung des Autors erneut veröffentlicht.
Kryptographie ist die Wissenschaft der Anwendung mathematischer Funktionen auf Daten, um deren Sicherheit zu gewährleisten.
Viele populäre Fiktionen implizieren, dass jedes System gehackt werden kann, solange Sie einen ausreichend guten Hacker haben. Bei diesem „Hollywood-Hacking“ funktioniert die reale Welt nicht – ein Hacker muss eine Sicherheitslücke in einem System finden, die ausgenutzt werden kann, z. B. einen nicht gesperrten Serverraum, ein leicht zu erratendes Kennwort, einen ungeschützten Netzwerkanschluss oder eine „Hintertür“. Wird als Insider-Job installiert, um später unbefugten Zugriff zu erhalten.
Zwar können wir niemals garantieren, dass ein bestimmtes System keine Schwachstellen aufweist – schließlich werden Systeme von unvollkommenen Menschen hergestellt -, aber das Gefühl, dass „alles gehackt werden kann“, ist falsch. Seit den frühen 90er Jahren haben wir Zugang zu kryptografischen Techniken, die ganz einfach immun gegen Hacking sind. Es ist die Anwendung solcher Techniken, die manchmal Raum für Ausbeutung lassen.
Die Kryptografie selbst kann nicht gehackt werden, um eine gefälschte kryptografische Signatur zu generieren (in Kürze definiert), genauso wie die Mathematik nicht gehackt werden kann, um 2 + 2 = 5 zu erhalten – obwohl sowohl die Kryptografie als auch die Mathematik falsch verwendet werden können. Wenn ein System mit Kryptografie ausfällt, liegt dies daran, dass ein Designer die Kryptografie falsch angewendet hat. Es liegt nicht daran, dass die Kryptografie nicht funktioniert hat oder dass jemand die Kryptografie „gehackt“ hat – genauso wie es nicht die Schuld der Mathematik ist, wenn Ihre Bank Ihr Konto falsch behandelt, oder die Schuld der E-Mail, wenn Ihre Mutter einen unbekannten Anhang herunterlädt und einen Computervirus bekommt . Dies ist eine wichtige Unterscheidung, da Bitcoin sehr direkt eine Anwendung der etablierten Kryptographie ist.
Kryptographie ist keine neue, nicht getestete Technologie. Alle von Bitcoin verwendeten kryptografischen Techniken werden seit Beginn des Internets verwendet und sind für viele gängige Internetprotokolle, die täglich verwendet werden, von wesentlicher Bedeutung. Die Wissenschaft der Kryptographie wird von Informatikern als zuverlässig und wesentlich angesehen, genauso wie die Raketenwissenschaft von der NASA als zuverlässig und wesentlich angesehen wird.
Schlüsselpaare: Der Eckpfeiler der Kryptographie
Schlüsselpaare sind der Eckpfeiler der in Blockchains verwendeten Kryptographie. Ein Schlüsselpaar besteht aus zwei Teilen: einem privaten und einem öffentlichen Schlüssel. Diese Schlüssel sind eigentlich nichts anderes als sehr große Zahlen mit einer bestimmten mathematischen Beziehung, die anstelle von Passwörtern und Benutzernamen verwendet werden.
Sie würden einen öffentlichen Schlüssel wie Ihren Vornamen oder einen Benutzernamen behandeln: In den meisten Fällen teilen Sie ihn mit jedem, der danach fragt, und diejenigen, die ihn haben, können ihn verwenden, um auf Sie zu verweisen oder Sie zu kontaktieren. Dies hängt von Ihrem Ruf (oder im Fall von Bitcoin von Ihrem Transaktionsverlauf) ab, sodass Sie möglicherweise über mehrere öffentliche Schlüssel (und damit mehrere Schlüsselpaare) verfügen, die Sie für unterschiedliche Zwecke verwenden. Ein öffentlicher Schlüssel kann zum Verweisen oder Anzeigen eines Kontos verwendet werden, kann jedoch selbst keine Aktion für dieses Konto autorisieren.
Der private Schlüssel sollte wie ein Kennwort behandelt werden: Er sollte nicht an Dritte weitergegeben werden und wird zur Authentifizierung bestimmter Aktionen verwendet, z. B. zum Senden von BTC.
Es gibt jedoch einen wichtigen Unterschied zwischen einem privaten Schlüssel und einem Passwort. Um ein Passwort zu verwenden, müssen Sie es an eine Person oder einen Server senden, damit es mit ihren Aufzeichnungen verglichen werden kann. Sie müssen darauf vertrauen, dass das Passwort nach dem Senden verantwortungsbewusst behandelt wird. Im Gegensatz dazu kann ein privater Schlüssel verwendet werden, um sich zu authentifizieren, ohne ihn irgendwohin zu senden. Der einzige Ort, an dem es jemals gespeichert oder direkt verwendet wird, ist auf Ihrem lokalen Gerät.
Dies ist wichtig, denn wenn Sie sich authentifizieren können, ohne Ihr Geheimnis irgendwohin zu senden, können Sie die vollständige Kontrolle über seine Sicherheit behalten – Sie sind nicht anfällig für Sicherheitslücken anderer Systeme. Dies ist ein wesentlicher Bestandteil dessen, was Bitcoin nicht hackbar macht. Auf Bitcoin selbst sind keine Kennwörter oder privaten Schlüssel gespeichert, die ein Angreifer gefährden könnte, und dennoch können Benutzer Transaktionen authentifizieren.
Aber wie könnten Sie einen privaten Schlüssel zur Authentifizierung einer Transaktion verwenden, wenn Sie den privaten Schlüssel niemals irgendwohin senden? Die Antwort hat mit der mathematischen Beziehung zwischen dem privaten und dem öffentlichen Schlüssel zu tun: kryptografische Signaturen.
Kryptografische Signaturen
Es gibt verschiedene Techniken zum Generieren und Validieren kryptografischer Signaturen, und die mathematischen Theoreme, mit denen sie funktionieren, gehen weit über den Rahmen dieses Artikels hinaus. Für diejenigen, die mit Kryptographie nicht vertraut sind, mag der hier beschriebene Prozess zunächst völlig unmöglich klingen. Ich erinnere mich noch genau an diesen Eindruck, als ich vor vier Jahren mit meinen Forschungen zu Bitcoin begann.
Im Moment möchte ich noch einmal darauf hinweisen, dass diese Technologien in vielen gängigen Internetprotokollen verwendet werden und ein fester Bestandteil der Informationswissenschaft sind.
Stellen Sie sich zwei Personen vor, Alice und Bob, die bereits persönlich öffentliche Schlüssel getauscht haben. Alice möchte Bob eine Nachricht senden, aber Bob ist eine sehr verdächtige Person und wird nicht darauf vertrauen, dass die Nachricht tatsächlich von Alice stammt, es sei denn, er kann sie zweifelsohne mathematisch beweisen. Um diesen Beweis zu erleichtern, stimmen sie der Verwendung einer kryptografischen Signatur zu.
Um die Signatur zu generieren, verwendet Alice den Signaturgenerierungsalgorithmus ihres Computers, der ihren privaten Schlüssel und ihre vollständige Nachricht als Eingabe verwendet und eine kryptografische Signatur generiert. Sie sendet Bob dann diese Kombination aus Nachricht und Signatur – aber entscheidend, sendet ihren privaten Schlüssel nicht.
Wenn Bob die Nachricht und die Signatur erhält, muss er einen ergänzenden Algorithmus zur Validierung der Signatur verwenden. Dieser Algorithmus nimmt die Nachricht und die Signatur als Eingabe und bestimmt die Öffentlichkeit Schlüssel des Schlüsselpaars, mit dem Alice die Signatur generiert hat. Als Bob sieht, dass sein Algorithmus den öffentlichen Schlüssel von Alice ausgibt, hat er mathematisch bewiesen, dass die Signatur mit dem Schlüsselpaar von Alice generiert worden sein muss, obwohl er die private Hälfte des Schlüsselpaars von Alice nicht kennt und nicht berechnen kann.
Kurz gesagt, Mit diesem kryptografischen Signaturprozess kann Bob überprüfen, ob die Nachricht nicht von einem Dritten erstellt oder geändert wurde und mit dem privaten Schlüssel von Alice generiert wurde, ohne ihren privaten Schlüssel kennen zu müssen (oder können). Er benötigt lediglich die Kombination aus Nachricht und Signatur und ihren öffentlichen Schlüssel.
Intuitiv scheint dies unmöglich zu sein, und Sie haben möglicherweise das Gefühl, etwas falsch verstanden zu haben. Wenn Alices privater und öffentlicher Schlüssel so eng miteinander verbunden sind und Alice ihren privaten Schlüssel verwendet hat, um die Signatur zu generieren, die Bob erhält, wie kann er dann ihren öffentlichen Schlüssel ableiten, aber ihren privaten Schlüssel nicht finden? Die Antwort darauf erfordert ein weitaus tieferes Verständnis der Mathematik als die meisten Menschen und liegt weit außerhalb des Rahmens dieses Buches.
Trotzdem wird diese Technik jeden Tag angewendet und gilt innerhalb der Kryptographie-Community als absolut solide. Wenn Sie eine Website besuchen und deren Adresse mit https beginnt, zeigt das “s” an, dass sich die Website mit einer kryptografischen Signatur validiert hat. Ihr Computer verwendete einen Signaturvalidierungsalgorithmus, genau wie Bob im obigen Beispiel, um zu überprüfen, ob die Website wirklich vom richtigen Schlüsselpaar stammt. Diese kryptografische Signatur wird verwendet, um sicherzustellen, dass jede weitere Interaktion zwischen Ihnen und der Website verschlüsselt und authentisch ist. Wenn dieser Test fehlschlägt, werden Sie von modernen Browsern gewarnt und die Website als gefährlich gekennzeichnet.
Ausreichend große Zahlen
Ich habe bereits kurz erwähnt, dass private und öffentliche Schlüssel wie Benutzernamen und Passwörter funktionieren, aber in Wirklichkeit nichts anderes als extrem große Zahlen mit einer speziellen mathematischen Beziehung sind. Vor diesem Hintergrund werden mir häufig die folgenden Fragen gestellt:
“Kann jemand nicht einfach einen Computer eine Reihe von Zahlen erraten oder durchzählen lassen und sie als private Schlüssel ausprobieren? Würden sie nicht irgendwann auf einen privaten Schlüssel eines bestimmten Schlüsselpaars stoßen und dadurch die Kontrolle über diese Identität erlangen? ” Im Fall von Bitcoin würde dies einem Angreifer ermöglichen, das von einem Schlüsselpaar gehaltene Geld zu stehlen.
Es ist eine gute Frage, und doch passiert es nicht. Wie bereits erwähnt, gibt es mehrere Bitcoin-Adressen mit BTC im Wert von mehreren Millionen US-Dollar, die sich seit Jahren nicht mehr bewegt haben – obwohl nur der richtige private Schlüssel erforderlich ist – die richtige große Anzahl! Wenn Sie den privaten Schlüssel für diese Adressen erraten können, können Sie das Geld überall hin senden. Im Gegensatz zu einem Kennwort können Sie private Schlüssel lokal auf Ihrem eigenen Computer überprüfen, und es gibt keinen Server, der einschränkt, wie oft oder wie schnell Sie sie versuchen.
Warum hat noch niemand diese Gelder gestohlen? Die Antwort liegt in der fast absurden Größe der Zahlen, die als private Schlüssel verwendet werden. Sie sind ausreichend groß.
Beginnen wir mit einem einfachen Gedankenexperiment. Stellen Sie sich vor, Ihr privater Schlüssel wäre gerade so groß, dass alle Computer der Welt, wenn sie zusammenarbeiten würden, volle 24 Stunden benötigen würden, um Bruteforce zu erraten. Wenn Sie Ihrem privaten Schlüssel nur eine weitere Ziffer hinzufügen, müssen die Computer zehnmal mehr Permutationen durchlaufen, sodass es 10 Tage statt einer dauert. Sechs weitere Ziffern würden es auf 27.000 Jahre bringen.
In jedem Fall bleibt das Generieren des privaten Schlüssels, für den nur Zufallszahlen erstellt werden müssen, trivial. Die Verwendung des privaten Schlüssels zum Generieren von Signaturen sowie das Überprüfen dieser Signaturen mit dem öffentlichen Schlüssel bleibt ebenfalls rechnerisch einfach. Die Arbeit, die erforderlich ist, um den privaten Schlüssel zu erraten, wächst jedoch exponentiell mit jeder zusätzlichen Ziffer. Um private Schlüssel gegen Brute-Force-Vermutungen „immun“ zu machen, müssen wir nur genügend Ziffern hinzufügen – wir müssen sie nur ausreichend groß machen.
Wie groß ist also groß genug?? Die in Bitcoin verwendeten privaten Schlüssel sind 256-Bit-Ganzzahlen, was einer sechsundsiebzigstelligen Zahl entspricht. Die Kraft der Größe dieser Zahl ist unglaublich. Die folgende Abbildung ist stark von Bruce Schneiers Buch abgeleitet Angewandte Kryptographie, und ist eine überzeugende Demonstration von ausreichend großen Zahlen.
Erkennen Sie zunächst, dass eine spezifische Konsequenz des zweiten Hauptsatzes der Thermodynamik darin besteht, dass eine minimale Energie erforderlich ist, um ein einzelnes binäres Informationsbit zu ändern (Ändern einer 1 in eine 0 oder umgekehrt). Dies bedeutet, dass für jeden Berechnungsprozess unabhängig von der verwendeten Hardware ein Minimum an Energie erforderlich ist.
Angenommen, Sie konnten die gesamte Energieabgabe der Sonne nutzen, um nur einen speziell entwickelten Computer mit Strom zu versorgen, dessen Aufgabe es ist, private Schlüssel zu zählen oder zu erraten, in der Hoffnung, den privaten Schlüssel eines Schlüsselpaars zu finden (das möglicherweise BTC steuert)..
Mit ein wenig Mathematik und Thermodynamik werden Sie feststellen, dass ein perfekt effizienter Computer bei der gesamten jährlichen Energieabgabe der Sonne bis zu 2178 Werte zählen kann. Wenn wir diesen Wert in die Anzahl der möglichen privaten Schlüssel 2256 teilen, stellen wir fest, dass dieser hypothetische Computer nur 0,000000000000000000000003% der Gesamtzahl möglicher privater Schlüssel erraten oder zählen kann – angesichts der gesamten jährlichen Energieabgabe der Sonne.
Darüber hinaus zählt dies nur und beinhaltet nicht die viel komplexere Aufgabe, jeden privaten Schlüssel tatsächlich zu überprüfen, um festzustellen, ob er dem richtigen öffentlichen Schlüssel entspricht. Bei einer Wahrscheinlichkeit von 0,0000000000000000000003%, dass dieser Computer am Ende eines Jahres über den richtigen privaten Schlüssel hinweg aufgetreten ist, würde er dies nicht einmal realisieren.
Diese Zahlen haben nichts mit der Technologie der Geräte zu tun; Sie sind die Maxima, die nach den seit den 1930er Jahren festgelegten Gesetzen der Thermodynamik möglich sind. Und sie deuten stark darauf hin, dass Brute-Force-Angriffe auf 256-Bit-Schlüssel (die Bitcoin verwendet) nicht möglich sind, bis Computer aus etwas anderem als Materie aufgebaut sind und etwas anderes als Raum belegen.
Dies ist die Kraft von ausreichend großen Zahlen. Es spielt keine Rolle, wie gut ein Hacker ist. Wenn er nicht die Kraft von dreihundert Sextillionen Sonnen für ein Jahr oder eine Sonne für dreihundert Sextillionen Jahre nutzen kann, kann sein Computer nicht einmal Anzahl durch alle privaten Schlüssel – geschweige denn testen oder anderweitig verwenden.
Um Bitcoin und Kryptographie genauer zu betrachten, lesen Sie das Buch von Logan Brutsche, Der Leitfaden für Laien zu Bitcoin.