इस्तेमाल के उदाहरण

इस दस्तावेज़ में AVF के लिए सामान्य उपयोग के मामले शामिल हैं।

पृथक संकलन

एक सॉफ़्टवेयर-सुरक्षित एन्क्लेव के रूप में, एक संरक्षित वीएम सुरक्षा-संवेदनशील कोड संकलित करने के लिए एक सुरक्षित वातावरण प्रदान करता है। यह वातावरण bootclasspath और सिस्टम सर्वर JARs (APEX अपडेट द्वारा ट्रिगर) के संकलन को शुरुआती बूट से रिबूट से पहले तक ले जाने की अनुमति देता है, और पोस्ट APEX अपडेट बूट समय को काफी कम कर देता है।

कार्यान्वयन com.android.compos APEX में है। यह घटक वैकल्पिक है और इसे मेकफ़ाइल का उपयोग करके शामिल किया जा सकता है।

पृथक संकलन

चित्र 1. मेनलाइन अपडेट पर JAR संकलित करना

सुरक्षा लक्ष्य सत्यतापूर्वक सत्यापित इनपुट को संकलित करना और अलगाव में आउटपुट का उत्पादन करना है; एक अविश्वसनीय क्लाइंट के रूप में एंड्रॉइड संकलन आउटपुट को विफल करने के अलावा किसी भी तरह से बदलाव नहीं कर सकता है (जब एंड्रॉइड बूट समय संकलन पर वापस आता है)।

वीएम में संकलन सेवा केवल तभी हस्ताक्षर उत्पन्न करती है जब संपूर्ण संकलन के दौरान कोई त्रुटि न हो। हस्ताक्षर सत्यापन के लिए एंड्रॉइड वीएम से सार्वजनिक कुंजी पुनः प्राप्त कर सकता है।

VM की कुंजी VM के DICE प्रोफ़ाइल से उत्पन्न होती है, जो डिबगबिलिटी जैसे अन्य VM पैरामीटरों के अलावा, VM पर माउंट किए गए APEXes और APKs द्वारा परिभाषित होती है।

यह निर्धारित करने के लिए कि क्या सार्वजनिक कुंजी किसी अप्रत्याशित वीएम से नहीं है, एंड्रॉइड यह निर्धारित करने के लिए वीएम को बूट करता है कि कुंजी सही है या नहीं। प्रत्येक APEX अपडेट के बाद VM को आरंभिक बूट पर बूट किया जाता है।

संरक्षित वीएम के सत्यापित बूट के साथ, संकलन सेवा केवल सत्यापित कोड चलाती है। इसलिए कोड केवल उन इनपुट को स्वीकार करने का निर्धारण कर सकता है जो कुछ शर्तों को पूरा करते हैं, उदाहरण के लिए, एक इनपुट फ़ाइल को केवल तभी स्वीकार करें जहां उसका नाम और fs-verity डाइजेस्ट एक अनुमति सूची में परिभाषित किया गया हो।

वीएम से कोई भी उजागर एपीआई हमले की सतह है। यह माना जाता है कि सभी इनपुट फ़ाइलें और पैरामीटर एक अविश्वसनीय क्लाइंट से आए हैं, और प्रसंस्करण से पहले उन्हें सत्यापित और पुनरीक्षित किया जाना चाहिए।

इनपुट/आउटपुट फ़ाइल अखंडता को वीएम द्वारा सत्यापित किया जाता है, एंड्रॉइड पर एक अविश्वसनीय फ़ाइल सर्वर के रूप में संग्रहीत फ़ाइलों के साथ, निम्नानुसार:

  • उपयोग से पहले इनपुट फ़ाइल की सामग्री को fs-verity एल्गोरिथ्म का उपयोग करके सत्यापित किया जाना चाहिए। वीएम में एक इनपुट फ़ाइल उपलब्ध होने के लिए, इसका रूट हैश एक कंटेनर (एपीके) में प्रदान किया जाना चाहिए जो वीएम के डीआईसीई प्रोफाइल में योगदान देता है। विश्वसनीय रूट हैश के साथ, कोई हमलावर बिना पहचाने इनपुट के साथ छेड़छाड़ नहीं कर सकता है।
  • वीएम में आउटपुट फ़ाइल की अखंडता बनाए रखी जानी चाहिए। भले ही कोई आउटपुट फ़ाइल एंड्रॉइड पर संग्रहीत हो, पीढ़ी के दौरान, अखंडता को उसी fs-verity ट्री प्रारूप के साथ बनाए रखा जाता है लेकिन इसे गतिशील रूप से अपडेट किया जा सकता है। अंतिम आउटपुट फ़ाइल को रूट हैश से पहचाना जा सकता है, जिसे वीएम में अलग किया गया है। VM में सेवा हस्ताक्षर द्वारा आउटपुट फ़ाइलों की सुरक्षा करती है।