Go ecosystem के लिए quantum-resistant cryptography
filippo.io/mlkem768 ML-KEM-768 का एक pure Go implementation है, जिसे correctness और readability के लिए optimize किया गया है.
- ML-KEM एक quantum-resistant key exchange mechanism है, जो NIST द्वारा standardization process में है और अधिकांश उद्योगों में अपनाया जा रहा है.
- यह package लगभग 500 lines code, 200 lines comments, और 650 lines tests से बना है, और
golang.org/x/crypto/sha3 को छोड़कर इसकी कोई dependency नहीं है.
- इसे Go standard library में integrate किए जाने की योजना है, और इसे आसान review, simplicity, तथा thorough testing के माध्यम से high security confidence देने के लिए design किया गया है.
specification verification के लिए implementation
- अधिकांश implementations के विपरीत, यह code reference pq-crystals library से port नहीं किया गया, बल्कि किसी अन्य codebase को विस्तार से पढ़े बिना शुरू से लिखा गया है.
- FIPS 203 document detailed pseudocode, thorough definitions, और consistent type information प्रदान करता है, इसलिए यह implementation के लिए एक बेहतरीन guide है.
- code की readability और learning resource के रूप में इसकी value बढ़ाने के लिए function और variable names, तथा operations का क्रम, सावधानीपूर्वक FIPS specification के अनुसार चुना गया है.
implementation के लिए पर्याप्त polynomial और linear algebra
- specification अपेक्षाकृत सीमित mathematical background मांगती है, लेकिन implementer के काम को आसान बनाने के लिए 'Kyber implementation के लिए पर्याप्त polynomial और linear algebra' लिखा गया.
- बाकी हिस्सा पाठक के लिए exercise के रूप में छोड़ा गया है, जिसमें 1) prime 3329 के लिए modular arithmetic, 2) [0, 3329) से [0, 2ᵈ) तक compression और decompression functions का concrete implementation, 3) constant-time operations की guarantee शामिल है.
readability और educational value
- readability implementation के प्रमुख लक्ष्यों में से एक है, ताकि यह effective review और अगली पीढ़ी के maintainers तथा cryptography engineers के लिए educational resource की भूमिका निभा सके.
- complex functions की readability बढ़ाने के लिए कभी-कभी code को लंबा और कम reusable बनाया गया है.
testing के माध्यम से high security confidence
- यह सुनिश्चित किया गया है कि key generation, encapsulation, और decapsulation सही तरीके से हों, और 95% से अधिक test coverage बनाए रखी गई है.
- NIST और अन्य implementations से प्राप्त test vectors के साथ interoperability सुनिश्चित की गई है, और expected values से तुलना करके basic field arithmetic operations का thorough testing किया गया है.
- CCTV project के हिस्से के रूप में अन्य implementations में पुन: उपयोग किए जा सकने वाले test vectors प्रकाशित किए गए हैं.
performance
- performance प्रमुख लक्ष्य नहीं है, लेकिन package इतना तेज़ होना चाहिए कि वह व्यावहारिक रूप से उपयोगी रहे.
- ML-KEM काफ़ी तेज़ है, और यह simple implementation assembly-optimized P-256 और X25519 implementations से प्रतिस्पर्धा कर सकता है.
- performance बेहतर करने के लिए Go programming patterns का पालन किया गया है और heap allocation को कम करने जैसे प्रयास किए गए हैं.
ML-KEM implementation को Kyber v3 के रूप में उपयोग करना
- NIST ने Kyber की Round 3 submission में कुछ छोटे बदलाव किए थे.
- कुछ experimental protocols Kyber v3 (या "draft00") पर आधारित परिभाषित हैं, लेकिन इसके लिए अलग package बनाने की आवश्यकता नहीं है.
- ML-KEM का उपयोग करके shared secret K बनाया जा सकता है, और फिर Kyber shared secret बनाने के लिए अतिरिक्त key derivation लागू की जा सकती है.
GN⁺ की राय
- quantum-resistant cryptography का महत्व: quantum computing की प्रगति के साथ मौजूदा cryptography techniques के कमजोर पड़ने की संभावना है, इसलिए ML-KEM जैसी quantum-resistant cryptography technologies का development और standardization बहुत महत्वपूर्ण है.
- Go भाषा की extensibility: यह implementation Go भाषा की extensibility और flexibility दिखाता है, और cryptography library को standard library में integrate करने की योजना के कारण यह Go developer community के लिए उपयोगी resource बन सकता है.
- educational value: code की readability और educational value पर केंद्रित यह approach अगली पीढ़ी के cryptography engineers और रुचि रखने वाले developers के लिए सीखने का बड़ा resource साबित हो सकती है.
1 टिप्पणियां
Hacker News टिप्पणियाँ
quantum computing की मौजूदा स्थिति पर सवाल
Kudelski Security की ओर से अभिवादन और साझा अनुभव
Go भाषा में लागू cryptographic systems पर एक किताब की सिफारिश
दूसरी भाषाओं (Java, C# आदि) में implementations के बारे में सवाल
Go भाषा में लिखी pure implementation को लेकर चिंता
Kyber v3 support को लेकर रुचि और सवाल
32-bit system call table पर मज़ाक
Unicode variable names के इस्तेमाल पर पसंद
FiloSottile के दूसरे प्रोजेक्ट की तारीफ़
NIST FIPS 203 दस्तावेज़ का लिंक साझा