Bootstrapping Mutual Attestation with Kleene's Second Recursion Theorem
यह शोध पत्र क्लीने के दूसरे रिकर्सन प्रमेय (Kleene's second recursion theorem) को लागू करके उन नोड्स का निर्माण करके पारस्परिक प्रमाणीकरण (mutual attestation) के अनंत प्रतिगमन (infinite regress) को हल करता है जो केवल अंतर्निहित डेटा के माध्यम से एक-दूसरे के सटीक सोर्स कोड को पारस्परिक रूप से पुनर्गठित और सत्यापित कर सकते हैं, जिससे विभिन्न कंप्यूटिंग आर्किटेक्चरों में विश्वसनीय तीसरे पक्ष या बाहरी संदर्भ मानों की आवश्यकता समाप्त हो जाती है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
सुरक्षित कंप्यूटिंग की दुनिया में, यह सिद्ध करने की एक मौलिक आवश्यकता है कि एक कंप्यूटर प्रोग्राम बिल्कुल वही है जो वह होने का दावा करता है। यह प्रक्रिया, जिसे रिमोट अटेस्टेशन (remote attestation) कहा जाता है, एक प्रतिबंधित इमारत में प्रवेश करने से पहले सुरक्षा गार्ड द्वारा ड्राइवर लाइसेंस की जांच करने के डिजिटल समकक्ष है। गार्ड लाइसेंस पर फोटो और विवरण की तुलना एक विश्वसनीय डेटाबेस से करता है कि एक वैध लाइसेंस कैसा दिखना चाहिए। यदि विवरण मेल खाते हैं, तो व्यक्ति को अंदर जाने की अनुमति दी जाती है। डिजिटल क्षेत्र में, एक कंप्यूटर प्रोग्राम एक अद्वितीय फिंगरप्रिंट उत्पन्न करता है, जिसे 'मेजरमेंट' (measurement) कहा जाता है, जिसकी तुलना एक संदर्भ मान (reference value) से की जाती है—जो कि एक ज्ञात, अपेक्षित फिंगिरप्रिंट है जिसे सत्यापनकर्ता (verifier) के पास रखा जाता है। यह प्रणाली तब पूरी तरह से काम करती है जब एक पक्ष दूसरे की जाँच करता है, लेकिन जब दो या अधिक कंप्यूटरों को एक साथ एक-दूसरे की जाँच करने की आवश्यकता होती है, तो यह एक तार्किक दीवार से टकरा जाती है। यदि कंप्यूटर A को कंप्यूटर B के फिंगरप्रिंट को जानने की आवश्यकता है ताकि वह उसे सत्यापित कर सके, और कंप्यूटर B को कंप्यूटर A के फिंगरप्रिंट को जानने की आवश्यकता है ताकि वह उसे सत्यापित कर सके, तो दोनों में से कोई भी उस प्रक्रिया को शुरू नहीं कर सकता जिसके लिए पहले से ही उत्तर की आवश्यकता होती है। यह एक चक्रीय निर्भरता (circular dependency) पैदा करता है जहाँ प्रत्येक मशीन दूसरे द्वारा प्रदान किए जाने वाले उसी प्रमाण की प्रतीक्षा करती है जिसकी उसे शुरू करने के लिए आवश्यकता होती है।
नागोया, जापान में स्थित Acompany Co., Ltd. के शोधकर्ताओं ने एक तरीका खोजा है जिससे वे किसी केंद्रीय प्राधिकरण या पूर्व-मौजूद विश्वसनीय कोड की सूची पर निर्भर किए बिना इस चक्र को तोड़ सकते हैं। उन्होंने इस समस्या को सुरक्षा पहेली के रूप में नहीं, बल्कि तर्क और आत्म-संदर्भ (self-reference) के प्रश्न के रूप में देखा। क्लीनी के दूसरे रिकर्सन थ्योरम (Kleene's second recursion theorem) नामक एक गणितीय सिद्धांत को लागू करके, उन्होंने प्रदर्शित किया कि कंप्यूटरों का एक समूह अपने स्वयं के मेमोरी के भीतर अन्य प्रत्येक सदस्य के सटीक सोर्स कोड को रखने के लिए प्रोग्राम किया जा सकता है। यह प्रत्येक मशीन को अपने साथियों के कोड को शुरुआत से पुनर्गठित करने, ऑन-द-फ्लाई (on the fly) सही फिंगरप्रिंट की गणना करने और बिना किसी बाहरी पक्ष से उत्तर मांगे दूसरे की पहचान को सत्यापित करने की अनुमति देता है। टीम ने इस अवधारणा को सिद्ध करने के लिए कार्यशील प्रोटोटाइप बनाए, यह दिखाते हुए कि दो सुरक्षित कंप्यूटर केवल अपने साथ ले जाए गए डेटा का उपयोग करके एक-दूसरे की अखंडता को सफलतापूर्वक सत्यापित कर सकते हैं।
समस्या का मूल आधुनिक सुरक्षित वातावरण की प्रकृति में निहित है, जैसे कि ट्रस्टेड एक्जीक्यूशन एनवायरनमेंट्स (Trusted Execution Environments), जो पृथक स्थान हैं जहाँ संवेदनशील डेटा को देखे जाने या छेड़छाड़ किए जाने के डर के बिना संसाधित किया जा सकता है। एक विशिष्ट सेटअप में, एक एकल कंप्यूटर अपने भरोसेमंद होने का प्रमाण एक सर्वर को देता है। सर्वर स्वीकृत कोड फिंगरप्रिंट की एक सूची रखता है और कंप्यूटर की रिपोर्ट की तुलना उस सूची से करता है। हालाँकि, एक विकेंद्रीकृत नेटवर्क में जहाँ कई कंप्यूटरों को गोपनीय कार्यों पर सहयोग करने की आवश्यकता होती है, प्रत्येक मशीन जाँचकर्ता और जाँच जाने वाली दोनों भूमिकाओं में कार्य करती है। यदि वे अपने भागीदारों के अपेक्षित फिंगरप्रिंट को अपने स्वयं के सॉफ़्टवेयर में हार्ड-कोड करने का प्रयास करते हैं, तो वे एक अनंत लूप (infinite loop) में फंस जाते हैं। पार्टनर B के फिंगरप्रिंट को जानने के लिए, कंप्यूटर A को पार्टनर B के कोड को जानना होगा। लेकिन पार्टनर B का कोड कंप्यूटर A के फिंगरप्रिंट को समाहित करता है, जिसके लिए कंप्यूटर A के कोड को जानना आवश्यक है, जिसमें पार्टनर B का फिंगरप्रिंट शामिल है, और यह सिलसिला ऐसे ही चलता रहता है। इस दुविधा के पिछले समाधानों में फिंगरप्रिंट वितरित करने के लिए एक विश्वसनीय तीसरे पक्ष को लाना, या स्टार्टअप के समय मानों को इंजेक्ट करने के लिए विशिष्ट हार्डवेयर विशेषताओं पर निर्भर करना शामिल था। ये विधियाँ काम तो करती हैं, लेकिन वे या तो एक केंद्रीय विश्वास बिंदु को फिर से पेश करती हैं या समाधान को एक विशिष्ट प्रकार के हार्डवेयर से बांध देती हैं, जिससे उनके उपयोग की सीमा सीमित हो जाती है।
शोधकर्ताओं ने कंप्यूटरों के एक समूह को एक एकल, परस्पर जुड़े सिस्टम के रूप में मानकर एक अलग मार्ग प्रस्तावित किया। उन्होंने महसूस किया कि चक्रीय निर्भरता को तब हल किया जा सकता है जब प्रत्येक कंप्यूटर निर्देशों के एक साझा सेट से अपने साथियों का कोड उत्पन्न कर सके। कंप्यूटर विज्ञान की एक अवधारणा का उपयोग करते हुए जो एक प्रोग्राम को अपने स्वयं के सोर्स कोड को संदर्भित करने की अनुमति देती है, उन्होंने एक ऐसी विधि डिज़ाइन की जहाँ कार्यक्रमों का एक समूह स्व-निहित इकाइयों के एक सेट में बदल जाता है। प्रत्येक इकाई अपने भीतर कार्यक्रमों के पूरे परिवार का एक पूर्ण विवरण रखती है। जब एक कंप्यूटर शुरू होता है, तो वह इस आंतरिक विवरण को पढ़ता है, अपने साथी के सटीक सोर्स कोड को पुनर्गठित करता है, और फिर साथी के फिंगरप्रिंट की गणना करता है। क्योंकि पुनर्गठन अंदर से किया जाता है, इसलिए कंप्यूटर को किसी बाहरी सूची पर भरोसा करने की आवश्यकता नहीं होती; वह बस अपने पास मौजूद डेटा के आधार पर उत्तर की गणना करता है। यह दृष्टिकोण केंद्रीय प्राधिकरण की आवश्यकता को समाप्त करता है और बिना किसी अंतर्नि층 सुरक्षा टूल में बदलाव किए विभिन्न प्रकार के सुरक्षित हार्डवेयर पर काम करता है।
इस सिद्धांत को सिद्ध करने के लिए, टीम ने दो कार्यशील प्रदर्शन तैयार किए। पहला उन प्रणालियों पर केंद्रित था जो सीधे चलते हुए कोड को मापते हैं, जैसे कि मानक लिनक्स सिस्टम। उन्होंने PyReflect नामक एक टूल बनाया, जो कोड के एक टेम्पलेट को लेता है और स्वचालित रूप से स्व-संदर्भित प्रोग्राम उत्पन्न करता है। अपने परीक्षण में, एक सॉफ्टवेयर सुरक्षा मॉड्यूल द्वारा समर्थित दो वर्चुअल मशीनों ने सफलतापूर्वक सत्यापन रिपोर्ट का आदान-प्रदान किया। प्रत्येक मशीन ने दूसरे के कोड को पुनर्गठित किया, अपेक्षित फिंगरप्रिंट की गणना की, और पुष्टि की कि साथी सही सॉफ़्टवेयर चला रहा है। दूसरा प्रदर्शन उन प्रणालियों को संबोधित करता है जो एक संकलित बिल्ड आर्टिफैक्ट (compiled build artifact) को मापते हैं, जैसे कि AWS नाइट्रो एनक्लेव (AWS Nitro Enclaves), जो विशेष सुरक्षित कंटेनर हैं। यहाँ, प्रक्रिया अधिक जटिल है क्योंकि कंप्यूटर को न केवल सोर्स कोड को पुनर्गठित करना होगा, बल्कि अंतिम निष्पादन योग्य (executable) फ़ाइल को भी ठीक वैसे ही फिर से बनाना होगा जैसा कि उसे बनाया गया था। उन्होंने इसे संभालने के लिए NixReflect नामक एक टूल विकसित किया। अपने प्रयोग में, दो सुरक्षित एनक्लेव लॉन्च किए गए, और प्रत्येक ने अपने स्वयं के मेमोरी में संग्रहीत डेटा से दूसरे की पूरी इमेज को स्वतंत्र रूप से पुनर्गठित किया। इसके बाद उन्होंने पुनर्गठित इमेज के फिंगरप्रिंट की गणना की और उसकी तुलना अपने साथी द्वारा रिपोर्ट किए गए फिंगरप्रिंट से की। परिणाम पूरी तरह से मेल खा गए, जिससे सिद्ध हुआ कि मशीनें केवल अपने आंतरिक डेटा से सही संदर्भ मान प्राप्त कर सकती हैं।
शोधकर्ताओं ने इस दृष्टिकोण की लागत को भी मापा। सुरक्षित एनक्लेव के मामले में, साथी की इमेज को फिर से बनाने की प्रक्रिया में केवल कोड के हैश की गणना करने की तुलना में काफी अधिक समय लगा। उनके विशिष्ट परीक्षण मामले के लिए, पुनर्गठन और पुनर्निर्माण प्रक्रिया में लगभग 6.8 सेकंड लगे, जबकि एक साधारण हैश गणना में 0.1 सेकंड से भी कम समय लगा। यह अंतर अधिक जटिल अनुप्रयोगों के लिए बढ़ने की उम्मीद है, क्योंकि कंप्यूटर को सॉफ़्टवेयर को फिर से बनाने के लिए निर्भरताओं की पूरी श्रृंखला को पार करना पड़ता है। इस समय लागत के बावजूद, प्रयोग ने पुष्टि की कि यह विधि व्यवहार्य है और इसके लिए किसी नए हार्डवेयर या विश्वसनीय तीसरे पक्ष की आवश्यकता नहीं है। टीम ने उल्लेख किया कि अधिक जटिल प्रणालियों के लिए, तैनाती से पहले एक सुरक्षित बिल्ड एनवायरनमेंट को पुनर्निर्माण प्रक्रिया को ऑफलोड करना संभव हो सकता है, जिससे रनटाइम लागत कम हो जाएगी, हालांकि इससे बिल्ड एनवायरनमेंट के संबंध में विश्वास के एक अलग सेट की धारणाएँ उत्पन्न होंगी।
इस कार्य का महत्व इसकी क्षमता में निहित है कि यह एक ऐसे तार्किक गतिरोध (logical deadlock) को हल करता है जिसने लंबे समय से पूरी तरह से विकेंद्रीकृत सुरक्षित कंप्यूटिंग को बाधित किया है। यह दिखाकर कि स्व-निहित पुनर्गठन के माध्यम से आपसी अटेस्टेशन (mutual attestation) प्राप्त किया जा सकता है, शोधकर्ताओं ने एक ऐसे पीयर-टू-पीयर नेटवर्क के लिए मार्ग प्रशस्त किया है जहाँ किसी भी एकल इकाई पर सभी प्रतिभागियों द्वारा विश्वास नहीं किया जाता है। यह समाधान आर्किटेक्चर-स्वतंत्र है, जिसका अर्थ है कि इसे कस्टम संशोधनों की आवश्यकता के बिना विभिन्न प्रकार के सुरक्षित हार्डवेयर पर लागू किया जा सकता है। यह विशिष्ट हार्डवेयर विशेषताओं के बजाय कंप्यूटिंग के मूलभूत गुणों पर निर्भर करता है, जो इसे कॉन्फिडेंशियल कंप्यूटिंग के भविष्य के लिए एक बहुमुखी उपकरण बनाता है। हालाँकि वर्तमान प्रोटोटाइप प्रूफ-ऑफ-कॉन्सेप्ट प्रदर्शन मात्र हैं, वे यह स्थापित करते हैं कि संदर्भ-मान बूटस्ट्रैपिंग (reference-value bootstrapping) की समस्या को बिना किसी विश्वसनीय तीसरे पक्ष के हल किया जा सकता है, जो अधिक मजबूत और स्वतंत्र सुरक्षित नेटवर्क के द्वार खोलता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।