Ralph C. Merkle ist ein Kryptograf, dessen Arbeiten zu den Grundlagen der modernen Kryptografie gehören. Merkle-Puzzles ermöglichen eine gemeinsame geheime Information über eine abgehörte Verbindung; ein Merkle Tree weist nach, dass ein Eintrag zu einer bestimmten Liste gehört, ohne die ganze Liste herunterzuladen. Das sind verschiedene Aufgaben. Keine entscheidet allein über die Gültigkeit von Bitcoin-Transaktionen.
Sie möchten eine verschlüsselte Nachricht senden. Zum Lesen braucht der Empfänger einen geheimen Schlüssel. Wie kommt dieser zu ihm, wenn jemand den gesamten Austausch verfolgt? In seinem Aufsatz von 1978 beschrieb Ralph Merkle einen überraschenden Weg: Der Absender erstellt viele verschlüsselte Rätsel. Der Empfänger wählt zufällig eines aus, löst es und schickt dessen innen verborgene Kennung öffentlich zurück. Beide kennen nun einen gemeinsamen Schlüssel. Der Mithörer sieht die Kennung ebenfalls, weiß aber nicht, in welchem Rätsel sie steckte. Im beschriebenen Modell wächst sein Aufwand quadratisch mit der Aufgabengröße, der Aufwand der Teilnehmer dagegen linear. Der Unterschied ist quadratisch, nicht exponentiell. Dieser historische Durchbruch ist keine heutige Empfehlung zur Nachrichtenverschlüsselung. [1]
Entscheidend ist, was der Angreifer im Aufsatz von 1978 darf. Er darf mithören; Änderungen und Fälschungen müssen jedoch weiterhin erkennbar sein. Denken Sie an jemanden, der Briefe liest, und an jemanden, der sie zusätzlich umschreibt und mit Ihrem Namen unterschreibt. Im zweiten Fall braucht es einen weiteren Schutz: die Gewissheit, mit wem Sie tatsächlich sprechen. Unterschiedlicher Rechenaufwand beantwortet diese Frage nicht. Die Rätsel machen beliebige Kommunikation über einen aktiv eingreifenden Vermittler daher nicht automatisch sicher. Sie zeigen, dass unter den genannten Voraussetzungen eine Einigung ohne vorher gemeinsam vereinbarten geheimen Schlüssel möglich ist. [1]
Der Merkle Tree behandelt ein anderes Problem. Dieser Authentifizierungsbaum wird in Merkles Dissertation von 1979 beschrieben. Stellen Sie sich ein Vertragsarchiv vor: Sie möchten einen Vertrag prüfen, ohne das ganze Archiv herunterzuladen. Für jeden Eintrag wird ein Hash berechnet, ein kurzer digitaler Fingerabdruck. Jeweils zwei Fingerabdrücke werden zusammengefügt und erneut gehasht, bis eine gemeinsame Wurzel übrig bleibt. Hashing verschlüsselt die Inhalte nicht, sondern ermöglicht einen Abgleich. Dazu brauchen Sie eine zuvor authentifizierte Wurzel, also einen als richtig bestätigten Fingerabdruck des Archivs. Liefert ein Betrüger sowohl ein Dokument als auch eine beliebige eigene Wurzel, beweist deren Übereinstimmung nichts über das ursprüngliche Archiv. [2]
Nehmen wir einen ausgeglichenen binären Baum mit 8 Einträgen. Zur Prüfung eines ausgewählten Blatts brauchen Sie 3 benachbarte Hashes: auf jeder Ebene einen Fingerabdruck des benachbarten Zweigs. Aus Ihrem Blatt und diesen Fingerabdrücken berechnen Sie schrittweise die Wurzel und vergleichen sie mit der authentifizierten Wurzel. Das Blatt selbst und die Wurzel zählen nicht zu diesen Hilfshashes. Außerdem müssen die Baumstruktur und die Reihenfolge bekannt sein: Gehört der Nachbar jeweils nach links oder rechts? Die Einsparung beruht nicht auf einem Trick mit versteckten Daten. Weiter entfernte Teile des Archivs werden durch ihre Fingerabdrücke vertreten. Ihre vollständigen Dokumente sind für diese Prüfung nicht nötig. [2]
Ein Merkle Tree belegt die Beziehung eines Eintrags zu einem bestimmten Datenbestand. Eine falsche Angabe wird dadurch nicht wahr. Unser Archiv könnte einen Vertrag mit einem falschen Namen enthalten. Ein Nachweis kann seine Aufnahme korrekt bestätigen, ohne den Namensfehler aufzudecken. Ebenso bestätigt ein Fingerabdruck nicht die Befugnis des Verfassers. Trennen Sie deshalb die Fragen: Passt der Eintrag zu dieser Wurzel? Woher kenne ich die Wurzel? Nach welchen Regeln akzeptiere ich den Inhalt? Diese Unterscheidung erklärt, was dieselbe Technik in Bitcoin leisten kann und welche Aufgaben andere Teile des Systems übernehmen müssen. [2]
Bitcoin verbindet mit einem Merkle Tree die Transaktionen mit dem Block-Header, dem kompakten Datensatz eines Blocks. Die Wurzel steht im Header; Änderungen an enthaltenen Transaktionen verändern ihren gemeinsamen Fingerabdruck. Satoshi Nakamoto beschreibt die Konstruktion in Abschnitt 7 des Whitepapers und nennt Merkles Arbeit als Quelle. Das belegt technischen Einfluss, nicht die Urheberschaft von Bitcoin. Der Baum wählt keine gültige Historie aus und prüft keine Transaktionssignaturen anstelle der Knoten. Bitcoin kombiniert ihn mit weiteren Regeln, darunter Transaktionsprüfung und Proof of Work, dem Nachweis von Rechenarbeit. Ein einzelner Baustein lässt sich besser verstehen, wenn man ihm nicht die Fähigkeiten des ganzen Systems zuschreibt. [3]
Abschnitt 8 des Whitepapers beschreibt SPV, die vereinfachte Zahlungsprüfung. Ein leichter Client nutzt Block-Header und einen Baumzweig, der eine Transaktion mit einem bestimmten Block verbindet. Das spart Daten, setzt aber Annahmen über die Kette mit der größten kumulierten Arbeit und das Verhalten der Miner voraus. Der Aufnahmenachweis allein prüft nicht sämtliche Transaktionsregeln wie ein Full Node, ein vollständig prüfender Knoten. Er zeigt auch nicht, ob ein Ausgang später ausgegeben wurde; dafür muss man die nachfolgenden Vorgänge kennen. Für Einsteiger ist wichtig: „Diese Zahlung steht in diesem Block“ ist keine vollständige Prüfung des jetzt verfügbaren Geldes. [3]
Die Dissertation von 1979 verwendet einen Authentifizierungsbaum außerdem für eine begrenzte Menge einmaliger digitaler Signaturen. Eine digitale Signatur lässt überprüfen, ob der Inhaber eines bestimmten geheimen Schlüssels eine Nachricht freigegeben hat. Sie ist kein Bild einer handschriftlichen Unterschrift. Der Baum kann viele Prüfwerte mit einer bekannten Wurzel verbinden. In dieser Konstruktion ist der Vorrat an Signaturen jedoch endlich; die Wurzel muss irgendwann erneuert werden. Derselbe Einmalschlüssel darf deshalb nicht unbegrenzt wiederverwendet werden. Dieser anspruchsvollere Teil von Merkles Arbeit folgt demselben Gedanken: das benötigte Stück mit einem kleinen Nachweis prüfen und dabei die Voraussetzungen genau kennen. [2]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit David Chaum, Timothy May, Merkle Tree, Block Header. Auf diesen Eintrag verweisen außerdem David Chaum, Timothy May.