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 1Literatur
[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 2Links 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 3Links 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 5Geschichte (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 6Der 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 7Der Bitcoin II – Die Kursentwicklung nach US$
Quelle: https://de.wikipedia.org/wiki/Bitcoin
ISM – SS 2020- Teil 17/Bitcoin 8Der 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 14P2P-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 15Blockchain 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 16Transaktionen 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 17Aufgabe 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 18Aufgabe 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 19Aufgabe 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 20Absterben 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 21Subvention 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 22Blockchain 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 23Blockchain 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 24Aufgabe 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 25Aufgabe 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 26Kosten 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 27Kosten 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 28Kosten 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 29Aufbau 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 30Adressen - 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 31Wallet
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 32Missbrauch 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 33Missbrauch 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 34Erinnerung 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 35Missbrauch 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 36Missbrauch 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 37Hard 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 38Hard 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 39Missbrauch 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 40Performanz-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 41Smart 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 42Zu 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 43Paper-Wallet (https://walletgenerator.net) I
Über eine Website generierter Ausdruck mit dem geheimen Schüssel
ISM – SS 2020- Teil 17/Bitcoin 44Paper-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 45Zu 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 46Asymmetrische 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 47Asymmetrische 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 48Adressen – 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 49Kodierungen 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 50Kodierungen 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 51Bitcoin 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 52Ist 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 53Transaktionen 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 54Transaktionen 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 55Transaktionen 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 56Transaktionen 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 57Transaktionen 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 58Transaktionen 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 59HD-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 60HD-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 61Seed 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 62Nach dieser Anstrengung etwas Entspannung.... ISM – SS 2020- Teil 17/Bitcoin 63
Sie können auch lesen