Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
mlkem-native — सुरक्षित, तेज़, और पोर्टेबल C90 कार्यान्वयन ML-KEM / FIPS 203 का | Kitploit
उपकरण/GitHubGitHub/pq-code-package/mlkem-native
एम्बेडेड सिस्टम सुरक्षास्थैतिक विश्लेषणक्रिप्टोग्राफीहार्डवेयर सुरक्षा
GitHubpq-code-package/mlkem-native

mlkem-native

सुरक्षित, तेज़, और पोर्टेबल C90 कार्यान्वयन ML-KEM / FIPS 203 का

रिपॉजिटरी देखें
2236591 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट

mlkem-native

CI Benchmarks C90

License: Apache License: ISC License: MIT

mlkem-native, ML-KEM1 का एक सुरक्षित, तेज़ और पोर्टेबल C902 कार्यान्वयन है। यह ML-KEM संदर्भ कार्यान्वयन3 का एक फोर्क है।

mlkem/src/* और mlkem/src/fips202/* में सभी C कोड CBMC4 का उपयोग करके मेमोरी-सुरक्षित (कोई मेमोरी ओवरफ्लो नहीं) और टाइप-सुरक्षित (कोई इंटीजर ओवरफ्लो नहीं) सिद्ध किया गया है। सभी AArch64 और x86_64 असेंबली HOL-Light5 का उपयोग करके कार्यात्मक रूप से सही, मेमोरी-सुरक्षित और गोपनीय-स्वतंत्र टाइमिंग (कॉन्स्टेंट-टाइम) सिद्ध की गई है।

mlkem-native में Arm (64-bit, Neon), Intel/AMD (64-bit, AVX2), RISC-V (64-bit, RVV) और POWER (ppc64le, VSX) के लिए मूल बैकएंड शामिल हैं। प्रदर्शन डेटा के लिए benchmarks देखें।

mlkem-native को Linux Foundation के भाग के रूप में Post-Quantum Cryptography Alliance द्वारा समर्थित किया गया है।

Ubuntu के लिए त्वरित आरंभ

root@kitploit:~
# बेस पैकेज इंस्टॉल करें
sudo apt-get update
sudo apt-get install make gcc python3 git

# mlkem-native क्लोन करें
git clone https://github.com/pq-code-package/mlkem-native.git
cd mlkem-native

# बिल्ड और टेस्ट चलाएं
make build
make test

# `make` के चारों ओर एक सुविधाजनक रैपर, `tests` का उपयोग करके भी ऐसा ही
./scripts/tests all
# सभी विकल्प दिखाएं
./scripts/tests --help

अधिक जानकारी के लिए BUILDING.md देखें।

अनुप्रयोग

mlkem-native का उपयोग इनमें किया जाता है:

  • Open Quantum Safe प्रोजेक्ट का libOQS 0.13.0 से (डिफ़ॉल्ट ML-KEM कार्यान्वयन के रूप में)
  • AWS की क्रिप्टोग्राफी लाइब्रेरी AWS-LC v1.50.0 से
  • Rust में लिखी गई rustls TLS लाइब्रेरी 0.23.28 से (AWS-LC के माध्यम से डिफ़ॉल्ट क्रिप्टोग्राफी प्रदाता के रूप में)
  • Pavona - मॉड्यूलर, टेपआउट-सिद्ध और डिफ़ॉल्ट रूप से सुरक्षित ओपन सिलिकॉन ब्लॉकों की एक लाइब्रेरी

औपचारिक सत्यापन

mlkem/src/* और mlkem/src/fips202/* में सभी C कोड मेमोरी-सुरक्षित (कोई मेमोरी ओवरफ्लो नहीं) और टाइप-सुरक्षित (कोई इंटीजर ओवरफ्लो नहीं) सिद्ध किया गया है। यह C Bounded Model Checker (CBMC) का उपयोग करता है और स्रोत कोड में फ़ंक्शन अनुबंधों और लूप इनवेरिएंट एनोटेशन पर आधारित है। विवरण के लिए proofs/cbmc देखें।

सभी AArch64 और x86_64 असेंबली ऑब्जेक्ट-कोड स्तर पर कार्यात्मक रूप से सही, मेमोरी-सुरक्षित और गोपनीय-स्वतंत्र टाइमिंग (कॉन्स्टेंट-टाइम) सिद्ध की गई है। यह HOL-Light इंटरैक्टिव प्रमेय प्रूवर और s2n-bignum सत्यापन अवसंरचना (जिसमें Arm और x86 आर्किटेक्चर के प्रासंगिक भागों के मॉडल शामिल हैं) का उपयोग करता है। विवरण के लिए proofs/hol_light देखें।

नोट: औपचारिक सत्यापन कभी भी निरपेक्ष नहीं होता। mlkem-native के आसपास औपचारिक सत्यापन प्रयासों के दायरे, धारणाओं और जोखिमों के विस्तृत विश्लेषण के लिए SOUNDNESS.md देखें।

सुरक्षा

mlkem-native में सभी AArch64 और x86_64 असेंबली HOL Light में औपचारिक रूप से सिद्ध की गई है कि यह गोपनीय-निर्भर नियंत्रण प्रवाह, मेमोरी एक्सेस पैटर्न और परिवर्तनीय-विलंबता निर्देशों से मुक्त है, जिससे अधिकांश टाइमिंग साइड चैनल विफल हो जाते हैं (विवरण के लिए proofs/hol_light देखें)। C कोड उपयुक्त बाधाओं और कॉन्स्टेंट-टाइम पैटर्न के माध्यम से कंपाइलर-प्रस्तुत टाइमिंग साइड चैनलों (जैसे KyberSlash6 या clangover7) के खिलाफ कठोर किया गया है।

गोपनीय-निर्भर शाखाओं, मेमोरी-एक्सेस पैटर्न और परिवर्तनीय-विलंबता निर्देशों की अनुपस्थिति का परीक्षण कंपाइलरों और संकलन विकल्पों के विभिन्न संयोजनों के साथ valgrind का उपयोग करके भी किया जाता है।

अन्य हमले। mlkem-native केवल टाइमिंग साइड चैनलों के प्रतिरोध को लक्षित करता है। अन्य हमले वर्ग, जैसे पावर और इलेक्ट्रोमैग्नेटिक साइड चैनल, माइक्रोआर्किटेक्चरल साइड चैनल (जैसे सट्टा निष्पादन), या फॉल्ट-इंजेक्शन हमले, वर्तमान में दायरे से बाहर हैं।

डिज़ाइन

mlkem-native एक फ्रंटएंड और अंकगणित और FIPS202 / SHA3 के लिए दो बैकएंड में विभाजित है। फ्रंटएंड निश्चित है, C में लिखा गया है, और उन सभी रूटीन को कवर करता है जो प्रदर्शन के लिए महत्वपूर्ण नहीं हैं। बैकएंड लचीले हैं, प्रदर्शन-संवेदनशील रूटीन का ध्यान रखते हैं, और C या मूल कोड (असेंबली/इंट्रिन्सिक्स) में लागू किए जा सकते हैं; अंकगणित बैकएंड के लिए mlkem/src/native/api.h और FIPS-202 बैकएंड के लिए mlkem/src/fips202/native/api.h देखें।

mlkem-native वर्तमान में निम्नलिखित बैकएंड प्रदान करता है:

  • डिफ़ॉल्ट पोर्टेबल C बैकएंड
  • 64-bit Arm बैकएंड (Neon का उपयोग करके)
  • 64-bit Intel/AMD बैकएंड (AVX2 का उपयोग करके)
  • 64-bit RISC-V बैकएंड (RVV का उपयोग करके)
  • 64-bit POWER बैकएंड (ppc64le, VSX का उपयोग करके; POWER8 और उससे ऊपर का समर्थन करता है)
  • 32-bit Armv8.1-M बैकएंड (Helium/MVE का उपयोग करके) -- #1501 देखें। यह अभी भी प्रयोगात्मक है और डिफ़ॉल्ट रूप से अक्षम है।

यदि आप नए बैकएंड का योगदान करना चाहते हैं, तो कृपया संपर्क करें या बस एक PR खोलें।

हमारी AArch64 असेंबली SLOTHY पेपर8 में वर्णित दृष्टिकोण का पालन करते हुए, SLOTHY सुपरऑप्टिमाइज़र का उपयोग करके विकसित की गई है: हम 'स्वच्छ' असेंबली हाथ से लिखते हैं और माइक्रो-ऑप्टिमाइज़ेशन को स्वचालित करते हैं (उदाहरण के लिए clean बनाम optimized AArch64 NTT देखें)। अधिक विवरण के लिए dev/README.md देखें।

परीक्षण वैक्टर

mlkem-native का परीक्षण सभी आधिकारिक ACVP ML-KEM परीक्षण वैक्टर9 और Wycheproof10 ML-KEM परीक्षण वैक्टर के विरुद्ध किया जाता है।

ACVP

आप tests स्क्रिप्ट या ACVP क्लाइंट का उपयोग करके सीधे ACVP परीक्षण चला सकते हैं:

root@kitploit:~
# tests स्क्रिप्ट का उपयोग करके
./scripts/tests acvp
# किसी विशिष्ट ACVP रिलीज़ का उपयोग करके
./scripts/tests acvp --version v1.1.0.41

# ACVP क्लाइंट का सीधे उपयोग करके
python3 ./test/acvp/acvp_client.py
python3 ./test/acvp/acvp_client.py --version v1.1.0.41

# विशिष्ट ACVP परीक्षण वेक्टर फ़ाइलों का उपयोग करके (ACVP-Server से डाउनलोड की गई)
# python3 ./test/acvp/acvp_client.py -p {PROMPT}.json -e {EXPECTED_RESULT}.json
# उदाहरण के लिए, मान लें कि आपने उपरोक्त चलाया है
python3 ./test/acvp/acvp_client.py \
  -p ./test/acvp/.acvp-data/v1.1.0.41/files/ML-KEM-keyGen-FIPS203/prompt.json \
  -e ./test/acvp/.acvp-data/v1.1.0.41/files/ML-KEM-keyGen-FIPS203/expectedResults.json

Wycheproof

आप tests स्क्रिप्ट या Wycheproof क्लाइंट का उपयोग करके सीधे Wycheproof10 परीक्षण चला सकते हैं:

root@kitploit:~
# tests स्क्रिप्ट का उपयोग करके
./scripts/tests wycheproof

# Wycheproof क्लाइंट का सीधे उपयोग करके
python3 ./test/wycheproof/wycheproof_client.py

बेंचमार्किंग

आप tests स्क्रिप्ट का उपयोग करके प्रदर्शन, मेमोरी उपयोग और बाइनरी आकार माप सकते हैं:

root@kitploit:~
# स्पीड बेंचमार्क (-c साइकिल काउंटर का चयन करता है: NO, PMU, PERF, या MAC)
# नोट: PERF/MAC को बेंचमार्किंग बाइनरी को sudo का उपयोग करके चलाने के लिए -r फ्लैग की आवश्यकता हो सकती है
./scripts/tests bench -c PMU
./scripts/tests bench -c PERF -r

# स्टैक उपयोग विश्लेषण
./scripts/tests stack

# बाइनरी आकार माप
./scripts/tests size

CI बेंचमार्क परिणामों और ऐतिहासिक प्रदर्शन डेटा के लिए, बेंचमार्किंग पेज देखें।

उपयोग

यदि आप mlkem-native का उपयोग करना चाहते हैं, तो mlkem को अपने प्रोजेक्ट के स्रोत ट्री में आयात करें और अपनी पसंदीदा बिल्ड प्रणाली का उपयोग करके बिल्ड करें। अधिक जानकारी के लिए mlkem देखें, और एक सरल उदाहरण के लिए examples/basic देखें। इस रिपॉजिटरी में प्रदान की गई बिल्ड प्रणाली केवल विकास उद्देश्यों के लिए है।

सभी सार्वजनिक फ़ंक्शनों पर लागू होने वाली परंपराओं के लिए API-CONVENTIONS.md देखें, जैसे रिटर्न मान, पॉइंटर वैधता और त्रुटि पर आउटपुट बफ़र्स की स्थिति।

क्या मैं अपना स्वयं का FIPS-202 ला सकता हूँ?

mlkem-native FIPS-20211 के कार्यान्वयन पर निर्भर करता है और उसके साथ आता है। यदि आपकी लाइब्रेरी का अपना FIPS-202 कार्यान्वयन है, तो आप mlkem-native के साथ भेजे गए कार्यान्वयन के बजाय इसका उपयोग कर सकते हैं। tiny_sha312 का उपयोग करने वाले उदाहरण के लिए FIPS202.md और examples/bring_your_own_fips202 देखें।

क्या मुझे असेंबली बैकएंड का उपयोग करने की आवश्यकता है?

नहीं। यदि आप केवल C बिल्ड चाहते हैं, तो अपने आयात से mlkem/src/native और/या mlkem/src/fips202/native निर्देशिकाओं को हटा दें और अपने mlkem_native_config.h में MLK_CONFIG_USE_NATIVE_BACKEND_ARITH और/या MLK_CONFIG_USE_NATIVE_BACKEND_FIPS202 को अनसेट करें।

क्या mlkem-native का उपयोग करने के लिए मुझे CBMC सेटअप करने की आवश्यकता है?

नहीं। जबकि हम अनुशंसा करते हैं कि आप इसका उपयोग करने पर विचार करें, mlkem-native CBMC के बिना ठीक बिल्ड और चलेगा -- बस cbmc.h को शामिल करना सुनिश्चित करें और CBMC अपरिभाषित रखें। विशेष रूप से, आपको कोड से सभी फ़ंक्शन अनुबंधों और लूप इनवेरिएंट को हटाने की आवश्यकता नहीं है; जब तक CBMC सेट नहीं किया जाता है, उन्हें अनदेखा किया जाएगा।

क्या mlkem-native ML-KEM के सभी सुरक्षा स्तरों का समर्थन करता है?

हाँ। सुरक्षा स्तर mlkem_native_config.h में MLK_CONFIG_PARAMETER_SET=512/768/1024 सेट करके कॉन्फ़िगर किया गया एक संकलन-समय पैरामीटर है। यदि आपकी लाइब्रेरी/एप्लिकेशन को कई सुरक्षा स्तरों की आवश्यकता है, तो आप सामान्य कोड साझा करते हुए mlkem-native के तीन उदाहरण बिल्ड और लिंक कर सकते हैं; इसे 'मल्टी-लेवल बिल्ड' कहा जाता है और examples/multilevel_build में प्रदर्शित किया गया है। mlkem भी देखें।

क्या मैं अपना स्वयं का बैकएंड ला सकता हूँ?

हाँ, आप ML-KEM मूल अंकगणित और/या FIPS-202 के लिए आगे बैकएंड जोड़ सकते हैं। मौजूदा बैकएंड को टेम्पलेट के रूप में देखें या कस्टम बैकएंड पंजीकृत करने के तरीके के न्यूनतम उदाहरण के लिए examples/custom_backend देखें।

कोई प्रश्न है?

यदि आपको लगता है कि आपको mlkem-native में एक सुरक्षा बग मिला है, तो कृपया Github के निजी भेद्यता रिपोर्टिंग के माध्यम से भेद्यता की रिपोर्ट करें। कृपया सार्वजनिक GitHub issue न बनाएं।

यदि आपके पास कोई अन्य प्रश्न / गैर-सुरक्षा संबंधी मुद्दा / फीचर अनुरोध है, तो कृपया एक GitHub issue खोलें।

योगदान

यदि आप mlkem-native बनाने में हमारी मदद करना चाहते हैं, तो कृपया संपर्क करें। आप PQCA Discord के माध्यम से mlkem-native टीम से संपर्क कर सकते हैं। CONTRIBUTING.md भी देखें।

Footnotes

  1. National Institute of Standards and Technology: FIPS 203 Module-Lattice-Based Key-Encapsulation Mechanism Standard, https://csrc.nist.gov/pubs/fips/203/final ↩

  2. कड़ाई से कहें तो, हम C90 + stdint.h + 64-bit unsigned long long पर निर्भर हैं। ↩

  3. Bos, Ducas, Kiltz, Lepoint, Lyubashevsky, Schanck, Schwabe, Seiler, Stehlé: CRYSTALS-Kyber C reference implementation, https://github.com/pq-crystals/kyber/tree/main/ref ↩

  4. Diffblue, Amazon Web Services: C Bounded Model Checker, https://github.com/diffblue/cbmc ↩

  5. John Harrison: HOL-Light Theorem Prover, https://hol-light.github.io/ ↩

  6. Bernstein, Bhargavan, Bhasin, Chattopadhyay, Chia, Kannwischer, Kiefer, Paiva, Ravi, Tamvada: KyberSlash: Exploiting secret-dependent division timings in Kyber implementations, https://kyberslash.cr.yp.to/papers.html ↩

  7. Antoon Purnal: clangover,

टूल डाउनलोड करें
https://github.com/antoonpurnal/clangover
↩
  • Abdulrahman, Becker, Kannwischer, Klein: Fast and Clean: Auditable high-performance assembly via constraint solving, https://eprint.iacr.org/2022/1303 ↩

  • National Institute of Standards and Technology: Automated Cryptographic Validation Protocol (ACVP) Server, https://github.com/usnistgov/ACVP-Server ↩

  • Community Cryptography Specification Project: Project Wycheproof, https://github.com/C2SP/wycheproof ↩ ↩2

  • National Institute of Standards and Technology: FIPS202 SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, https://csrc.nist.gov/pubs/fips/202/final ↩

  • Markku-Juhani O. Saarinen: tiny_sha3, https://github.com/mjosaarinen/tiny_sha3 ↩