इस दस्तावेज़ में AVF के लिए सामान्य उपयोग के मामले हैं।
पृथक संकलन
एक सॉफ्टवेयर-सुरक्षित एन्क्लेव के रूप में, एक संरक्षित वीएम सुरक्षा-संवेदनशील कोड संकलित करने के लिए एक सुरक्षित वातावरण प्रदान करता है। यह वातावरण bootclasspath
और सिस्टम सर्वर JARs (एपेक्स अपडेट द्वारा ट्रिगर) के संकलन को शुरुआती बूट से रीबूट करने से पहले स्थानांतरित करने की अनुमति देता है, और एपेक्स अपडेट बूट समय के बाद काफी कम करता है।
कार्यान्वयन com.android.compos
एपेक्स में है। यह घटक वैकल्पिक है और इसे मेकफ़ाइल का उपयोग करके शामिल किया जा सकता है।
सुरक्षा लक्ष्य सत्य रूप से सत्यापित इनपुट को संकलित करना और अलग-अलग आउटपुट का उत्पादन करना है; एक अविश्वसनीय क्लाइंट के रूप में एंड्रॉइड संकलन आउटपुट को विफल होने के अलावा किसी भी तरह से बदल नहीं सकता है (जब एंड्रॉइड बूट समय संकलन पर वापस आ जाता है)।
VM में संकलन सेवा केवल तभी हस्ताक्षर उत्पन्न करती है जब संपूर्ण संकलन के दौरान कोई त्रुटि न हो। Android हस्ताक्षर सत्यापन के लिए VM से सार्वजनिक कुंजी प्राप्त कर सकता है।
VM की कुंजी VM के DICE प्रोफ़ाइल से उत्पन्न होती है, जिसे APEX और APK द्वारा परिभाषित किया जाता है, जो VM पर माउंट किया जाता है, अन्य VM मापदंडों के अलावा, जैसे कि डिबगेबिलिटी।
यह निर्धारित करने के लिए कि क्या सार्वजनिक कुंजी किसी अनपेक्षित VM से नहीं है, Android VM को यह निर्धारित करने के लिए बूट करता है कि कुंजी सही है या नहीं। प्रत्येक एपेक्स अपडेट के बाद वीएम को शुरुआती बूट पर बूट किया जाता है।
संरक्षित वीएम के सत्यापित बूट के साथ, संकलन सेवा केवल सत्यापित कोड चलाती है। इसलिए कोड केवल उन इनपुट को स्वीकार करने के लिए निर्धारित कर सकता है जो कुछ शर्तों को पूरा करते हैं, उदाहरण के लिए, एक इनपुट फ़ाइल को केवल तभी स्वीकार करें जहां उसका नाम और fs-verity
verity डाइजेस्ट एक अनुमत सूची में परिभाषित किया गया हो।
वीएम से कोई भी उजागर एपीआई हमले की सतह हैं। सभी इनपुट फाइलों और मापदंडों को एक अविश्वसनीय क्लाइंट से माना जाता है, और प्रसंस्करण से पहले सत्यापित और सत्यापित किया जाना चाहिए।
इनपुट/आउटपुट फ़ाइल अखंडता को VM द्वारा सत्यापित किया जाता है, Android पर एक अविश्वसनीय फ़ाइल सर्वर के रूप में संग्रहीत फ़ाइलों के साथ, निम्नानुसार है:
- किसी इनपुट फ़ाइल की सामग्री को
fs-verity
एल्गोरिथम का उपयोग करने से पहले सत्यापित किया जाना चाहिए। VM में एक इनपुट फ़ाइल उपलब्ध होने के लिए, इसका रूट हैश एक कंटेनर (APK) में प्रदान किया जाना चाहिए जो VM के DICE प्रोफाइल में योगदान देता है। विश्वसनीय रूट हैश के साथ, एक हमलावर बिना पता लगाए इनपुट के साथ छेड़छाड़ नहीं कर सकता है। - VM में आउटपुट फ़ाइल की सत्यनिष्ठा बनाए रखी जानी चाहिए। भले ही आउटपुट फ़ाइल एंड्रॉइड पर संग्रहीत हो, पीढ़ी के दौरान, अखंडता को उसी
fs-verity
ट्री प्रारूप के साथ बनाए रखा जाता है, लेकिन इसे गतिशील रूप से अपडेट किया जा सकता है। अंतिम आउटपुट फ़ाइल को रूट हैश से पहचाना जा सकता है, जिसे VM में अलग किया जाता है। VM में सेवा हस्ताक्षर द्वारा आउटपुट फ़ाइलों की सुरक्षा करती है।