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