IT-Sicherheitsmanagement Teil 17: Bitcoin und Blockchain Eine kurze
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
IT-Sicherheitsmanagement Teil 17: Bitcoin und Blockchain Eine kurze Einführung ISM – WS 2018/19 - Teil 17/Bitcoin 18.01.19 1
Literatur [17-1] CT-Serie über Bitcoin CT 2018, Heft 7, 8, 10, 11, 12, 13, 14, 15, 23, 25, 26 CT 2019, Heft 1, 2 [17-2] Brümmerl, Kai: Blockchain, kurz&gut. O'Reilly, 2018 [17-3] Drescher, Daniel: Blockchain Grundlagen. Mitp, 2017 [17-4] Antonopoulos, Andreas: Bitcoin und Blockchain – Grundlagen und Programmierung. O'Reilly, 2.Ed., 2018 ISM – WS 2018/19 - Teil 17/Bitcoin 2
Links I [17L-1] https://de.wikipedia.org/wiki/Bitcoin [17L-2] https://de.wikipedia.org/wiki/Satoshi_Nakamoto [17L-3] https://de.wikipedia.org/wiki/Bitcoin_Core https://github.com/bitcoin/bitcoin [17L-4] https://de.wikipedia.org/wiki/Proof_of_Work [17L-5] https://de.wikipedia.org/wiki/Proof_of_Stake [17L-6] https://www.blockchain.com/de/explorer [17L-7] https://en.wikipedia.org/wiki/Merkle_tree https://de.wikipedia.org/wiki/Hash-Baum https://patents.google.com/patent/US4309569 [17L-8] https://de.wikipedia.org/wiki/Byzantinischer_Fehler https://www.mtv.tu-berlin.de/fileadmin/a3435/Lehre/SoSe06/Dist Algs/Byzanz1.pdf https://blog.novatrend.ch/2018/01/22/blockchain-byzantinische- generaele-und-das-cap-theorem [17L-9] https://en.bitcoin.it/wiki/Vocabulary ISM – WS 2018/19 - Teil 17/Bitcoin 3
Links II [17L-10] https://de.wikipedia.org/wiki/QR-Code [17L-11] https://bitcoin.org/de/wallets/hardware/ [17L-12] https://de.wikipedia.org/wiki/Base58 [17L-13] https://de.wikipedia.org/wiki/Elliptic_Curve_DSA [17L-14] https://de.wikipedia.org/wiki/Digital_Signature_Algorithm [17L-15] https://de.wikipedia.org/wiki/Elliptic_Curve_Cryptography ISM – WS 2018/19 - Teil 17/Bitcoin 4
Übersicht • P2P-Idee • Blockchain • Bitcoin • Einige Details Dieser Foliensatz bezieht sich auf das klassische Bitcoin-Konzept. Es wird viele Variationen davon, die hier nicht behandelt werden. ISM – WS 2018/19 - Teil 17/Bitcoin 5
Geschichte (Auszug) 2008, Nov. Veröffentlichung des Konzept durch Satoshi Nakamoto 2009, Jan. Open Source Referenz-Implement 3. 1. 2009 1. Block: Genesis Block 2015, Jul. Absterben von 7 Blöcken (Transaktionen von 2h) 2016, Mitte DAO-Hack Ethereum, Software-Fehler 2017, Aug. Hard Fork: Bitcoin Cash 2017, Sep. China verbietet sanft das Bitcoin-Schürfen 2017, Okt. Hard Fork: Bitcoin Gold 2017, Dez. Gebührenexzesse, bis zu 100 US$ Überweisungsgebühr 2018, Feb. Hard Fork: Bitcoin Private 2018, Mai 2x 51%-Angriffe auf Bitcoin Gold, Schaden 18 Mio. US$ Satoshi Nakamoto ist ein Pseudonym, dessen Identität bis heute ungeklärt ist, obwohl der Australier Craig Wright behauptet, Nakamoto zu sein. ISM – WS 2018/19 - Teil 17/Bitcoin 6
Der Bitcoin I • 1 Bitcoin (BTC) = 100*106 Satoshi • Begrenzung auf ca. 21 Mio. BTC Die Umrechnungen in • 1 Satoshi = 0,0034 Cent (EUR, s.u.) EUR beziehen sich auf • Beispiel Jan 2019: den zitierten Stand. – 1 Bitcoin = 3.920 US$ (3.425 EUR) – Hashrate 39.381.570 TH/s (Tausend Hash/Sekunde) – Difficulty = 5.6*1012 – Gebühr = 9.003 Satoshi (31 Cent, s.o.) – Unbestätigte Transfers = 7.100 – Transfers pro Tag = 285.000 – Mempool = 3,3 MB – Blockchain-Größe = ca. 192 GB – Ca. 12.000 Knoten mit der (fast vollständigen) Blockchain Quelle der Zahlen: https://www.blockchain.com/explorer ISM – WS 2018/19 - Teil 17/Bitcoin 7
Der Bitcoin II – Die Kursentwicklung nach US$ Quelle: https://de.wikipedia.org/wiki/Bitcoin ISM – WS 2018/19 - Teil 17/Bitcoin 8
P2P-Netzwerk I • Lose mit einander gekoppelte, eigenständig arbeitende Netzknoten; es gibt keinen Zwang zur gleichzeitigen Arbeit. • Es gibt keinen (klaren) Zustand, da es keine zentrale Synchronisation gibt. Mit geeigneten Protokollen lässt sich ein Zustand definieren, was mit dem Preis eines "Anhaltens" bezahlt wird. • Es gibt keine zentrale Steuerung. • In der Praxis gibt es Vermittler, die verschiedene Knoten während der Startphase zusammen bringen. Ohne diese Vermittler muss mit Broadcast gearbeitet werden. • Welcher Knoten mit welchem anderen kommuniziert ist nicht festgelegt. • Bei Bitcoin sind die Knoten angehalten ihren Informationstand an alle ihnen bekannten Knoten zu verteilen (Propagation, Flooding). ISM – WS 2018/19 - Teil 17/Bitcoin 9
P2P-Netzwerk II • Ein Teil der Knoten wird als korrekt, ein anderer Teil als fehlerhaft bzw. inkorrekt angenommen. • Um zu einem gemeinsamen Ergebnis zu kommen, muss ein Abstimmungsprotokoll ablaufen. • Dieses Protokoll realisiert Konsensregeln. • Das Problem der Realisierung davon wird als Problem der Byzantinischen Generäle bezeichnet. • Die Abstimmung bzw. der Konsens betrifft den Zustand einer zentralen Datenstruktur, hier der Blockchain. • Es gibt eine Referenzimplementierung des Protokolls: Bitcoin Core. ISM – WS 2018/19 - Teil 17/Bitcoin 10
Blockchain I – 1. Näherung Block n-1 Block n Block n+1 Hash von Hash von Hash von Block n-2 Block n-1 Block n ... Hash von Hash von Hash von Transaktion Transaktion Transaktion Transaktion Transaktion Transaktion • Die Verkettung erfolgt nicht durch Zeiger, sondern über Hashwerte des direkt davor liegenden Blocks. • In den Blöcken/Transaktion stehen noch weitere Daten. • Die Blockchain wird immer nur verlängert, nie geändert. ISM – WS 2018/19 - Teil 17/Bitcoin 11
Transaktionen • Transaktion = Zuschreibung eines Betrages an eine andere Bitcoin-Adresse • Eine Transaktion gilt als bestätigt, wenn sie in der Blockchain abgespeichert ist. Dieser Teil wird niemals geändert. • Transaktionsgebühren = Transfer Fee = Freiwilliger Wert durch den Zahlenden an den Miner • Die Gebührt ist mindestens 1 Satoshi. • Je höher die Gebühr, desto schneller wird die Transaktion in die Blockchain integriert und damit bestätigt. • Eine Transaktion bezieht sich immer auf einen Geldbetrag, der immer insgesamt übertragen wird. • Ist der Betrag für die betreffende Sache kleiner, so wird die Differenz zurück überschrieben ("Wechselgeld"). ISM – WS 2018/19 - Teil 17/Bitcoin 12
Aufgabe der Miner I • Besondere Netzknoten haben die Aufgabe die Blockchain zu verlängern: diese werden Miner genannt. • Algorithmus für das Generieren eines neuen Blocks: 1) Sammeln von Transaktionen im Mempool 2) Generieren eines Blocks 3) Einhängen dieses Blocks 4) Verteilen des Blocks • Algorithmus für Empfang eines neuen Blocks: 1) Prüfung, ob alle neuen Transaktionen korrekt sind 2) Prüfung, ob alle neuen Transaktionen noch nicht in der Blockchain stehen 3) Prüfung, ob der neue Block korrekt ist 4) Nach der Prüfung: weiteres Verteilen • Mempool = Sammelbereich eines Miners für neue Transaktionen, die von ihm noch nie bearbeitet wurden ISM – WS 2018/19 - Teil 17/Bitcoin 13
Blockchain II • Erst wenn die Transaktion in der Blockchain enthalten ist, ist sie bestätigt und (erst einmal) gültig. • Ein neuer Block wird alle 10 Min. generiert. • Max. 1 MByte pro Block, ca. 2000 Transaktionen (Tradition), diese Größe wurde inzwischen erhöht. • Es wird angenommen, dass erst 6 Blöcke später die betreffenden Transaktionen "sicher" bestätigt sind. • Bis zu diesem Zeitpunkt ist es unklar, ob die Transaktionen bestätigt sind. • In der Praxis wird bei kleinen Beträgen nicht 10 bis 60 Min. gewartet. ISM – WS 2018/19 - Teil 17/Bitcoin 14
Aufgabe der Miner II Block n Block n+1 Tod Block n-1 Block n Block n+1 Block n+2 • Alle Miner stehen in Konkurrenz den nächsten Block zu generieren. • Daher können zwei Miner parallel den nächsten Block erzeugen und diesen verteilen. • Diese beiden Blöcke sind gültig, können aber einen unterschiedlichen Inhalt haben. • Das Arbeiten an verschiedenen Enden kann mehrfach passieren, bis einer der Zweige kürzer als der andere ist. • Dann wird der kürzere verworfen und damit alle dortigen Transaktionen ungültig gemacht. • Siehe: https://www.blockchain.com/de/btc/orphaned-blocks ISM – WS 2018/19 - Teil 17/Bitcoin 15
Absterben von Teilketten Quelle: https://www.blockchain.com/charts/n-orphaned-blocks?timespan=all ISM – WS 2018/19 - Teil 17/Bitcoin 16
Subvention der Miner • Reward = Mining-Gebühr = Neues Geld, das der Miner bekommt, wenn er erfolgreich einen Block anhängt ("schürft") • Wenn ein Miner als erster einen Block an die Kette gehängt hat, erhält er – eine Belohnung (Reward) und die – Summe aller Transfer-Gebühren des Blocks • Wert der Belohnung – Start 2009: 50 Bitcoin – Dies halbiert sich alle 210.00 Blöcke (ca. 4 Jahre) – 2018: 12,5 Bitcoins pro Block – Ab 2144: Nichts mehr • Nach dem Jahre 2144 müssen die Miner allein von den freiwilligen Gebühren leben. ISM – WS 2018/19 - Teil 17/Bitcoin 17
Blockchain III Prinzipieller Aufbau eines • Nonce ist ein beliebig wählbarer 32-bit-Wert, Blocks der dafür sorgt, dass der Hashwert unterhalb Daten eines vorgegebenen Grenzwertes liegt. • Der Grenzwert wird durch die Schwierigkeit Nonce Difficulty festgelegt. • Der Hashwert hat im vorderen Bereich ein Difficulty gewisse Anzahl von 0. Hashwert • Die Miner nun setzen einen Nonce und berechnen den Hash. • Wenn er die Difficulty-Bedingung erfüllt ist, der Block fertig. • Wenn nicht, wird mit einem anderen Nonce- Wert erneut probiert. ISM – WS 2018/19 - Teil 17/Bitcoin 18
Blockchain IV • Difficulty = Grad der Schwierigkeit für einen neuen Block • Wird alle 2 Wochen neu berechnet anhand der weltweiten Hash- Rate • Dabei wird die reale Dauer für die letzten 2016 Blöcke (14 Tage) bestimmt: • Wenn sie kürzer als 14 Tage ist, dann wird die Schwierigkeit erhöht, wenn die länger ist, dann erniedrigt. • Um einen Block zu generieren, sind Millionen von Versuchen notwendig. • Proof-of-Work = Der richtige Hashwert als Nachweis der CPU- Leistung ISM – WS 2018/19 - Teil 17/Bitcoin 19
Aufgabe der Miner III • Alle Miner befinden sich in einem Wettlauf um den nächsten Block. • Gewinnt ein Miner den Wettlauf, so streicht er die Belohnung und alle Transfer-Gebühren des Blocks ein. Das sind/waren teilweise 30.000 bis 40.000 EUR. • Verliert der Miner den Wettlauf, so ist eine Arbeit umsonst. • Das gilt auch, wenn ein ganzer Zweig abstirbt. Dann sind alle Belohnungen und Gebühren aller abgestorbenen Blöcke vernichtet. • Das ist der Grund, warum eine Transaktion, erst nach 6 Blöcken sicher ist, denn dann sind alle konkurrierenden Zweige gestorben. Oder sie stirbt mit den sterbenden Blöcken. ISM – WS 2018/19 - Teil 17/Bitcoin 20
Aufgabe der Miner IV Eingesetzte Hardware • Desktop-PCs • PCs mit mehreren Graphikkarten (GPU) • Spezielle ASIC-Rechner, z.B. – S9 AntMiner 13,5 THash/s • Hacker benutzen auch – ungeschützte IoT-Geräte – Netzwerkdrucker – Private Mediastationen – Browser mit JavaScript: versteckt in Anzeigen • Diese Geräte sind sehr langsam, aber: Kleinvieh macht auch Mist. ISM – WS 2018/19 - Teil 17/Bitcoin 21
Kosten des Minings I - 51%-Angriff • Der Schutz vor Manipulation liegt im technischen Aufwand. Der Grund dafür ist die Möglichkeit, dass jeder die Blockchain verlängern kann. • 51%-Angriff: Wenn eine Gruppe von Minern 51% der Hashleistung weltweit vereint, kann diese Gruppe einen längeren Parallelzweig der Blockchain mit falschen Daten etablieren und den Zweig mit den korrekten Daten zum Absterben bringen. • Die Angreifer bauen einen "geheimen" langen Zweig auf, der dann in einem Stück veröffentlicht wird. • Neue Kryptowährungen haben nur wenige Miner und sind daher stark durch diese Angriffe gefährdet. ISM – WS 2018/19 - Teil 17/Bitcoin 22
Kosten des Minings II - Umwelt • Für 2018 wird geschätzt, dass der Stromverbrauch der Miner weltweit zwischen 50 und 70 TWh (Tera-Wattstunden) liegt. Das liegt in dem Bereich des Stromverbrauchs von Dänemark oder Österreich pro Jahr. • Diese Umweltbelastung hängt von den Minern ab, nicht von der Anzahl der Transaktionen. • Dieser Aufwand ist mit dem Konzept der Blockchain verbunden. Alle Blockchain-Anwendungen haben dieses Problem. • Erst wenn eine zentrale Instanz akzeptiert wird, verschwindet das Energie/Aufwand-Problem: – Es gibt keine Zweige, die absterben können. – Nur bestimmte Knoten können die Blockchain verlängern. – Trotzdem ist die Blockchain öffentlich und kann jederzeit geprüft werden. ISM – WS 2018/19 - Teil 17/Bitcoin 23
Aufbau einer Kryptowährung • Initial Coin Offering (ICO) = Erfinder verkaufen die ersten Einheiten an Investoren vor Beginn • Nach häufigem Missbrauch (2016..2017) gibt es staatliche Regelungen. • Die Verluste durch betrügerische Start-Ups werden auf 20 Mio. US$ geschätzt. • Neue Start-Ups verlagern das Risiko an die Kunden bzw. Investoren. • Facebook und Google schalten keine Werbungen für ICOs mehr. ISM – WS 2018/19 - Teil 17/Bitcoin 24
Adressen - einfach • Es gibt kein Konto und auch keine Geldbörse. • Alle Beträge sind Adressen (Empfänger) zugeordnet und diese Personen, Organisationen, Skripten oder Geräten. • Jeder Inhaber besitzt mindestens ein asymmetrisches Schlüsselpaar. • Aus dem öffentlichen Schlüssel wird die Bitcoin-Adresse generiert: Adresse (Hex) = RIPEM160(SHA256(public-Key)) • Beispiel aus https://www.blockchain.com/btc/address/17hxeNzSThGXFpsNWQxgnkYSaxHMWiJXpL Adr = 17hxeNzSThGXFpsNWQxgnkYSaxHMWiJXpL Hash = 498fd7c42932070ff3ec30e929bb81111226faed • Der Hashwert wird noch bearbeitet und umkodiert, so dass aus dem Hash die obigen Adresse Adr entsteht. ISM – WS 2018/19 - Teil 17/Bitcoin 25
Wallet • Wallet = Brieftasche = Software zur Verwaltung von asymmetrischen Schlüsseln, zur Bezahlung und Berechnung eines "Kontostands" • In den Wallets ist kein Geld enthalten; das Geld liegt in der Blockchain. • Es gibt Wallets, die ihre Schlüsselpaare nicht verschlüsseln! • Der Kontostand wird dadurch berechnet, dass alle Auszahlungen aller eigenen Adressen sowie alle Einzahlungen an die eigenen Adressen durch Analyse der Blockchain live berechnet werden. • Bitte beachten: Eine Person bzw. Wallet kann mehrere Adressen haben. ISM – WS 2018/19 - Teil 17/Bitcoin 26
Missbrauch und Probleme I • Bitcoin-Stealer – Überwachen die Zwischenablage – Und ersetzen die Zieladresse • Der Hacker kann viele Adressen haben, so dass bessere Stealer Adressen in der Zwischenablage durch ähnliche ersetzen. • Hier wird ausgenutzt, dass sich niemand diese wüsten Adressen merken kann. • Kritisch ist die Generierung der Schlüsselpaare: – JavaScript-Software von Websites – Oh oh – Generieren auf Webserver – noch schlimmer ISM – WS 2018/19 - Teil 17/Bitcoin 27
Missbrauch und Probleme II • Bitcoin-Mixer: Dienst eines Internetanbieters – Für Einzahlungen werden andere Wallets benutzt als für Auszahlungen, wobei die letztere erst viel später erfolgt, so dass der Zusammenhang verschleiert wird. – Größtes Vertrauen ist erforderlich. Es gibt dazu "Letter of Guarantee" mit den Adressen und Geldbeträgen. – Einige betrügen durch gefälschte Signaturen auf diesen Letter. Dann steht der Kunde als Betrüger da. – Einige machen das nur manchmal (Selective Scam). • Es gibt die Möglichkeit kurzer Nachrichten in den Transaktionen, aber auch den Trick, in die Adressen Nachrichten zu codieren: – Grüße, Fotos, Erinnerungen an Verstorbene, Botschaften an Außerirdische und Kinderpornographie. – Wie Twitter: https://wewo.cash/ ISM – WS 2018/19 - Teil 17/Bitcoin 28
Erinnerung an Mandela Quelle: https://www.blockchain.com/btc/tx/ 8881a937a437ff6ce83be3a89d77ea88ee12315f37f7ef0dd3742c30eef92dba?show_adv=true Siehe dazu: http://www.righto.com/2014/02/ascii-bernanke-wikileaks-photographs.html ISM – WS 2018/19 - Teil 17/Bitcoin 29
Missbrauch und Probleme III - Shops • Bei Kreditkarten zahlen die Shops die Gebühren, bei Bitcoin die Kunden. • Die Gebühr ist freiwillig, die Höhe bestimmt die Priorität bei den Minern. • Einige Miner weigern sich Transaktionen mit keinen oder geringen Gebühren zu verarbeiten. • Teilweise dauert es Tage, bis Transaktionen bestätigt werden. ISM – WS 2018/19 - Teil 17/Bitcoin 30
Missbrauch und Probleme IV – Double Spend • Double Spend = Mehrfache Ausgabe desselben Geldes • Mit einem 51%-Angriff geht dies: 1)Im Zweig A werden echte Waren mit Bitcoins gekauft. 2)Dann wird der gleichzeitig berechnete, erst geheime parallele Zweig B in die Chain gehängt. 3)Im Zweig B wird dieselbe Geldmenge an andere Wallets überwiesen. 4)Nun stirbt der Zweig A. 5)Die anderen Wallets gehören den Betrügern. ● Derartige Angriffe wurden im Mai 2018 durchgeführt. Schaden: ca. 18 Mio. US$. Die Kette der geheimen Blöcke war teilweise 50 Blöcke lang, also Transaktionen innerhalb von 8h. ● Gegenangriff: Dasselbe machen die Guten, die den Zweig der Bösen zum Absterben bringen… ● Dann gibt es noch den Replay-Angriff nach Hard Forks. ISM – WS 2018/19 - Teil 17/Bitcoin 31
Hard Forks und Soft Forks I • Soft Fork = Änderung des Protokolls und der Datenformate kompatibel zur früheren Version • Hard Fork = Fork mit inkompatiblen Varianten • Forks sind Sache der Miner. • Bei Soft Forks wurde einfach die Software bei den Minern bzw. Wallets ersetzt. • Jeder Hard Fork definiert eine neue, andere Kryptowährung. • Wenn alle Miner mitspielen, wird der Zweig mit der alten Version nicht mehr verlängert bzw. alle Versuche dies zu tun führen zum Absterben. • Wenn aber nur einige Miner mitspielen, teilt sich die Blockchain in zwei inkompatible Zweige auf, die jeweils weiter geführt werden. • Keiner der beiden Hard Fork-Zweige stirbt ab. ISM – WS 2018/19 - Teil 17/Bitcoin 32
Hard Forks und Soft Forks II • Bei einem Hard Fork werden die bestehenden Beträge jeweils auf beide Zweige dupliziert. • Es gibt aber keinen Schutz gegen einen Replay-Angriff. • Der aktuelle Geldbetrag kann dann in beiden Zweigen jeweils einmal, aber insgesamt doppelt ausgegeben werden. • Genau das geschah im Nov. 2018: Bitcoin Cash (BCH) duplizierte sich zu: – Bitcoin ABC (BCHABC) – Bitcoin-SV (BCHSV) • Schutz vor Verlust durch Anlegen neuer Wallets und überweisen an sich selbst mit anschließender Aufgabe der Originalwallet. ISM – WS 2018/19 - Teil 17/Bitcoin 33
Missbrauch und Probleme III - Datenschutz • (Kryptogeld-)Blockchains sind immer öffentlich. • Private Blockchains werden über Schutzmechanismen der Betriebssysteme realisiert. • Privatsphäre oder Zugriffsschutz ist nur über zusätzliche Verschlüsselung zu erreichen. ISM – WS 2018/19 - Teil 17/Bitcoin 34
Performanz-Probleme und die Forks • 1. Idee (Anfang 2017): – Vergrößerung der Blöcke auf 2 MB Segregated Witness 2MB = SegWit2x – Trennung der Buchungsdaten (vorne) und Signaturen (hinten) bzw. eine Buchungstransaktion (TX) und eine weitere Wittness-Transaktion (WTX). Das führt zu einer Verdopplung der Transaktionen pro Block. – Die Einführung von SegWit2x bedeutet einen Hard Fork. • 2. Idee: Blöcke bis zu 8 MB und anderer Difficulty-Algorithmus Dies wurde Bitcoin Cash genannt. • 3. Idee: Trennung der Buchungsdaten, aber Blocklänge bleibt: SegWit – das wäre ein Soft Fork • Im August 2017 entstand Bitcoin Cash als Hard Fork und SegWit als Soft Fork. Heute benutzen 30% aller Transaktionen SegWit. • Es gibt nun Bitcoin, Bitcoin Cash, Bitcoin Gold, Bitcoin Private ISM – WS 2018/19 - Teil 17/Bitcoin 35
Smart Contracts • Smart Contract = in Software programmierte Vertragsdurchführung als Teil einer Transaktion • Jeder Transaktion wird ein Skript in einer Stack-orientierten Sprache, ähnlich Forth, beigefügt (und per Signatur geschützt). • Es gibt ein Output-Skript, das der Zahler bestimmt, und ein Input-Skript, das der Empfänger definiert. • Beide werden hintereinander ausgeführt. Wenn ein True am Ende entsteht, dann ist der Transfer gültig. ISM – WS 2018/19 - Teil 17/Bitcoin 36
Zu den Wallets I - Realisierung • Hardware-Wallet Eigenständige Geräte, die u.a. mit Near-Field-Kommunikation mit Geräten am Internet kommunizieren. Sehr sicher und teuer. • Desktop-Wallet Software auf normalen PCs, unsicher, das zahlreichen Angriffen ausgesetzt, auch schlechte Implementierungen • Mobil-Wallet Software auf Smartphones, noch unsicherer als Desktop-Wallets • Web-Wallet Software auf Servern fremder Anbieter, recht sicher, solange dem Server-Betreiber vertraut wird • Paper-Wallet (cold storage) Aufbewahrung auf Ausdrucken, sehr sicher, sofern sie nicht aus Privaträumen gestohlen werden ISM – WS 2018/19 - Teil 17/Bitcoin 37
Paper-Wallet (https://walletgenerator.net) I Über eine Website generierter Ausdruck mit dem geheimen Schüssel ISM – WS 2018/19 - Teil 17/Bitcoin 38
Paper-Wallet II - Bemerkungen • Natürlich keine Website zum Generieren geheimer Schlüssel verwenden, alles Offline machen. • Noch besser die privaten Schlüssel vor dem Ausdruck mit einer Passphrase versehen (nach BIP-38). ISM – WS 2018/19 - Teil 17/Bitcoin 39
Zu den Wallets II - Funktionalität • Full-Node-Client enthält die gesamte Blockchain: 150-200GB Platte und 2 GB RAM und viel Netzwerk-Verkehr • Simple Payment Verification (SPV-Client) enthält nur den letzten Teil der Blockchain, benötigt Zugriff auf die Full-Node-Clients • API-Client benutzt eine API eines (vertrauenswürdigen) Drittanbieters zur Interaktion bei den Bezahlungen, Auslagerung der Funktionalität an Dritte ISM – WS 2018/19 - Teil 17/Bitcoin 40
Asymmetrische Schlüssel I • Grundlage ist echter Zufall. • Es wird das Verfahren des ECDSA verwendet: Elliptic Curve Digital Signature Algorithm. • Die elliptischen Kurven haben Parameter, die diese bestimmen. • Bei Bitcoin wird die Kurve secp256k1 benutzt. Siehe: – https://en.bitcoin.it/wiki/Secp256k1 – http://www.secg.org/sec2-v2.pdf – https://www.desmos.com/calculator/ialhd71we3 – https://bitcoin.stackexchange.com/questions/21907/what-does-the- curve-used-in-bitcoin-secp256k1-look-like • Die Bitgröße der Zahlen ist bei derselben Sicherheit gegenüber RSA kleiner, hier: 256 bit. • Daher gehen die Berechnungen schneller. ISM – WS 2018/19 - Teil 17/Bitcoin 41
Asymmetrische Schlüssel II Einen Webserver zum Generieren der Schlüssel zu benutzen ist keine gute Idee. Zum Spielen ist das OK. https://gobittest.appspot.com/Address • Aus dem privaten Schlüssel lässt sich der öffentliche generieren. • Daher reicht der private aus. ISM – WS 2018/19 - Teil 17/Bitcoin 42
Adressen – richtig (WIF, Wallet Input Format) Public Key RIPEMD160(SHA256(Public Key)) Präfix SHA256(SHA256(..)) Versionsbyte Erste 4 Bytes 0x00 Fingerprint Checksum Kodiert nach Base58 • Bitcoin-Adressen beginnen immer mit einer 1 oder 3. • Sie sind öffentlich. • Eine Wallet ist prinzipiell eine Menge von Adressen samt Schlüsseln. • Siehe dazu: https://en.bitcoin.it/wiki/Base58Check_encoding • Adresse können auch auf Skripte verweisen. ISM – WS 2018/19 - Teil 17/Bitcoin 43
Kodierungen I • Base58 ist eine Kodierung im 58er- Zahlensystem. • Es werden alle Buchstaben und Ziffern benutzt, jedoch nicht 0, O und 1, l. Nelson Mandela-Adresse als QR-Code Erstellt mit: https://www.qrcode-generator.de/ Base58Check-Format SHA256(SHA256(Präfix+Daten)) Präfix Erste 4 Bytes 0x.. Daten Checksum Kodiert nach Base58 ISM – WS 2018/19 - Teil 17/Bitcoin 44
Kodierungen II Datentyp Präfix (Hex) Präfix (Base) Adresse 0x00 1 Pay-to-Script-Adresse 0x05 3 Privater Schlüssel WIF 0x80 5 Privater Schlüssel WIF komprimiert K oder L Verschlüsselter Privater Schlüssel 0x0142 6P Öffentlicher Schlüssel 0x04 Erweiterter Öffentlicher Schlüssel 0x0488B21E xpub Die Algorithmen zur Erstellung der einzelnen Formate derselben Schlüssel werden hier nicht vorgestellt. • Der öffentliche Schlüssel besteht aus 2x256bit+Präfix=520 bit. • Anhand der ersten 256 bit können die zweiten 256 bit berechnet werden, so dass er verkürzt werden kann: komprimierte Version. • Mit dessen Benutzung entsteht eine andere Bitcoin-Adresse. ISM – WS 2018/19 - Teil 17/Bitcoin 45
Bemerkungen • Die Verschlüsselung des privaten Schlüssel entsprechend BIP-38 ist sehr zu empfehlen. • BIP-XX = Bitcoin Improvement Proposal = Bezeichnung von allgemein akzeptierten Regeln • Siehe dazu: https://en.bitcoin.it/wiki/Bitcoin_Improvement_Proposals ISM – WS 2018/19 - Teil 17/Bitcoin 46
Ist Bitcoin anonym? • Nach einer Verknüpfung einer Adresse mit einer Identität lassen sich alle Transaktionen aus der öffentlichen Blockchain feststellen. • Wer Anonymität haben will – aus welchen Gründen auch immer – sollte Kryptowährungen ohne die Möglichkeit der Rückverfolgung der Adressen benutzen. • Z.B. Monero (berüchtigt: Lösegeldforderung im Jan. 2019) – https://www.getmonero.org – https://de.wikipedia.org/wiki/Monero ISM – WS 2018/19 - Teil 17/Bitcoin 47
Transaktionen I • Jede Transaktion hat ein oder mehrere Inputs (Soll) und ein oder mehrere Outputs (Haben). • Input = Adresse (Change Adresse), Geldbetrag und Eigentumsnachweis sowie Skript Dies wird mit einer Referenz auf einen ehemaligen Output realisiert. • Output = vout oder txout = Adresse, Eigentumsnachweis sowie Skript • Eigentumsnachweis (Proof-of-Ownership) erfolgt mittels einer Signatur • Signatur = Witness = Zeuge, andere Bezeichnung. • Ein Output verbleibt beim Empfänger und gehört ihm. • Der Zahlbetrag kann also zusammengestückelt werden. • Auch können (unterschiedliche) Beträge an verschiedene Adressen gesendet werden. ISM – WS 2018/19 - Teil 17/Bitcoin 48
Transaktionen II - Soll-Seite • Bei einer Bezahlung wird immer der gesamte Betrag des ehemaligen, empfangenen Outputs als neuen Input der Transaktion T behandelt. • Der Output von T ist dann das, was eine andere Adresse an Geld bekommt. • Soll weniger bezahlt werden, so geht ein Teilbetrag wieder zurück an die Senderadresse (Change Adresse), also wie Wechselgeld: Dies wird durch einen weiteren Output an sich selber mit der Differenz realisiert. • Zusätzlich wird ein kleiner Betrag als Gebühr für den Miner abgezogen. • Ein Transaktion kann auch Offline erzeugt und später Online an die anderen Knoten verteilt werden. ISM – WS 2018/19 - Teil 17/Bitcoin 49
Transaktionen III • Ein Full-Node-Client kann beim Bezahlen die Korrektheit der Transaktion prüfen. • Ein SPV-Client (Simple Payment Verification) muss dazu eine API eines Dienstleisters benutzen, u.a durch Anfrage nach allen nicht-ausgegebenen Outputs einer Adresse (Haben) • Ist die Transaktion erzeugt, wird sie an alle bekannten Knoten verteilt. • Irgendwann erhält die Empfängerseite (Haben) die Transaktion. • Dort kann geprüft werden, ob alle Inputs dieser Transaktion nicht schon einmal ausgegeben wurden. • Aber: die Transaktion ist (noch) nicht in der Blockchain, sondern nur an Miner verteilt und liegt in deren Mempool. • Erst wenn die Miner die Transaktion in einen neuen Block an die Blockchain anhängen konnten, ist die Zahlung bestätigt. ISM – WS 2018/19 - Teil 17/Bitcoin 50
Transaktionen IV - Miner • Wenn ein Miner das Wettrennen verloren hat, erhält er von einem anderen Miner den letzten angefügten Block. Sofort beginnt er mit dem nächsten. • Dazu werden alle Transaktionen geprüft und nach Priorität in den neuen Block aufgenommen, bis er voll ist. • Am Ende wird ein weitere Transaktion an sich selbst in den Block eingefügt: – Belohnung (Reward) – Summe aller Gebühren der Transaktionen des Blocks • Dies ist der Candidate-Block. • Und dann geht‘s los mit dem Hash (Proof-of-Work). • Gewinnt der Miner, dann wird aus dem Candidate-Block der letzte Block der Chain. ISM – WS 2018/19 - Teil 17/Bitcoin 51
Transaktionen V - Wallets • Die Wallets prüfen, ob – die neue Transaktion schon in der Blockchain steht und – danach noch Blöcke hinzugefügt wurden. • Nach 6 weiteren Blöcken wird geglaubt, dass der Zweig nicht abstirbt und daher die Bezahlung bestätigt ist. Aber das muss nicht sein. • Transaktion-ID (TXID) = Hash über die Transaktionsdaten • Der Miner legt auch die Transaktion-ID (TXID) verbindlich fest; davor kann sie geändert werden. • Es kann sein, dass mehrere Transaktionen dieselbe ID haben. ISM – WS 2018/19 - Teil 17/Bitcoin 52
Transaktionen VI - Ergänzungen • Pay-to-public-key-hash = P2PKH = dies ist der bisher vorgestellte übliche Verfahren der Bezahlung an eine Adresse • Pay-to-Script-Hash = P2SH = hier wird an ein Skript Geld überwiesen, das es irgendwie verarbeitet • Beispiel eines adressierten P2SH-Skripts: – Der Nachweis des neuen Eigentumsrechts erfolgt, wenn M Signaturen von insgesamt N Adressen/Schlüsseln reichen. – Damit lassen sich "Gemeinschaftskonten" realisieren, z.B. dass beide Ehepartner unterschreiben müssen, damit das Geld fließt. ISM – WS 2018/19 - Teil 17/Bitcoin 53
HD-Wallets (BIP-32, BIP-44) I • JBOK-Wallet = Just-a-bunch-of-keys = Wallet mit vielen unabhängigen zufälligen Schlüsseln • HD-Wallet = Hierarchical Determinstic = Wallet mit aus einem zufälligen Seed (Saat) deterministisch generierten Schlüsseln • Seed = Saat = zufällige, geheime Startzahl • Ein Seed zusammen mit einem Chain-Code wird benutzt, um viele private Schlüssel und damit Adressen zu erzeugen. • Aufbau einer Baums von Schlüsseln: – Aus dem Seed wird der Master-Key per Hash generiert. – Aus dem Master-Key werden mehrere Child-Keys generiert. – Aus diesen können wiederum weitere Keys generiert werden. – Jeder dieser privaten Schlüssel ist Basis für eine Bitcoin-Adresse. ISM – WS 2018/19 - Teil 17/Bitcoin 54
HD-Wallets (BIP-32, BIP-44) II • Vorteile – Es reicht nur einem Schlüssel zu sichern (Backup, Paper-Wallet) – Weitere Schlüssel können ohne Master-Schlüssel generiert werden, basierend auf den Child-Keys. – Die Child-Keys können als Bereiche für Zahlungen benutzt werden, z.B. Personen des eigenen Haushalts, Geschäfte mit bestimmten Kunden, Abteilungen einer Firma etc. – Handhabung ist viel leichter als mit JBOK-Wallets. Daher werden HD- Wallets empfohlen. ISM – WS 2018/19 - Teil 17/Bitcoin 55
Seed mit mnemonischen Codes (BIP-39) • Die Bitsequenz wird durch eine Sequenz von natürlich- sprachlichen Wörtern dargestellt. • Beispiel, folgendes ist immer derselbe Wert: – engine vanish seat smart maid admit comic record warfare banana wagon game – elemento turbina rayo romero mafia acuerdo ceniza pimienta veloz aries vector fumar – douceur tuile progrès renoncer jambe acheter charbon pastèque vassal arsenic valve excitant – esoso unitario sbattere sfaticato musa affisso cognome ribrezzo venato arzillo vegetale giudizio • Dies wurde mit https://iancoleman.io/bip39 generiert. ISM – WS 2018/19 - Teil 17/Bitcoin 56
Nach dieser Anstrengung etwas Entspannung.... ISM – WS 2018/19 - Teil 17/Bitcoin 57
Sie können auch lesen