
ब्राउज़र-आधारित मर्कल ट्री डेमो — एक ट्री बनाएं, समावेशन प्रमाण उत्पन्न करें, रूट हैश को हैश द्वारा पुनर्गणना करें, और RFC 6962 द्वितीय-प्रीइमेज और CVE-2012-2459 हमलों को दोहराएं। वास्तविक SHA-256. कोई बैकएंड नहीं।
यह Merkle trees और Merkle inclusion proofs का एक इंटरैक्टिव डेमो है, जो ब्राउज़र के WebCrypto API के माध्यम से SHA-256 पर आधारित है। एक Merkle tree डेटा ब्लॉक्स के एक सेट को एक ही रूट हैश में हैश करता है जो एक साथ उन सभी के लिए प्रतिबद्ध होता है; एक inclusion proof सहोदर हैशों की वह छोटी सूची है जो किसी को भी एक ही लीफ से उस रूट को पुनः प्राप्त करने देती है। सुरक्षा मॉडल पूरी तरह से hash-based है: यह SHA-256 के collision और second-preimage resistance पर निर्भर करता है, जिसमें कोई कुंजी या हस्ताक्षर शामिल नहीं हैं। हैशिंग RFC 6962 domain separation का पालन करती है (leaf = SHA-256(0x00 ∥ data), node = SHA-256(0x01 ∥ left ∥ right)), और यही कारण है कि डेमो में second-preimage सुरक्षा वास्तविक है, केवल सजावटी नहीं। यह एक शिक्षण उपकरण है, उत्पादन लाइब्रेरी नहीं।
इस कैटलॉग में दो लैब Merkle trees को कवर करती हैं, और वे एक-दूसरे के स्थान पर प्रयोग करने योग्य नहीं हैं। यह लैब proof semantics के बारे में है: विश्वसनीय रूट कहाँ से आना चाहिए, हर चरण में कौन से सटीक बाइट्स हैश किए जाते हैं, RFC 9162 index-based verification, consistency proofs और वे इतिहास हमले जिन्हें वे पकड़ते हैं, पृष्ठ पर तोड़ी गई second-preimage और CVE-2012-2459 रचनाएँ, और Google के Argon लॉग के विरुद्ध सत्यापित एक pinned वास्तविक Certificate Transparency प्रविष्टि। crypto-lab-merkle-vault संरचना के बारे में है: parent-to-child connectors के साथ खींचा गया ट्री, एक ही proof को एक समय में एक स्तर चलाया जाता है जिसमें चल रहे हैश के ऊपर उठने के साथ संबंधित नोड्स प्रकाशित होते हैं, और शीर्ष पर पुनर्गणित और प्रतिबद्ध रूट्स को बाइट-दर-बाइट बराबर सिद्ध किया जाता है। Merkle tree क्या है और एक चढ़ाई कैसे काम करती है के लिए वहाँ से शुरू करें; एक proof आपको क्या मानने का अधिकार देता है और क्या नहीं के लिए यहाँ आएँ।
⌈log₂ n⌉ हैश है, इसलिए एक ही लेनदेन को लाखों के ब्लॉक में होने के रूप में दिखाया जा सकता है, बिना ब्लॉक भेजे।systemslibrarian.github.io/crypto-lab-merkle-proofs
लाइव ट्री बनाने के लिए डेटा ब्लॉक जोड़ें या हटाएँ, उसका inclusion proof जनरेट करने के लिए कोई भी leaf चुनें, फिर उसे सत्यापित करें — केवल leaf और उसके sibling hashes से root की पुनर्गणना करके। आप एक बार में एक hash को step through या animate कर सकते हैं (चलते हुए hash को ट्री पर ऊपर चढ़ते हुए देखें), किसी भी step पर “show bytes” का विस्तार करके सटीक SHA-256 preimage देख सकते हैं (leaves के लिए 0x00 ∥ data, nodes के लिए 0x01 ∥ L ∥ R), leaf के साथ छेड़छाड़ कर सकते हैं या किसी भी proof step में एक bit पलटकर सत्यापन को REJECTED में बदलते हुए देख सकते हैं, और एक slider को स्केल करके देख सकते हैं कि 2³⁰ leaves तक proofs लघुगणकीय (logarithmic) बने रहते हैं (साथ ही वास्तविक 256–4,096-leaf ट्री बनाएँ)। एक trust-model demo क्लासिक भ्रांति को सीधे प्रस्तुत करता है: एक prover जो leaf, proof, और root प्रदान करता है, एक triple बनाता है जो सत्यापित होता है — और कुछ भी सिद्ध नहीं करता। दो security demos आपको RFC 6962 domain separation को on/off टॉगल करने देते हैं ताकि second-preimage forgery पहले सफल हो फिर विफल हो, और CVE-2012-2459 root collision को पुनरुत्पादित करने के लिए Bitcoin के odd-node duplication की तुलना RFC 6962 promotion से कर सकें। Consistency (append-only) proofs को अपना अलग visualization मिलता है — नए ट्री के भीतर छायांकित पुराना ट्री, जिसमें proof के subtree roots चिह्नित होते हैं — साथ ही तीन history-tampering attacks (rewrite, delete, reorder) जिन्हें proof पकड़ लेता है। अंत में, पेज एक वास्तविक Certificate Transparency entry को सत्यापित करता है: Google के Argon2026h1 log (2.8 अरब प्रमाणपत्र) के index 1,234,567,890 पर एक pinned Let's Encrypt प्रमाणपत्र, जिसे RFC 9162 index-based verification का उपयोग करते हुए 32 hashes के साथ included सिद्ध किया गया है — वही code path जो बाकी lab में है। Learning objectives, predict-then-reveal prompts, self-check quizzes, glossary tooltips, एक recap table, और further reading सक्रिय अधिगम का समर्थन करते हैं; “Copy link to this tree” किसी भी tree state को slides या assignments के लिए deep-link करता है।
git clone https://github.com/systemslibrarian/crypto-lab-merkle-proofs
cd crypto-lab-merkle-proofs
npm install
npm run dev
कोई environment variable नहीं हैं। npm test के साथ test suite चलाएँ (RFC 6962 vectors, proof round-trips, tamper rejection, second-preimage attack/defense, consistency proofs, एक स्वतंत्र reference implementation के विरुद्ध fuzzing, और pinned real-world CT proof)।
npm run test:a11y browser gate (Playwright) चलाता है। e2e/claims.spec.ts वास्तविक पेज को चलाता है और पेज द्वारा प्रिंट किए गए हर verdict को फिर से निकालता है — INCLUDED केवल तब जब दिखाया गया पुनर्गणित root दिखाए गए trusted root के बराबर हो, ROOTS COLLIDE केवल तब जब प्रिंट किए गए दोनों roots बराबर हों, efficiency headline उसके अपने अंकगणित से — और हर tamper path (leaf, proof bit, log rewrite/delete/reorder, CT certificate bit-flip) पर चलकर यह सुनिश्चित करता है कि वह rejection तक पहुँचे, कारण बताए, और recover करे। e2e/a11y.spec.ts axe-core WCAG A/AA स्कैन है। दोनों हर Pages deploy से पहले CI में चलते हैं।
प्रशिक्षक गाइड के लिए TEACHING.md देखें: 50 मिनट का पाठ प्रवाह, चर्चा प्रश्न, वे भ्रांतियाँ जिन्हें तोड़ने के लिए प्रत्येक अनुभाग बनाया गया है, और होमवर्क विस्तार।
systemslibrarian.github.io/crypto-lab पर 170+ लाइव browser demos में से एक — Atbash (600 BCE) से लेकर NIST FIPS 203/204/205 (2024) तक।
"So whether you eat or drink or whatever you do, do it all for the glory of God." — 1 Corinthians 10:31