Kryptographie ist die Wissenschaft der Anwendung mathematischer Funktionen zur Gewährleistung der Datensicherheit.
Viele beliebte Filme und Fernsehsendungen suggerieren den Menschen, dass in jedes System eingebrochen werden kann, solange es Hacker gibt, die stark genug sind. Diese Art von „Hollywood-Hack“ ist kein reales Szenario – Hacker müssen exponierte Schwachstellen im System finden, wie z. B. unverschlossene Serverräume, leicht zu erratende Passwörter, ungeschützte Netzwerkports oder intern installierte „Hintertüren“, um dies zu erreichen unbefugten Zugriff.
Obwohl es wahr ist, dass wir niemals sicherstellen können, dass ein System frei von Schwachstellen ist – Systeme werden schließlich von unvollkommenen Menschen gebaut, ist die Vorstellung, dass „jedes System kaputt gehen kann“, falsch. Seit den frühen 1990er Jahren sind wir völlig immun gegen Hacker, die Kryptografie einsetzen. Allerdings lässt die Anwendung dieser Technologie manchmal Raum für Hacker, sie auszunutzen.
Kryptographie selbst kann nicht gehackt werden, um gefälschte digitale Signaturen zu erzeugen (Definition folgt in Kürze), genauso wie Mathematik nicht gehackt werden kann, um 2+2=5 zu bilden – obwohl Kryptographie und Mathematik alle falsch verwendet werden können. Wenn ein System, das Kryptografie verwendet, kaputt geht, kann das nur daran liegen, dass der Entwickler die Kryptografie falsch angewendet hat. Es liegt nicht daran, dass die Kryptografie nicht funktioniert, oder daran, dass jemand die Kryptografie „kaputt“ gemacht hat – es ist kein Rechenfehler, wenn Ihre Bank Ihr Konto falsch verwaltet oder Ihre Mutter ihren Computer infiziert, indem sie einen unbekannten Anhang herunterlädt. Viren sind nicht dasselbe wie E-Mail Käfer. Dies ist eine wichtige Funktion, da Bitcoin eine sehr einfache Kryptographieanwendung ist.
Kryptographie ist keine ungetestete neue Technologie. Alle von Bitcoin verwendeten kryptografischen Techniken werden seit den Anfängen des Internets verwendet und sind wichtige Bestandteile vieler allgemeiner Internetprotokolle, die täglich verwendet werden. Informatiker halten Kryptographie für zuverlässig und notwendig, ebenso wie die NASA die Luft- und Raumfahrtwissenschaft für zuverlässig und notwendig hält.
Öffentliche und private Schlüsselpaare: der Eckpfeiler der Kryptographie
Öffentliche und private Schlüsselpaare sind der Eckpfeiler der in der Blockchain verwendeten Kryptographie. Ein öffentlich-privates Schlüsselpaar besteht aus zwei Teilen: dem privaten Schlüssel und dem öffentlichen Schlüssel. Diese beiden Schlüssel sind eigentlich nichts anderes als große ganze Zahlen mit einer bestimmten mathematischen Beziehung, die anstelle von Passwörtern und Benutzernamen verwendet werden.
Sie verfügen über einen öffentlichen Schlüssel, genau wie Ihr Name oder Benutzername: In den meisten Fällen können Sie Ihren öffentlichen Schlüssel mit jedem Antragsteller teilen, und diejenigen, die ihn haben, können ihn verwenden, um Ihnen ein Angebot zu machen oder Sie zu kontaktieren. Es ist an Ihren Ruf (oder Ihren Transaktionsverlauf in Bitcoin) gebunden, sodass Sie möglicherweise mehrere öffentliche Schlüssel (und daher mehrere öffentlich-private Schlüsselpaare) für verschiedene Zwecke haben. Der öffentliche Schlüssel kann zum Referenzieren oder Anzeigen eines Kontos verwendet werden, er allein kann jedoch nichts mit dem Konto tun.
Der private Schlüssel sollte wie ein Passwort sein: Er sollte nicht an Dritte weitergegeben werden, er wird verwendet, um bestimmte Aktionen zu überprüfen, wie zum Beispiel das Senden von BTC (Bitcoin).
Aber es gibt einen wichtigen Unterschied zwischen einem privaten Schlüssel und einem Passwort. Um ein Passwort zu verwenden, müssen Sie es an jemanden oder einen Server senden, der es überprüfen kann. Sie müssen darauf vertrauen können, dass mit dem Passwort nach der Übermittlung verantwortungsvoll umgegangen wird. Im Gegensatz dazu kann ein privater Schlüssel zum Nachweis der eigenen Identität verwendet werden, ohne ihn an irgendjemanden zu senden. Der einzige Ort, an dem es jemals gespeichert oder direkt verwendet wurde, ist auf Ihrem lokalen Gerät.
Dies ist wichtig, denn wenn Sie sich authentifizieren können, ohne Ihre geheimen Informationen an irgendjemanden zu senden, haben Sie garantiert die volle Kontrolle über deren Sicherheit – Sie sind weniger anfällig für die Auswirkungen von Sicherheitsverletzungen auf andere Systeme. Dies ist ein wichtiger Teil dessen, was Bitcoin unerschütterlich macht. Bitcoin selbst speichert keine Passwörter oder privaten Schlüssel, die an Angreifer weitergegeben werden könnten, aber Benutzer können Transaktionen trotzdem überprüfen.
Aber wenn Sie Ihren privaten Schlüssel niemals an irgendjemanden senden, wie verwenden Sie dann Ihren privaten Schlüssel, um Transaktionen zu verifizieren? Die Antwort hängt mit der mathematischen Beziehung zwischen privaten und öffentlichen Schlüsseln zusammen: digitale Signaturen.
Digitale Signaturen
Es gibt viele verschiedene Techniken zum Generieren und Überprüfen digitaler Signaturen, und die Mathematik, die ihrer Funktionsweise zugrunde liegt, geht weit über den Rahmen dieses Artikels hinaus. Für diejenigen, die sich mit Kryptographie nicht auskennen, mag der hier beschriebene Prozess zunächst unglaubwürdig klingen. Ich erinnere mich noch genau daran, wie ich mich so gefühlt habe, als ich vor vier Jahren anfing, mich mit Bitcoin zu beschäftigen.
Jetzt möchte ich noch einmal kurz erwähnen, dass diese Techniken in vielen gängigen Internetprotokollen verwendet werden und ein fester Bestandteil der Informationswissenschaft sind.
Stellen Sie sich vor, es gibt zwei Personen, Alice und Bob, die privat öffentliche Schlüssel ausgetauscht haben. Alice möchte Bob eine Nachricht schicken, aber Bob ist ein sehr misstrauischer Mensch und glaubt nicht, dass die Nachricht wirklich von Alice stammt, es sei denn, er kann sie mathematisch und schlüssig beweisen. Zur einfacheren Beweisführung stimmten sie der Verwendung digitaler Signaturen zu.
Um eine Signatur zu generieren, verwendet Alice einen Signaturgenerierungsalgorithmus in ihrem Computer, der ihren privaten Schlüssel und die vollständige Nachricht als Eingabe verwendet und so eine digitale Signatur generiert. Anschließend sendet sie diese Kombination aus Nachricht und Signatur an Bob – aber was wichtig ist: Sie sendet nicht ihren privaten Schlüssel.
Wenn Bob die Nachricht und die Signatur erhält, kann er einen ergänzenden Signaturverifizierungsalgorithmus aufrufen. Der Algorithmus verwendet als Eingabe eine Nachricht und eine Signatur, um den öffentlichen Schlüssel im öffentlich-privaten Schlüsselpaar zu bestimmen, das Alice zum Generieren der Signatur verwendet hat. Als Bob sieht, dass sein Algorithmus den öffentlichen Schlüssel von Alice ausgibt, hat er mathematisch bewiesen, dass die Signatur tatsächlich mit dem Paar aus öffentlichem und privatem Schlüssel von Alice generiert wurde, auch wenn er den privaten Schlüssel in Alices Schlüsselpaar aus öffentlichem und privatem Schlüssel nicht kennt und nicht berechnen kann .
Kurz gesagt: Dieser Prozess der digitalen Signatur ermöglicht es Bob, zu überprüfen, ob die Nachricht nicht von einem Dritten erstellt oder geändert wurde, sondern mit Alices privatem Schlüssel generiert worden sein muss, ohne dass er dies tun muss (oder kann) Kennen Sie ihren privaten Schlüssel. Er benötigt lediglich die Kombination aus Nachricht und Signatur sowie ihren öffentlichen Schlüssel.
Intuitiv mag dies unplausibel erscheinen und Sie haben möglicherweise das Gefühl, dass irgendwo ein Missverständnis vorliegt. Wenn Alices privater Schlüssel und öffentlicher Schlüssel eng miteinander verbunden sind und Alice ihren privaten Schlüssel verwendet, um die Signatur zu generieren, die Bob erhält, warum kann er dann nur ihren öffentlichen Schlüssel, nicht aber ihren privaten Schlüssel ableiten? Das Verstehen der Antwort auf diese Frage erfordert ein tieferes Verständnis der Mathematik als die meisten Menschen und würde den Rahmen dieses Buches bei weitem sprengen.
Trotzdem verlässt man sich täglich auf diese Technologie und gilt in der Kryptographie-Community als absolut solide. Wenn Sie eine Website besuchen, deren Adresse mit https beginnt, zeigt das „s“ an, dass sich die Website mithilfe einer digitalen Signatur authentifiziert hat. Ihr Computer verwendet einen Signaturverifizierungsalgorithmus, wie Bob im obigen Beispiel, um zu überprüfen, ob die Website tatsächlich vom richtigen öffentlich-privaten Schlüsselpaar stammt. Digitale Signaturen stellen sicher, dass alle weiteren Interaktionen zwischen Ihnen und der Website verschlüsselt und authentifiziert werden. Wenn die Überprüfung fehlschlägt, warnt Sie der Browser und markiert die Website als gefährlich.
Eine Ganzzahl, die groß genug ist
Zuvor habe ich kurz erwähnt, dass private und öffentliche Schlüssel genauso funktionieren wie Benutzernamen und Passwörter, aber in Wirklichkeit haben sie nur eine spezielle mathematische Beziehung großer Ganzzahlen. Vor diesem Hintergrund wird mir oft die folgende Frage gestellt:
„Könnten Sie einen Computer verwenden, um eine Reihe von Zahlen zu erraten oder zu berechnen und zu versuchen, sie als privaten Schlüssel zu verwenden? Könnten sie schließlich ein öffentliches oder privates Ziel erreichen?“ Schlüssel? „Tatsächlich würde dies im Fall von Bitcoin einem Angreifer ermöglichen, einige der Bitcoins zu stehlen, die im öffentlichen-privaten Schlüsselpaar enthalten sind.“
Das ist eine gute Frage, aber das wird nicht passieren. Wie bereits erwähnt, gibt es mehrere Bitcoin-Adressen, die BTC im Wert von mehreren Millionen Dollar enthalten, aber sie wurden seit Jahren nicht mehr bewegt – obwohl alles, was man braucht, um sie zu stehlen, der richtige private Schlüssel ist – also die richtige große ganze Zahl! Wenn Sie die privaten Schlüssel dieser Adressen erraten können, können Sie das Geld von ihnen an jeden senden. Im Gegensatz zu Passwörtern können Sie private Schlüssel lokal auf Ihrem Computer überprüfen, und es gibt keinen Server, der die Anzahl oder Häufigkeit Ihrer Versuche begrenzt.
Warum hat dann noch niemand das Geld gestohlen? Die Antwort liegt in der geradezu lächerlichen Größe der als private Schlüssel verwendeten Zahlen. Sie sind groß genug.
Wir beginnen mit einem einfachen Gedankenexperiment. Stellen Sie sich vor, Ihr privater Schlüssel ist so groß, dass alle Computer auf der Welt, die zusammenarbeiten, 24 Stunden brauchen würden, um ihn zu erraten. Wenn Sie Ihrem privaten Schlüssel nur eine Ziffer hinzufügen, benötigt der Computer den zehnfachen Rechenaufwand, was bedeutet, dass er zehn statt eines Tages benötigt. Durch das Hinzufügen von sechs Ziffern würde diese Zeit auf 27.000 Jahre kommen.
In jedem Fall ist die Rechenleistung, die zur Erzeugung von Zufallszahlen zur Generierung eines privaten Schlüssels erforderlich ist, trivial. Das Generieren von Signaturen mithilfe privater Schlüssel und das Überprüfen dieser Signaturen mithilfe öffentlicher Schlüssel ist ebenfalls rechnerisch einfach. Der Arbeitsaufwand, der zum Erraten des privaten Schlüssels erforderlich ist, erhöht sich jedoch exponentiell mit jeder weiteren hinzugefügten Zahl. Um einen privaten Schlüssel „immun“ gegen Brute-Force zu machen, müssen wir nur genügend Zahlen hinzufügen – wir müssen sie nur groß genug machen.
Wie groß ist es? Der in Bitcoin verwendete private Schlüssel ist eine 256-Bit-Ganzzahl, was einer Zahl mit einer Länge von 76 Bit entspricht. Die Größe dieser Zahl ist unglaublich. Die meisten der folgenden Erklärungen stammen aus Bruce Schneiers Buch „Applied Cryptography“, das eine intuitive Erklärung ausreichend großer Ganzzahlen bietet.
Zunächst müssen Sie verstehen, dass eine spezifische Schlussfolgerung des zweiten Hauptsatzes der Thermodynamik die minimale Energie ist, die erforderlich ist, um die Existenz eines einzelnen binären Informationsbits zu ändern (Änderung von 1 in 0 oder umgekehrt). Dies bedeutet, dass jeder Rechenprozess unabhängig von der verwendeten Hardware eine minimale Energiemenge zur Ausführung benötigt.
Stellen Sie sich nun vor, Sie könnten die gesamte Energieabgabe der Sonne nutzen, um einen speziell entwickelten Computer anzutreiben, dessen Aufgabe es ist, den privaten Schlüssel zu berechnen oder zu erraten, um ein öffentlich-privates Schlüsselpaar zu finden (das BTC steuern kann). ).
Mit ein wenig Mathematik und Thermodynamik werden Sie feststellen, dass ein hocheffizienter Computer, der in der Lage ist, die Energieabgabe der Sonne für ein ganzes Jahr zu berechnen, 2178 Werte berechnen kann. Wenn wir diesen Wert durch die Anzahl möglicher privater Schlüssel dividieren, die 2256 beträgt, stellen wir fest, dass dieser hypothetische Computer mit der Rechenleistung der jährlichen Energieproduktion der Sonne nur 0,00000000000000000000003 % der Gesamtzahl möglicher privater Schlüssel erraten oder berechnen kann.
Außerdem ist dies nur eine Zählung und umfasst nicht die komplexere Aufgabe, jeden privaten Schlüssel tatsächlich zu überprüfen, um sicherzustellen, dass er dem richtigen öffentlichen Schlüssel entspricht. Dieser Computer könnte also in 0,00000000000000000000003 % der Zeit im Jahr den richtigen privaten Schlüssel übersehen, ohne dass er es überhaupt merkt.
Diese Zahlen haben nichts mit der Technologie des Geräts zu tun; es handelt sich um die maximal möglichen Werte, die auf den seit den 1930er Jahren etablierten Gesetzen der Thermodynamik basieren. Diese Zahlen bedeuten, dass ein Brute-Force-Angriff auf einen 256-Bit-Schlüssel (den von Bitcoin verwendeten) unmöglich wäre, es sei denn, der Computer wäre aus etwas anderem als Materie gebaut und würde etwas anderes als Platz beanspruchen.
Dies ist die Potenz ausreichend großer Ganzzahlen. Egal wie mächtig ein Hacker ist: Wenn er nicht die Kraft von 3×1023 Sonnen zur Berechnung eines Jahres oder die Kraft einer Sonne zur Berechnung von 3×1023 Jahren nutzen kann, kann sein Computer nicht einmal alle privaten Schlüssel zu Ende zählen – geschweige denn Testen Sie sie oder nutzen Sie sie anderweitig.