
RISC-V ISA विस्तार हार्डवेयर-प्रवर्तित गुप्त गणना के लिए ML-KEM-512 कुंजी एनकैप्सुलेशन और SIMON-128 एन्क्रिप्शन का उपयोग करते हुए, डेटा-अज्ञेय निष्पादन को लगभग-मूल प्रदर्शन के साथ सक्षम करता है।
Mojo-V (उच्चारण “mojo-five”) RISC-V के लिए एक नया RISC-V एक्सटेंशन है जो RISC-V में गोपनीयता-उन्मुख प्रोग्रामिंग क्षमताएँ प्रस्तुत करता है। Mojo-V गुप्त संगणना (secret computation) को लागू करता है, जो नाजुक सॉफ़्टवेयर और प्रोग्रामर के भरोसे पर निर्भर हुए बिना सुरक्षित, कुशल और डेटा-अज्ञेय (data-oblivious) निष्पादन सक्षम बनाता है। संवेदनशील डेटा को समर्पित गुप्त रजिस्टरों में सीमित रखकर और तीसरे पक्ष की कुंजी के अंतर्गत मेमोरी को एन्क्रिप्ट करके, Mojo-V डिस्क्लोज़र को रोकता है और ऐसी गणना लागू करता है जो दोनों रूपों में अंधी (blind) है (कोई प्रत्यक्ष डिस्क्लोज़र नहीं) और मूक (silent) है (कोई साइड-चैनल लीकेज नहीं)। यह डिज़ाइन केवल एक मोड बिट और चार नए निर्देशों के साथ मौजूदा RISC-V ISA में सहज रूप से एकीकृत होता है, जो पूरी तरह से डिकोड पर लागू होता है। प्रारंभिक परिणाम लगभग-नेटिव निष्पादन गति दिखाते हैं, साथ ही पूर्ण होमोमोर्फिक एन्क्रिप्शन (FHE) की तुलना में 5-7 ऑर्डर ऑफ़ मैग्नीट्यूड से अधिक प्रदर्शन सुधार प्रदान करते हैं, और CPUs, GPUs और विशेष एक्सेलेरेटर में एकीकरण के लिए एक स्पष्ट रोडमैप प्रस्तुत करते हैं।
और जानने के लिए...
वर्तमान Mojo-V ISA एक्सटेंशन विशिष्टता (रिलीज़ 1.02):
Mojo-V के डेवलपर्स से संपर्क करने के लिए:
Mojo-V संदर्भ प्लेटफ़ॉर्म रिलीज़ 1.03, RISC-V RV64GC के लिए एक संदर्भ Spike सिम्युलेटर प्लेटफ़ॉर्म और Mojo-V ISA विशिष्टता v1.02 के लिए EXO कंपाइलर लागू करता है। वर्तमान कार्यान्वयन तेज़, मजबूत और प्रमाण-वाहक (proof-carrying) एन्क्रिप्शन मोड के साथ-साथ एन्क्रिप्टेड गणना परिणामों के सुरक्षित प्रकटीकरण और प्रमाणित यादृच्छिक संख्या निर्माण का समर्थन करता है। रिलीज़ में मोजो-वी परीक्षणों की एक विस्तृत श्रृंखला, गोपनीयता-उन्मुख बेंचमार्क और सुरक्षित प्रकटीकरण के लिए प्रदर्शक अनुप्रयोग शामिल हैं। इसमें संपूर्ण Mojo-V ISA विशिष्टता और डेवलपर दस्तावेज़ भी शामिल हैं।
यह रिलीज़ निम्न रूप में उपयोग के लिए उपयुक्त है: i) Mojo-V अनुप्रयोग विकास प्लेटफ़ॉर्म, ii) Mojo-V हार्डवेयर कार्यान्वयन को मान्य करने के लिए एक गोल्डन मॉडल, और iii) सुरक्षा विश्लेषण के लिए एक संदर्भ कार्यान्वयन। वर्तमान कार्य निम्न के विकास पर केंद्रित है: i) LLVM-आधारित Mojo-V कंपाइलर, ii) आर्किटेक्चरल अन्वेषण और विश्लेषण के लिए gem5-आधारित Mojo-V मॉडल, और iii) Mojo-V एक्सटेंशन के साथ RISC-V RV64GC का एक संदर्भ CVA6 SystemVerilog RTL कार्यान्वयन।
विशिष्टता संस्करण: 1.02 (अगस्त 2026)
संपर्क: [email protected]
Mojo-V ISA Spec v1.02
doc/ में जारीSpike (इंस्ट्रक्शन सेट सिम्युलेटर) Mojo-V एक्सटेंशन के साथ
riscv-isa-sim में एकीकृत किया गया है, और डेटा कॉन्ट्रैक्ट लोडिंग के लिए ML-KEM-512 कुंजी एनकैप्सुलेशन तथा गुप्त संगणना सुरक्षा के लिए SIMON-128 सममित कुंजी एन्क्रिप्शन के साथ RV64GC CPU के लिए फीचर-पूर्ण है।spike चलाते समय --isa=rv64gc_zicond_zkmojov_zicntr फ़्लैग जोड़ें।डेटा कॉन्ट्रैक्ट मल्टी-टूल
डेटा कॉन्ट्रैक्ट एन्क्रिप्टेड पैकेट होते हैं जो Mojo-V CPU के हार्डवेयर को Mojo-V एन्क्रिप्टेड डेटा सेट के लिए डेटा एक्सेस कुंजी और कॉन्फ़िगरेशन जानकारी (जैसे, मेमोरी एन्क्रिप्शन मोड) तक पहुँचने की अनुमति देते हैं। DC मल्टी-टूल निम्नलिखित क्षमताएँ सक्षम करता है:
Mojo-V Bringup-Bench बेंचमार्क
ध्यान दें, Bringup-bench बेंचमार्क के शेष भाग को अभी तक Mojo-V में पोर्ट नहीं किया गया है।
आपको एक LLVM-आधारित RISC-V क्रॉस-कंपाइलर की आवश्यकता होगी जो RV64GC बाइनरी बनाने में सक्षम हो।
शुरू करने के लिए यह एक अच्छा स्थान है: https://github.com/openssl/openssl
आपको OpenSSL संस्करण 3.6 या नए के डेवलपर इंस्टॉलेशन की आवश्यकता होगी। यह ML-KEM512 को लागू करने वाली लाइब्रेरी प्रदान करता है, जिसका उपयोग Spike सुरक्षित कुंजी विनिमय के लिए करता है।
शुरू करने के लिए यह एक अच्छा स्थान है: https://clang.llvm.org/get_started.html
git clone https://github.com/toddmaustin/mojo-v.git cd mojo-v
### D. Mojo-V समर्थन के साथ RISC-V Spike सिम्युलेटर बनाएँ```bash
sudo apt-get install device-tree-compiler libboost-regex-dev libboost-system-dev
cd riscv-isa-sim
mkdir build
cd build
../configure --prefix=$RISCV
make
डेटा कॉन्ट्रैक्ट एन्क्रिप्टेड पैकेट होते हैं जो Mojo-V CPU के हार्डवेयर को Mojo-V एन्क्रिप्टेड डेटा सेट के लिए डेटा एक्सेस कुंजी और कॉन्फ़िगरेशन जानकारी (जैसे, मेमोरी एन्क्रिप्शन मोड) तक पहुँचने की अनुमति देते हैं।``` cd dc-tool make clean build test
### **E. Mojo-V Bringup-Bench बेंचमार्क परीक्षण बनाएं और चलाएं**
1. **Spike डिवाइस ड्राइवर बनाएं** ```bash
cd bringup-bench/target
make
अपने कंपाइलर को कॉन्फ़िगर करें
../Makefile को संपादित करें और TARGET_CC को mojov टारगेट के लिए अपने LVM Clang-आधारित RISC-V कंपाइलर के स्थान पर सेट करें।
Bringup-Bench परीक्षण प्रोग्राम बनाएँ और परीक्षण करें ```bash cd .. # go to the top-level bringup-bench directory make TARGET=mojov-spike mojov-tests # run all Mojo-V tests
वैकल्पिक रूप से, आप उसकी निर्देशिका में जाकर निम्न कमांड चलाकर एक व्यक्तिगत बेंचमार्क चला सकते हैं। ```bash cd ../mojov-test make TARGET=mojov-spike clean build test
## 🧪 Mojo-V Bringup-Bench Tests Overview
| Program | Description |
|:---------|:-------------|
| `mojov-test` | स्लाइड्स से परिचयात्मक उदाहरण |
| `mojov-test1` | गुप्त-रजिस्टर और एन्क्रिप्टेड-मेमोरी सिमेंटिक्स परीक्षण |
| `mojov-test2` | Mojo-V तेज़ एन्क्रिप्शन के साथ हाथ से लिखा गया डेटा-ऑब्लिवियस इंटीजर बबल-सॉर्ट बेंचमार्क (int,fast) |
| `mojov-test3` | Mojo-V तेज़ एन्क्रिप्शन के साथ हाथ से लिखा गया डेटा-ऑब्लिवियस फ्लोटिंग-पॉइंट बबल-सॉर्ट बेंचमार्क (fp,fast) |
| `mojov-test4` | Mojo-V मज़बूत एन्क्रिप्शन के साथ हाथ से लिखा गया डेटा-ऑब्लिवियस इंटीजर बबल-सॉर्ट बेंचमार्क (int,strong) |
| `mojov-test5` | Mojo-V मज़बूत एन्क्रिप्शन के साथ हाथ से लिखा गया डेटा-ऑब्लिवियस फ्लोटिंग-पॉइंट बबल-सॉर्ट बेंचमार्क (fp,strong) |
| `mojov-typetests` | Mojo-V एन्क्रिप्टेड प्रकारों और EXO-लाइब्रेरी उपयोग के लिए टाइप-सिस्टम सत्यापन परीक्षण |
| `mojov-pctests` | RV64GC+Mojo-V के लिए हाथ से लिखा गया इंटीग्रिटी जाँच परीक्षण सूट, जिसमें Mojo-V के प्रूफ-कैरिंग एन्क्रिप्शन प्रारूप के लिए सकारात्मक और नकारात्मक परीक्षण शामिल हैं (proofcarrying) |
| `mojov-sectests` | RV64GC+Mojo-V के लिए हाथ से लिखा गया सुरक्षा परीक्षण सूट, जिसमें 130 सकारात्मक + 245 नकारात्मक परीक्षण == कुल 375 शामिल हैं (int,fp,fast,strong) |
| `mojov-stringtests` | सुरक्षित स्ट्रिंग संचालन और तुलनाओं के लिए एन्क्रिप्टेड EXO स्ट्रिंग-लाइब्रेरी सत्यापन परीक्षण |
| `mojov-mathtests` | `_sincos`, `mojov_sin`, `mojov_cos`, `mojov_fabs`, `mojov_floor`, `mojov_pow`, `mojov_round`, और `mojov_sqrt` के लिए एन्क्रिप्टेड EXO गणित-लाइब्रेरी सत्यापन परीक्षण |
ये परीक्षण बेंचमार्क Mojo-V ISA नियमों, EXO-लाइब्रेरी व्यवहार और सुरक्षा सिमेंटिक्स को प्रदर्शित करते हैं।
## 🧪 Mojo-V Bringup-Bench Benchmarks Overview
वर्तमान ब्रिंग-अप बेंचमार्क सेट में निम्नलिखित Mojo-V बेंचमार्क एप्लिकेशन शामिल हैं:
| Program | Description |
|:---------|:-------------|
| `bitonic-sort` | डेटा-ऑब्लिवियस बिटोनिक सॉर्टिंग बेंचमार्क |
| `bloom-filter` | ब्लूम-फ़िल्टर सेट-सदस्यता बेंचमार्क |
| `bubble-sort` | इंटीजर बबल-सॉर्ट बेंचमार्क |
| `bubble-sort-strong` | मज़बूत एन्क्रिप्शन के लिए कॉन्फ़िगर किया गया इंटीजर बबल-सॉर्ट बेंचमार्क |
| `chi-squared` | काई-स्क्वेयर्ड सांख्यिकीय गुडनेस-ऑफ़-फ़िट बेंचमार्क |
| `distinctness` | विशिष्टता (डिस्टिंक्टनेस) विश्लेषण बेंचमार्क |
| `distinctness-Onlog2n` | O(n log² n) रणनीति के साथ विशिष्टता बेंचमार्क वैरिएंट |
| `edit-distance` | एडिट-दूरी (स्ट्रिंग दूरी) बेंचमार्क |
| `eulers-approx` | यूलर स्थिरांक/श्रेणी सन्निकटन बेंचमार्क |
| `fft-int` | इंटीजर FFT बेंचमार्क |
| `flood-fill` | फ्लड-फ़िल बेंचमार्क |
| `flood-fill-On2` | O(n²) व्यवहार के साथ फ्लड-फ़िल बेंचमार्क वैरिएंट |
| `fuzzy-match` | फ़ज़ी स्ट्रिंग-मिलान बेंचमार्क |
| `gcd-list` | सूची पर महत्तम समापवर्तक (GCD) बेंचमार्क |
| `gemm` | सामान्य मैट्रिक्स गुणन बेंचमार्क |
| `gemm-strong` | मज़बूत एन्क्रिप्शन के लिए कॉन्फ़िगर किया गया GEMM बेंचमार्क |
| `grad-descent` | ग्रेडिएंट-डिसेंट अनुकूलन बेंचमार्क |
| `heat-calc` | ऊष्मा-स्थानांतरण/ऊष्मा-समीकरण गणना बेंचमार्क |
| `heldkarp-tsp` | एन्क्रिप्टेड ग्राफ़ पर हेल्ड-कार्प डायनामिक-प्रोग्रामिंग ट्रैवलिंग-सेल्समैन बेंचमार्क |
| `highlife` | एन्क्रिप्टेड बोर्ड-स्टेट विकास के साथ हाईलाइफ़ सेल्युलर-ऑटोमेटा बेंचमार्क |
| `kadane` | अधिकतम-सबअरे बेंचमार्क (कदाने का एल्गोरिथ्म) |
| `kalman-filter` | कलमन फ़िल्टरिंग बेंचमार्क |
| `kcore-decomp` | ग्राफ़ k-कोर अपघटन बेंचमार्क |
| `kepler-calc` | केपलर समीकरण/संख्यात्मक गणना बेंचमार्क |
| `knapsack` | नैपसैक अनुकूलन बेंचमार्क |
| `lcs` | एन्क्रिप्टेड स्ट्रिंग्स पर डेटा-ऑब्लिवियस सबसे लंबा सामान्य अनुक्रम (LCS) बेंचमार्क |
| `lda` | लैटेंट डिरिचलेट आवंटन (LDA) बेंचमार्क |
| `manacher-lps` | सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग बेंचमार्क (मानाचेर का एल्गोरिथ्म) |
| `mersenne` | मेर्सेन-संख्या गणना बेंचमार्क |
| `minspan` | न्यूनतम स्पैनिंग संरचना बेंचमार्क |
| `monte-carlo` | मोंटे कार्लो सिमुलेशन बेंचमार्क |
| `moving-average` | मूविंग-औसत विश्लेषण बेंचमार्क |
| `moving-average-fp64` | FP64 मूविंग-औसत विश्लेषण बेंचमार्क |
| `nbody-sim` | एन-बॉडी सिमुलेशन बेंचमार्क |
| `nonlinear-nn` | अरेखीय तंत्रिका-नेटवर्क बेंचमार्क |
| `nr-solver` | न्यूटन-रैफसन सॉल्वर बेंचमार्क |
| `ntt-kernel` | संख्या-सैद्धांतिक रूपांतरण (NTT) कर्नेल बेंचमार्क |
| `packet-filter` | पैकेट-फ़िल्टरिंग बेंचमार्क |
| `pagerank` | PageRank ग्राफ़ बेंचमार्क |
| `parrondo` | पैरोंडो प्रक्रिया/रणनीति बेंचमार्क |
| `partition-equal` | एन्क्रिप्टेड सेटों पर पार्टीशन इक्वल सबसेट सम बेंचमार्क |
| `pca-analysis` | प्रिंसिपल-कंपोनेंट-विश्लेषण बेंचमार्क |
| `primal-test` | अभाज्यता परीक्षण बेंचमार्क |
| `private-join` | गोपनीयता-संरक्षण जॉइन बेंचमार्क |
| `psi` | निजी-सेट-प्रतिच्छेदन बेंचमार्क |
| `quartile-stats` | एन्क्रिप्टेड डेटा पर क्वार्टाइल-कट और क्वार्टाइल-औसत विश्लेषण बेंचमार्क |
| `rabinkarp-search` | राबिन-कार्प पैटर्न-खोज बेंचमार्क |
| `rad-to-deg` | रेडियन-से-डिग्री रूपांतरण बेंचमार्क |
| `randshell-sort` | यादृच्छिक शेल-सॉर्ट बेंचमार्क |
| `ransac` | RANSAC मॉडल-फ़िटिंग बेंचमार्क |
| `regex-match` | रेगुलर-एक्सप्रेशन मिलान बेंचमार्क |
| `risk-score` | जोखिम-स्कोरिंग विश्लेषण बेंचमार्क |
| `scrambled-compare` | एन्क्रिप्टेड डायनामिक प्रोग्रामिंग का उपयोग करते हुए स्क्रैम्बल-स्ट्रिंग तुलना बेंचमार्क |
| `seq-align` | एन्क्रिप्टेड स्ट्रिंग्स पर वैश्विक अनुक्रम-संरेखण बेंचमार्क (नीडलमैन-वुन्श) |
| `shortest-path` | सबसे छोटा पथ ग्राफ़ बेंचमार्क |
| `sieve` | प्राइम-सीव बेंचमार्क |
| `skeleton` | ब्रिंग-अप बेसलाइन के रूप में उपयोग किया जाने वाला स्केलेटन/टेम्पलेट बेंचमार्क |
| `soundex` | साउंडेक्स ध्वन्यात्मक एन्कोडिंग बेंचमार्क |
| `string-search` | स्ट्रिंग-खोज बेंचमार्क |
| `tea-cipher` | TEA साइफर बेंचमार्क |
| `tiny-NN` | छोटा तंत्रिका-नेटवर्क अनुमान बेंचमार्क |
| `triangle-count` | त्रिभुज गणना ग्राफ़ बेंचमार्क |
| `variability-sample` | परिवर्तनशीलता और नमूनाकरण-सांख्यिकी बेंचमार्क |
| `verlet` | वर्लेट-इंटीग्रेशन भौतिकी बेंचमार्क |
## Mojo-V Safe Disclosure Demonstrators Overview
Mojo-V में `bringup-bench` में तीन सुरक्षित प्रकटीकरण डेमॉन्स्ट्रेटर बेंचमार्क शामिल हैं। ये एप्लिकेशन प्रूफ-कैरिंग एन्क्रिप्टेड मेमोरी के साथ-साथ एन्क्रिप्टेड डेटा ग्रांट का उपयोग करके दिखाते हैं कि कैसे एक प्रोग्राम संवेदनशील इनपुट पर गणना कर सकता है, केवल स्पष्ट रूप से अधिकृत व्युत्पन्न परिणामों का प्रकटीकरण कर सकता है, और किसी ग्रांट को किसी भिन्न मान, कच्चे इनपुट, पुरानी गणना, छेड़छाड़ किए गए ग्रांट, या मध्यवर्ती प्रेडिकेट के लिए पुनः उपयोग करने के प्रयासों को रोक सकता है।
| Program | Sensitive input | Authorized disclosures | Demonstrated protections |
|:---------|:----------------|:------------------------|:--------------------------|
| `private-auction` | आठ एन्क्रिप्टेड निजी बोलियाँ। | विजेता बोलीदाता आईडी और विजेता बोली मूल्य। | एन्क्रिप्टेड तुलनाओं और `cmov()` के साथ अधिकतम बोली ज्ञात करता है, फिर प्रति-आउटपुट डेटा ग्रांट को मान्य करता है। नकारात्मक मामले बेमेल ग्रांट, कच्ची विजेता-बोली का प्रकटीकरण, जाली या छेड़छाड़ किए गए ग्रांट, नीलामी बदलने के बाद पुराने ग्रांट, व्युत्पन्न `winning_bid + 1` मान, और मध्यवर्ती तुलना प्रेडिकेट्स को अस्वीकार करते हैं। |
| `vote-tally` | तीन उम्मीदवारों के बीच बत्तीस एन्क्रिप्टेड मतपत्र, जिनमें दो अमान्य मतपत्र शामिल हैं। | उम्मीदवारों A, B और C के लिए कुल मतगणना, साथ ही प्रति-मतपत्र क्योर प्रेडिकेट्स। | सभी उम्मीदवारों की गिनती और मतपत्र-वैधता प्रेडिकेट्स की गणना एन्क्रिप्टेड रूप में करता है। नकारात्मक मामले एक मतगणना ग्रांट को दूसरी मतगणना के लिए उपयोग करने, कच्चे मतपत्र का प्रकटीकरण, जाली या छेड़छाड़ किए गए ग्रांट, मतपत्रों को संशोधित करने के बाद पुराने ग्रांट, व्युत्पन्न मतगणना मान, और मध्यवर्ती मतपत्र प्रेडिकेट्स को अस्वीकार करते हैं। |
| `gene-risk` | एक टॉय जीनोमिक जोखिम वर्कलोड के लिए आठ एन्क्रिप्टेड SNP मार्कर खुराकें। | एक व्युत्पन्न पॉलीजेनिक जोखिम स्कोर और एक निम्न/मध्यम/उच्च जोखिम बकेट। | भारित जोखिम स्कोर संचित करता है और एन्क्रिप्टेड प्रेडिकेट्स तथा `cmov()` के साथ जोखिम बकेट प्राप्त करता है। नकारात्मक मामले स्कोर और बकेट ग्रांट के क्रॉस-उपयोग, कच्चे मार्कर प्रकटीकरण, जाली या छेड़छाड़ किए गए ग्रांट, जीनोम बदलने के बाद पुराने ग्रांट, व्युत्पन्न स्कोर मान, और मध्यवर्ती उच्च-जोखिम प्रेडिकेट्स को अस्वीकार करते हैं। |
प्रत्येक डेमॉन्स्ट्रेटर `MOJOV_DISCAPPS` में सूचीबद्ध है, इसलिए यह सुरक्षित प्रकटीकरण एप्लिकेशन बैटरी का हिस्सा है। किसी एक को सीधे चलाने के लिए, उसके बेंचमार्क निर्देशिका में प्रवेश करें और Mojo-V टारगेट का उपयोग करें, उदाहरण के लिए:```bash
cd bringup-bench/private-auction
make TARGET=mojov-spike clean build test
स्पाइक के --mojov-arg=<n> विकल्प का उपयोग करके किसी डेमॉन्स्ट्रेटर को मैन्युअल रूप से चलाते समय सकारात्मक पथ (0) या नकारात्मक प्रकटीकरण परीक्षणों में से एक (1 और उससे अधिक) का चयन करें।
Mojo-V में bringup-bench में तीन प्रमाणित ट्रू-रैंडम-नंबर-जेनरेटर (CERTRNG)
डेमॉन्स्ट्रेटर बेंचमार्क शामिल हैं। वे अलग-अलग CERTRNG साइटों,
प्रूफ-कैरिंग एन्क्रिप्टेड कंप्यूटेशन, और रिक्वेस्ट नॉन्स का उपयोग करके यह दिखाते हैं कि एक
क्लाइंट सत्यापित कर सकता है कि ताज़ा यादृच्छिक मान किसी अनुमोदित गणना में कहाँ प्रविष्ट हुए। परिणाम
रसीद सत्यापन और प्रतिबद्धता तक एन्क्रिप्टेड रहते हैं। नकारात्मक
मामले दर्शाते हैं कि सॉफ्टवेयर-जनित यादृच्छिकता, लुप्त या पुनः उपयोग किए गए ड्रॉ,
गलत साइट असाइनमेंट, पुराने अनुरोध, परिवर्तित कंप्यूटेशन ग्राफ़, और पक्षपाती
रीसैम्पलिंग ईमानदार डेटा अनुदान को संतुष्ट नहीं करते। वे एक महत्वपूर्ण
सीमा भी दिखाते हैं: प्रमाणित यादृच्छिकता अकेले ग्राइंडिंग को नहीं रोक सकती यदि परिणाम प्रतिबद्धता से पहले
(Mojo-V DISC या FDISC निर्देशों का उपयोग करके) प्रकट कर दिए जाएँ।
ये डेमॉन्स्ट्रेटर MOJOV_CERTRNG_APPS में सूचीबद्ध हैं, इसलिए ये
Mojo-V बेंचमार्क बैटरी में शामिल हैं। किसी एक को सीधे उसकी निर्देशिका से चलाएँ, उदाहरण के लिए:```bash
cd bringup-bench/blind-audit
make TARGET=mojov-spike clean build test
Use Spike के `--mojov-arg=<n>` विकल्प का उपयोग करें जब किसी डेमॉन्स्ट्रेटर को मैन्युअल रूप से चलाएँ। केस
`0` ईमानदार पथ है, कम-संख्या वाले केस सफल व्याख्यात्मक नियंत्रण हैं,
और केस `10` और उससे अधिक ऐसे हमले हैं जिनका Mojo-V
सुरक्षा अपवाद के साथ समाप्त होना अपेक्षित है। प्रत्येक एप्लिकेशन के लिए सटीक मैट्रिक्स उसके
बेंचमार्क-स्थानीय `README.md` में प्रलेखित है।
## 🛠️ Mojo-V डेटा कॉन्ट्रैक्ट मल्टी-टूल का उपयोग
डेटा कॉन्ट्रैक्ट मल्टी-टूल "dc-tool" का उपयोग Mojo-V डेटा कॉन्ट्रैक्ट बनाने और मान्य करने के लिए किया जाता है।
ML-KEM512 सार्वजनिक/निजी कुंजी युग्म बनाने के लिए, निम्न कमांड निष्पादित करें। ध्यान दें कि सार्वजनिक कुंजी को डेटा कॉन्ट्रैक्ट तैयार करने के लिए तृतीय-पक्ष डेटा प्रदाताओं के साथ साझा किया जाना है। निजी कुंजियाँ हार्डवेयर (या सिम्युलेटर) में स्थापित की जाती हैं।```bash
./dc-tool keygen <pk_file> <sk_file> # public key in <pk_file>, private key in <sk_file>
एक बार public/private key pair मौजूद हो जाने पर, एन्क्रिप्टेड डेटा अनुबंध (data contracts) बनाना संभव हो जाता है। एक डेटा अनुबंध में एक एन्क्रिप्टेड डेटा एक्सेस कुंजी (तीसरे पक्ष के डेटा तक पहुँचने के लिए Mojo-V हार्डवेयर हेतु) और एक एन्क्रिप्टेड मेमोरी मोड कॉन्फ़िगरेशन शामिल होता है। एन्क्रिप्टेड डेटा अनुबंध बनाने के लिए निम्न कमांड निष्पादित करें।```bash ./dc-tool dcgen <pk_file> {fast,strong,proof-carrying} <ct_file> # specify mem mode, contract in <ct_file>
एन्क्रिप्टेड डेटा अनुबंध को Mojo-V हार्डवेयर के साथ साझा करना, जो अनुबंध को एन्क्रिप्ट करने के लिए उपयोग की गई सार्वजनिक ML-KEM512 कुंजी से मेल खाता है, Mojo-V सक्षम CPU को संरक्षित तृतीय-पक्ष डेटा पर गुप्त गणना करने की अनुमति देगा। यह सत्यापित करने के लिए कि एन्क्रिप्टेड अनुबंध वैध है, निम्नलिखित कमांड का उपयोग करें।```bash
./dc-tool dcchk <sk_file> <ct_file> # decrypt contract <ct_file> with secret key <sk_file>
./dc-tool dcchk-v <sk_file> <ct_file> # same as above, but also dump decrypted contents of <ct_file>
निम्नलिखित विकल्प Spike, मानक RISC-V ISA सिमुलेटर में जोड़े गए हैं।```bash --mojov-verbose Mojo-V setup processing is verbose --mojov-fast Use Mojo-V fast encryption mode (default mode) --mojov-strong Use Mojo-V strong encryption format (otherwise using data contract specified mode) --mojov-proofcarrying Use Mojo-V proof-carrying encryption format (otherwise use data contract specified mode) --mojov-arg= Pass a numeric argument to a Mojo-V test code --mojov-pk=<pem_file> Load Mojo-V CPU public key from <pem_file> --mojov-sk=<pem_file> Load Mojo-V CPU secret key from <pem_file>
## 🧠 Mojo-V प्रोग्रामिंग अवलोकन
Mojo-V सॉफ़्टवेयर विकास वर्तमान में EXO कंपाइलर लाइब्रेरी का उपयोग करता है और सुरक्षित डेटा-ऑब्लिवियस कोडिंग प्रथाओं का पालन करता है:
1. **EXO लाइब्रेरी हेडर के साथ प्रोग्राम करें**
- Mojo-V प्रोग्रामिंग फ्रेमवर्क और एन्क्रिप्टेड-टाइप एब्स्ट्रैक्शन तक पहुँचने के लिए `exo/mojov-exo.h` शामिल करें।
- एन्क्रिप्टेड गणित समर्थन और सहायक संचालन तक पहुँचने के लिए `exo/mojov-math.h` शामिल करें।
2. **एन्क्रिप्टेड चर के लिए डेटा-ऑब्लिवियस गणना का उपयोग करें**
- Mojo-V की मौन निष्पादन (silent execution) और साइड-चैनल प्रतिरोध लक्ष्यों को बनाए रखने के लिए एन्क्रिप्टेड मानों को डेटा-ऑब्लिवियस नियंत्रण प्रवाह और मेमोरी-एक्सेस पैटर्न के साथ संचालित किया जाना चाहिए।
3. **EXO प्रोग्रामिंग ट्यूटोरियल का पालन करें**
- EXO प्रोग्रामिंग गाइड देखें: [exo/EXO-library-programming.md](https://github.com/toddmaustin/mojo-v/blob/HEAD/exo/EXO-library-programming.md)
4. **EXO दस्तावेज़ में कंपाइलर-संरचना और आर्किटेक्चर विवरण देखें**
- वर्तमान Mojo-V कंपाइलर/लाइब्रेरी दृष्टिकोण के लिए आंतरिक संरचना और डिज़ाइन संदर्भ इसमें प्रलेखित हैं: [exo/EXO-library-overview.md](https://github.com/toddmaustin/mojo-v/blob/HEAD/exo/EXO-library-overview.md)
---
## कोड लाइसेंसिंग
इस रिपॉजिटरी में सभी Mojo-V से संबंधित कोड उस टूल के लाइसेंस के अंतर्गत जारी किया गया है जिसे इसमें संशोधित किया गया है (जैसे, Spike, LLVM, Bringup-Bench)। लाइसेंसिंग विवरण के लिए कृपया संबंधित टूल के निर्देशिकाओं को देखें।
---
## 💬 प्रश्न और प्रतिक्रिया
हम योगदान, बग रिपोर्ट और सुझावों का स्वागत करते हैं!
📧 **ईमेल:** [[email protected]](mailto:[email protected])
🌐 **प्रोजेक्ट होम:** [https://github.com/toddmaustin/mojo-v](https://github.com/toddmaustin/mojo-v)
| प्रोग्राम | प्रमाणित-यादृच्छिक कार्यभार | सकारात्मक व्यवहार | प्रदर्शित सुरक्षाएँ |
|---|
blind-audit | आठ अलग-अलग, अनुरोध-बद्ध यादृच्छिक प्राथमिकताओं में से न्यूनतम लेकर आठ ऑडिट रिकॉर्ड में से एक का चयन करता है। | पूर्ण निश्चित argmin ग्राफ़ प्रमाणित करता है; यह भी दिखाता है कि अप्रयुक्त ड्रॉ रसीद को प्रभावित नहीं करते और समयपूर्व प्रकटीकरण ग्राइंडिंग सक्षम करता है। | जबरन लक्ष्य, सॉफ्टवेयर RNG, लुप्त या पुराना नॉन्स, ड्रॉ पुन: उपयोग, हटाया गया उम्मीदवार, स्वैप की गई साइटें, और पूर्व-गणित चयन का रीप्ले अस्वीकार करता है। |
diffpriv-count | एक एन्क्रिप्टेड गिनती में 16 अलग-अलग यादृच्छिक साइटों का उपयोग करके, दो स्वतंत्र Binomial(8, 1/2) मानों के अंतर के रूप में गठित केंद्रित-द्विपद शोर जोड़ता है। | सटीक शोर-निर्माण और अनुरोध-बाइंडिंग ग्राफ़ प्रमाणित करता है, जबकि सत्यापन तक शोर और उत्तर दोनों छिपाए रखता है। | लुप्त या कमजोर शोर, सॉफ्टवेयर RNG, अनुकूल रीसैम्पलिंग, और पुराने-अनुरोध रीप्ले अस्वीकार करता है; असंबंधित अप्रयुक्त यादृच्छिकता रसीद के बाहर रहती है। |
certified-lotto | आठ एन्क्रिप्टेड प्रविष्टियों के बीच उच्चतम स्कोर वाले पात्र प्रतिभागी को चुनता है और स्कोर टाई तोड़ने के लिए अलग-अलग अनुरोध-बद्ध प्राथमिकताओं का उपयोग करता है। | प्रत्येक प्रतिभागी, यादृच्छिक साइट, नॉन्स मिश्रण, और टूर्नामेंट चरण प्रमाणित करता है; अप्रयुक्त-ड्रॉ व्यवहार और प्रतिबद्धता-से-पहले प्रकटीकरण के ग्राइंडिंग जोखिम को भी प्रदर्शित करता है। | लुप्त प्रतिभागी, सॉफ्टवेयर RNG, छोड़ा गया या पुराना नॉन्स, ड्रॉ पुन: उपयोग, स्वैप की गई साइटें, और नियतात्मक टाई-ब्रेकर अस्वीकार करता है। |