वितरित प्रणालियों में डेटा का सार्थक नियंत्रण।
Oak एक सॉफ़्टवेयर प्लेटफ़ॉर्म है जो वितरित प्रणालियों (distributed systems) के निर्माण के लिए है, जो सिस्टम व्यवहारों के बारे में बाहरी रूप से सत्यापन योग्य (या मिथ्यापनीय) दावे पारदर्शी तरीके से प्रदान करता है।
Oak ऐसे बिल्डिंग ब्लॉक्स प्रदान करता है जिनका उपयोग Enclave Applications बनाने के लिए किया जाता है, अर्थात् ऐसे अनुप्रयोग जो उस होस्ट से पृथक (isolated) होते हैं जिस पर वे चलते हैं, और दूरस्थ रूप से प्रमाणित (remotely attestable) होते हैं।
इस दस्तावेज़ में हम विषम (heterogeneous) "नोड्स" से बनी वितरित प्रणालियों पर ध्यान केंद्रित करते हैं; एक नोड एक सर्वर (जैसे निजी डेटा सेंटर, सार्वजनिक क्लाउड प्रदाता, आदि) पर चलने वाला Enclave Application हो सकता है, क्लाइंट डिवाइस (जैसे फ़ोन, लैपटॉप) पर चलने वाला एक सामान्य अनुप्रयोग हो सकता है, एक सामान्य HTTP या gRPC सेवा हो सकता है, एक स्टोरेज सिस्टम हो सकता है, आदि। जब दो नोड्स एक-दूसरे से बात करते हैं, तो उनमें से कोई एक या दोनों Enclave Applications हो सकते हैं। दो नोड्स के बीच प्रत्येक अंतःक्रिया के लिए, हम उन्हें "initiator" और "responder" कहते हैं। हम इन भूमिकाओं के लिए "client" और "server" शब्दों से बचते हैं, क्योंकि कुछ मामलों में "initiator" नोड वास्तव में एक "server" पर चल रहा हो सकता है - सभी संयोजन संभव हैं।
Oak वितरित प्रणाली में एक Enclave Application स्वयं को अन्य नोड्स के सामने दूरस्थ रूप से प्रमाणित कर सकता है: इसमें अपनी स्वयं की सॉफ़्टवेयर और हार्डवेयर पहचान का प्रमाण प्रदान करना शामिल है, जो स्थानीय क्रिप्टोग्राफ़िक कुंजियों (tamper-proof हार्डवेयर में संग्रहीत, यह गारंटी देते हुए कि कुंजियाँ चुराई या प्रतिलिपि नहीं की जा सकतीं) से बंधा होता है, और अंततः उस नोड के होस्ट पर उपलब्ध एक या अधिक सॉफ़्टवेयर या हार्डवेयर रूट्स ऑफ़ ट्रस्ट द्वारा हस्ताक्षरित होता है। एक Enclave Application की सॉफ़्टवेयर पहचान में उन निष्पादन योग्य बाइनरीज़ के माप (अर्थात् डाइजेस्ट / हैश) शामिल होते हैं जो इसमें योगदान करते हैं, साथ ही अतिरिक्त डेटा (जैसे कॉन्फ़िगरेशन) भी शामिल होता है।
Oak Enclave Applications के लिए हार्डवेयर रूट ऑफ़ ट्रस्ट के रूप में VM-आधारित Trusted Execution Environments (TEEs) (जैसे AMD SEV-SNP, Intel TDX) पर ध्यान केंद्रित करता है। यह एक Enclave Application को TEE में हार्डवेयर-बद्ध कुंजियों द्वारा हस्ताक्षरित एक दूरस्थ प्रमाणन रिपोर्ट प्रदान करने की अनुमति देता है, जो सेवा प्रदाता के लिए सुलभ नहीं हैं। ये कुंजियाँ अंततः TEE निर्माता (जैसे AMD, Intel) में निहित होती हैं; यह उस नोड के सेवा प्रदाता पर भरोसा करने की आवश्यकता को कम करता है (आदर्श रूप से, हटा देता है) ताकि उसके प्रमाण को मान्य किया जा सके, भरोसे को कई गैर-मिलीभगत करने वाले अभिनेताओं में वितरित करके।
स्टार्टअप पर, प्रत्येक Enclave Application एक स्थानीय कुंजी युग्म उत्पन्न करता है, और सार्वजनिक कुंजी को अपने स्वयं के प्रमाण से बांधता है। जब कोई नोड किसी Enclave Application के साथ संवाद करने का इरादा रखता है (initiator या responder के रूप में), तो दोनों नोड्स के बीच एक एंड-टू-एंड एन्क्रिप्टेड चैनल स्थापित किया जाता है। चैनल स्थापना के भाग के रूप में, प्रत्येक नोड दूसरे नोड को अपना स्वयं का प्रमाण (यदि कोई हो) भी प्रदान करता है, और डेटा का आदान-प्रदान करने का निर्णय लेने से पहले, दूसरे नोड द्वारा प्रदान किए गए प्रमाण का उपयोग उसकी विश्वसनीयता स्थापित करने के लिए कर सकता है।
यह एन्क्रिप्टेड और प्रमाणित चैनल प्रदान करता है:
एक Enclave Application के हमले की सतह (attack surface) और Trusted Computing Base (TCB) को न्यूनतम करने के लिए, Oak एक विभाजित आर्किटेक्चर को प्रोत्साहित करता है:
Enclave Application: ओपन सोर्स कोड से (पुनरुत्पादन योग्य रूप से) बनाया गया एक बाइनरी, जो TEE के अंदर चलता है। Enclave Application के पास attestation evidence से बंधी डिक्रिप्शन कुंजियों तक पहुँच होती है; यह अन्य नोड्स से आने वाले अनुरोधों को डिक्रिप्ट करता है, उन्हें प्रोसेस करता है, प्रतिक्रियाओं को एन्क्रिप्ट करता है और उन्हें संचार चैनल के माध्यम से वापस भेजता है। यही वह बाइनरी है जो बाहरी रूप से सत्यापन योग्य दावों से जुड़ी होती है। किसी अन्य बाइनरी के पास आने वाले अनुरोधों तक सादे टेक्स्ट में पहुँच नहीं होती।
Host Application: एक बाइनरी जो होस्ट (अविश्वसनीय) सर्वर वातावरण पर चलती है और Enclave Application के लिए फ्रंट-एंड का काम करती है; यह एक gRPC एंडपॉइंट उजागर करती है जो अन्य नोड्स द्वारा बाहरी रूप से पहुँच योग्य होता है। यह बाइनरी केवल एन्क्रिप्टेड डेटा को संभालती है; इसका मुख्य कार्य TEE में Enclave Application का एक इंस्टेंस बनाना और बनाए रखना, तथा Enclave Application तक और वहाँ से एन्क्रिप्टेड डेटा अग्रेषित करना है। इसमें स्वामित्व वाला (proprietary) लॉजिक भी हो सकता है जो कंट्रोल प्लेन या अन्य आंतरिक सिस्टम के साथ इंटरैक्ट करने के लिए आवश्यक हो, जो सेवा प्रदाता के इंफ्रास्ट्रक्चर पर चलने के लिए जरूरी हों।
इस आर्किटेक्चर का अर्थ है कि सेवा प्रदाता Enclave Application बाइनरी को किसी भिन्न (संभावित रूप से दुर्भावनापूर्ण) बाइनरी से बिना पकड़े गए बदल नहीं सकेगा। यदि सेवा प्रदाता Enclave Application में कोई बैकडोर डालना चाहे, तो उसे बाइनरी पर हस्ताक्षर करके Transparent Release प्रक्रिया के माध्यम से एक सत्यापन योग्य लॉग में प्रकाशित करना होगा, जिससे वह बैकडोर बाहरी प्रेक्षकों के लिए अपरिवर्तनीय रूप से दृश्यमान हो जाएगा।
Oak का एक मानक उपयोग गोपनीयता-संरक्षण करने वाले sealed computing अनुप्रयोगों का निर्माण करना है।
एक sealed computing अनुप्रयोग में, एक नोड (आमतौर पर एक क्लाइंट डिवाइस) डेटा को एक enclave application (आमतौर पर एक सर्वर) को भेजता है, जो डेटा को इस प्रकार प्रोसेस करता है कि enclave application को होस्ट करने वाला सेवा प्रदाता गणना के इनपुट, आउटपुट या साइड इफेक्ट्स को देख नहीं सकता।
निम्नलिखित एक सरलीकृत आर्किटेक्चरल आरेख है।
Oak TEE के भीतर दो प्रकार के ऑपरेटिंग सिस्टम का समर्थन करता है, जिन पर Enclave Applications तैनात की जा सकती हैं: