इस पेज पर, AVF के सामान्य इस्तेमाल के उदाहरण दिए गए हैं.
आइसोलेट किया गया कंपाइलेशन
सुरक्षित वर्चुअल मशीन (वीएम), सॉफ़्टवेयर की मदद से सुरक्षित किए गए एनक्लेव के तौर पर काम करती है. यह सुरक्षा से जुड़े संवेदनशील कोड को कंपाइल करने के लिए, सुरक्षित एनवायरमेंट उपलब्ध कराती है.
इस एनवायरमेंट की मदद से, bootclasspath और सिस्टम सर्वर JAR को कंपाइल करने की प्रोसेस को, रीबूट से पहले ही पूरा किया जा सकता है. यह प्रोसेस, APEX अपडेट ट्रिगर होने पर, बूट के दौरान शुरू होती है. साथ ही, APEX अपडेट के बाद, बूट होने में लगने वाला समय भी काफ़ी कम हो जाता है.
इसे com.android.compos APEX में लागू किया गया है. यह
कॉम्पोनेंट ज़रूरी नहीं है. इसे मेकफ़ाइल का इस्तेमाल करके जोड़ा जा सकता है.
सुरक्षा से जुड़ा लक्ष्य यह है कि पुष्टि किए गए इनपुट को सही तरीके से कंपाइल किया जाए और आउटपुट को आइसोलेट किया जाए. Android, भरोसेमंद क्लाइंट नहीं है. इसलिए, यह कंपाइलेशन के आउटपुट में किसी भी तरह का बदलाव नहीं कर सकता. हालांकि, Android, बूट के दौरान कंपाइलेशन पर वापस आने पर, कंपाइलेशन को फ़ेल कर सकता है.
वीएम में कंपाइलेशन की सेवा, कंपाइलेशन के दौरान कोई गड़बड़ी न होने पर ही सिग्नेचर जनरेट करती है. Android, सिग्नेचर की पुष्टि करने के लिए, वीएम से सार्वजनिक कुंजी वापस पा सकता है.
वीएम की कुंजी, वीएम के DICE प्रोफ़ाइल से जनरेट की जाती है. इसे वीएम में माउंट किए गए APEX और APK के साथ-साथ, वीएम के अन्य पैरामीटर से तय किया जाता है. जैसे, डीबग करने की सुविधा.
यह पता लगाने के लिए कि सार्वजनिक कुंजी, किसी अनचाही वीएम से तो नहीं है, Android, वीएम को बूट करता है. इससे यह पता चलता है कि कुंजी सही है या नहीं. हर APEX अपडेट के बाद, वीएम को बूट के दौरान ही बूट किया जाता है.
सुरक्षित वीएम के वेरिफ़ाइड बूट की मदद से, कंपाइलेशन की सेवा सिर्फ़ पुष्टि किए गए कोड को चलाती है. इसलिए, कोड सिर्फ़ उन इनपुट को स्वीकार कर सकता है जो कुछ शर्तों को पूरा करते हैं. उदाहरण के लिए, सिर्फ़ उस इनपुट फ़ाइल को स्वीकार करें जिसका नाम और fs-verity डाइजेस्ट, अनुमति वाली सूची में तय किया गया हो.
वीएम से दिखने वाले सभी एपीआई, हमले की जगह होते हैं. यह मान लिया जाता है कि सभी इनपुट फ़ाइलें और पैरामीटर, भरोसेमंद क्लाइंट से नहीं हैं. इसलिए, प्रोसेस करने से पहले, इनकी पुष्टि और जांच की जानी चाहिए.
इनपुट और आउटपुट फ़ाइल की इंटिग्रिटी की पुष्टि, वीएम करता है. फ़ाइलें, Android पर भरोसेमंद फ़ाइल सर्वर के तौर पर सेव की जाती हैं. इसके लिए, यह तरीका अपनाया जाता है:
fs-verityएल्गोरिदम का इस्तेमाल करके, इनपुट फ़ाइल के कॉन्टेंट की पुष्टि की जानी चाहिए. किसी इनपुट फ़ाइल को वीएम में उपलब्ध कराने के लिए, उसका रूट हैश, कंटेनर (APK) में दिया जाना चाहिए. यह कंटेनर, वीएम की DICE प्रोफ़ाइल में योगदान देता है. भरोसेमंद रूट हैश की मदद से, हमलावर का पता लगाए बिना, इनपुट में छेड़छाड़ नहीं की जा सकती.- वीएम में, आउटपुट फ़ाइल की इंटिग्रिटी बनाए रखनी चाहिए. अगर कोई आउटपुट फ़ाइल, Android पर सेव की जाती है, तब भी जनरेट करने के दौरान,
fs-verityट्री फ़ॉर्मैट की मदद से इंटिग्रिटी बनाए रखी जाती है. हालांकि, इसे डाइनैमिक तरीके से अपडेट किया जा सकता है. फ़ाइनल आउटपुट फ़ाइल की पहचान, रूट हैश से की जा सकती है. यह वीएम में आइसोलेट होता है. वीएम में मौजूद सेवा, सिग्नेचर की मदद से आउटपुट फ़ाइलों को सुरक्षित रखती है.
Linux डेवलपमेंट एनवायरमेंट
Android, अब तक ऐसा मुख्य ऑपरेटिंग सिस्टम रहा है जिस पर उपयोगकर्ता, प्लैटफ़ॉर्म पर ही ऐप्लिकेशन डेवलप नहीं कर सकते. Linux डेवलपमेंट एनवायरमेंट की शुरुआत के साथ, हमारा लक्ष्य है कि हम डेवलपर के तौर पर काम करने वाले Android उपयोगकर्ताओं को, Linux पर आधारित डेवलपमेंट एनवायरमेंट उपलब्ध कराएं. आने वाले समय में, हम इस कोशिश को और आगे बढ़ाना चाहते हैं, ताकि हमारे पार्टनर, वीएम के नए इस्तेमाल के उदाहरण लागू कर सकें. जैसे, ग्राफ़िकल यूज़र इंटरफ़ेस वाले ऐप्लिकेशन और गेम चलाना.
Linux डेवलपमेंट एनवायरमेंट, चुनिंदा डिवाइसों पर उपलब्ध है. यह सुरक्षित नहीं की गई वर्चुअल मशीन में चलता है.
इसका हाई-लेवल फ़्लो इस तरह है:
- Linux डेवलपमेंट एनवायरमेंट का इस्तेमाल करने के लिए, डेवलपर के लिए सेटिंग और टूल की सुविधा चालू करें.
- डेवलपर के लिए सेटिंग और टूल की सुविधा चालू करने के बाद, Terminal ऐप्लिकेशन आपके होम लॉन्चर पर दिखता है.
- अपने होम लॉन्चर से, Terminal ऐप्लिकेशन लॉन्च करें.
- ज़रूरत पड़ने पर, Terminal ऐप्लिकेशन, Play से ओएस इमेज डाउनलोड करता है.
- Terminal ऐप्लिकेशन, वर्चुअल मशीन (वीएम) बनाने के लिए, Android वर्चुअलाइज़ेशन फ़्रेमवर्क (एवीएफ़) का इस्तेमाल करता है.
- इसके बाद, एवीएफ़, ओएस इमेज के साथ वीएम को चलाता है.
- वर्चुअल मशीन, इमेज से ओएस को बूट करती है.
- वीएम के बूट होने के बाद, Terminal ऐप्लिकेशन में मौजूद WebView, वर्चुअल मशीन में मौजूद वेब सेवा से कनेक्ट होता है. यह सेवा, एचटीटीपी पर टर्मिनल ऐक्सेस उपलब्ध कराती है.
- कमांड डालकर और ऐप्लिकेशन में आउटपुट देखकर, टर्मिनल के साथ इंटरैक्ट किया जा सकता है.
Linux वीएम के हाई-लेवल कॉम्पोनेंट इस तरह हैं:
- Terminal ऐप्लिकेशन: यह एक Android ऐप्लिकेशन है, जो टर्मिनल इंटरफ़ेस उपलब्ध कराता है. यह इंटरैक्शन के लिए, वीएम में चल रही वेब सेवा से कनेक्ट होने के लिए, WebView का इस्तेमाल करता है. यह ऐप्लिकेशन, डिफ़ॉल्ट रूप से बंद होता है. इसे डेवलपर के लिए सेटिंग और टूल में जाकर चालू करें.
- Android वर्चुअलाइज़ेशन फ़्रेमवर्क (एवीएफ़): यह वीएम बनाने और मैनेज करने के लिए, Android का मौजूदा सबसिस्टम है. इस सुविधा के लिए, कस्टम ओएस इमेज के साथ काम करने के लिए, इसमें बहुत कम बदलाव करने की ज़रूरत होती है.
- वर्चुअल मशीन: यह एक वीएम है जिसे एवीएफ़ जनरेट करता है. यह टर्मिनल सेवा को होस्ट करता है. एवीएफ़, इसे खास तौर पर Terminal ऐप्लिकेशन की सुविधाओं के लिए बनाता है.
- ओएस इमेज: यह अपस्ट्रीम Debian से मिली, Debian पर आधारित ओएस इमेज है. इसमें थोड़ा बदलाव किया गया है. Terminal ऐप्लिकेशन, इस इमेज को Google के किसी बाहरी सर्वर से डाउनलोड करता है. यह वीएम के ऑपरेशन के लिए आधार के तौर पर काम करता है.
- गेस्ट एजेंट: यह वीएम में मौजूद नया सॉफ़्टवेयर है. यह ओएस की स्थिति के बारे में एवीएफ़ को रिपोर्ट करता है और वर्चुअल मशीन को कंट्रोल करने की सुविधा देता है.
- ttyd: यह वीएम में चलने वाला ओपन-सोर्स सॉफ़्टवेयर है, जो एचटीटीपी पर टर्मिनल इम्यूलेशन लागू करता है. Terminal ऐप्लिकेशन का WebView, इससे कनेक्ट होता है.
- टेदरिंग मैनेजर: यह Android का मौजूदा सबसिस्टम है. यह वीएम को Android पर चलने वाले डिवाइस से टेदर करके, वर्चुअल मशीन को नेटवर्क ऐक्सेस उपलब्ध कराता है.
डिवाइस पर कॉन्टेंट की सुरक्षा की सुविधा
उपयोगकर्ता के डिवाइस पर कॉन्टेंट की सुरक्षा की सुविधा, निजता बनाए रखने से जुड़ा कॉन्टेंट की सुरक्षा का एक समाधान है. इसे डिवाइस पर कॉन्टेंट की सुरक्षा की सुविधा देने वाली टीम ने बनाया है. यह 1P/3P डिवाइसों पर, Google के अलग-अलग प्रॉडक्ट के लिए, कॉन्टेंट की सुरक्षा के हिसाब से कैटगरी तय करता है. साथ ही, 100 करोड़ से ज़्यादा उपयोगकर्ताओं को आपत्तिजनक कॉन्टेंट से बचाता है. इसके लिए, उपयोगकर्ता का डेटा Google के सर्वर पर वापस भेजने की ज़रूरत नहीं होती. इसे Private Compute Core (पीसीसी) के सिद्धांतों के मुताबिक डिज़ाइन किया गया है, ताकि क्लाइंट और वर्चुअल मशीन (वीएम) के बीच, पारदर्शी और निजता बनाए रखने वाला कम्यूनिकेशन पक्का किया जा सके. साथ ही, उपयोगकर्ता के डेटा को बाहर जाने से रोका जा सके. इसका इस्तेमाल, डिवाइसों पर आपत्तिजनक कॉन्टेंट का पता लगाने की सुविधा चालू करने के लिए किया जा सकता है, जैसे Play Protect की रीयल-टाइम में खतरों की पहचान करने की सुविधा.
इस उदाहरण में, सिस्टम, Play Protect की रीयल-टाइम में खतरों की पहचान करने की सुविधा के लिए, अपने मॉडल की कैटगरी तय करने के लिए, सुरक्षित वर्चुअल मशीनों का इस्तेमाल करता है. इससे, इसके मॉडल और सुरक्षा की सुविधाओं की सुरक्षा काफ़ी बढ़ जाती है. इससे, रूट किए गए डिवाइसों पर भी, हमलावरों को रिवर्स इंजीनियरिंग और छेड़छाड़ करने से रोका जा सकता है. ऐसा इसलिए, क्योंकि इसमें सिर्फ़ अनुमति वाले कोड को चलाने की पुष्टि की जाती है. साथ ही, इसके ऑपरेशन, बाहरी प्रोसेस से छिपे होते हैं.
इसके हाई-लेवल फ़्लो इस तरह हैं:
- रीयल-टाइम में खतरों की पहचान करने की सुविधा, वीएम को शुरू करने के लिए, Private Compute Services को पिंग करती है. Private Compute Services, पीसीसी और क्लाउड सर्वर के बीच, निजता को ध्यान में रखकर काम करने वाला इंटरमीडियरी है
- Private Compute Services, वीएम को शुरू करता है और वीएम से उसकी सार्वजनिक कुंजी हासिल करता है
- Private Compute Services, वीएम का मालिकाना हक, Play Protect की रीयल-टाइम में खतरों की पहचान करने की सुविधा को सौंपता है
- Private Compute Services, सर्वर को एटेस्टेशन और सार्वजनिक कुंजी भेजता है
- सर्वर, एटेस्टेशन की पुष्टि करता है और वीएम की सार्वजनिक कुंजी से सुरक्षा को एन्क्रिप्ट करता है
- इसके बाद, सर्वर, एन्क्रिप्ट की गई सुरक्षा को डिवाइस पर वापस भेजता है
- इसके बाद, उपयोगकर्ता के डिवाइस पर रीयल-टाइम में खतरों की पहचान करने की सुविधा, वीएम में एन्क्रिप्ट की गई सुरक्षा का इस्तेमाल कर सकती है. वीएम ही ऐसी इकाई है जिसके पास निजी कुंजी होती है. इसकी मदद से, सुरक्षा को डिक्रिप्ट किया जा सकता है
इसके हाई-लेवल कॉम्पोनेंट इस तरह हैं:
- सर्वर: वीएम को एन्क्रिप्ट की गई सुरक्षा को एन्क्रिप्ट और डिलीवर करना
- Private Compute Services: इसका इस्तेमाल, वीएम को शुरू करने और वीएम के साथ कम्यूनिकेशन को मैनेज करने के लिए किया जाता है. साथ ही, यह पारदर्शिता दिखाता है कि उपयोगकर्ता का कोई भी डेटा, Astrea के ज़रिए सर्वर पर नहीं जा रहा है
- Play Protect की रीयल-टाइम में खतरों की पहचान करने की सुविधा:
- इसमें, उपयोगकर्ता के डिवाइस पर कॉन्टेंट की सुरक्षा की सुविधा से मिले मॉडल क्लासिफ़ायर शामिल होते हैं और उनका इस्तेमाल किया जाता है
- यह वीएम का मालिकाना हक स्वीकार करता है और कैटगरी तय करने के लिए, इसे अपने पास रखता है
- यह ज़रूरत के हिसाब से, वीएम को शुरू और बंद करता है.
ओईएम
कोई ओईएम, AVF का इस्तेमाल, कस्टम इस्तेमाल के उदाहरणों के लिए कर सकता है. उदाहरण के लिए, OPPO, AVF का इस्तेमाल, इसके एआई प्राइवेट कंप्यूटिंग स्पेस को चालू करने के लिए करता है. इस स्पेस का पहला ऐप्लिकेशन, वर्चुअल मशीन में चल रहे ऐप्लिकेशन क्लाइंट के लिए, उपयोगकर्ता के डिवाइस पर जोखिम कंट्रोल करने का समाधान उपलब्ध कराता है. सिस्टम, गैरकानूनी गतिविधियों से होने वाले खतरों से बचाता है. साथ ही, अलग-अलग तरह के खतरों से सुरक्षा उपलब्ध कराता है.