Ein Leak von Emails zwischen IOTA-Entwicklern und der Digital Currency Initiative (DCI) des MIT zeigt, wie eine sachliche Diskussion über mögliche Fehler in einem Krypto-Algorithmus eskalieren kann – und ist eine spannende Lektüre für alle, die Kryptographie und Kryptowährungen interessant finden.
Anfang September hat die Digital Currency Initiative (DCI) des MIT einen Bericht über Bugs in der Kryptowährung IOTA veröffentlicht. Die IOTA-Community reagierte mit extremer Schärfe, warf den Forschern Interessenskonflikte vor und beschuldigte auch Journalisten, die diese Meldung übernahmen, der Inkompetenz, da diese dem MIT unkritisch vertraut hatten. Der Streit zwischen der DCI und IOTA währt bis heute an.
Einen Hintergrund, warum diese Auseinandersetzung so eskaliert ist, liefert der Leak eines Mailwechsels zwischen der DCI und den IOTA-Entwicklern, der der Veröffentlichung des Berichts vorhergegangen war. Die 124 Seiten beschreiben, wie eine zunächst höfliche Diskussion eines kryptographischen Algorithmus immer schärfer wird und schließlich in offenem Streit endet: Der Forscher Ethan Heilmann bricht die Kommunikation ab, nachdem er Sergej Ivancheglo vorgeworfen hat, grundsätzliche kryptographische Begriffe nicht ausreichend zu verstehen; der IOTA-Entwickler David Sonstobo beschuldigt Neha Narual von der DCI, das unprofessionellste Verhalten an den Tag zu legen, das er jemals von Wissenschaftlern erlebt hat. Es endet mit dem Abbruch der Kommunikation – und all das noch bevor die DCI ihren Bericht veröffentlicht, der den Streit erst an die Öffentlichkeit bringt.
Unmittelbar nachdem am Sonntag die Leaks veröffentlicht wurden, hat die Iota-Community im Netz ihre Version der Wahrheit verbreitet: Die IOTA-Entwickler seien höfllich und geduldig gewesen, die DCI-Forscher dagegen unfähig, IOTA zu verstehen und zugleich unhöflich, unprofesionell und feindselig. Die einzige Deutung dieser Dokumente sei, dass die DCI ganz bewusst versuche, IOTA zu schaden, vermutlich, weil die beteiligten Forscher einen Interessenskonflikt hätten (etwa durch die Beteiligung an Zcash oder Paragon).
Ich habe den gesamten Briefwechsel gelesen und finde den Fall weit weniger eindeutig. Die Korrespondenz ist extrem spannend, sie könnte eine großartige historische Quelle zur Geschichte von Kryptographie und Kryptowährungen abgeben. Sie zeigt, wie schwierig es selbst für Experten ist, eine gemeinsame Sprache zu finden, um über die Details von Kryptographie zu sprechen, und sie demonstriert, wie ein höflicher, sachorientierter Austausch von Argumenten nach und nach in einen Streit abgleitet.
Vor allem aber ist sie ein hervorragendes Beispiel dafür, wie schwierig es für Nicht-Eingeweihte ist, zu verstehen, worum es geht. Auf dieser Grundlage ein schnelles, emotionales Urteil zu bilden, wie es die IOTA-Community zu machen scheint, kommt mir wie ein zielsicherer Weg in ein Desaster vor.
Worum es bei der Korrespondenz ging: Eine Schwäche in der Hashfunktion
Es begann damit, dass Ethan Heilman, ein Kryptograph der DCI, die IOTA-Entwickler anschrieb, um sie über eine Schwäche von IOTAs Hashing-Algorithmus Curl-P zu informieren. Und zwar gebe es Kollision-Angriffe sowie „second-preimage security“ Verwundbarkeiten. Er hängt ein Dokument an, das Kollissionen demonstriert, und empfiehlt den Entwicklern, den selbstentwickelten Hash-Algorithmus Curl-P fallen zu lassen und stattdessen bekannte und etablierte Hash-Funktion wie MD6 zu verwenden.
Bleiben wir kurz hier stehen und versuchen, die vielen seltsamen Wörter zu erklären. Eine Hashfunktion ist eine mathematische Operation, die eine beliebige Abfolge von Zeichen (ein Wort, ein Satz, ein zufälliger Buchstabensalat) in eine andere Zeichenkette einer spezifischen Länge verwandelt. Die wichtigste Merkmale einer Hashfunktion sind, dass sie erstens deterministisch ist, was bedeutet, dass ein bestimmter Input immer zum selben Ergebnis (dem Hash) führt, unabhängig davon, wie lang er ist, und dass es zweitens nicht möglich ist, vom Ergebnis auf den Input zu kommen (weshalb Hashfunktionen auch als Einwegfunktionen bezeichnet werden). Sie können es auf der Webseite Hashgenerator.de anschaulich selbst ausprobieren.
Bei Kryptowährungen werden Hash-Funktionen in der Regel für zwei Dinge eingesetzt: Zum einen wird nicht die Transaktion selbst, sondern ihr Hash signiert, und zum anderen wird die Hash benutzt, um die Aufgaben des Minings bzw. des Proof of Works zu bilden, das etwa bei IOTA notwendig ist, um überhaupt erst eine Transaktion zu versenden.
Bei jeder Hashfunktion sind sogenannte Kollisionen möglich – dass zwei verschiedene Inputs zum selben Hash führen. Dies ist unvermeidbar, da es eine unendliche Anzahl möglicher Zeichenketten gibt, aber aufgrund ihrer begrenzten Länge nur eine endliche Länge der Hashes. Streng genommen gibt es unendlich viele mögliche Kollisionen. Aber die Wahrscheinlichkeit, auf eine zu stoßen, ist so gering, dass man diese Gefahr vernachlässigen kann.
Wenn es jedoch möglich ist, eine Kollision absichtlich herbeizuführen, sind die Folgen offensichtlich verheerend: Man kann den Inhalt einer Transaktion manipulieren, ohne dass die Signatur verändert werden muss, und man kann potentiell auch Arbeitsbeweise fälschen bzw. verkürzen. Dies ist, laut den DCI-Forschern, bei IOTAs Hash-Funktion möglich.
Ist die Schwäche für IOTA überhaupt relevant?
Sergej Ivancheglo, der Kopf von IOTA, antwortet zunächst ausgesprochen höflich. Er erklärt, dass eine der Schwächen absichtlich eingefügt wurde, um Kopien von IOTA zu verhindern, und weist darauf hin, dass Curl-P auf der gut bekannten und getesteten Sponge Funktion beruht und alle Standard Tests bestanden hat. Er vermutet, dass die von den Forschern gefundene Kollision nicht für die Weise relevant ist, wie IOTA Signaturen behandelt, nämlich als OWF (One Way Function) und nicht als PRF (Pseudo Random Family).
Anschließend beginnt ein etwa 50-seitiger Austausch zwischen Sergeij und Ethan über diese Frage. Ethan verlangt eine Dokumentation, die Sergeijs Behauptung bestätigt, was er bezweifelt, dass die von IOTA verwendete Winternitz-Signatur seines Wissens nach PRF und nicht OWF verwendet. Er weist auch darauf hin, dass man in der Kryptographie niemals seinen eigenen Algorithmus verwenden sollte, und wenn es denn unbedingt sein muss, dann nur, nachdem man ihn ausführlich durch andere Kryptographen testen hat lassen. Was bei IOTA nicht der Fall sei.
Sergej erklärt, dass IOTA Signaturen anders verwendet als andere Programme, und es tatsächlich „One Wayness“ sei anstatt PRF, aber dies schwer zu erklären sei. Sergeij fordert Ethan auf, einen Beweis für einen praktisch durchführbaren Angriff zu bringen. Ethan betont noch einmal, dass Curl-P als Hash-Funktion gebrochen sei, es an Dokumentationen fehle und er dringend dazu rate, eine andere, besser getestete Funktion zu verwenden.
IOTA hat in der Folge tatsächlich die Hash-Funktion gewechselt. Man könnte nun meinen, die Diskussion sei damit beendet, und jeder geht in Frieden seiner Wege. Tatsächlich aber eskaliert der Austausch irgendwann über der Frage, ob Curl, der selbstgeschriebene Algorithmus von IOTA, nun gebrochen ist oder nicht. Es hat zwar keine praktische Bedeutung mehr, geht aber um die Frage, wer recht hat, und wie kompetent die IOTA-Entwickler sind.
Im Endeffekt kann man sehr viele Seiten der E-Mails damit zusammenfassen, dass Ethan auf akademische Anforderungen für kryptographische Algorithmen hinweist – die IOTAs Hash-Funktion wohl tatsächlich nicht erfüllt hat – während Sergeij immer wieder versucht, zu erklären, dass der Algorithmus für die Weise, wie IOTA ihn verwendet, ausreichend sicher ist. Dabei scheint Ethan auch in der Lage zu sein, zu beweisen, dass der Algorithmus unter speziellen Umständen ausgenutzt werden kann, um Iota-Token zu stehlen, während aber auch Sergeij gute Argumente dafür zu haben scheint, dass diese Umstände in der Wirklichkeit der IOTA-Wallets eher ausgeschlossen sind.
Wer hier recht hat, ob Ethan, Sergeij oder beide, ist ausgesprochen schwer zu beurteilen. Ich zumindest kann es nicht.
Wie die Diskussion eskaliert
Ab einem gewissen Moment eskaliert die Diskussion. Es beginnt damit, dass Sergej Ethan bittet, die Funktion nicht „curl“, sondern „curl-P“ nennt. Das „P“ stehe für „Prototyp“. Ethan antwortet: „Ich bin schockiert, dass du eine Hash-Funktion, die bereits eingesetzt wird, mit einem ‚800 Millionen Dollar Bug Bounty‘, einen Prototyp nennst.“ Dies sind die ersten offen unhöflichen Worte nach gut 50 Seiten Korrespondenz.
Allgemein erwecken die Mails von Ethan ab hier den Eindruck, als sei er zunehmend schockiert, wie wenig die IOTA-Entwickler seine Ansprüche an Professionalität erfüllen. So erwähnt er immer wieder die Anforderung, ein Krypto-Algorithmus müsse „EU-CMA-sicher“ sein, ein Begriff, mit dem Sergej nicht so viel anfangen kann, und den er zu Ethans Entsetzen schließlich auf Wikipedia und stackexchange nachschlägt.
Sergej bleibt hingegen stets höflich und sachlich, beharrt aber auch etwas sturrköpfig darauf, dass es keinen Fehler gibt. Ethan dagegen verliert mehr und mehr die Geduld, weil es für ihn so offensichtlich ist, dass Curl-P in mehrerer Hinsicht gebrochen ist. „Das soll jetzt kein Angriff sein, aber die Liste an Fragen, die du stellst, zeigen, dass du die grundsätzlichen kryptographischen Elemente und Mechanismen, über die wir sprechen, nicht ganz verstehst.“
Währenddessen gibt es noch parallel E-Mails zwischen Neha Narula vom DCI und Dominik Schiener und David Sonstobo, bei denen es vor allem darum geht, die Dokumentation des neuen Algorithmus auszutauschen und sich auf einen Termin zu einigen, ab dem die DCI-Forscher ihre Ergebnisse auf verantwortungsvolle Weise veröffentlichen. Auch diese Mails beginnen sehr höflich und konstruktiv, gleiten aber im Lauf der Zeit in einen Konflikt ab.
Neha schreibt den IOTA-Entwicklern schließlich Anfang September, dass sie einen Bericht über den Fehler schreiben werden. Sie gibt den Entwicklern den gesamten Bericht zur Einsicht. In diesem bleibt sie vollständig bei der Version von Ethan und ignoriert Sergeijs Einwände: „Wir haben praktische Angriffe auf die von IOTA verwendete kryptographische Funktoin Curl entwickelt, welche es uns erlauben, kurze kollidierende Nachrichten zu bilden.“ Es sei möglich, mit diesen Nachrichten gültige Zahlungen für IOTA zu bilden.
Sergeij lässt dies natürlich nicht so stehen. Er sendet Neha eine umfangreiche Korrektur, die fast jeden einzelnen Satz ändert und am Ende nur stehen lässt, dass die DCI einen von IOTA implementierten Kopierschutz gefunden habe, der für IOTA selbst aber keinerlei Gefahr berge.
Eine Mail von David markiert schließlich die endgültige Eskalation. Nachdem er, noch bevor der Bericht veröffentlicht wurde, von einem Coindesk-Journalisten angeschrieben wurde, der wohl irgendwie Wind von der Schwäche bekommen hat, wirft er Ethan vor, einen Interessenkonflikt zu haben. „Dies ist vielleicht der größte Skandal, den ich jemals über etwas gehört habe, das als professionelle, verantwortungsvolle Enthüllung dargestellt wird.“ Neha erklärt, dass der Bug gefixt und die Frist für die Veröffentlichung längst abgelaufen sei, weshalb es nicht verwerflich sei, damit an die Presse zu gehen. David fragt sie, ob sie nüchtern sei und wirft ihr erneut extreme Unprofessionalität vor. Neha schreibt, dass sie nach diesen persönlichen Angriffen nicht mehr antworte.
Die letzte Mail der Leaks ist von Sergej an Ethan. Sergej beklagt, dass ihn Ethan ignoriert und kündigt an, sich bei der Hochschule zu beschweren. Allerdings nicht persönlich, sondern durch einen Anwalt.

