Diesen Vortrag habe ich im Sommer 2019 vor Vertretern der Automobilindustrie und ihrer Zulieferer gehalten.
Inhaltliche Anforderung war, die Luft aus dem Blockchain-Hype zu lassen.
Und, wenn es geht, Grundlagen vermitteln, was Blockchain eigentlich ist.
(Die verwendeten Schriftarten sind Alegreya und Special Elite)
Navigation über die Pfeiltasten auf der Tastatur.
Mein Slot war der letzte am Tag. Das Publikum ist da im Allgemeinen nicht mehr aufnahmefähig. Daher ist dieser Vortrag ein Spagat.
Er beinhaltet technische Details, aber die merkt sich um die Uhrzeit keiner mehr.
Mein Ziel war daher eher, dem Publikum zu vermitteln, dass man fundierte fundamentale Kritik an Blockchain haben kann, die über „was Neues, da hab ich keine Lust drauf“ hinausgeht.
Ich hatte insgesamt 40 Minuten.
Ich habe mich entschieden, lieber mehr Grundlagen reinzunehmen, als im Detail Tiefenbohrungen vorzunehmen.
Damit gebe ich mir die Blöße, dass einige Aussagen aus Sicht eines Experten unzulässig verkürzt sind. Z.B. ist ein Block in der Blockchain nicht bloß eine Liste sondern ein Merkle-Tree aus Transaktionen. Das ist aber für das Verständnis der Fundamentalkritik unerheblich.
Wir nehmen einfach Sie hier vorne,
in der ersten Reihe!
Wir kennen uns alle gar nicht!
Daher vertraut hier niemand Irgendjemandem
Was wenn die Regierung Sie geschickt hat?!
Sehr verbreitete politische Einstellung in den USA
„Der Staat soll sich aus meinem Kram raushalten“
(„Crypto-Libertäre klingt irgendwie doof…")
Cipherpunks-Mailingliste, explorativer Umgang mit Technik
1. Durchbruch: Onion Routing, Mitte der 90er, von der US Navy.
Freie Implementation „TOR“ von Roger Dingledine, 2002.
Traditionelle Krypto hat einen Schlüssel, den beide Seiten kennen.
Den muss ich sicher austauschen, um verschlüsselt reden zu können.
Wenn ich einen sicheren Kanal für den Schlüssel habe, wieso kommuniziere ich nicht einfach über den?
Public Key Krypto hat ein Schlüsselpaar.
Einen privaten, den ich niemandem gebe.
Und einen öffentlichen, den ich allen gebe.
Nachricht * mein öffentlicher Schlüssel = an mich verschlüsselt.
Nachricht * mein privater Schlüssel = von mir signiert.
Nachricht * mein öffentlicher Schlüssel = an mich verschlüsselt.
Nachricht * mein privater Schlüssel = von mir signiert.
An mich verschlüsselt / mein privater Schlüssel = Entschlüsselt.
Von dir signiert / dein öffentlicher Schlüssel = Validiert.
A hat eine Nachricht an B.
A verschlüsselt die Nachricht an B, schreibt „das ist für B“ dran, verschlüsselt das Ergebnis an Mittelsmann 3.
Dann schreibt er „das ist für Mittelsmann 3“ dran, verschlüsselt das Ergebnis an Mittelsmann 2.
Dann schreibt er „das ist für Mittelsmann 2“ dran, verschlüsselt das Ergebnis an Mittelsmann 1. Und gibt es Mittelsmann 1.
Ergebnis:
2. Durchbruch: Hashcash, 1997, Adam Back.
Spam ist ein Geschäftsmodell, weil Zustellung nichts kostet.
Idee: Proof of Work als Porto.
Mails werden nur angenommen, wenn Einsender ein Puzzle löst.
Ein Hash berechnet aus beliebig viel Daten eine kurze Prüfsumme.
1 Bit anders im Input: ~50% der Bits anders in der Prüfsumme.
Anforderungen:
Die Arbeit besteht darin, zu gegebenen Daten Zufallsdaten zu finden.
Die hängt man an die Daten an und bildet einen Hash über das Ganze.
In der Prüfsumme (160 Binärstellen bei Blockchain und Hashcash) sollen dann die ersten n Ziffern Null sein.
Weil Rückrechnen nicht geht, muss man Zufallsdaten durchprobieren. Das ist die Arbeit.
Annahme: Einsen und Nullen sind gleich verteilt.
Um 20 Stellen im Hash zu fixieren, muss man grob 220 Eingaben ausprobieren.
Das wäre in diesem Beispiel ungefähr eine Million.
Eine Mail an adam@cypherspace.org braucht diesen Header:
X-Hashcash:
1:20:1303030600:adam@cypherspace.org::McMybZIhxKXu57jd:ckvi
Datum - Zufallswert - Zähler
1 = Version, 20 = Anzahl Nullen im Ergebnishash.
Hat sich für die Spamabwehr nie durchgesetzt. Aber die Idee wurde in der Blockchain wieder aufgegriffen.
Offensichtliche Anwendung: Haben sich die Daten verändert?
Weniger offensichtlich: Daten + Hash(Geheimnis + Daten) = Session Cookie.
Wenn ich das Geheimnis niemandem sage, kann ich wiedererkennen, dass der Hash von mir gekommen sein muss.
Nach einer Idee von Ephraim Kishon.
Wir denken uns beide eine Zahl aus.
Der mit der höheren gewinnt.
Problem: Der eine sagt seine Zahl zuerst, der andere kann lügen.
Daher: Beide Seiten publizieren erst den Hash ihrer Zahl.
Nehmen wir an, ich weiß etwas brisantes.
Z.B. eine Technologie, die ich zum Patent anmelde.
Ich will später beweisen können, dass ich es heute schon wusste.
Aber ich kann es heute niemandem zeigen.
Lösung: Hash des Dokuments publizieren.
TAN0 = Zufallswert, TAN1 = Hash(TAN0)
TAN2 = Hash(TAN1), ... TAN100 = Hash(TAN99)
Server kennt Zufallswert, kann alle TANs berechnen.
Achtung: TANs rückwärts verwenden!
Wenn TAN n verwendet wird, sind alle TANs ab n verbrannt!
Jede Transaktion kriegt einen Hash über ihren Inhalt.
Spätere Transaktionen hashen ihren Inhalt und den Hash des Vorgängers.
Ergebnis: Man kann alte Transaktionen nicht manipulieren, ohne die Prüfsummen aller folgenden Transaktionen kaputtzumachen!
Das ist, was viele für die Innovation von Blockchain halten.
Ist es nicht.
Idee: Ich publiziere Hashes meiner Daten woanders.
Z.B. drucke ich sie aus oder poste sie auf Twitter / Facebook.
Achtung: Verhindert Manipulation nicht. Man erkennt sie bloß.
Es wäre ohne Ausdrucken irgendwie cooler.
Instead of posting customer hashes to a public digital ledger, Surety creates a unique hash value of all the new seals added to the database each week and publishes this hash value in the New York Times. The hash is placed in a small ad in the Times classified section under the heading “Notices & Lost and Found” and has appeared once a week since 1995.
Das initiale X public-key-verschlüsseln wir an uns selbst. Auf dem Rechner liegt nur der public key, nicht der private key.
Jetzt merken wir, wenn jemand das Log ändert.
Aber wir würden nicht merken, wenn jemand unser Log wegschmeißt und ein komplett neues Log hinlegt.
Wir brauchen also auch noch einen Anker für den Anfang. Z.B. der Server signiert unseren Zufallswert, signierte Zeitstempel / UUIDs.
Wir könnten die Logzeilen jeweils mit X verschlüsseln.
Lektion: Krypto ist schwieriger als es aussieht!
Ich gebe der Bank 10€.
Die Bank gibt mir eine Tüte Bits.
Die Bits gebe ich dem Ticketautomaten, kriege ein Bahn-Ticket.
Der Ticketautomat gibt die Bits der Bank, kriegt 10€.
Woher weiß der Automat, dass meine Bits gültig sind?
Die Bits sind von der Bank digital signiert.
Nächstes Problem: Ich kaufe mit denselben Bits zwei Tickets.
An verschiedenen Automaten.
Das zentrale Problem im digitalen Zahlungsverkehr.
Lösung: Automat gibt Bits direkt der Bank.
Bank guckt auf Seriennummer der Bits, weist double spending zurück.
Offline-Bezahlungen gehen halt nicht.
Das ist dann kein Geld mehr.
Geld kann ich zuhause unter der Matratze lagern.
Bits nicht. Die muss ich sofort der Bank geben.
Und die Bank weiß, wer die Bits abgehoben hat. Privacy!!
Wer Ihnen digitales Geld verkaufen will, der lügt.
Was es gibt ist eher sowas wie digitale Schecks.
Jeder Teilnehmer hat einen private key und einen public key.
Keine Namen, keine vorladbaren Anschriften. Keine Bank.
Die Blockchain ist eine Art ewiges Logfile aller Transaktionen.
Aus Effizienzgründen operiert die Blockchain nicht auf einzelnen Transaktionen sondern auf Blöcken.
Sowas wie: Unterschrift einmal pro Seite, nicht pro Zeile.
Eine Transaktion hat die Form:
„Ich zahle 1 BTC an Key 12345. Seriennummer ist 23.“
Dann signiert von dem, dessen Geld überwiesen wird.
Die Daten kann niemand außer dem Absender ändern, weil niemand sonst den private key kennt.
Blockchain geht davon aus, dass der Sender der Transaktion a) will, dass sie durchgeführt wird, und b) will, dass da die richtigen Daten drinstehen.
Für unwillige Teilnehmer eignet sich Blockchain also nicht.
Beispiel: Umweltschutzvorgaben protokollieren. Teilnehmer hat ein Interesse daran, falsche Daten zu loggen, oder technische Probleme vorzutäuschen!
Verbleibendes Manipulationsrisiko:
Meine Transaktion wird gar nicht aufgenommen.
Lösung:
Die Entscheidung, welche Transaktionen in den nächsten Block kommen, wird nicht vorhersagbar von jemandem dezentral getroffen.
Die Auswahl des Protokollführers erfolgt per Proof of Work (wie bei Hashcash).
Die Schwierigkeit des Puzzles wird algorithmisch an die Rechenpower der Teilnehmer angepasst. Ca. alle 10 Minuten ein neuer Block.
Was ist denn, wenn zwei gleichzeitig eine Lösung finden?
Oder wenn anderweitig nicht zu klären ist, wer schneller war?
Antwort: ¯\_(ツ)_/¯
Dann gewinnt die längere Chain. Die, bei der mehr mitmachen.
Wann weiß ich denn, ob meine Transaktion durchgegangen ist?
Jedenfalls nicht schon nach 10 Minuten!
Jemand anderes könnte die längere Chain haben!
Antwort: ¯\_(ツ)_/¯
Hängt von deiner Paranoia ab, wie lange du warten willst.
Was ist denn, wenn sich die Miner alle gegen mich verschwören?
Antwort: ¯\_(ツ)_/¯
Das wird die unsichtbare Hand des Marktes schon verhindern!
Warum würde jemand bei dem Proof of Work mitmachen?
Kostet nur Strom und bringt mir nichts?
Antwort: Wir bezahlen die dafür. Mit frischen Bitcoins.
Wer den Block macht, kriegt Bitcoins ausgezahlt.
So wird Geld geschöpft. (Gibt ja auch keine Notenbank)
Warte mal, keine Notenbank…
Wer macht dann Geldpolitik? Verhindert Inflation und Deflation?
Antwort: Niemand.
Ausgezahltes Geld an Miner wird mit der Zeit immer weniger.
Eingebaute Deflation.
Deflation ist doch schlecht, dachte ich?
Die EZB legt Billionenkredite auf, um Deflation zu verhindern!
Stimmt. Ökonomisch ist das schlecht.
Führt dazu, dass niemand seine Bitcoins ausgibt.
Nachfrage bleibt, Angebot stagniert — Preis steigt.
Als Währung völlig ungeeignet.
Aber eignet sich super als Schneeballsystem!!
Warte mal.
Alle 10 Minuten ein Block?
So viele Transaktionen passen nicht in einen Block, oder?
Durchsatz des Systems: ca. 5 Transaktionen pro Sekunde.
Das ist offensichtlich völlig ungeeignet für eine weltweite Währung.
Manche Aldi-Kasse macht schon mehr als 5 Transaktionen pro Sekunde!
Visa macht über 20.000 Transaktionen pro Sekunde.
Das kann nicht als Währung gedacht gewesen sein.
Das hat sich ein Krypto-Anarchist für seine Kommune ausgedacht.
Oder als Notar-Werkzeug für digitale Verträge vielleicht?
Für ein paar Dollars kann jeder die Amazon-Cloud mieten und mich und alle meine Kommunen-Mitglieder überstimmen!
Achtung: Das ist ein kritischer Punkt.
Das gilt nicht nur für meine Kommune, sondern auch für die private Blockchain, über die Sie gerade nachdenken!
Proof of Work verhindert Kartelle nur, wenn es weltweite Konkurrenz gibt.
Die gibt es nur bei einer Währung.
Mit der Transaktionszahl kann es keine weltweite Währung stemmen.
„Es ist eine brillante Lösung für das Digitale-Währung-Problem.“
(Ich merkte an, dass es aber keine gute Lösung ist)
„Ich sagte, es ist eine brillante Lösung, nicht eine gute Lösung!“
Der technische Teil der Folien ist hier zuende.
Weil man als letzter Vortrag die Leute beschwingt entlassen soll, kommen noch ein paar weniger ernste Folien mit weniger ernsten Argumenten.
Tut euch und mir einen Gefallen und kritisiert diesen Vortrag nicht anhand der folgenden Folien.
Wenn alle sich den Anreizen entsprechend verhalten, müsste die globale Hashrate ja annähernd konstant sein.
Jeder hasht so schneller er kann.
Wer schneller hasht, verdient schließlich Geld damit.
Wenn jemand Transaktionen fälschen will, müsste der aber seine Leistung zurückhalten. Und dann schlägt er zu und ist schneller.
Da müsste man dann heftige Ausreißer sehen!
Blockchain ist eine Lösung für ein Problem, das Ihre Firma nicht hat.
Privat ist es kein Investitionsobjekt sondern ein Schneeballsystem.
"We found a proliferation of press releases, white papers, and persuasively written articles," Burg et al wrote on Thursday. "However, we found no documentation or evidence of the results blockchain was purported to have achieved in these claims. We also did not find lessons learned or practical insights, as are available for other technologies in development."
David Chaum schlug 1989 digicash vor, mit tatsächlich neuer Krypto, „blind signatures“.
Bank signiert ein Token „im Umschlag“, ohne die Seriennummer gesehen zu haben. Kunde holt Token aus Umschlag, Signatur bleibt gültig.
Bank sieht beim Einzahlen nicht, wer die Münze abgehoben hat. Das ist State of the Art.
Weil es noch Leute gibt, die für echtes Geld Bitcoins kaufen.
Solange es die gibt, gibt es auch Scammer, die die Nachfrage bedienen.
Bitcoin und Krypto-Currencies sind genau da angekommen, wo sie hingehören.
Fragen?
Wenn ich nicht gerade vor Blockchain warne, mache ich IT-Security, hauptsächlich Source Code Audits.