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 – SS 2020- Teil 17/Bitcoin 21.06.20 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 [17-5] Antonopoulos, Andreas; Wood,Gavin et al.: Ethereum – Grundlagen und Programmierung: Smart Contracts und DApps entwickeln. O'Reilly, 2019 [17-6] https://www.fit.fraunhofer.de/content/dam/fit/de/documents/ Blockchain_WhitePaper_Grundlagen-Anwendungen- Potentiale.pdf ISM – SS 2020- Teil 17/Bitcoin 2
Links I [17L-1] https://de.wikipedia.org/wiki/Bitcoin https://en.bitcoin.it/wiki/Vocabulary https://de.wikipedia.org/wiki/Bitcoin_Core https://github.com/bitcoin/bitcoin [17L-2] https://de.wikipedia.org/wiki/Satoshi_Nakamoto [17L-3] https://de.wikipedia.org/wiki/Proof_of_Work https://de.wikipedia.org/wiki/Proof_of_Stake [17L-4] https://www.blockchain.com/de/explorer [17L-5] https://en.wikipedia.org/wiki/Merkle_tree https://de.wikipedia.org/wiki/Hash-Baum https://patents.google.com/patent/US4309569 [17L-6] https://de.wikipedia.org/wiki/Byzantinischer_Fehler https://blog.novatrend.ch/2018/01/22/blockchain-byzantinische- generaele-und-das-cap-theorem [17L-7] https://de.wikipedia.org/wiki/Ethereum [17L-8] https://weissenberg-solutions.de/wofuer-kann-die-blockchain- technologie-eingesetzt-werden/ https://www.wearesquared.de/blog/10-anwendungsbeispiele-fuer- blockchain-technologie-im-digitalen-marketing ISM – SS 2020- Teil 17/Bitcoin 3
Links II [17L-9] https://de.wikipedia.org/wiki/QR-Code [17L-10] https://bitcoin.org/de/wallets/hardware/ [17L-11] https://de.wikipedia.org/wiki/Base58 [17L-12] https://de.wikipedia.org/wiki/Elliptic_Curve_DSA [17L-13] https://de.wikipedia.org/wiki/Digital_Signature_Algorithm [17L-14] https://de.wikipedia.org/wiki/Elliptic_Curve_Cryptography https://www.ingenieur.de/technik/forschung/bitcoin-produktion- verbraucht-fast-so-viel-strom-wie-irland ISM – SS 2020- Teil 17/Bitcoin 4
Übersicht P2P-Idee Blockchain Bitcoin Einige Details Dieser Foliensatz bezieht sich auf das klassische Bitcoin-Konzept. Es gibt einige Variationen davon, die hier nicht behandelt werden. ISM – SS 2020- 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 – SS 2020- 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,0083 Cent USD/EUR beziehen sich Beispiel Juni 2020: auf den zitierten Stand. – 1 Bitcoin = 8.300 EUR – Hashrate 105.900 TH/s (Tausend Hash/Sekunde) – Difficulty = 15.785*103 – Gebühr = 1,3 USD (pro Transaktion, Durchschnitt) – Transfers pro Tag = 344.000 – Mempool = 360 KB – Blockchain-Größe = ca. 283 GB – Ca. 10.800 Knoten (Full nodes) Quellen der Zahlen: https://www.blockchain.com/explorer https://www.blockchaincenter.net/rechner https://bitnodes.io/ ISM – SS 2020- Teil 17/Bitcoin 7
Der Bitcoin II – Die Kursentwicklung nach US$ Quelle: https://de.wikipedia.org/wiki/Bitcoin ISM – SS 2020- Teil 17/Bitcoin 8
Der Bitcoin III – Statistik (Marktpreis) ISM – SS 2020- Teil 17/Bitcoin 9
Der Bitcoin IV – Statistik (Bestätigungen) ISM – SS 2020- Teil 17/Bitcoin 10
Der Bitcoin V – Statistik (Transaktionen in Blöcken) ISM – SS 2020- Teil 17/Bitcoin 11
Der Bitcoin VI – Statistik (Gebühren) ISM – SS 2020- Teil 17/Bitcoin 12
Der Bitcoin VII – Statistik (Hash-Rate) ISM – SS 2020- Teil 17/Bitcoin 13
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 Protokollen ließe 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, was und wann kommuniziert ist nicht festgelegt. Bei Bitcoin sind die Knoten angehalten ihren Informationsstand an alle ihnen bekannten Knoten zu verteilen (Propagation, Flooding). ISM – SS 2020- Teil 17/Bitcoin 14
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 – SS 2020- Teil 17/Bitcoin 15
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 – SS 2020- Teil 17/Bitcoin 16
Transaktionen bei Bitcoins Transaktion = Zuschreibung eines Betrages an eine andere Bitcoin-Adresse Eine Transaktion gilt als bestätigt, wenn sie in der Blockchain abgespeichert ist. Dies 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 geforderte Betrag für eine Sache kleiner, so wird die Differenz zurück überschrieben ("Wechselgeld"). ISM – SS 2020- Teil 17/Bitcoin 17
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 in die Kette 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 – SS 2020- Teil 17/Bitcoin 18
Aufgabe der Miner 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 – SS 2020- Teil 17/Bitcoin 19
Aufgabe der Miner III 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. Dadurch entsteht eine Gabel. 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 – SS 2020- Teil 17/Bitcoin 20
Absterben von Teilketten Quelle: https://www.blockchain.com/charts/n-orphaned-blocks?timespan=all Das ist (bisher) der einzige Zeitraum. ISM – SS 2020- Teil 17/Bitcoin 21
Subvention der Miner Reward = Mining-Gebühr = Neues Geld, das der Miner bekommt, wenn er erfolgreich einen Block anhängt Wenn ein Miner als erster den nächsten 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 – SS 2020- Teil 17/Bitcoin 22
Blockchain weiter I Prinzipieller Aufbau eines Nonce ist ein beliebig wählbarer 32-bit- Blocks Wert, der dafür sorgt, dass der Hashwert Daten unterhalb eines vorgegebenen Grenzwertes liegt. Nonce Der Grenzwert wird durch die Schwierigkeit Difficulty festgelegt. Difficulty Der Hashwert hat im vorderen Bereich ein gewisse Anzahl von 0, anders er muss Hashwert unterhalb eines Wertes liegen. Diesen Nonce-Wert zu finden ist das „mathematische Rätsel“ (Proof of work): – Die Miner probieren 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 – SS 2020- Teil 17/Bitcoin 23
Blockchain weiter II 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 – SS 2020- Teil 17/Bitcoin 24
Aufgabe der Miner IV 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 war seine 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, jedenfalls im Durchschnitt. Oder sie stirbt mit den sterbenden Blöcken. ISM – SS 2020- Teil 17/Bitcoin 25
Aufgabe der Miner V - Eingesetzte Hardware Früher: Desktop-PCs Früher: 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, z.B. Fernseher – Browser mit JavaScript: versteckt in Anzeigen Diese Geräte sind sehr langsam, aber: Kleinvieh macht auch Mist. ISM – SS 2020- Teil 17/Bitcoin 26
Kosten des Minings I - 51%-Angriff Der Schutz vor Manipulation liegt im technischen Aufwand. Der Grund dafür ist die Möglichkeit, dass jeder Miner 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 zuerst einen privaten 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 – SS 2020- Teil 17/Bitcoin 27
Kosten des Minings II - Umwelt Für 2018 wurde geschätzt, dass der Stromverbrauch der Miner weltweit zwischen 50 und 70 TWh (Tera- Wattstunden) liegt. Das entspricht dem Stromverbrauch von Dänemark oder Österreich pro Jahr. Für 2019 wird dies auf 46 TWh (ca. 22 Mega t CO2) geschätzt. Diese Umweltbelastung hängt von den Minern ab, nicht von der Anzahl der Transaktionen. Der Grund dafür liegt im Proof-of-Work-Verfahren. Ein Zitat: "Im November 2018 konnte derselbe Bitcoin-Schürfer (mit der Technik von 2011) aufgrund der zunehmenden Schwierigkeit des Suchrätsels damit rechnen, alle 472.339 Jahre einen Block zu finden." https://www.n-tv.de/wirtschaft/Bitcoin-Schuerfen-verursacht-Unmengen- CO2-article21081137.html ISM – SS 2020- Teil 17/Bitcoin 28
Kosten des Minings III - Umwelt 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. Dies hat nicht zur Folge, dass dann Betrügereien nicht entdeckt werden: durch Replikation und Prüfungen durch andere Institutionen wird Vertrauen hergestellt. ISM – SS 2020- Teil 17/Bitcoin 29
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 – SS 2020- Teil 17/Bitcoin 30
Adressen - einfach Es gibt kein Konto und auch keine Geldbörse. Alle Beträge sind Adressen zugeordnet und diese wieder 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 = RIPEMD160(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 – SS 2020- Teil 17/Bitcoin 31
Wallet Wallet = Brieftasche = Software zur Verwaltung von asymmetrischen Schlüssel-Paaren, 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 und Einzahlungen bezogen auf die eigenen Adressen durch Analyse der Blockchain berechnet werden. Bitte beachten: Mit einem Wallet können mehrere Adressen verwaltet werden. ISM – SS 2020- Teil 17/Bitcoin 32
Missbrauch und Probleme I Bitcoin-Stealer (als Virus bzw. Malware) – Überwachen die Zwischenablage – und ersetzen die Zieladresse Der Hacker kann viele Adressen generieren, so dass es möglich wird, die Adressen in der Zwischenablage durch ähnliche Adressen des Hackers zu ersetzen. Hier wird ausgenutzt, dass sich niemand diese wüsten Adressen merken kann. Kritisch ist auch die Generierung der Schlüsselpaare: – JavaScript-Software von Websites – Oh oh – Generieren auf Webserver – noch schlimmer ISM – SS 2020- Teil 17/Bitcoin 33
Missbrauch und Probleme II Bitcoin-Mixer: Dienst eines Internetanbieters – Für Einzahlungen werden andere Wallets benutzt als für Auszahlungen, wobei die letzteren erst viel später erfolgen, 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 – SS 2020- Teil 17/Bitcoin 34
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 – SS 2020- Teil 17/Bitcoin 35
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 und damit die Dauer bis zum sicheren Zeitpunkt. Teilweise dauert es Tage, bis Transaktionen bestätigt werden (siehe Statistik oben). Einige Miner weigern sich Transaktionen mit keinen oder geringen Gebühren zu verarbeiten. ISM – SS 2020- Teil 17/Bitcoin 36
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 Beträge der 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… ISM – SS 2020- Teil 17/Bitcoin 37
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. Aber wenn nicht? – Dann teilt sich die Blockchain in inkompatible Zweige auf, die jeweils weiter geführt werden. – Keiner der Hard Fork-Zweige stirbt ab. ISM – SS 2020- Teil 17/Bitcoin 38
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 – SS 2020- Teil 17/Bitcoin 39
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. Es gibt aber Währungen, die intern anders arbeiten und damit verschleiern, ob bestimmte Transaktionen von denselben Personen getätigt wurden, z.B. Monero (https:// de.wikipedia.org/wiki/Monero). ISM – SS 2020- Teil 17/Bitcoin 40
Performanz-Probleme und die Forks 1. Idee (Anfang 2017): – Vergrößerung der Blöcke auf 2 MB Segregated Witness 2MB = SegWit2x Die Einführung von SegWit2x bedeutete einen Hard Fork. – 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. 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 – SS 2020- Teil 17/Bitcoin 41
Smart Contracts Smart Contract = in Software programmierte Vertragsdurchführung bzw. Bedingung 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 – SS 2020- Teil 17/Bitcoin 42
Zu den Wallets I - Realisierung Hardware-Wallet Eigenständige Geräte, die u.a. mit Near-Field- Kommunikation mit Geräten am Internet kommunizieren. 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 – SS 2020- Teil 17/Bitcoin 43
Paper-Wallet (https://walletgenerator.net) I Über eine Website generierter Ausdruck mit dem geheimen Schüssel ISM – SS 2020- Teil 17/Bitcoin 44
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 – SS 2020- Teil 17/Bitcoin 45
Zu den Wallets II - Funktionalität Full-Node-Client enthält die gesamte Blockchain: 300GB Platten-Platz 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 einen oder mehrere Full-Node-Clients API-Client benutzt eine API eines vertrauenswürdigen Drittanbieters zur Interaktion bei den Bezahlungen, Auslagerung der Funktionalität an Dritte ISM – SS 2020- Teil 17/Bitcoin 46
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; zusammen haben die diese einen bestimmten Namen. 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 Bitlänge der Zahlen ist bei derselben Sicherheit gegenüber RSA kleiner, hier: 256 bit. Daher gehen die Berechnungen schneller. ISM – SS 2020- Teil 17/Bitcoin 47
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 – SS 2020- Teil 17/Bitcoin 48
Adressen – richtig (WIF, Wallet Input Format) Public Key RIPEMD160(SHA256(Public Key)) Präfix SHA256(SHA256(Präfix+Daten)) Versionsbyte Ersten 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 Adressen können auch auf Skripte verweisen. ISM – SS 2020- Teil 17/Bitcoin 49
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 – SS 2020- Teil 17/Bitcoin 50
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 – SS 2020- Teil 17/Bitcoin 51
Bitcoin Improvement Proposal (BIP) 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 – SS 2020- Teil 17/Bitcoin 52
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 – SS 2020- Teil 17/Bitcoin 53
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 zusammengestückelt werden. Auch können unterschiedliche Beträge an verschiedene Adressen gesendet werden. ISM – SS 2020- Teil 17/Bitcoin 54
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 – SS 2020- Teil 17/Bitcoin 55
Transaktionen III Ein Full-Node-Client prüft beim Bezahlen die Korrektheit der Transaktion. 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 wird geprüft, 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 – SS 2020- Teil 17/Bitcoin 56
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 Wettrennen um den Hash (Proof-of-Work). Gewinnt der Miner, dann wird aus dem Candidate-Block der letzte Block der Chain. ISM – SS 2020- Teil 17/Bitcoin 57
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 aber sein, dass mehrere Transaktionen dieselbe ID haben. ISM – SS 2020- Teil 17/Bitcoin 58
Transaktionen VI - Ergänzungen Pay-to-public-key-hash = P2PKH = dies ist das bisher vorgestellte und ü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 einer Transaktion erfolgt, wenn dazu M Signaturen von insgesamt N Adressen dies bestätigen. – Damit lassen sich "Gemeinschaftskonten" realisieren, z.B. dass beide Ehepartner bestätigen müssen, damit das Geld fließt. ISM – SS 2020- Teil 17/Bitcoin 59
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 eines 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 – SS 2020- Teil 17/Bitcoin 60
HD-Wallets (BIP-32, BIP-44) II Vorteile – Es reicht nur einen 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. für 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 – SS 2020- Teil 17/Bitcoin 61
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 – SS 2020- Teil 17/Bitcoin 62
Nach dieser Anstrengung etwas Entspannung.... ISM – SS 2020- Teil 17/Bitcoin 63
Sie können auch lesen