
Browserbasierte Merkle-Baum-Demo – einen Baum erstellen, Inklusionsbeweise generieren, den Root-Hash Hash für Hash neu berechnen und die Second-Preimage- und CVE-2012-2459-Angriffe aus RFC 6962 nachstellen. Echte SHA-256. Kein Backend.
Dies ist eine interaktive Demo von Merkle-Bäumen und Merkle-Inklusionsbeweisen, aufgebaut auf SHA-256 über die WebCrypto-API des Browsers. Ein Merkle-Baum hasht eine Menge von Datenblöcken zu einem einzigen Root-Hash, der sich auf alle auf einmal festlegt; ein Inklusionsbeweis ist die kurze Liste von Geschwister-Hashes, mit der jeder diesen Root aus einem einzelnen Blatt erneut herleiten kann. Das Sicherheitsmodell ist rein hash-basiert: Es beruht auf der Kollisions- und Second-Preimage-Resistenz von SHA-256, ohne Schlüssel oder Signaturen. Das Hashing folgt der Domänentrennung nach RFC 6962 (leaf = SHA-256(0x00 ∥ data), node = SHA-256(0x01 ∥ left ∥ right)), was die Second-Preimage-Verteidigung in der Demo echt statt dekorativ macht. Es ist ein Lehrwerkzeug, keine Produktionsbibliothek.
Zwei Labs in diesem Katalog behandeln Merkle-Bäume, und sie sind nicht austauschbar. Dieses hier dreht sich um Beweissemantik: woher der vertrauenswürdige Root kommen muss, die exakten Bytes, die bei jedem Schritt gehasht werden, RFC 9162 indexbasierte Verifikation, Konsistenzbeweise mit den Historienangriffen, die sie abfangen, die Second-Preimage- und CVE-2012-2459-Konstruktionen, die auf der Seite gebrochen werden, und ein festgeschriebener echter Certificate- Transparency-Eintrag, verifiziert gegen Googles Argon-Log. crypto-lab-merkle-vault dreht sich um die Struktur: der Baum, gezeichnet mit Eltern-Kind-Verbindungen, ein einzelner Beweis Ebene für Ebene durchlaufen, wobei die entsprechenden Knoten aufleuchten, während der laufende Hash aufsteigt, und die neu berechneten und festgeschriebenen Roots, die oben Byte für Byte als gleich bestätigt werden. Beginne dort für was ein Merkle-Baum ist und wie ein Aufstieg funktioniert; komm hierher für was ein Beweis dir zu glauben erlaubt und was nicht.
⌈log₂ n⌉ Hashes, sodass eine einzelne Transaktion als in einem Block aus Millionen enthalten gezeigt werden kann, ohne den Block zu senden.systemslibrarian.github.io/crypto-lab-merkle-proofs
Fügen Sie Datenblöcke hinzu oder entfernen Sie sie, um live einen Baum aufzubauen, wählen Sie ein beliebiges Blatt aus, um dessen Inklusionsnachweis zu erzeugen, und verifizieren Sie ihn dann — indem Sie die Wurzel nur aus dem Blatt und seinen Geschwister-Hashes neu berechnen. Sie können die Neuberechnung Schritt für Schritt durchgehen oder animieren, jeweils einen Hash nach dem anderen (und dabei zusehen, wie der laufende Hash den Baum hinaufsteigt), „Bytes anzeigen“ bei jedem Schritt aufklappen, um die exakte SHA-256-Vorabbildung zu sehen (0x00 ∥ data für Blätter, 0x01 ∥ L ∥ R für Knoten), das Blatt manipulieren oder ein Bit in einem beliebigen Nachweisschritt umdrehen und beobachten, wie die Verifikation auf ABGELEHNT umspringt, und einen Schieberegler verschieben, um zu sehen, dass Nachweise bis zu 2³⁰ Blättern logarithmisch bleiben (und echte Bäume mit 256–4.096 Blättern aufbauen). Eine Trust-Model-Demo führt das klassische Missverständnis direkt vor: Ein Beweiser, der Blatt, Nachweis und Wurzel liefert, erzeugt ein Tripel, das verifiziert — und nichts beweist. Zwei Sicherheitsdemos ermöglichen es Ihnen, die RFC-6962-Domänentrennung ein- und auszuschalten, damit die Second-Preimage-Fälschung erst gelingt und dann scheitert, und Bitcoins Duplizierung ungerader Knoten mit der RFC-6962-Promotion zu vergleichen, um die Wurzelkollision CVE-2012-2459 zu reproduzieren. Konsistenznachweise (Append-only) erhalten ihre eigene Visualisierung — der alte Baum schattiert innerhalb des neuen, mit den markierten Teilbaumwurzeln des Nachweises — plus drei Angriffe zur Manipulation der Historie (Umschreiben, Löschen, Neuordnen), die der Nachweis abfängt. Schließlich verifiziert die Seite einen echten Certificate-Transparency-Eintrag: ein gepinntes Let's-Encrypt-Zertifikat an Index 1.234.567.890 von Googles Argon2026h1-Log (2,8 Milliarden Zertifikate), nachgewiesen als enthalten mit 32 Hashes unter Verwendung der indexbasierten Verifikation nach RFC 9162 — derselbe Codepfad wie im übrigen Lab. Lernziele, Predict-then-Reveal-Aufgaben, Selbsttest-Quizze, Glossar-Tooltips, eine Zusammenfassungstabelle und weiterführende Literatur unterstützen aktives Lernen; „Link zu diesem Baum kopieren“ verlinkt jeden Baumzustand tief für Folien oder Aufgaben.
git clone https://github.com/systemslibrarian/crypto-lab-merkle-proofs
cd crypto-lab-merkle-proofs
npm install
npm run dev
Es gibt keine Umgebungsvariablen. Führen Sie die Testsuite (RFC 6962-Vektoren, Proof-Round-Trips, Manipulationsabweisung, den Second-Preimage-Angriff/-Verteidigung, Konsistenzbeweise, Fuzzing gegen eine unabhängige Referenzimplementierung und den festgeschriebenen realen CT-Proof) mit npm test aus.
npm run test:a11y führt das Browser-Gate (Playwright) aus. e2e/claims.spec.ts steuert die echte Seite an und leitet jedes Urteil aus dem ab, was die Seite ausgegeben hat — INCLUDED nur, wenn die neu berechnete angezeigte Wurzel gleich der angezeigten vertrauenswürdigen Wurzel ist, ROOTS COLLIDE nur, wenn die beiden angezeigten Wurzeln gleich sind, die Effizienz-Schlagzeile aus ihrer eigenen Arithmetik — und durchläuft jeden Manipulationspfad (Leaf, Proof-Bit, Log-Rewrite/Delete/Reorder, den CT-Zertifikat-Bit-Flip), um zu prüfen, dass er die Ablehnung erreicht, die Ursache benennt und sich erholt. e2e/a11y.spec.ts ist der axe-core-WCAG-A/AA-Scan. Beide laufen in CI vor jedem Pages-Deploy.
Siehe TEACHING.md für einen Dozentenleitfaden: einen 50-minütigen Unterrichtsablauf, Diskussionsfragen, die Missverständnisse, die jeder Abschnitt aufbrechen soll, und Hausaufgaben-Erweiterungen.
Eine von über 170 Live-Browser-Demos unter systemslibrarian.github.io/crypto-lab — von Atbash (600 v. Chr.) bis NIST FIPS 203/204/205 (2024).
„Ob ihr nun esst oder trinkt oder was ihr auch tut, das tut alles zu Gottes Ehre." — 1. Korinther 10,31