उपयोग के उदाहरण

इस दस्तावेज़ में, AVF के इस्तेमाल के सामान्य उदाहरण दिए गए हैं.

अलग-अलग कॉन्टेंट का कंपाइलेशन

सुरक्षित सॉफ़्टवेयर एन्क्लेव के तौर पर, सुरक्षित वीएम, सुरक्षा से जुड़े संवेदनशील कोड को संकलित करने के लिए सुरक्षित माहौल उपलब्ध कराता है. इस एनवायरमेंट की मदद से, bootclasspath और सिस्टम सर्वर JAR (APEX अपडेट से ट्रिगर होने वाले) के कंपाइलेशन को, रिबूट से पहले के समय से, रिबूट से पहले के समय पर ले जाया जा सकता है. साथ ही, APEX अपडेट के बाद रिबूट होने में लगने वाले समय को काफ़ी कम किया जा सकता है.

इसे com.android.compos APEX में लागू किया गया है. यह कॉम्पोनेंट ज़रूरी नहीं है. इसे makefile का इस्तेमाल करके शामिल किया जा सकता है.

अलग-अलग कॉन्टेंट का कंपाइलेशन

पहली इमेज. मेनलाइन अपडेट पर JAR कंपाइल करना

सुरक्षा का लक्ष्य, पुष्टि किए गए इनपुट को सही तरीके से कंपाइल करना और आउटपुट को अलग से निकालना है. गैर-भरोसेमंद क्लाइंट के तौर पर Android, कंपाइलेशन आउटपुट में गड़बड़ी होने (जब Android बूट टाइम कंपाइलेशन पर वापस जाता है) के अलावा, किसी दूसरे तरीके से उसमें बदलाव नहीं कर सकता.

VM में कंपाइलेशन सेवा, सिर्फ़ तब हस्ताक्षर जनरेट करती है, जब पूरे कंपाइलेशन के दौरान कोई गड़बड़ी न हो. Android, सिग्नेचर की पुष्टि करने के लिए, VM से सार्वजनिक पासकोड हासिल कर सकता है.

VM की कुंजी, VM की DICE प्रोफ़ाइल से जनरेट होती है. इसे VM में माउंट किए गए APEX और APK के साथ-साथ, VM के अन्य पैरामीटर से तय किया जाता है. जैसे, डीबग करने की सुविधा.

यह पता लगाने के लिए कि सार्वजनिक पासकोड किसी गलत वीएम से नहीं है, Android उसे चालू करके यह तय करता है कि की सही है या नहीं. हर APEX अपडेट के बाद, VM को जल्दी बूट किया जाता है.

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

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

इनपुट/आउटपुट फ़ाइल की इंटिग्रिटी की पुष्टि, VM करता है. इसके लिए, Android पर सेव की गई फ़ाइलों को गैर-भरोसेमंद फ़ाइल सर्वर के तौर पर इस्तेमाल किया जाता है. इसकी पुष्टि इस तरह की जाती है:

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