Formally Verifying Noir Zero Knowledge Programs with NAVe
यह शोध पत्र NAVe प्रस्तुत करता है, जो एक ओपन-सोर्स फॉर्मल वेरिफायर है जो उनके ACIR इंटरमीडिएट रिप्रेजेंटेशन को फाइनाइट फील्ड पॉलीनोमियल इक्वेशन्स में अनुवादित करके Noir ज़ीरो-नॉलेज प्रोग्राम्स की शुद्धता और उचित बाधाओं को औपचारिक रूप से सत्यापित करने के लिए SMT-LIB और cvc5 सॉल्वर का उपयोग करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक उच्च-सुरक्षा वाली तिजोरी (vault) बना रहे हैं। आप बैंक मैनेजर को यह साबित करना चाहते हैं कि आप तिजोरी का संयोजन (combination) जानते हैं, बिना उसे वास्तव में बताए कि वह संयोजन क्या है। यही जीरो-नॉलेज (Zero-Knowledge - ZK) प्रूफ का जादू है।
हालाँकि, इन तिजोरियों को बनाना कठिन है। इन प्रमाणों के लिए "ब्लूप्रिंट" जटिल गणितीय पहेलियाँ हैं जिन्हें अरिथमेटिक सर्किट (arithmetic circuits) कहा जाता है। यदि ब्लूप्रिंट की एक भी रेखा गलत है, तो तिजोरी असुरक्षित हो सकती है, या प्रमाण विफल हो सकता है।
यह शोध पत्र NAVe (नॉर एसिर वेरीफायर - Noir Acir Verifier) नामक एक नया टूल पेश करता है, जिसे इन ब्लूप्रिंट्स में त्रुटियों की जाँच करने के लिए डिज़ाइन किया गया है। यह कैसे काम करता है, यहाँ सरल भाषा में समझाया गया है:
1. समस्या: "गुप्त रेसिपी" बनाम "कुकबुक"
लेखक Noir नामक एक प्रोग्रामिंग भाषा पर ध्यान केंद्रित करते हैं। Noir को एक उच्च-स्तरीय कुकबुक (रसोई की किताब) के रूप में समझें जो इन तिजोरियों के लिए रेसिपी लिखना आसान बनाती है।
- रसोइया (डेवलपर): यह आसान-से-पठनीय Noir में एक रेसिपी लिखता है।
- अनुवादक (कंपाइलर): उस रेसिपी को एक सख्त, निम्न-स्तरीय निर्देश मैनुअल में बदल देता है जिसे ACIR कहा जाता है। यह मैनुअल गणितीय समीकरणों की एक सूची है जिसे कंप्यूटर को यह सिद्ध करने के लिए हल करना होता है कि तिजोरी सुरक्षित है।
- खतरा: कभी-कभी, अनुवादक कोई गलती कर देता है, या रसोइया कोई महत्वपूर्ण चरण शामिल करना भूल जाता है। ZK की दुनिया में, इसे "अंडर-कंस्ट्रेंड" (under-constrained) होना कहा जाता है। यह एक ऐसी रेसिपी लिखने जैसा है जिसमें लिखा है "नमक डालें" लेकिन यह भूल जाना कि कितना डालना है। परिणाम खाने योग्य तो हो सकता है, लेकिन यह वह व्यंजन नहीं है जिसे आप बनाना चाहते थे।
2. समाधान: "गणित का जासूस" (NAVe)
लेखकों ने NAVe बनाया है, जो एक औपचारिक सत्यापनकर्ता (formal verifier) है। NAVe को एक सुपर-स्मार्ट गणितीय जासूस के रूप में समझें जो निम्न-स्तरीय निर्देश मैनुअल (ACIR) को पढ़ता है और जाँचता है कि क्या गणित वास्तव में वैसा ही है जैसा रसोइया चाहता था।
NAVe एक शक्तिशाली लॉजिक इंजन (जिसे SMT सॉल्वर कहा जाता है) का उपयोग करके ऐसे प्रश्न पूछता है:
- "यदि मैं एक गुप्त संख्या डालूँ, तो क्या गणित हमेशा सही सार्वजनिक प्रमाण देगा?"
- "क्या किसी नकली संख्या से सिस्टम को धोखा देने का कोई तरीका है?"
यदि गणित टूटा हुआ है, तो NAVe केवल "त्रुटि" (Error) नहीं कहता। यह एक जासूस की तरह सुराग ढूँढता है: यह डेवलपर को दिखाता है कि उन्होंने कौन सी संख्या का उपयोग करके सिस्टम को तोड़ दिया होगा। इससे उन्हें तुरंत ब्लूप्रिंट ठीक करने में मदद मिलती है।
3. पहेली सुलझाने के दो तरीके
शोध पत्र में NAVe द्वारा गणितीय पहेलियों को हल करने के दो अलग-अलग तरीकों का वर्णन किया गया है:
- पूर्णांक का तरीका (The Integer Way): यह संख्याओं को नियमित पूर्ण संख्याओं (1, 2, 3...) की तरह मानता है और मानक अंकगणितीय नियमों का उपयोग करके गणित की जाँच करता है।
- फाइनाइट फील्ड का तरीका (The Finite Field Way): यह संख्याओं को इस तरह मानता है जैसे वे एक गोलाकार घड़ी पर हों (जहाँ एक निश्चित संख्या के बाद, वे वापस शून्य पर आ जाती हैं)। इसी तरह वास्तविक ZK प्रमाण काम करते हैं।
लेखकों ने पाया कि दोनों में से कोई भी विधि हर स्थिति के लिए पूर्ण नहीं है। कभी-कभी "पूर्णांक" जासूस तेज़ होता है; अन्य समय में, "फाइनाइट फील्ड" जासूस बेहतर होता है। वे सर्वोत्तम परिणाम प्राप्त करने के लिए दोनों जासूसों का एक साथ उपयोग करने का सुझाव देते हैं।
4. "अनकंस्ट्रेंड" (Unconstrained) जाल
Noir की एक अनूठी विशेषता "अनकंस्ट्रेंड कोड" है। कल्पना कीजिए कि रेसिपी का एक हिस्सा जहाँ शेफ को बिना जाँच के सामग्री का अनुमान लगाने की अनुमति है। यह गति के लिए उपयोगी है, लेकिन खतरनाक भी है यदि शेफ गलत अनुमान लगा ले।
- जोखिम: एक डेवलपर ऐसा कोड लिख सकता है जो दिखने में ऐसा लगता है कि वह सामग्रियों की जाँच कर रहा है, लेकिन क्योंकि वह "अनकंस्ट्रेंड" अनुभाग में है, कंप्यूटर वास्तव में जाँच को लागू नहीं करता है।
- NAVe का काम: NAVe विशेष रूप से इन "घोस्ट चेक्स" (ghost checks) को खोजता है। यह सत्यापित करता है कि भले ही डेवलपर "अनुमान लगाने" वाले अनुभाग का उपयोग करता है, फिर भी उन्होंने यह सुनिश्चित करने के लिए एक अलग, सख्त नियम (
assert) जोड़ा है कि अनुमान वास्तव में सही था।
5. उन्होंने क्या पाया
लेखकों ने NAVe का परीक्षण मौजूदा विभिन्न Noir प्रोग्रामों पर किया:
- यह काम करता है: NAVe ने उन प्रोग्रामों में त्रुटियों को सफलतापूर्वक पकड़ा जहाँ गणित इरादे से मेल नहीं खाता था।
- बाधा (The Bottleneck): उन्होंने पाया कि "रेंज कंस्ट्रेंट्स" (यह सुनिश्चित करना कि एक संख्या विशिष्ट बिट्स की सीमा के भीतर है, जैसे कि संख्या 0 और 255 के बीच है) की जाँच करना गणितीय जासूस के लिए बहुत कठिन है। इसमें कभी-कभी बहुत समय लगता है या यह अटक जाता है।
- भविकी: वे इन कठिन पहेलियों को तेज़ी से हल करने में मदद करने के लिए बेहतर "शॉर्टकट" (एब्स्ट्रैक्शन) बनाने की योजना बना रहे हैं।
सारांश
संक्षेप में, NAVe गोपनीयता-संरक्षण अनुप्रयोगों (privacy-preserving applications) बनाने वाले डेवलपर्स के लिए एक सुरक्षा जाल है। यह उनके कोड को एक सख्त गणितीय भाषा में अनुवादित करता है और यह सुनिश्चित करने के लिए एक शक्तिशाली सॉल्वर का उपयोग करता है कि कोड बिल्कुल वही करता है जिसका वह दावा करता है, जिससे उन सूक्ष्म बगों को पकड़ा जा सके जो सुरक्षा विफलताओं का कारण बन सकते हैं। यह एक कठोर निरीक्षक की तरह है जो किसी के भी पुल पर गाड़ी चलाने की अनुमति देने से पहले उसकी संरचनात्मक अखंडता की जाँच करता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।