Token Sicherheit: Kryptografie - Token-Economy-Book/2ndEdition-German GitHub Wiki

Kryptografische Verfahren sind integraler Bestandteil von Blockchain-Protokollen. Sie ermöglichen eine zuverlässige Identifizierung aller Netzwerkakteure sowie den sicheren Wertetransfer in einem öffentlichen Netzwerk. Sie sind wichtig für die sichere Verwaltung von digitalen Werten – den Tokens.

~

Kryptografie beschäftigt sich mit der sicheren Kommunikation in öffentlichen Netzwerken – in Anwesenheit von unbekannten, nicht vertrauenswürdigen Akteuren. Kryptografische Verfahren haben das Ziel, Informationssysteme abhörsicher und resistent gegen Manipulation zu machen. Die Geschichte der Kryptografie reicht in eine Zeit zurück, in der die Schrift erfunden wurde, und hat sich im Computerzeitalter stark weiterentwickelt. In der Vergangenheit bezog sich die Kryptografie fast ausschließlich auf Verschlüsselungsverfahren, d. h. die Umwandlung einer Information (Klartext) in einen unverständlichen Text (Chiffretext). Ein Chiffretext ist eine verschlüsselte Information, die eine Form des ursprünglichen Klartexts enthält, aber von einem Menschen oder Computer ohne den richtigen Geheimcode zum Entschlüsseln nicht lesbar ist.

Chiffretexte, auch Cyphers genannt, gehören zu den ersten Verschlüsselungstechniken, die entwickelt wurden, um Klartext zu verschlüsseln. Beispiele hierfür sind Substitutionschiffren und Transpositionschiffren. Bei Substitutionschiffren werden Einheiten von Klartext durch einzelne Buchstaben oder Buchstabenpaare ersetzt. Bei Transpositionschiffren werden Einheiten des Klartexts in einer anderen und meist recht komplexen Reihenfolge neu angeordnet. Die früheste bekannte Anwendung von kryptografischen Verfahren ist ein in Stein gemeißelter Chiffretexte aus Ägypten. Das Entschlüsseln ist die Umkehrung des Prozesses der Verschlüsselung: Es ermöglicht die Umwandlung des unverständlichen Chiffretexte zurück in den ursprünglichen Klartext. Eine Chiffre repräsentiert zwei zusammenhängende Algorithmen, die sowohl die Verschlüsselung als auch die Entschlüsselung bewerkstelligen. Die Chiffre muss so gestaltet sein, dass es einfach ist, eine Nachricht zu verschlüsseln, aber es umgekehrt schwer ist, diese zu entschlüsseln, wenn man den Code nicht kennt.

Mit der Entwicklung der Enigma-Maschine, einer Rotor-Chiffriermaschine im Jahre 1918, sowie dem Aufkommen von Computern im Zweiten Weltkrieg wurden die Methoden der Kryptografie und der Kryptoanalyse immer komplexer und setzten sich zunehmend durch. Elektronische Prozesse erweiterten hierbei nicht nur die Möglichkeiten der Kryptoanalyse – also das „Knacken“ einer Verschlüsselung –, sondern ermöglichten auch komplexere Verschlüsselungsverfahren. Kontinuierliche Verbesserungen der Rechenleistung von Computern führten darüber hinaus zur vermehrten Durchführung von sogenannten Brute-Force-Angriffen. Ein Computeralgorithmus probiert dabei alle möglichen Kombinationen aus, um die Chiffre zu „erraten“. Mit dem Aufkommen leistungsfähiger Computer wurden klassische Chiffren deshalb überflüssig, weil sie bei einfachen Brute-Force-Angriffen sehr leicht zu erraten waren. Moderne kryptografische Algorithmen sind daher so konzipiert, dass das Erraten des Algorithmus prohibitiv viel Geld und Zeit kostet und sich somit nicht rentiert. Die moderne Kryptografie berücksichtigt Erkenntnisse der Mathematik, der Informatik, der Elektrotechnik und der Kommunikationswissenschaft. Mit dem Aufkommen von Quantencomputern entwickeln sich inzwischen auch Forschungsvorhaben, die den Zusammenhang zwischen kryptografischen Problemen und der Quantenphysik untersuchen.[^1]

Das Aufkommen von Computern hat außerdem zu neuen Formen der Verschlüsselung von digitalen Informationen in jeglicher Form geführt – nicht nur von Texten. Während sich frühe Verschlüsselungsverfahren in erster Linie auf die Geheimhaltung der Kommunikation von Geheimdiensten, Militärs und Diplomaten konzentrierten, hat sich das Anwendungsfeld im Internetzeitalter auf den elektronischen Handel, digitale Zahlungen, die digitale Rechteverwaltung, das Passwortmanagement, die Überprüfung der Nachrichtenintegrität, die Authentifizierung der Identität, digitale Signaturen und auf vieles mehr ausgeweitet.

Kryptografische Verfahren werfen im Informationszeitalter auch eine Reihe von rechtlichen Fragen auf. Kryptografie als potenzielle Methode in der Spionage hat Staaten dazu bewogen, ihren Einsatz zu verbieten und diese Technologie in manchen Fällen als Waffe einzustufen. Darüber hinaus ist das Thema Kryptografie auch in Zusammenhang mit „digitalen Menschenrechten“ interessant. Die Frage, wie der Schutz personenbezogener Daten im Maschinenzeitalter gewährleistet werden kann, wird zunehmend von einer breiteren Öffentlichkeit diskutiert. Das Thema wird in den kommenden Jahren sicher noch an Bedeutung gewinnen. Die entscheidende Frage ist, ob das verfassungsmäßige Recht auf Privatsphäre, wie etwa das Briefgeheimnis oder das Recht auf Privatsphäre im eigenen Haus, auf das Recht auf verschlüsselte Kommunikation im Internet übertragen werden kann.

Im Zusammenhang mit Blockchain-Netzwerken gibt es drei Hauptarten von kryptografischen Verfahren, die relevant sind: die Hash-Funktionen, die symmetrische Kryptografie und die asymmetrische Kryptografie (Public-Key-Kryptografie). In der kryptografischen Literatur wird bei der Beschreibung sicherheitsrelevanter Szenarien oft die Namen Alice (für den Absender), Bob (für den Empfänger) und Eve („Eavesdropper” – für einen potenziellen Kontrahenten) verwendet. Diese Terminologie findet auch in den folgenden Kapiteln Anwendung.

Hash-Funktion: Eine Hash-Funktion ist ein mathematischer Algorithmus, der Daten beliebiger Größe (Nachricht) auf Daten einer festen Größe (einen Hashwert oder Hash) reduziert. Es handelt sich um eine Einwegfunktion. Das bedeutet, dass die einzige Möglichkeit, die ursprünglichen Eingabedaten (Nachricht) aus dem Hash wiederherzustellen, darin besteht, alle möglichen Variationen dieser Eingaben mittels Brute Force auszuprobieren. Dies ist zwar möglich, aber zeitaufwendig und damit teuer. Anwendungen von Hash-Funktionen finden sich beispielsweise in digitalen Signaturen, in jeder Art von Authentifizierung, bei digitalen Fingerabdrücken, bei der Erkennung von Duplikaten, bei einer eindeutigen Identifizierung von Dateien oder beim Einsatz von Hash-Funktionen als Prüfsumme zur Erkennung von Datenverlusten. Um als belastbar zu gelten, müssen kryptografische Hash-Funktionen bestimmte Eigenschaften erfüllen. Sie müssen einfach zu berechnen und deterministisch sein. Deterministisch bedeutet, dass dieselbe Nachricht, die einen bestimmten Algorithmus durchläuft, immer zum selben Hash führen muss und nicht zwei unterschiedliche Werte erzeugen darf. Außerdem darf es nicht möglich sein, die ursprüngliche Nachricht aus ihrem Hashwert zu erzeugen, außer durch das Ausprobieren aller möglichen Optionen. Es sollte umgekehrt nicht möglich sein, zwei verschiedene Nachrichten mit dem gleichen Hashwert zu finden. Auch minimale Änderungen am ursprünglichen Eingangswert müssen den Hashwert verändern.

Symmetrische Verschlüsselung: Vor der Entstehung der asymmetrischen Verschlüsselung (Public-Key-Kryptografie) verließen sich zwei Parteien auf einen einzigen Verschlüsselungscode, den sie über ein nicht kryptografisches Verfahren austauschen mussten: durch geheime Meetings, versiegelte Umschläge oder vertrauenswürdige Kuriere. Wenn sie mit jemandem vertraulich kommunizieren wollten, mussten sie ein persönliches Treffen mit der anderen Person vereinbaren, um sich gemeinsam auf einen geheimen Schlüssel zu einigen. In der Welt der elektronischen Kommunikationsverfahren in öffentlichen Netzwerken wie dem Internet, in der man sich oftmals mit unbekannten Personen abstimmen muss, wären solche Methoden aber kaum realisierbar oder skalierbar. Aus diesem Grund wird für die Kommunikation in öffentlichen Netzen heutzutage keine symmetrische Verschlüsselung mehr verwendet. Symmetrische Verfahren haben trotzdem noch ihre Existenzberechtigung. Sie sind schneller und effizienter als asymmetrische Verfahren und werden daher zur Verschlüsselung großer Datenmengen, etwa bei bestimmten Anwendungen des Zahlungsverkehrs oder zur Generierung von Zufallszahlen, genutzt.

Asymmetrische Verschlüsselung, auch als Public-Key-Kryptografie bezeichnet, löste das Koordinationsproblem der Schlüsselübergabe. Es erhöht die Sicherheit der Kommunikation in nicht vertrauenswürdigen Netzwerken wie dem Internet, indem zwei Schlüssel eingeführt werden: ein öffentlicher Schlüssel und ein privater Schlüssel. Der private Schlüssel ist nur dem Besitzer bekannt und muss geheim gehalten werden, der öffentliche Schlüssel kann an jede Person weitergegeben werden. Jede Person kann nun eine Nachricht mit dem öffentlichen Schlüssel des Empfängers verschlüsseln. Diese Nachricht kann anschließend nur mit dem privaten Schlüssel des Empfängers entschlüsselt werden. Absender können eine Nachricht mit ihrem privaten Schlüssel verschlüsseln, um eine digitale Signatur für die Nachricht zu erstellen. Jeder kann nun mit dem zugewiesenen öffentlichen Schlüssel überprüfen, ob die Signatur gültig ist, und damit verifizieren, dass sie wirklich vom Absender kommt. Wie die Schlüssel generiert werden, hängt von den verwendeten kryptografischen Algorithmen ab. Beispiele für asymmetrische Systeme sind RSA (Rivest-Shamir-Adleman) und ECC (Elliptic-Curve-Cryptography), auf Deutsch Elliptische-Kurven-Kryptografie. ECC wird auch im Bitcoin-Netzwerk verwendet. [^2]

Die folgenden Unterkapitel konzentrieren sich auf den Einsatz kryptografischer Verfahren bei Bitcoin und vergleichbaren Blockchain-Protokollen. Bitte beachten Sie, dass alternative Blockchain-Netzwerke andere kryptografische Verfahren verwenden als die hier beschriebenen. Einige Blockchain-Netzwerke nutzen kryptografische Verfahren, die einen besseren Datenschutz ermöglichen, wie zum Beispiel Zcash (Zero-Knowledge-Protokolle) und Monero[^3] (Ringsignaturen).[^4] Die Bitcoin-Community selbst untersucht bereits alternative kryptografische Signaturverfahren, die die Privatsphäre besser schützen und besser skalierbar sind. Ein Beispiel hierfür ist das Mimblewimble-Protokoll (mehr dazu im Kapitel „Privacy Tokens”). Alternative kryptografische Algorithmen sind auch im Rahmen der Debatte rund um Skalierungsfragen relevant. Diese werden im Anhang des Buchs näher erläutert (siehe Anhang, „Skalierung von Blockchain-Netzwerken“).


Symmetrisch vs Assymetrisch


Public-Key-Kryptografie

Ohne Kryptografie gäbe es in einem öffentlichen Netzwerk, in dem sich die Akteure nicht kennen oder einander nicht vertrauen, keine sichere Verwaltung von Tokens. Das Bitcoin-Netzwerk und ähnliche Distributed Ledger verwenden Public-Key-Kryptografie, um die Identität eines Tokenbesitzers mithilfe einer Reihe von kryptografischen Schlüsseln zu beweisen. Diese Schlüssel werden mit einer Software, der „Wallet“, verwaltet. In Kombination mit einer Transaktion können die Schlüssel eine eindeutige digitale Signatur erzeugen. Der öffentliche Schlüssel wird mathematisch aus dem privaten Schlüssel generiert. Während es sehr einfach ist, den öffentlichen Schlüssel aus dem privaten Schlüssel zu berechnen, ist der umgekehrte Fall nur durch das Erraten des Schlüssels mittels Brute-Force-Verfahren möglich. Es ist daher kein Problem, wenn ein öffentlicher Schlüssel anderen Teilnehmern im Netzwerk bekannt ist, da niemand den privaten Schlüssel ohne erheblichen Zeit- und Kostenaufwand ableiten kann. Der private Schlüssel muss allerdings immer geheim gehalten werden. Nur dann können eine elektronische Nachricht und digitale Werte sicher vom Besitzer des privaten Schlüssels verwaltet werden. Und nur der Besitzer dieses privaten Schlüssels kann die Nachricht oder die Daten mit dem privaten Schlüssel, der dem öffentlichen Schlüssel zugeordnet ist, entschlüsseln.

Ein analoges Beispiel für einen öffentlichen Schlüssel wäre das eines Vorhängeschlosses. Nehmen wir an, dass Alice und Bob privat kommunizieren wollen, und dafür Vorhängeschlösser kaufen. Wenn Bob eine Nachricht an Alice senden möchte, aber Angst hat, dass jemand diese abfangen und lesen könnte, wird er Alice bitten, ihr Vorhängeschloss (entriegelt) an ihn zu schicken und ihren Schlüssel zu behalten. Bob kann seinen Brief in eine kleine Box legen und ihn mit dem Vorhängeschloss abschließen, das Alice ihm geschickt hat. Der Brief kann nun auf öffentlichen Transportwegen um die Welt geschickt werden, ohne dass eine unbefugte Person die Nachricht lesen kann. Nur Alice, die den Schlüssel zu ihrem Vorhängeschloss hat, kann den Brief öffnen. Natürlich könnte jemand versuchen, die Box mit roher Gewalt, also mit „Brute Force“, zu knacken, statt den Schlüssel zu benutzen. Dies ist zwar möglich, der Schwierigkeitsgrad hängt aber von der Widerstandsfähigkeit der Box und der Stärke des Schlosses ab. Gleiches gilt für die Algorithmen der modernen Kryptografie.

Sicherheit

Die entscheidende Frage in der Public-Key-Kryptografie lautet daher: Wie kann man den Rechenaufwand für die Ableitung des privaten Schlüssels aus dem öffentlichen Schlüssel erhöhen? Wie schwer ist es, die Verschlüsselung durch Schätzen des Ergebnisses zu knacken? Wie lange würde es dauern, den privaten Schlüssel zu erraten, und wie teuer wäre es? Sowohl der private als auch der öffentliche Schlüssel bestehen aus einer festgelegten Länge zufälliger Zeichen. Je länger diese Zeichenkombination ist, desto schwieriger wird es, sie zu erraten, weil man viel mehr Optionen ausprobieren muss. Wenn das Raten bzw. Durchprobieren ein paar Jahrzehnte dauert, gilt der Code als sicher. Da aber Computer immer schneller und effizienter werden, müssen auch immer anspruchsvollere Algorithmen entwickelt werden.

Die Gefahr eines erfolgreichen Brute-Force-Angriffs kann gemindert werden, wenn man entweder längere Zeichenkombinationen verwendet oder robustere Algorithmen erfindet. Um sicherzustellen, dass der Schlüssel schwer zu erraten ist, hat ein widerstandsfähiger privater Schlüssel Mindestanforderungen: Es muss sich um einen zufällig generierten Schlüssel handeln. Der Schlüssel muss lang sein. Es muss ein sicherer Algorithmus für die Generierung des Schlüssels verwendet werden. Es muss vermieden werden, dass andere Personen oder Maschinen denselben Schlüssel benutzen. Lange Zeichenkombinationen ermöglichen eine bessere Zufälligkeit und sind viel schwieriger zu knacken, es dauert allerdings länger, sie zu berechnen.

Aufgrund ihrer Komplexität müssen sichere Algorithmen wissenschaftlich fundiert sein und auf Sicherheitsverletzungen getestet werden, am besten über Jahrzehnte. Man sollte es deshalb unterlassen, einen eigenen Algorithmus erfinden zu wollen. Dieses Problem wurde offensichtlich, als das Team hinter dem IOTA-Netzwerk[^5] beschloss, eine eigene Hash-Funktion namens Curl zu implementieren, die sich später als „nicht kollisionsresistent“ herausstellte. „Kollision“ entsteht dann, wenn zwei unterschiedliche Eingangsdaten, die durch dieselbe Hashing-Funktion laufen, die gleichen Ausgangsdaten erzeugen und somit den Algorithmus unsicher machen. Ein Team von Forschern des MIT und der Boston University fand genau solche Fehler in der IOTA-Curl-Funktion. Das IOTA-Team hat zwar diese Schwachstellen behoben, behauptete aber, diesen Fehler absichtlich eingebaut zu haben, was zu viel Kritik innerhalb der Crypto-Community geführt hat.

Seit der Entstehung von Bitcoin im Jahr 2009 wurden die kryptografischen Verfahren, die im Bitcoin-Netzwerk verwendet werden, nicht gebrochen. Da aber Computer immer leistungsfähiger werden und Zeichenkombinationen schneller erraten werden können, müssen sich die heute verwendeten Algorithmen den sich schnell entwickelnden technologischen Standards anpassen. Dies stellt für die Zukunft der Blockchain-Technologie ein erfolgskritisches Forschungsgebiet dar (siehe Referenzen am Ende des Kapitels).

Hashen im Bitcoin-Netzwerk

Das sogenannte Hashen oder Hashing ist ein Verfahren zur Umwandlung großer Datenmengen in kurze Zahlenkombinationen. Durch das Hashen kann man einen Text oder ein Bild, das eine Zahlenkombination variabler Länge darstellt, in eine Zahlenkombination fester Länge in Form eines Hashs konvertieren. Eine Hash-Funktion sollte verschiedene Ausgabewerten für unterschiedliche Eingabewerte erzeugen. Im Bitcoin-Netzwerk wird das Hashing als Bestandteil einiger Prozesse eingesetzt: (i) beim Berechnen von Wallet-Adressen, (ii) für das Codieren von Transaktionen zwischen Wallets, (iii) für das Überprüfen und Validieren der Kontensalden von Wallets und (iv) für den Konsensmechanismus „Proof-of-Work“.

Das Bitcoin-Netzwerk verwendet einen Secure Hash Algorithm (SHA) wie zum Beispiel SHA-256. Eine wichtige Eigenschaft von Hashes ist, dass sich bei der Änderung eines einzelnen Bits der Eingabedaten die resultierenden Ausgabedaten signifikant ändern, was es leicht macht, auch kleine Änderungen in großen Dokumenten einfach zu erkennen. Wie Sie am Beispiel unten sehen können, wird ein ganz anderer Hash erzeugt, wenn man auch nur einen Buchstaben ändert. Dieses Phänomen basiert auf dem sogenannten „Lawineneffekt“ und ist nützlich, um auf einfache Weise Datenintegrität zu gewährleisten. Eine ganz andere Zeichenkette ergibt sich wiederum aus dem Hashing des Hashs.

~
Der entsprechende SHA-256-Hashwert des Satzes „How to buy Bitcoin?“ sieht so aus:
156aedcfab1d49f73abddd89faf78d9930e4b523ab804026310c973bfa707d37
~
Wenn wir nur ein einziges Symbol entfernen, z. B. das Fragezeichen „?“, resultiert daraus dieser Hashwert: 4314d903f04e90e4a5057685243c903fbcfa4f8ec75ec797e1780ed5c891b1bf
~
Und wenn wir den bestehenden Hash hashen, ist dies das Ergebnis:
4c9622e1148ff0b855de50e62999d194039eb2faa9e715cc9d9ef604015aa1fe
~

Der Lawineneffekt beschreibt das Verhalten einer mathematischen Funktion, bei der sich der resultierende (Hash-)Wert schon bei einer geringfügigen Änderung eines Eingabestrings (Zeichenfolge) drastisch ändert. Das bedeutet, dass sich in einem Dokument von mehreren Hundert Seiten, in dem Sie nur ein Wort auswechseln oder sogar lediglich ein Komma verändern, der gesamte Hash ändert. Der Hashwert eines Dokuments kann daher als kryptografisches Äquivalent des Dokuments dienen – sozusagen als ein digitaler Fingerabdruck des Dokuments. Bei der Erstellung einer digitalen Signatur für ein Dokument muss man nicht mehr das gesamte Dokument mit dem privaten Schlüssel eines Absenders verschlüsseln, was viel Zeit in Anspruch nehmen kann. Es genügt, stattdessen den Hashwert des Dokuments zu berechnen und zu verschlüsseln.[^6]

Wallets und digitale Signaturen

Eine Wallet ist ein Blockchain-Client, eine Software, die den privaten Schlüssel, den öffentlichen Schlüssel und die Blockchain-Adresse einer Person verwaltet. Die Wallet kommuniziert mit dem Blockchain-Netzwerk und verwaltet auch Blockchain-relevante Daten. Sie ist auf einem Computer oder Mobiltelefon installiert oder wird von einem dedizierten Hardwaregerät (wie z. B. Trezor, Ledger etc.) ausgeführt, das nur den Zweck hat, Tokens zu verwalten.

Beim ersten Installieren einer Bitcoin-Wallet beispielsweise wird ein Schlüsselpaar generiert, das aus einem privaten Schlüssel und einem öffentlichen Schlüssel besteht. In einem ersten Schritt wird der private Schlüssel, eine zufällig erzeugte 256 Bit lange Zahl, per Zufallsprinzip generiert. Danach wird der öffentliche Schlüssel mathematisch aus dem privaten Schlüssel abgeleitet. Hierbei kommt die Elliptische-Kurven-Kryptografie zum Einsatz. Die Bitcoin-Adresse wird wiederum aus dem öffentlichen Schlüssel abgeleitet. Hierbei wird aber ein anderes kryptografisches Verfahren verwendet als beim Generieren des öffentlichen Schlüssels.

Das Verwenden unterschiedlicher kryptografischer Verfahren bietet eine zusätzliche Sicherheitsebene. Man müsste zwei unterschiedliche kryptografische Algorithmen durch Brute-Force-Angriffe durchbrechen, um aus dem Public Key den Private Key zu erraten. Dies ist auch insofern wichtig, da die Elliptische-Kurven-Kryptografie anfällig für Brute-Force-Angriffe durch potenzielle Quantencomputer ist. Die Hashing-Funktion, mit der die Adresse vom Public Key abgeleitet wird, ist es aber nicht. Aus demselben Grund schließen manche Radfahrer ihr Fahrrad auf der Straße zweimal ab, und zwar mit Schlössern, die unterschiedliche Sicherheitsmechanismen aufweisen (etwa ein Rahmen- und ein Kettenschloss). Dies bietet eine zusätzliche Sicherheit. Falls jemand das Fahrrad stehlen will, wird hierdurch der Aufwand erhöht.

Die Blockchain-Adresse bietet in einem Blockchain-Netzwerk eine eindeutige Referenzierbarkeit der Tokenbesitzer. Diese Adresse hat eine ähnliche Funktion wie die Kontonummer einer Bank oder die E-Mail-Adresse einer Person. Um Tokens zu senden oder zu empfangen, braucht man eine Blockchain-Adresse. Jedes Mal, wenn Sie z. B. Bitcoins senden wollen, müssen Sie dafür einen Bitcoin-Client verwenden - eine Bitcoin-Wallet - um die Bitcoin Transaktion mit Ihrem in der Wallet gespeicherten privaten Schlüssel zu signieren. Die Wallet-Software generiert hierbei einen Hashwert ihrer Transaktion und unterzeichnet sie mit ihrem privaten Schlüssel. Dieses Verfahren wird als „digitale Signatur“ bezeichnet. Jeder signierte Token-Transfer kann von allen anderen Netzwerkteilnehmern mit dem dazu passenden öffentlichen Schlüssel überprüft werden. Anschließend wird im gesamten Netzwerk Ihr aktueller Token-Saldo auf allen Kopien des Transaktionsverzeichnisses, dem Ledger, synchronisiert (siehe Kapitel „Bitcoin, Blockchain und andere Distributed Ledger“).

In einer Blockchain-Wallet sind niemals Tokens abgespeichert. Dies ist auch gar nicht möglich, weil ein Token eine abstrakte digitale Referenz von Besitzrechten und Zugangsrechten darstellt. Daher ist der Begriff „Wallet“ etwas irreführend. Das Wort „Schlüsselanhänger“ wäre besser geeignet, da die Wallet als sicherer Aufbewahrungsort und Speicher Ihrer Schlüssel und als Kommunikationsmittel für die Interaktion mit dem Blockchain-Netzwerk dient. Die Wallet verwahrt nicht nur das Schlüsselpaar, das Ihrer Blockchain-Adresse zugeordnet ist, sondern auch alle Transaktionen, an denen der öffentliche Schlüssel der Wallet beteiligt ist. Die Wallet speichert außerdem Zusatzinformationen für spezielle Transaktionen, wie zum Beispiel für Multi-Signatur-Transaktionen.

Der private Schlüssel muss immer geheim gehalten und sollte nicht an andere Personen weitergegeben werden, es sei denn, man möchte einer anderen Person absichtlich Zugang zu den eigenen Tokens gewähren. Ohne eine Wallet, die Ihre Schlüssel verwaltet, haben Sie keinen Zugang zu Ihren Tokens. Die Wallet zu verlieren, gleicht daher dem Verlieren Ihres Wohnungsschlüssels. Die Tokens existieren zwar noch im Netzwerk und sind Ihrer Adresse zugeordnet, aber Sie können nicht darauf zugreifen. Wenn Sie die Schlüssel zu Ihrer Wohnung verlieren, gehört die Wohnung immer noch Ihnen, aber Sie können nicht hinein, solange Sie den Schlüssel nicht wiederfinden. Möglicherweise haben Sie einen Schlüssel bei einem Nachbarn, Freund oder Verwandten hinterlegt. Oder Sie finden einen Schlosser, der Ihnen hilft, in Ihr eigenes Haus einzubrechen. Das Aufbrechen des Schlosses ähnelt einer Brute-Force-Attacke, um einen privaten Schlüssel zu erraten. Eine andere Analogie ist eine versenkte Schatztruhe am Meeresgrund. Das Gold ist zwar noch existent, aber wer kann es sich leisten, 10.000 Meter abzutauchen, um die Schatztruhe zu bergen?


Digitale Signatur



Generierung von Schlüsseln und Adressen


Wenn Sie Ihre Wallet verlieren, ohne ein Backup Ihres Private Key zu haben, verlieren Sie auch den Zugang zu Ihren Tokens. Da Sie den öffentlichen Schlüssel aus Ihrem privaten Schlüssel und die Adresse wiederum aus dem öffentlichen Schlüssel ableiten können, reicht es, wenn Sie lediglich Ihren privaten Schlüssel sichern, da alles andere mit den entsprechenden kryptografischen Algorithmen aus dem privaten Schlüssel abgeleitet werden kann. Verlieren Sie das Endgerät, auf dem Ihre Wallet-Software läuft, oder ist das Gerät defekt, können Sie nur mit einem Backup Ihrer Seed-Phrase oder Ihres privaten Schlüssels die Wallet auf einem anderen Gerät wiederherstellen. Viele Menschen haben kein Vertrauen in ihre eigene Merkfähigkeit und ziehen es daher vor, ihre Tokens von Krypto-Handelsplattformen verwalten zu lassen. Ähnlich wie Banken fungieren diese Handelsplattformen als Verwalter der eigenen Tokens (siehe hierzu Kapitel „Token-Handel“). Grundsätzlich gibt zwei verschiedene Arten von Wallets:

Hosted Wallets sind Depot-Dienstleistungen, die von Handelsplattformen angeboten werden, bei denen der jeweilige Dienstleister Ihre Wallet auf seinen Servern verwaltet. In den meisten Fällen wird Ihr Private Key ebenfalls von diesen Dienstleistern verwaltet. Die Wallet-Software repliziert den privaten Schlüssel des Benutzers so, dass ein Dritter Transaktionen im Namen des Benutzers durchführen kann.

Benutzergesteuerte Wallet bieten hingegen eine hundertprozentige Kontrolle der Tokens. Der private Schlüssel befindet sich in diesem Fall ausschließlich in der Obhut und Verantwortung des Nutzers. Das Signieren von Transaktionen erfolgt direkt vom Gerät des Users. Bei benutzergesteuerten Wallets wird der User jedoch zur Schwachstelle und verantwortet selbst jeglichen Verlust oder Diebstahl von Schlüsseln.

Eine Form der Absicherung gegen den Verlust oder Diebstahl von Private Keys ist die Social-Key-Recovery, bei der die User eine Reihe von Freunden, Familienmitgliedern oder Institutionen auswählen können, die im Fall eines Verlusts die Identität bestätigen und die Schlüsselwiederherstellung in einem Multi-Signatur-Prozess[^7] ermöglichen. Beispielsweise könnten Sie fünf vertrauenswürdige Personen benennen, die jeweils einen Teil Ihres Schlüssels - auch „Shard” genannt - verwalten, und an die Sie sich im Fall eines Verlusts wenden würden. Es könnte definiert werden, dass zumindest drei von fünf Teilnehmern Ihre Identität verifizieren müssen, damit der verlorene Schlüssel aus den verteilten Einzelteilen wiederhergestellt werden kann. Auf diese Weise können Sie genau bestimmen, wem Sie vertrauen, gleichzeitig aber das Risiko eines Verlusts minimieren. Ein Risiko besteht dennoch. Diese Menschen und Institutionen könnten sich theoretisch untereinander absprechen und gegen Sie verbünden. Eine weniger anspruchsvolle Lösung ist die automatische Erstellung eines Backups in Ihrer persönlichen Daten-Cloud, beispielsweise Ihrem Google Drive. Hierbei geben Sie die Souveränität und Kontrolle über Ihre Tokens aber wieder an andere ab.

Um eine echte P2P-Token-Ökonomie zu ermöglichen, bei der man Tokens von Wallet zu Wallet senden und empfangen kann, ohne dass vertrauenswürdige Dritte erforderlich sind, brauchen wir viel bessere Wallet-Management-Lösungen, als uns heute zur Verfügung stehen. Sicherheit und Praktikabilität sollten einander nicht ausschließen. Die meisten derzeit am Markt verfügbaren Wallets erlauben die Verwaltung von nur einer Art von Token oder einer begrenzten Anzahl von Tokens. Je nach zugrunde liegendem Blockchain-Protokoll gibt es unterschiedliche technische Spezifikationen für die Einbettung der Tokens in eine Wallet. Dies ist in der Entwicklung von Wallet-Software zeitaufwendig und teuer. Daher bieten nur wenige Wallet-Softwareanbieter derzeit eine Multi-Token-Funktionalität an.

Eine weitere Herausforderung der Wallet-Entwicklung ist die Frage, ob eine Wallet in Kombination mit dem zugrunde liegenden Distributed Ledger das Co-Signieren von Transaktionen ermöglicht, was für eine Vielzahl von Anwendungsfällen wichtig ist – beispielsweise für die kollektive Verwaltung von Vermögenswerten: (i) damit eine Bank oder eine Handelsplattform Ihre Tokens verwalten kann, (ii) für das kollektive Verwalten von Gemeinschaftseigentum, oder (iii) zur Wiederherstellung von Private Keys im oben beschriebenen Social-Key-Recovery-Verfahren.

Viele Blockchain-Netzwerke wie z. B. Das Ethereum-Netzwerk ermöglichen keine Multi-Signatur-Transaktionen. Im Ethereum-Netzwerk kann das durch einen Smart Contract umgangen werden. Allerdings haben diese Multi-Signatur-fähigen Smart Contracts erhebliche Sicherheitsprobleme (siehe Kapitel „Smart Contracts“). Ringsignaturen, Kollektivsignaturen und Shamir's Secret Sharing sind weitere Beispiele für alternative, kryptografische Algorithmen, die vom Blockchain-Netzwerk aktiviert und von der Wallet unterstützt werden müssen. Teile 3 und 4 dieses Buchs werden ausführlicher auf die Aspekte von Tokens im Allgemeinen eingehen und die Rolle von Wallets anhand von speziellen Anwendungsbespielen beleuchten.

Senden von Transaktionen

Wenn Alice Bitcoin-Tokens an Bob senden möchte, wird sie sich mit einer Wallet-Software authentifizieren, den Betrag angeben, den sie senden möchte, und Bobs Adresse als Empfänger angeben. Ihre Wallet-Software versendet dann die Transaktion an alle Computer im Netzwerk. Jeder Computer im Netzwerk kann nun gemäß den Netzwerkregeln überprüfen, ob die Transaktion gültig ist. Die genauen Schritte sind wie folgt:

* Alice verwendet eine Wallet-Software, die ihren privaten Schlüssel verwaltet, um Tokens an Bob zu senden. Sie muss hierfür Bobs Adresse und die Anzahl der Tokens, die sie senden will, eingeben. Ihre Wallet-Software generiert eine Transaktion, die alle notwendigen Details enthält: Alice’ öffentlichen Schlüssel, Bobs Adresse und die Anzahl der Tokens.

_* Ihre Wallet-Software erstellt einen Hash der Transaktion. Dieser Hash wird mit ihrem Private Key signiert, um dem Rest des Netzwerks zu beweisen, dass sie die rechtmäßige Besitzerin der Adresse und somit der Tokens ist (dies wird automatisch von ihrer Wallet-Software ausgeführt). _

* Alice sendet nun diese Transaktion an alle Computer im Netzwerk: Sie sendet sowohl die Klartexttransaktion als auch den signierten Hash (von ihrer Wallet-Software automatisch ausgeführt).

* Alle Computer im Netzwerk (Full Node), die die Transaktion erhalten, können nun die Gültigkeit der Transaktion validieren. Jeder Rechner im Netzwerk kann, unter anderem durch mathematische Verfahren, Alice’ Adresse aus ihrem öffentlichen Schlüssel ableiten, und zwar unter Verwendung der entsprechenden Hash-Funktionen des Blockchain-Netzwerks. Somit kann jeder Rechner überprüfen, ob die von Alice angegebene Adresse über genügend Tokens verfügt.

_* Nach Überprüfung all dieser Details per Mehrheitsbeschluss der Netzwerkakteure werden validierte Transaktionen in einem Transaktionsblock gespeichert und mit einem Hash versehen. Dieser Block wird aber nur dann Teil des Transaktionsverzeichnisses, wenn andere Computer im Netzwerk bestätigen, dass der Hash des Blocks korrekt ist. Dieser Prozess der Erstellung neuer Transaktionsblöcke unterliegt dem Konsensmechanismus Proof-of-Work. _

* Alle Netzwerkknoten werden ihr Transaktionsverzeichnis bei der Erstellung des nächsten Blocks entsprechend anpassen. In diesem angepassten Transaktionsverzeichnis kann man nun einen veränderten Saldo sehen: Bob besitzt die Tokens, die Alice ihm geschickt hat, und Alice hat dementsprechend weniger Tokens. Die Transaktionshistorie dokumentiert den universellen Zustand des Netzwerks und kann nicht mehr von einer einzelnen Instanz rückgängig gemacht werden. Die Transaktionshistorie könnte theoretisch nur per Mehrheitsbeschluss aller Netzwerkteilnehmer rückgängig gemacht werden (siehe nächstes Kapitel).

Zusammenfassung

~
Kryptografie beschäftigt sich mit der sicheren Kommunikation in öffentlichen Netzwerken in Anwesenheit von unbekannten, nicht vertrauenswürdigen Akteuren. Kryptografische Verfahren haben das Ziel, Informationssysteme abhörsicher und manipulationsresistent zu machen. Die Geschichte der Kryptografie reicht in eine Zeit zurück, in der die Schrift erfunden wurde, sie hat sich im Computerzeitalter deutlich weiterentwickelt.
~
Kryptografische Verfahren werden in Blockchain-Netzwerken eingesetzt, um die Authentifikation aller Netzwerkakteure zu ermöglichen und die Transparenz der Interaktionen – unter Wahrung der Privatsphäre aller Netzwerkakteure – zu gewährleisten.
~
Public-Key-Kryptografie wird verwendet, um die Identität mit einem Satz kryptografischer Schlüssel zu beweisen. Diese Schlüssel werden von einem Blockchain-Client - der Wallet - verwaltet.
~
Ähnlich wie bei einer handschriftlichen Unterschrift wird eine digitale Signatur verwendet, um sicherzustellen, dass Sie tatsächlich derjenige sind, für den Sie sich ausgeben. Im Bitcoin-Netzwerk und anderen Blockchain-Netzwerken sind digitale Signaturen mathematische Funktionen, die auf eine bestimmte Wallet-Adresse verweisen und die Verwaltung von Tokens ermöglichen.
~
Eine Hash-Funktion ist ein mathematischer Algorithmus, der Daten beliebiger Länge (Nachricht) in Daten einer festen Länge (Hashwert oder Hash) umwandelt. Es handelt sich um eine Einwegfunktion. Das bedeutet, dass die einzige Möglichkeit, die ursprünglichen Eingabedaten (Nachricht) aus dem Hash wiederherzustellen, darin besteht, alle möglichen Eingaben auszuprobieren, um zu sehen, ob sie eine Übereinstimmung ergeben. Dies ist zwar möglich, aber zeitaufwendig und damit teuer.
~
Blockchain-Wallets enthalten niemals Tokens. Dies ist auch gar nicht möglich, weil ein Token eine abstrakte digitale Referenz von Besitzrechten und Zugangsrechten darstellt. Daher ist der Begriff Wallet etwas irreführend, die Bezeichnung Schlüsselanhänger wäre besser geeignet. Denn die Wallet dient als sicherer Aufbewahrungsort und Speicher der Schlüssel und als Kommunikationsmittel für die Interaktion mit dem Blockchain-Netzwerk.
~
Wenn Sie Ihre Wallet verlieren, ohne ein Backup Ihres Private Key zu haben, verlieren Sie den Zugang zu Ihren Tokens. Da Sie den öffentlichen Schlüssel aus Ihrem privaten Schlüssel und die Adresse wiederum aus dem öffentlichen Schlüssel ableiten können, reicht es, wenn Sie lediglich Ihren privaten Schlüssel sichern, da alles andere aus dem privaten Schlüssel mit den entsprechenden kryptografischen Algorithmen abgeleitet werden kann.
~

Quellen und weiterführende Literatur

Fussnoten

[^1]: Mögliche Effekte des Quantencomputings, die derzeitige Kryptografische Algorithmen durch Brute-Force Angriffe leicht durchbrechen könnten, werden bereits in der Post-Quantum-Kryptografie von einigen Forschern und Ingenieuren berücksichtigt.

[^2]: Obwohl die Elliptische-Kurven-Kryptografie das gleiche Sicherheitsniveau wie RSA bietet, benötigt sie weniger Rechenleistung und eine kleinere Schlüsselgröße, was den Speicher- und die benötigte Bandbreite reduziert. Das Sicherheitsniveau kann nur bei gleicher Schlüsselgröße wirklich verglichen werden - ein 3072 Bit RSA ist nicht so stark wie ein 3072 Bit ECC. Da ECC effizienter zu berechnen ist und die gleiche Sicherheit bei viel kleineren Schlüsselgrößen bietet, können der Speicher- und die benötigte Bandbreite reduziert werden.

[^3]: Zero-Knowledge-Protokolle ermöglichen das „kenntnissefreie” Validieren von Informationen, ohne die konkreten Informationen dem Prüfer dieser Informationen preisgeben zu müssen.

[^4]: Ring-Signaturen schützen den Absender, indem sie auf der Eingabeseite einer Transaktion die Daten verdecken, sodass es rechnerisch nicht möglich ist, festzustellen, wer der eigentliche Unterzeichner einer Transaktion ist. Die Bezeichnung „Ring" wird verwendet, weil der Mechanismus aus einer Gruppe von partiellen digitalen Signaturen verschiedener Benutzer besteht, die sich zu einer eindeutigen Signatur zusammenschließen, mit der eine Transaktion unterzeichnet wird.

[^5]: IOTA ist ein alternatives Distributed Ledger Protokoll, das keine Verkettung von Transaktionsblöcken verwendet so wie das Blockchain Protokoll, und das von sich behauptet, Bitcoins Skalierbarkeitsproblem mit einem alternativen Konsensmechanismus und alternativer Kryptografie zu lösen.

[^6]: Hier können Sie online Hash Werte errechnen: https://hashgenerator.de/

[^7]: Standard-Blockchain-Transaktionen benötigen für den Token-Transfer nur eine Signatur des Tokenbesitzers. Eine Multisignatur erfordert mehr als einen Schlüssel, um eine Token-Transaktion zu autorisieren und erfordert die Zusammenarbeit mehrerer Parteien. Diese Parteien können Personen, Institutionen oder programmierte Skripte sein.

⚠️ **GitHub.com Fallback** ⚠️