 Hallo, ich bin der 20-Uhr-Vortrag, wie ich sehe, sind sehr viele interessierte Leute hier. Mein Name ist Henrik Plötz. Ich bin schon auch ein bisschen länger unterwegs. Ich habe meine eigene Firma gegründet, bin Informatiker und Sicherheitsforscher, wie man heutzutage so schön sagt. Mein erster Kongress-Vortrag war, glaube ich, auf dem 26C3 ist es auch schon ein paar Jahre her. Prinzipiell sind die Themen, mit denen ich mich beschäftigt habe, R4D-Systeme, Zutrittskontrolle, dementsprechend Kommunikationsprotokolle, Verschlüsselung, Kryptografie. Ich arbeite gerade sehr viel für Geld oder zumindest arbeite ich sehr viel, um ein bisschen Geld zu kriegen. Hin und wieder habe ich aber auch mit Open Source-Projekten zu tun, die man dann auch online findet. Und dann habe ich auch ein Twitter-Account, wo ich mich ab und zu mal mit Blockchain-Verfechtern anlege. Bisher hat mir niemand so richtig Schlüssig erklären können, warum man den Unfug brauchen sollte. Das ist entfernt mit dem Thema hier verwandt. Ich komme gleich darauf, wie wir dazu kommen. Aber erst mal der Formhalber und, weil ich dieses Bild so schön finde, das ist eine einführende Einführung, was denn eigentlich ein Zeitstempeldienst ist. Dieses wunderschöne deutsche Wort. In diesem Fall will ich mich auf digitale Zeitstempeldienste beschränken. Auch wenn ich den Zeitstempel sehr schön finde, den ich auf der Wikipedia gefunden habe. Es geht darum, dass wir eine Eingabe in digitaler Form haben, eine beliebige Zeichenkette, ein Datensatz, gleich eine ganze Datei und ein Zeitstempel zurückkriegen, große Überraschung. Der wichtige Punkt daran ist, dass ich zu einem späteren Zeitpunkt, zu einem späteren Zeitpunkt, wenn ich Eingabe und Zeitstempel habe, einer dritten Partei gegenüber etwas beweisen kann. Das sind die drei wichtigen Punkte, um die es immer geht. Ich brauche sowohl die Original-Datei als auch den Zeitstempel, den ich zurückgekriegt habe. Das geht natürlich um Zeitversatz. Es ist eine dritte Partei, die nicht ich bin und nicht der Zeitstempeldienst ist. Ich weiß, dass der Zeitstempel echt ist. Der Zeitstempeldienst weiß das mutmaßlicherweise auch, sondern ich muss es jemand anderen beweisen können. Was ich beweisen möchte, ist Datum und Uhrzeit. Was der Zeitstempel erstellt wurde. Oder im vereinfachten Fall die Erstellungsreinfolge. Das ist der zweite Punkt, dass die Datei seitdem unverändert gewesen ist. Dass ich mir also nicht einfach einen frischen Zeitstempel genommen habe, so wie das bei dem Mechanischen vielleicht noch funktionieren würde und den auf eine neue Datei getan habe. Warum man so etwas machen möchte, werde ich dann auch immer mal wieder gefragt. Der trivialste Fall sind zum Beispiel Auditlocks, mit denen ich sicherstellen möchte, dass die Daten nachträglich nicht verändert worden sind. Ganz modern sind das in Deutschland zumindest, wegen Steuern und so. Diese Signatursysteme in den Kassen. Also im Bereich der Finanzbuchhaltung, um das Radierverbot auch digital umsetzen zu können, möchte ich sicherstellen, dass die Datei oder die Datensätze, die ich damals aufgezeichnet habe, nicht nachträglich verändert werden, nämlich genau in dem Moment, wenn der Steuerprüfer vorbeikommt. Der verbreitete Einsatz von digitalen Zeitstempeldiensten, sicherlich jeder von euch benutzt das, ist im Falle von Signaturen, insbesondere bei Software-Signaturen. Jedes moderne Betriebssystem erfordert, dass alle Software, die ausgeführt wird, signiert ist, oder zumindest die meiste Software. Und diese Signaturen erfordern in der Regel einen zusätzlichen Zeitstempel. Sie müssen nicht nur nachweisen, dass das Datenpaket nicht nur nachweisen muss, dass es vom korrekten Herausgeber signiert wurde, sondern auch wann es signiert wurde. Das hat einen sehr erlustigen und für mich, als ich es gelernt habe, überraschenden Grund. Es geht um die mögliche Kompromittierung von Schlüsseln und das Zurückziehen von Schlüsseln. Im Allgemeinensystem, im Internet, bei Webseiten, haben wir das mit dem Zurückziehen immer noch nicht so richtig gelöst. Bei Zertifikaten, die für Software-Signaturen verwendet werden, ist das aber ein sehr wichtiger Punkt, wenn ich... Glaubst du, neugierig das Beispiel? Ich glaube, das war das Windows-Wideboard. Wenn ich eine Software-Digitale signiere und mit dieser Signatur ausliefere, das Betriebssystem beim Starten diese Signature prüft und die Software verhindert auszuführen, wenn die Signaturen nicht stimmt und dann jemand dem privaten Schlüssel kompromittiert, ich also den Schlüssel zurückziehen muss, würden im normalen Fall sämtliche Signaturen, die mit diesem Schlüssel gemacht worden sind, ungültig. Das ist das, wie wir es normalerweise verwenden. Wenn man sein GPG-Schlüssel verliert, dann veröffentlicht man einen Rückruf, einen Schlüsselrückruf und sämtliche Signaturen, die mit diesem Schlüssel gemacht worden sind, werden nicht mehr akzeptiert. Das ist bei Software-Scheiße, wenn ich da nicht mehr ausführen kann. Deswegen erfordern alle modernen Betriebssysteme, dass man noch einen Zeitstempel dran tut, der beweisen soll, dass man einen bestimmten Zeitpunkt vor einem bestimmten Zeitpunkt stattgefunden hat, nämlich vor der Kompromittierung. Auf diese Weise kann ich sagen, der Schlüssel ist ab heute kompromittiert, aber alle Signaturen, die vorher gemacht worden sind, bleiben weiterhin gültig. Und deswegen, welcher Mechanismus es ist, zeige ich gleich noch, deswegen verwenden tatsächlich alle modernen Systeme bereits Zeitstempel als Teil ihrer Funktionalität. Wofür es auch noch schön ist, dass man immer wieder darauf kommt, dass man dann keinen Notar mehr braucht, bei dem man seit Patent hinterlegt oder überhaupt die Patentschrift, wenn man einfach nur darstellen möchte, dass man etwas zu einem bestimmten Zeitpunkt wusste. Es wird mir dann auch mal gesagt, das tue ich in einen Umschlag, hinterlegt das bei meinem Notar und wenn es dann zum Rechtsschreit kommt, wer die Idee als Erster hatte, dann sagt mein Notar, das war das schon. Das kann man digital tun. Dann erzählen mir Leute, was ist eine Blockchain? Blockchain ist, also viele Leute, die Blockchains immer wieder für wenden wollen, können es nicht ordentlich erklären. Was eine Blockchain eigentlich ist, ist ein verteilter Konsensmechanismus. Das ist die Kernfunktionalität. Das ist ein sehr interessantes, faszinierendes System, das tatsächlich eine schwierige Eigenschaft erfüllt, nämlich bizantinische Fehlertoleranz, ohne zentrale Autorität. Aber was ist inhaltlich in seinem Kern tut, ist, Konsens zu finden über die Reihenfolge von Aktionen. Das ist bei Bitcoin, bei all diesen Kryptowährungen, halt sehr interessant, wenn es darum geht, welche Abbuchung zur Erkstatt gefunden hat. Und auch an der Stelle wichtig, dass man ein verteiltes System hat, weil derjenige, der die Hoheit darüber hat, in welcher Reihenfolge Aktion ausgeführt werden, kann an der Währung herum manipulieren, verbrennt aber im Nebeneffekt mal eben einen Norwegen an Strom. Im Falle von Bitcoin. Oder um das umzurechnen in der deutschen Liebste Einheit, das sind ungefähr 16 Saarland. So, wie kam jetzt der Anstoß zu dem, was ich machen wollte? Es war ein Tweet vor, naja, es sind jetzt auch schon 2 Jahre her, da kam was dazwischen. Es war auch keine Easter-Hacksidee, aber das war ja bei dem von daher ist okay. Andreas hatte gepostet, dass man in einer ordentlichen digitalen Gesellschaft digitale Notariate hätte. Genau dieses, was ich tun will. Ein Zeitstempeldienst, man schickt seine Daten hin, kriegt ein Zeitstempel zurück, fertig ist der Affe. Braucht man nicht mal Blockchain vor dem voran, ging das, ich weiß nicht, Zeitungsenter, aber die Geschichte ist so schön, dass sie sich immer wiederholt hat. Es gibt dieses fünf Blockchain-Produkt, aber es hat nichts mit dem Impf-Fast zu tun. Die Firma macht tatsächlich so was ähnliches. Also sie stellen als Service bereit, dass sie einen Zeitstempel bereitstellen für Sensordaten oder alles Mögliche, was man rein tun möchte und diese dann in einer Blockchain verankern. So, was möchte ich haben? Ich möchte einen digitalen Zeitstempeldienst. Das haben wir jetzt mitgekriegt. Ich möchte, dass der frei verfügbar ist. Die Grenzkosten sollten im besten Fall gegen Null gehen. Das ist nicht bei allen Alternativsystemen so, ohne den Planeten zu verbrennen. Keine großen Blockchains erlaubt. Das richtig wichtige, finde ich, ist, dass kein Vertrauen in den Betreiber notwendig sein sollte. Ich schränke das gleich ein. Der Betreiber muss nicht vertrauenswürdig sein, in dem Sinne, dass er nicht betrügt, weil jeder nachgucken kann, ob der Betreiber betrügt. Er sollte aber so ein bisschen, na ja, wäre schön, wenn er nächstes Jahr noch das und den Dienst weiterhin anbietet. Das ist so die einzige Art von Vertrauen, die ich möchte. Und als Bonus, alle Dinge, die ich mir überlebe, sollten offline verifizierbar sein. Auch nicht immer gegeben. Dann kommt die Frage, warum benutzt du nicht X? Wir gehen mal ein paar X durch. Das älteste, weit verbreitetste ist ein Internetstandard aus der X500-Reihe. Das ist tatsächlich ein Zeitstempeldienst, wie man ihn sich vorstellt, wenn man so ein Isokomitee ist. Es gibt eine oder mehrere Autoritäten, eine Time Stamped Authority. Die ist vollständig vertrauenswürdig. Der schickt einen Datensatz und die macht ein Stempel drauf, der wird digital signiert, enthält die aktuelle Uhrzeit nach besten Wissen und Gewissen und damit bestätigt diese Autorität Kraft ihrer Wassersuppe, dass dieser Datensatz zum Zeitpunkt XY vorlag. Wenn man den öffentlichen Schlüssel dieser Autorität kennt, kann man diesen Zeitstempel offline verifizieren. Schön, das ist schon mal guter, guter Ansatz. Die Systeme, die ich vorhin beschrieben habe, Code Signing verwenden alle solchen Standards. Wenn man mal in seinem Adobe Akrobat Rumpfummel, dann kann man da irgendwo sehen, da kann man die einstellen. Die großen Certificates Certificate Authorities bestreiben solche Dienste, wollen teilweise dafür Geld sehen. Das sind wir dann schon wieder bei den Grenzkosten. Und was ich total doof finde, ist, man muss vollständig der Autorität vertrauen. Was auch immer die Autorität darunter schreibt, gilt. Wenn die sich irrt, gilt es halt trotzdem. Wenn jemand da vorbeigeht und dem Administrator ein bisschen Geld in die Hand drückt oder eine Waffe an die Stirn, gilt es halt trotzdem. Wie wird man das los? Da gab es auch schon länger eine Idee. Mit länger meine ich wirklich länger. Sogenannte Linked Timestamps. Also jetzt kommen wir ungefähr in die Richtung. Hier oben, Blockchain-Leute würden jetzt Blockchain schreien, aber es ist halt einfach eine Haschschäen. Wir tun halt die Dokumente der Reihe nach rein und haschen jeweils den vorherigen Zustand mit dem neuen Dokument und kriegen einen aktuellen Zustand. Und davon zu schreiben wir dann das Ergebnis irgendwo hin, wo man es lesen kann, zum Beispiel in der Zeitung. Das gibt es schon einige Zeit lang auch als kommerzielle Dienstleistung. Diese Verankerung nennt man das. Diese Verankerung in der Zeitung ist der wichtiger Aspekt daran. Denn ein Hasch führt dazu, dass ich, wenn ich den Hasch kenne, rückwärts weiß, dass sich nichts davor geändert hat. Ich muss den Hasch aus einer vertrauenswürdigen Quelle haben. Das ist mein Anker, mein Vertrauensanker. Und wenn ich weiß, dass diese Quelle nicht verändert worden ist, nicht manipuliert worden ist, kann ich mathematisch oder kryptografisch mit guter Wahrscheinlichkeit annehmen, dass seitdem auch nichts dahinter verändert worden ist. So ein Hasch wirkt also immer rückwirkend. Die Idee dabei ist, das in die Tageszeitung zu drucken, dass es davon wirklich viele Kopien gibt. Das heißt, wenn wir dann, wir sind wieder bei der dritten Partei, wir haben in der Zukunft einen Rechtsstreit. Ich möchte jemandem beweisen, dass ich einen bestimmten Zeitstempel vor Datum X erhalten habe. Ich habe das am 1. Januar schon gewusst. Gehe ich in die Staatsbibliothek, hole mir die Zeitung von 5. Januar. Da ist der Hasch drin. Und dann kann ich halt von diesem Hasch rückwärts bis zu dem Datum rechnen, von dem ich den Beweis erstellen möchte. Die Gegenseite ist nicht in der Lage, eine Zeitung vom 5. Januar zu, mehr als eine Zeitung, sie könnte jetzt versuchen, eine Zeitung zu fälschen. Aber die müssten sie dann halt in allen Bibliotheken positionieren, zum Beispiel. Das ist ein bisschen schwierig und illegal. Das Konzept gibt es schon lange, sagte ich. Nicht mehr sehr viele von euch werden sich an das ewige Lockfall von Lutz Donnerhacker erinnern. Ich habe hier mal ein Screenshot aus dem Internet Archive ausgraben müssen, weil das jetzt nicht mehr ganz online ist. Der Screenshot ist von 1998. Der setzt genau dieses Prinzip um. Man kann etwas hinschicken und das wird mit dem aktuellen Wert zusammengehescht und der aktuelle Haschwert veröffentlicht. Der Nachteil hieran, also das eine ist der Trade-off, was die Performance angeht. Diese kommerziellen Dienstleister wollen in der Regel Geld sehen, weil das Performance-Dinge nach sich zieht. Und der zweite Nachteil ist, dass eine Verifizierung, selbst wenn ich den Vertrauensanker habe, meistens eine Onlineverbindung zum Zeitstempeldienstleister benötigt. Also selbst wenn ich den Hasch aus der Zeitung habe, der Hasch hier ist halt sehr kurz, brauche ich noch alle Zwischenschritte, um am Ende einen durchgehenden Weg zu zeichnen von dem Hasch, den ich kenne, zu dem Dokument, zu dem ich haben kommen will. So jetzt kommt die nächste Fraktion und sagt, naja, das mit diesen Zeitungen abdrucken, das ist ja auch teuer und überhaupt und sowieso tun wir die noch einfach an die Blockchain. Sternchen Blockchain, welcher auch immer, hat den Vorteil, wir sind weiterhin auf der Seite, dass wir keinen Vertrauen in den Betreiber brauchen und den Vertrauensanker jetzt weit verteilen und durch Planetenverbrennen ersetzen. Deswegen finde ich alle Projekte, die das als Kerngedanken haben. Also ich fand den Slogan hier schon ein bisschen, Open Time Stamp aims to be a standard format for Blockchain Timestamping. Das ist halt genau, was ich nicht möchte. Deswegen fliegt das auch raus. Und das andere Projekt, die haben mir leider meinen, also den Domainnamen habe ich mir so schön überlegt und dann hatte den jemand anders schon benutzt. Deswegen heißt mein es anders. Ist halt auch genau das Gleiche und das tut es nicht mal in die Bitcoin Blockchain, sondern in die Bitcoin Test Blockchain, die nicht als sicher zu betrachten ist. Für die Verifikation kann ich also jetzt mir die, ja, also der Hinweis ist, dass Open Time Stamp nur einen Hasch in die Blockchain schreibt, das ist korrekt. Der, es ist korrekt, dass nur einen Hasch in die Blockchain geschrieben wird, das Problem ist, er wird in die Blockchain geschrieben. Also ich, die Grenzkosten sind nicht null, weil die Blockchain betrieben werden muss. Jedes Projekt, das eine Blockchain im Sinne von Bitcoin mit Proof of Work benötigt, benötigt eine Blockchain im Sinne von Proof of Work wie Bitcoin. Es ist ja schön, dass neben den paar Bitcoin Transaktionen, die da reinkommen, man seine eigene noch dazutut. Das bedeutet aber trotzdem, dass man angewiesen ist auf das gesamte Drum herum. Das ist meine Kritik daran. Selbst wenn wir dann endlich mal verstanden haben, dass man sich von Bitcoin kein Brot kaufen kann, habe ich da halt immer noch diese Leute, die sich da so rangehängt haben. Und man darf halt leider nicht die Anzahl der Transaktionen, zumindest sagen wir das anderen Leute immer mal wieder, dass man nicht die Anzahl der Transaktionen durch den Stromverbrauch, Stromverbrauch durch Anzahl der Transaktionen teilen darf. Es ist halt trotzdem 16 Saarland. Deswegen, das ist meine Kritik daran. Deswegen möchte ich das loswerden. Der zweite Punkt ist, dass ich den Vertrauensanker jetzt zwar verteilt habe, aber immer noch einen Weg dorthin brauche. Das heißt, um den Time-Stamp zu überprüfen, muss ich immer noch den aktuellen Zustand der Blockchain abfragen und dann irgendwie den Weg wieder zurückfinden zu dem Herst, den ich gerne haben möchte. Das ist halt gegebenenfalls, also die Bitcoin-Blockchain macht halt, ich habe aufgehört zu zählen. Also ich hatte sie mal runtergeladen, aber es sind ein paar Jahre her, da waren es schon 200 Gigabyte. Das wird halt nicht kleiner. Ein verwandtes Konzept tatsächlich auch, was sowas eigentlich dafür benutzt werden kann, was ganz schön ist, es wäre so ein Append Only Ledger. Das ist quasi die ähnliche Funktionsweise, wie so ein Smart Contract, hast du nicht gesehen, alles drum und dran, aber man benutzt das einfach zentral. Das heißt, wir sparen uns den Konsensmechanismus, weil Konsens halt nicht nötig ist, haben trotzdem alle Funktionen einer normalen Datenbank. Mit der Zusatzfunktion, wenn ich an irgendeiner Stelle einen Vertrauensanker setzen kann, wenn ich den von irgendwo her kriege, aus der Zeitung aus einem QR-Code, kann ich von dort aus rückwirkend alle Aktionen nachvollziehen und halt den aktuellen Zustand der Datenbank überprüfen. Certificate Transparency ist ein Verfahren, was sowas so ein Ansatz verwendet. Das ist auch das, was alle von euch benutzen, alle modernen Browser erfordern, dass SSL-Zertifikate in einem Certificate Transparency-Log hinterlegt worden sind, die genauso funktionieren. Man hängt immer an und es wird dann eine Merkletree gebaut, den erkläre ich gleich, mit dem man extern überprüfen kann, dass der Eintrag tatsächlich in dem Log enthalten ist. Im Falle von Certificate Transparency gibt es noch eine Anforderung, nämlich dass das CT-Log beweisen kann, dass es vollständig ist. Dass alle Einträge, die in dem Log enthalten sind, auch öffentlich sichtbar sind, damit Leute zum Beispiel Google oder doch bei Google hat es angefangen sehen können, ob eine CA-Zertifikate für eine Domäne ausstellt, für die es keine Domänen-Zertifikate ausstellen darf. Also ein Certificate Transparency-Log ist ein Pantoni-Ledger mit der Besonderheit, dass er Vollständigkeit beweisen kann. Amazon bietet sowas ähnliches an und im UDB ist eine Open Source Implementierung, das ist wo der Screenshot herkommt. Es ist eine vollständige Datenbank mit dem Feature, dass sämtliche Aktionen, die man durchführt, immer nur hinten angehangen werden und man dann, wenn man den aktuellen Zustands-Hash kennt, beweisen kann, dass zwischendurch nichts schiefge- das zwischendurch niemand was manipuliert hat. Kann man auch als Time-Stamp-Service verwenden, indem man einfach immer nur die aktuelle Zeit reinschreibt, ist so ein bisschen Over-Engine, also ist ein bisschen doll groß und hat mehr Funktion als ich wollte. Jetzt kommt der Einschub zur Erklärung, wie wir Merkel Bäume, die ich noch nicht erklärt habe, benutzt sind. Dazu ein Satz der Baum, an dieser Stelle ist besser als eine Kette. Also Haschschäne ist das, womit wir gerade angefangen haben. Ich trage, habe meine Einträge und Hesche immer den aktuellen Wert mit dem vorherigen Wert. Das ist genau das ewige Lockpfeil von eben. Während, wenn ich einen Baum baue, geht das nach oben weg. Warum ist das besser? Oder Welche Eigenschaft erfüllt das besonders gut? Nehmen wir mal an, ich wollte diesen Eintrag hier überprüfen. Ich habe den aktuellen Hätknoten gegeben. Dann muss ich halt von hier nach da gehen, von da nach da gehen und von da nach da gehen. Das ist okay. Genau das gleiche. Nehmen wir mal an, ich hätte diesen hier und habe den aktuellen Hätknoten gegeben. Ich halt da, da, da. Es ist an diesem Beispiel gleich lang. Es sind jeweils drei Schritte. Aber in den Tree passen schon mal gleich viel mehr Einträge rein. Der schöne Punkt ist, ich brauche bloß Logarhythmus der Anzahl der Einträge an Zwischenschritten im Durchschnittsfall. Wenn ich also eine Haschschäne mit, lass ich mal 2.000 Einträgen habe, muss ich halt im schlimmsten Fall 2.000 Einträge durchgeben, bis ich angekommen bin. Wenn ich einen Hashtree mit 2.000 Einträgen habe, brauche ich gegebenenfalls im Durchschnittsfall 11 Schritte, bis ich angekommen bin. Das ist ein Unterschied. 2011. Und das, was ich rechts aufgemalt habe, nennt man tatsächlich dann schon Murkeltree. Nichts mit der Raute zu tun, sondern Mathematiker mit dem Namen. Murkeltree zeichnet sich an der Stelle dadurch aus, dass er immer zwei Einträger zu einem neuen zusammenhäscht. Also ich habe hier zwei Einträger, die werden zusammengehäscht und ich kriege einen neuen. Zwei Einträge, häsch' neu. Dann habe ich diese beiden Hashes als innere Knoten, häsche sie beide zusammen und kriege einen neuen. Und so komme ich dann immer weiter nach oben und habe irgendwann einen letzten Eintrag. In meinem Kopf als großen Durchbruch habe ich empfunden, als ich das Bild so gemalt habe. Ich schreibe jetzt die Zwischenhashes und den Endhash jeweils über den Eintrag zeitlich gesehen, zu dem sie entstanden sind. Also wenn ich von links nach rechts immer weitere Einträge anhänge, kommen in diese Spalte dann jeweils die Zwischenhashes, die zu dem Zeitpunkt entstanden sind. Und dann kann ich anhängen zeigen. Was wir nämlich jetzt haben, ist, dass dieser Baum immer größer wird, indem er nach rechts und nach oben wächst. Also einen Eintrag anhänge, mache ich einen neuen. Das war der einfache Fall. Hänge ich noch einen Eintrag ran. Da muss ich schon wieder ein bisschen was ändern. Und das wird dann gegebenenfalls immer ein bisschen schlimmer. Jetzt ändern sich mehrere interne Hashes, aber das Konzept bleibt das gleiche. Es gibt immer einen obersten Hash, der ganz rechts oben steht und dann werde ich wieder drunter gehen. Und dieser Baum kann halt beliebig groß nach rechts werden. Was kann ich damit bauen? Wie komme ich von hier zu einem Zeitstempeldienst, der die ganzen Eigenschaften hat, die ich gerne haben möchte? Ich brauche zwei Arten von Beweisen. Und Beweis heißt in diesem Fall, dass der Betreiber, die Autorität, die jetzt nicht mehr so autoritär sein muss, der Betreiber jemand anderem Eigenschaften beweisen kann, nämlich einmal Konsistenz. Und das zweite kommen wir gleich. Nehmen wir mal diesen Zustand an. Das ist der Merkeltrieb, wie er gerade ist. Hier ist der aktuelle Knoten. Ich kenne diesen Knoten. Der steht in der Zeitung zum Beispiel. Ich habe mir diesen Knoten gemerkt. Der ist jetzt mein Vertrauensanker. Jetzt gucke ich kurz nicht hin und der Baum sieht so aus. Es gibt einen neuen obersten Knoten. Und was ich jetzt gerne als Konsument, als Beobachter, als Monitor tun möchte, um nachzuweisen, dass der Betreiber mich nicht verarscht hat und hinten irgendwas eingeschoben hat, ist, ich möchte beweisen, dass dieser neue rote Knoten eine echte Erweiterung von dem grünen Knoten ist. Welche Zwischenknoten muss ich dafür überprüfen? Ich habe das Bild einfach gemalt. Das ist tatsächlich nur einer. Wenn ich diesen Knoten habe, ich wechsle mal kurz die Farbe. Wenn ich diesen Knoten habe, kann ich, also ich nehme halt den Knoten, den ich schon kenne. Den Knoten, der mir gerade bekannt gegeben wurde, kann ich die beiden haschen und komme zum neuen und weiß, dass der grüne Baum eine echte Untermenge des roten Baums war. Das war der einfache Fall. Den habe ich gerade so genommen. Was ist denn, wenn ich jetzt von diesem Fall ausgehe und jetzt was Schlimmes tue und dann noch einen ran hänge, dann überkreuzen sich die Pfeile und es wird ein bisschen schwieriger, aber es gibt dann ein Algorithmus. Es gibt immer ein Algorithmus und herauszufinden, welche Knoten ich haben muss. Nimm ich diese beiden. Lass mal kurz durchgehen. Also wenn ich diese beiden hier habe, komme ich von da nach da. Wunderbar. Wenn ich diesen hier habe, komme ich von da nach da, von da nach da, ganz großartig. Und von hier und hier komme ich da hoch. Toll, bin ich beim roten angekommen. Das Gleiche funktioniert beim grünen auch. Die beiden hatte ich schon. Dann komme ich hier und dann komme ich zum grünen Knoten. Ich habe also jetzt gezeigt, dass der rote Baum eine echte Erweiterung des grünen Baums ist, in dem ich nur vier Knoten überprüfen musste. Wir sind wieder bei Log N. Und man fragt dann den Dienst einfach, ich habe den alten Knoten hier, ich habe einen neuen Knoten da. Gib mir mal die Zwischenschritte. Die zweite Art von Beweis, die ich brauche, ist der sogenannte Existenzbeweis. Ich fange also an mit ich habe meinen aktuellen Zustand und jemand sagt mir übrigens, mein Datensatz ist da unten drin. Du musst mal gucken, ob dieser Knoten wirklich im Baum drin ist. Welche Zwischenknoten brauche ich dann? Ja, ich komme von hier nach da, ich komme von hier nach da und von hier komme ich da hoch zu dem, wo ich ihn wollte. Auch wieder nur Log N Knoten. Das habe ich jetzt gebaut. Eine Entwicklungsversion davon ist online. Sie generiert schon fröhlich Zeitstempel. Ich weiß nicht, ob man das erkennen kann. Wir sind gerade bei Zeitstempel nochmal 5 Millionen 600 Tausend. Ich zeig gleich, warum das so aussieht. Der Kot, den habe ich heute Nachmittag online geschaltet. Der ist noch nicht ganz vollständig über Prüfung. Also das User Interface zur Überprüfung ist noch nicht fertig. Aber die Zeitstempel werden generiert und man kann schon stempeln. Der Trick, den ich jetzt verwende, um dafür zu sorgen, dass das performant ist und offline verifizierbar und man mir nicht vertrauen muss. Das haben wir gerade schon gehabt. Das waren die Konsistenz- und Existenzbeweise. Wie heißt das im Telefonjagong so schön schertkost? Dass ich den Baum aufteile in der Mitte. Ich mache zwei Bäume. Ich fange einmal hier ein Intervall von zum Beispiel 5 Sekunden, 3 bis 5 Sekunden, was auch immer kann man einstellen. Es gibt also mehrere Intervalle. Alle drei Sekunden fängt ein neues Intervall an. Alle Anfragen, die wären dieses Intervalls reinkomme, baue ich in einen unteren Merkeltrie. Und von dort gehe ich dann hoch auf die nächste Ebene, sodass jedes Intervall nur genau ein neuer Hasch hinzufügt, hinzukommt. Manchmal ist der leer, also wie jetzt die vergangenen 5 Millionen. Aber prinzipiell haben da sehr viele neue Hasches drin Platz. Es ist tatsächlich der gleiche Trick, den Open Time Stamp verwendet, bloß dass ich mir die Blockchain spare. Da drin haben dann sehr viele Pages Platz. Und dann baue ich da drüben den normalen Merkeltrie auf mit dem jeweils aktuellen obersten Hasch, der auf der Webseite jeweils veröffentlicht wird und den man dann auch über ein Webseite zum Beispiel kriegt. Man kann jetzt das System monitoren und mir nachweisen, wenn ich mich daneben nehme, beziehungsweise den Betreiber. Also mein Ziel wäre es natürlich, dass das irgendjemand betreibt, der nicht ich bin, zum Beispiel der Bund oder irgendeine NGO, wer da noch eine kennen würden. Wie gesagt, kein Vertrauen nötig, dass die nicht lügen. Wenn jetzt jemand einen Side Stempel beantragt, dann fängt er halt da unten an. Also dann ist der Teil des Intervalls, kriegt also hier unten seinen Datum rein und kriegt noch diese anderen Punkte mit. Das sind die, die wir von denen wir eben schon gesehen haben, dass man mit denen einen Existenzbeweis führen kann, sodass die Ausgabe des Side Stempels, wenn man einen Side Stempel anfragt, diese grünen Punkte und der aktuelles aktuellen Intervall oben sind. Das reicht, wenn man dieses Intervall kennt, wenn man weiß, dass dieses Intervall in dem Kopf enthalten ist, um zu beweisen, dass das Datum in dem gesamten Baum enthalten ist. Der Offline-Trick ist jetzt, dass ich halt diese hier beschränke und quasi zum neuen Anker erkläre. Also man kann den Kopf als Anker verwenden. Das ist auch das, was, also das ist halt die Kategorie in die Zeitung abdrucken. Wenn ich aber vorher sehe, keine Ahnung, ich möchte Impfpässe verifizieren, dann lade ich mir einfach täglich sämtliche neuen Hashes dieser Zwischenebene runter. Das sind halt nicht so viele, dreieinhalb Megabyte pro Jahr ungefähr und kann dann sämtliche Side Stempel, die innerhalb dieses Zeitbereichs sind offline verifizieren, ohne nochmal den Dienstfragen zu müssen. Genau, also Monitoring ist ein wichtiger Punkt. Das gibt es mittlerweile auch bei anderen Systemen. Certificate Transparency ist ja unter anderem deswegen erfunden worden. Tala, genutala eine Kryptowährung, verwendet auch so ein System. Der Side Stempel-Dienst hat einfach einen Socke, da kann man drauf lauschen und dann kommen immer so Wupp, Wupp, Wupp, kommen halt hier aktuellen Intervalle raus und dann kann man überprüfen, dass er nicht gelogen hat. Kann das dann anderen Leuten gegenüber bestätigen oder keine Ahnung, kann hoffen, dass sich der Side Stempel daneben benimmt und man da eine große Glocke hängen kann. Also ich hoffe mal, das ist die Hauptmotivation. Und es geht halt live, also kann man live beobachten und man kann auf diese Art auch einen kompletten Mirror erstellen. Mit dem Mirror kann man dann später auch, wenn der Betreiber Konkurs geht offline geht, was auch immer verschwindet, weiter Verifikation stattfinden lassen. Genau, complete Smurring. Was ich mir dann auch noch überlegt habe, moderne Webentwicklung, wir können, ich rendere das auch einfach auf dem Server, warum ich den Screenshot von Lutz Donnerhacke, das ewiges Lockpile vorhin aus dem Internet-Archiv nehmen musste, war, dass das nicht im HTML gerendert war, sondern das war ein eingebundetes Bild. Das war nicht in der aktuellen Version enthalten, während ich bei dieser Implementierung den Hash mit ins HTML rendere. Das heißt, der Google Cash, Internet Archiv, all diese agieren quasi standardmäßig, ohne dass ich irgendwas tun muss als Anker. Ich brauche mir nicht mal die Mühe machen, die Zeitung abzudrucken, weil Leute können das einfach aus dem Internet-Archiv abrufen. Und dann hoffen, dass das Internet-Archiv es zwischendurch nicht verändert hat, aber das ist dann der, also wenn es jemandem wichtig ist, dann kann das noch mal unabhängig davon machen. Implement, kann man das, naja, von hier vorne kann ich es lesen. Implementiert in Python, ich habe gedacht, so ein schönes Zeitstempelformat, eine Sache, die mich bei Open Time Stamps nämlich auch nicht so schön fand, war, dass die Time Stamps eine Datei sind, eine externe Datei, die man herunter lädt, ist, dass mein Zeitstempel einfach ein Ohl ist. Da ist dann alles im Ohl drin kodiert und konventionell führt dann dieser Ohl auch einfach auf eine Webseite, die gleich die Verifikation erlaubt. Deswegen Server-Site-Rendering, die Time Stamps sind Ohls. Die AP ist so implementiert, dass man sie in JSON ansprechen kann, damit moderne JavaScript-Entwickler damit zufrieden sind oder in Siebor, wenn man aus einer anderen Sprache kommt und mit wie näher Objekte umgehen kann. Die Intervalle kommen in der konstanten Rate raus und so weit ich jetzt erkennen kann, gibt es keinen Grund, warum da nicht wirklich viele 1000 Time Stamps pro Intervall bei rausfallen sollten. Ich habe mir zum Vorbild genommen, Let's Encrypt hat einmal geschrieben, dass sie wirklich viele Zertifikate neu ausgestellt haben, als es da irgendeine Umstellung gab und waren so bei 4000 pro Sekunde. Das macht es hier. Mit einem Problem, ich hatte meinen Development-Dings einmal neu gestartet. Ich wollte irgendein Backlösen, habe also alle Caches gelehrt und neu gestartet. Ich wollte Speichersparen. Den Merkeltrie speichere ich tatsächlich nicht komplett in der Datenbank, sondern nur die Intervall-Hashes, wie ein Mörer das auch nur tun müsste. Die Zwischenknoten kann man ja on demand neu berechnen. Die tue ich dann in ein Redis Cache und brauche sie dann auch nicht ein zweites Mal berechnen. Das war das, was ich gelernt habe, nachdem ich es debackt habe. Was ich erst gesehen habe, war, dass statt alle drei Sekunden ein Intervall alle vier Stunden eins rauskam. Ja, der Redis Cache war halt leer. Das heißt, es hat alle Intervalle ständig, also alle Zwischenschritte neu berechnen müssen für jeden einzelnen Schritt und das hat ein ordentlich CPU-Lust erfordert. Das sieht man dann halt erst, wenn man da zwei Millionen Dinge reingetan hat. Das habe ich dann in meiner Testobgebung auch mal gemacht und dann konnte ich es debacken. Das heißt, eine der Veränderungen, die noch ansteht, ist die inneren Knoten auch in der Datenbank zu speichern. Das wollte ich ursprünglich nicht tun. Was ich gelernt habe, ich dachte mir, C-Bor, hey, concise binary object representation, ist viel besser als Jason, kann Bineer-Daten, kann Bytes, hat eine kanonische Repräsentation, die man einfach haschen kann, um dann einen kanonischen Hasht zu haben und habe dann gelernt, dass es drei kanonische C-Bor-Repräsentationen gibt, weil es erst einen RFC gibt, gab, in dem man auf zwei verschiedene Arten lesen konnte. Also der RFC definiert eine kanonische Repräsentation, die wirklich jedes C-Bor-Objekt in genau eine Beitfolge abbilden soll. Und dann gibt es Leute, die den Satz andersrum lesen, dann kommt eine andere Beitfolge bei raus. Das hat dann, haben dann die Autoren fixen wollen und es gibt einen neuen RFC mit einer anderen Beschreibung, die auf eine dritte Art gelesen werden kann. Von daher kommen wir jetzt auf drei verschiedene Repräsentationen. Ich habe jetzt einfach spezifiziert, welche davon es ist. Genau. Verifikation habe ich unvollständig implementiert. Eine Frage, die ich mir dabei gestellt habe, bei einem externen Jason-Format, das sieht schon fast so aus wie so ein Jason-Web-Token, kann man das irgendwie kompatibel machen? Ich habe dann noch keine richtige Antwort darauf gefunden und wieder in der Kategorie Probleme, an die man nicht gedacht hätte, wenn man nicht daran gedacht hätte. Kosmische Strahlung ist ein Problem. Zumindest wenn man groß genug ist wie Google oder wenn man Dinge macht, die irreversibel sind. Hier ist ein Tweet von Philipp Walzorda, der auf eine Diskussion in der Google Group verweist. Eines der Certificate Transparency Logs von Google ist mittlerweile abgeschaltet, weil es sich nicht mehr verifizieren ließ. In dieser Überprüfung haben wir gesagt, man kann ja von draußen auf angucken, ob der Betreiber lügt und Dinge rückwirkend ändert und plötzlich stimmten die Hesche nicht mehr. Und dann haben sie halt versucht zu debaggen. Also da war kein böser Wille bei. Es ist irgendwie alles okay, aber stellte sich heraus, dass einer der Hesche während der Berechnung offensichtlich ein Bitflip erfahren hat. Dass ein Bit anders war und deswegen der Folgehäsch war, deswegen der Folgefolge und ab da war es dann darum geschehen. Das Lock haben sie dann abschalten müssen und das Problem lässt sich auch nicht so richtig gut verhindern. Es ist einer der wenigen Punkte, der in einem richtigen Blockchain-System tatsächlich völlig problemlos funktioniert. Also ich hatte wie gesagt viele Diskussionen mit Vertretern, die mir erzählen wollten, dass das alles ganz toll war. Noch nie hat jemand diesen Punkt gebracht. Da bin ich allein drauf, hätte ich aber nicht allein drauf kommen müssen. Ein Blockchain-System ist Kraft seiner Konstruktion tatsächlich immun gegen kosmische Strahlung. Kosmische Strahlungseffekte treten immer nur auf einzelnen Knoten einzeln zufällig auf und alle anderen Knoten würden diesen dann als Fehlverhalten interpretieren und einfach nicht mehr übernehmen. Das ist das einzige, was besser funktioniert als in einer normalen zentralisierten Datenbank. Wir müssen also, wenn wir das tatsächlich auf einem Server implementieren, irgendwie absichtlich oder explizite Gegenmaßnahmen ergreifen, zweimal haschen, also auf zwei verschiedene Prozessoren, in zwei verschiedenen Programmiersprachen oder so und dann hoffen, dass der Ramm dazwischen oder ja irgendwie so offenes Problem. Damit komme ich genau nach Plan, nach meinem Plan zumindest, zum Ende und nehme Fragen. Ich habe mitgekriegt, es gibt kein Saal-Mikrofon. Doch, es gibt ein Stand-Mikrofon. Naja, dann trinke ich erst mal was. Der Herr in Grau. Genau, die Frage geht jetzt in Richtung Proof of Work, Blockchains versus Proof of, was auch immer. Ich verweise dazu auf meinen Vortrag auf dem RC3. Proof of Space zum Beispiel hat irgendwie bisher nur dazu geführt, dass man den Stromverbrauch durch Siliziumverbrauch ersetzt. Es hat dann sehr schnell dazu geführt, dass Providers wie Hudson zum Beispiel explizit verbieten, diese Dinge einzusetzen, weil man mit Chia hieß es, glaube ich, irgendwie eine SSD in 500 durchgespielt kriegt und dann ersetzt man halt das Energieproblem oder augmentiert man das Energieproblem durch ein, wir müssen jetzt mehr Siliziumherstellenproblem, Elektroschrottproblem. Proof of Stake ist so eine Kategorie der Teufelscheiß auf den Größtenhaufen. Also konstruktionsbedingt ist es im Wesentlichen Proof of Authority. Das heißt, jemand sagt, Kraft meiner Wassersuppe, das wäre ein völlig akzeptables System, wenn es ernst gemeint wäre. Also, wenn Leute sich bewusst wären, dass sie in einem Proof of Authority System arbeiten, wo es ein Gremium gibt von fünf Leuten und vier davon müssen zustimmen und dann ist es okay. Das versucht man halt zu umgehen, den man sagt, naja, es ist ein Gremium von den Leuten, die ja meisten Geld haben und die kriegen dann eine Belohnung dafür, dass sie das Geld haben. Find ich unpraktisch und hat halt diese Dynamik, dass es mit der Zeit dazu führt, dass die Leute, die bereits was eingesetzt haben, halt noch mehr kriegen und die Sache mit der Verteilung relativ schnell ein Ende nimmt. Gut, das sieht jetzt, da ist noch ein Herr in Schwarz. Also die Frage war, der Unterschied zwischen der Hash-Chain und der Blockchain, so habe ich es gerade definiert, also dass es der konzeptionelle Unterschied ist, der der Konsensalgorithmus. Bei einer Hash-Chain ist es in der Regel nicht definiert. Es gibt viele verschiedene Hash-Chains, es erinnert sich auch wieder keiner dran. Eski war ein One-Time-Passwort-Verfahren, das auch wiederholte Hashes einsetzt. Ich muss aber irgendwie den letzten Hash finden. Also ich brauche eine vertrauenswürdige Autorität einer Zeitung, aus der ich den letzten Hash erneben kann, um von dort rückwärts zu rechnen. Und da hat halt irgendjemand die Anzeige geschaltet in den New York Times. Wir hoffen, dass es der richtige war. Während die Blockchain-Systeme, also zumindest das Bitcoin-Weibpippe, war ja dieser große Durchbruch für die bizantinische Fehler-Toleranz ein Algorithmus definieren. Man braucht einen Proof auf irgendwas und dann wird der Konsens dadurch gefunden, dass ich die längste Blockchain finde. Der Kerntrick meiner Blockchain ist, dass das Konsens ist, was den längsten hat, mit der Nebenbedingung, dass es irgendwie aufwendig sein muss, das Längste zu erzeugen. Und dann entstehen Effekte, dass Leute, es gibt einen selbst ersterkenen Effekt, dass die Leute nicht betrügen werden, weil wenn die anderen Knoten übernehmen ihren Betrug nicht, das heißt, der bleibt dann da so irgendwie als Stummelchen übrig und es routet quasi drum herum und woanders entsteht eine längste Blockchain. Dadurch funktioniert der Konsens Algorithmus, den ich mir komplett spare. Die Frage ist so richtig, ganz sparen kann ich mir nicht. Ja, es ist korrekt. Der Konsens ist, es wird alles eingetragen, was eingetragen ist. Und alles, was eingetragen ist, kann nicht mehr entfernt werden. Der Betreiber, das habe ich tatsächlich, das stimmt, das habe ich unterschlagen, der Betreiber könnte sich weigern, etwas einzutragen. Du weißt, das ist okay, da machen wir dann Markt draus. Muss jemand anders einen Stimelchen anbieten, der sich, naja, sie, genau, Bein, also die Frage ist, ich verlasse mich darauf, dass wir da reingucken. Ja, die Sicherheit besteht darin, dass das möglich ist und mit einem hohen Entdeckungsrisik verbunden ist, wenn man daran rumfummelt. Jetzt mal, wie gesagt, dadurch, dass es einfach im Internet Archive drinnen ist, ohne dass ich etwas anderes machen muss, habe ich halt schon mindestens eine weitere Partei. So, jetzt noch mal das Karasshörnchen. Entschuldigung noch mal, die Frage ist, nach dem Hash Algorithmus, ich habe SHA-3 definiert. Genau, und zwar, also die Frage ist, nach dem intern, nach dem Hash ist für die internen Not, tatsächlich habe ich dafür die Konvention aus, na, Moment, da habe ich dafür die Konvention aus RFC 9162 verwendet. Da steht drin, wie man Hash ist für Leaf-Not und für interne Not macht. So, zum Ende springen. Gut. Okay, done.