
कम-राउंड AES पर सिंगल-की रिकवरी हमलों के लिए पुनरुत्पादनीय क्रिप्टोविश्लेषण आर्टिफैक्ट्स, जिनमें ब्लैक-बॉक्स की रिकवरी, DDT-Gray सर्च, S-box कैशेस और Lean औपचारिक प्रमाण शामिल हैं।
पेपर में उद्धृत प्रत्येक प्रयोग का स्रोत कोड। कोई भी मापन आउटपुट या पूर्व-निर्मित तालिका बंडल नहीं की गई है: प्रत्येक प्रोग्राम अपने परिणाम स्वयं प्रिंट या लिखता है, इसलिए प्रत्येक संख्या को शून्य से पुनः उत्पन्न किया जा सकता है।
| निर्देशिका | यह क्या है |
|---|---|
experiments/ | Measured costs परिशिष्ट के पीछे के दो प्रयोग: SR(7,2,2,6) पर पूर्ण ब्लैक-बॉक्स कुंजी पुनर्प्राप्ति, और वास्तविक 7-राउंड AES-128 आक्रमण के प्रति-प्रविष्टि / प्रति-उम्मीदवार मापन |
c/ | स्टैंडअलोन C प्रोग्राम, प्रति घटक दावा एक (bridge, fingerprints, DDT-Gray walk, S-box caches, wrong-key randomisation, lookup floor) |
python/ | Python एकल-दावा जाँच और आक्रमण परतों का शैक्षणिक संदर्भ कार्यान्वयन (python/a1/) |
rust/ | घटक प्रयोगों का दूसरा, स्वतंत्र कार्यान्वयन (e1–e13) |
figures/ | प्लॉटिंग स्क्रिप्ट जो C प्रोग्रामों द्वारा लिखी गई TSV फ़ाइलों को उपभोग करती हैं |
lean/ | χ★ गलत-सकारात्मक गणना बाउंड का Lean 4 + Mathlib औपचारिकीकरण (lean/chi-fp/, पेपर §5.5) |
पेपर के कुंजी-पुनर्प्राप्ति दावे experiments/ पर आधारित हैं; c/, python/ और rust/ व्यक्तिगत घटकों (सर्वसमिकाएँ, अपरिवर्तनीयताएँ, DDT तथ्य, कैश सत्यता, रैंडमाइज़ेशन सांख्यिकी) की जाँच करते हैं और आक्रमण नहीं हैं।
experiments/देखें experiments/README.md।
sr7226-e2e/ — AES SR(7,2,2,6) (2x2 स्टेट, 6-बिट शब्द, 24-बिट कुंजी) पर पूर्ण, ब्लैक-बॉक्स कुंजी पुनर्प्राप्ति, पूर्ण ऑफ़लाइन तालिका के साथ, एक ही कोड बेस पर तीन प्रकारों के लिए: हमारा, हमारे तालिका-गणना अनुकूलनों के साथ Derbez–Fouque–Jean, और प्रकाशित रूप में Derbez–Fouque–Jean।aes128-measured/ — वास्तविक 7-राउंड AES-128 आक्रमण एक बार में एक इकाई: वास्तविक ऑफ़लाइन तालिका प्रविष्टियाँ (आंशिक तालिका), तीन प्रकारों के लिए प्रति ऑनलाइन उम्मीदवार चक्र, AES हर, क्रमबद्ध फ़िंगरप्रिंट की गलत-सकारात्मक और कवरेज दरें, और पूर्ण गणना तक प्रक्षेपण।c/प्रति निर्देशिका एकल-फ़ाइल या स्व-निहित; gcc -O3 -march=native -fopenmp -o <bin> <file.c> -lm से बिल्ड करें (जहाँ स्थानीय हेडर उपयोग होता है वहाँ निर्देशिका को -I के रूप में जोड़ें)। उपयोग प्रत्येक फ़ाइल की हेडर टिप्पणी में प्रलेखित है।
| पथ | क्या जाँचता है | पेपर स्थान |
|---|---|---|
clump.c, chi_clump.c | I_{m,n} और χ★ फ़िंगरप्रिंटों की टकराव एन्ट्रॉपी | फ़िंगरप्रिंट गुण; परिशिष्ट टकराव एन्ट्रॉपी |
wrongkey.c | गलत-कुंजी रैंडमाइज़ेशन, k_6 का संपूर्ण 2^32 स्वीप | परिशिष्ट गलत-कुंजी रैंडमाइज़ेशन |
fp_solve.c | तालिका निर्माण में प्रयुक्त DDT हल और शाखा-बिट गणना | §DDT-Gray |
bridge-consistency/bc_impl_{a,b}.c, bc_truehit.c | bridge-consistency गलत-स्वीकृति सांख्यिकी के दो स्वतंत्र कार्यान्वयन | Alg. BridgeConsistency |
ddt-gray/ddt_gray_*.c | DDT-जागरूक Gray walk: वृद्धिशील बराबर शीत पुनर्गणना, परिशोधित S-box लागत, समय-मापन | §DDT-Gray, परिशिष्ट DDT-Gray |
sb-cache/sbc_repro.c | W / UU S-box कैशों के पीछे XOR-वियोज्यता; c_iSB बंद रूप | §S-box caches |
mobius-honest/honest_online.c | |K_on| = 8 के साथ ऑनलाइन पक्ष: केवल k_{-1} से पुनर्निर्मित δ-सेट, और गलत-कुंजी उत्तरजीवी दर | §component lemmas |
mobius-honest/honest_rebound.c, degen_analysis.c, saes_imn.c | छोटे पैमाने के AES पर ऑफ़लाइन rebound और I_{m,n} मिलान की पाइपलाइन जाँच; ज्ञात-कुंजी शॉर्टकट प्रत्येक हेडर में प्रलेखित हैं — ये पाइपलाइन जाँच हैं, कुंजी पुनर्प्राप्ति नहीं | §component lemmas, परिशिष्ट अपक्षयी स्थितियाँ |
floor/verify_ls_fp.c, floor/verify_incompat.c, floor/a1_floor.py | |K_on| = 8 के लिए lookup floor: dim LS(fp) ∈ {0,8} और T ≥ 2^88.67 | परिशिष्ट निचली सीमा |
python/Python 3. python/a1/ केवल मानक लाइब्रेरी है; शीर्ष-स्तरीय परीक्षण
स्क्रिप्ट्स, figures/, और experiments/aes128-measured/phi/ को
numpy, scipy, और matplotlib की आवश्यकता है (pip install -r requirements.txt,
सटीक संस्करण सत्यापित)। python/a1/README.md परतदार संदर्भ कार्यान्वयन
(gf256.py, aes7r.py, chi_canon.py,
prop2.py, test_vectors.py में गोल्डन वेक्टर) का वर्णन करता है। शीर्ष-स्तरीय स्क्रिप्ट्स
एकल-दावा जाँच हैं: ब्रिज इनवेरिएंट्स (test_invariants.py,
verify_Imn.py), वास्तविक AES ट्रेस पर ब्रिज (test_bridge_aes.py),
0^{-1} किनारा व्यवहार (test_zeroinv.py), गलत-कुंजी यादृच्छिकरण
(test_wrongkey.py), क्लंपिंग / टकराव एन्ट्रॉपी (test_clumping*.py),
CompleteKey के पीछे की कुंजी-अनुसूची व्युत्क्रमण (keysched_solve.py), और
फिंगरप्रिंट-प्रीफ़िक्स गलत-सकारात्मक डेमो (fp_concat_demo.py)।
rust/cargo build --release, फिर ./target/release/repro <exp> [args]; प्रत्येक
रन rust/results/ के अंतर्गत टाइमस्टैम्प वाला ब्लॉक जोड़ता है। प्रयोग
सूची और प्रत्येक क्या जाँचता है, यह rust/src/main.rs में है: e1–e13 ब्रिज
पहचान, समूह और कोसेट तथ्य, वास्तविक AES-128 ट्रेस पर ईमानदार ब्रिज,
गलत-कुंजी यादृच्छिकरण, टकराव एन्ट्रॉपी, χ★ इनवेरिएंस, DDT
स्पेक्ट्रम, AES सैनिटी, प्रति-प्रविष्टि टाइमिंग, और SR(7,4,4,4) पाइपलाइन को कवर करते हैं।