सुरक्षा

पीवीएम के अंदर मनमाने ढंग से पेलोड चलाने से रोकने के लिए, एंड्रॉइड वर्चुअलाइजेशन फ्रेमवर्क (एवीएफ) एक स्तरित सुरक्षा दृष्टिकोण का उपयोग करता है जिसमें प्रत्येक परत अतिरिक्त प्रवर्तन जोड़ती है। AVF सुरक्षा परतों की सूची निम्नलिखित है:

  • एंड्रॉइड यह सुनिश्चित करता है कि केवल पीवीएम अनुमतियों वाले ऐप्स को ही पीवीएम बनाने या निरीक्षण करने की अनुमति है।

  • बूटलोडर - बूटलोडर यह सुनिश्चित करता है कि केवल Google या डिवाइस विक्रेताओं द्वारा हस्ताक्षरित पीवीएम छवियों को बूट करने की अनुमति है और एंड्रॉइड सत्यापित बूट प्रक्रिया का सम्मान करता है। इस आर्किटेक्चर का तात्पर्य है कि पीवीएम चलाने वाले ऐप्स अपने स्वयं के कर्नेल को बंडल नहीं कर सकते हैं।

  • pVM में चलने वाले पेलोड के लिए pVM गहन सुरक्षा प्रदान करता है, जैसे SELinux के साथ। डिफेंस-इन-डेप्थ डेटा को निष्पादन योग्य के रूप में मैप करने की अनुमति नहीं देता है ( neverallow execmem ) और यह सुनिश्चित करता है कि W^X सभी फ़ाइल प्रकारों के लिए है।

सुरक्षा मॉडल

गोपनीयता, अखंडता और उपलब्धता (सीआईए त्रय), सूचना सुरक्षा नीतियों का मार्गदर्शन करने के लिए डिज़ाइन किया गया एक मॉडल बनाते हैं:

  • गोपनीयता नियमों का एक समूह है जो जानकारी तक पहुंच को सीमित करता है।
  • सत्यनिष्ठा यह आश्वासन है कि जानकारी विश्वसनीय और सटीक है।
  • उपलब्धता अधिकृत संस्थाओं द्वारा जानकारी तक विश्वसनीय पहुंच की गारंटी है।

गोपनीयता और अखंडता

गोपनीयता pKVM हाइपरवाइजर द्वारा लागू मेमोरी आइसोलेशन गुणों से उत्पन्न होती है। पीकेवीएम व्यक्तिगत भौतिक मेमोरी पेजों की मेमोरी स्वामित्व और साझा किए जाने वाले पेजों के मालिकों के किसी भी अनुरोध को ट्रैक करता है। पीकेवीएम यह सुनिश्चित करता है कि केवल हकदार पीवीएम (होस्ट और गेस्ट) के पास दिए गए पेज को उनके चरण 2 पेज टेबल में मैप किया गया है जो हाइपरवाइजर द्वारा नियंत्रित होते हैं। यह आर्किटेक्चर यह सुनिश्चित करता है कि पीवीएम के स्वामित्व वाली मेमोरी की सामग्री तब तक निजी रहती है जब तक कि मालिक इसे स्पष्ट रूप से किसी अन्य पीवीएम के साथ साझा नहीं करता है।

गोपनीयता बनाए रखने के लिए प्रतिबंध सिस्टम में किसी भी इकाई पर भी लागू होते हैं जो पीवीएम की ओर से मेमोरी एक्सेस करते हैं, अर्थात् डीएमए-सक्षम डिवाइस और अधिक विशेषाधिकार प्राप्त परतों में चलने वाली सेवाएं । सिस्टम-ऑन-चिप (SoC) विक्रेताओं को pKVM का समर्थन करने से पहले आवश्यकताओं के एक नए सेट को पूरा करना होगा। यदि नहीं, तो गोपनीयता प्रदान नहीं की जा सकती.

अखंडता स्मृति और गणना में डेटा पर लागू होती है। pVM नहीं कर सकते:

  • सहमति के बिना एक-दूसरे की स्मृति को संशोधित करें।
  • एक दूसरे की सीपीयू स्थिति को प्रभावित करें।

इन आवश्यकताओं को हाइपरवाइज़र द्वारा लागू किया जाता है। हालाँकि, डेटा अखंडता से संबंधित समस्याएं वर्चुअल डेटा स्टोरेज के साथ भी उत्पन्न होती हैं, जब अन्य समाधान लागू किए जाने चाहिए, जैसे कि डीएम-वेरिटी या ऑथएफएस।

ये सिद्धांत लिनक्स द्वारा प्रस्तावित प्रक्रिया अलगाव से अलग नहीं हैं जहां मेमोरी पेजों तक पहुंच को चरण 1 पेज टेबल और प्रक्रियाओं के बीच कर्नेल संदर्भ-स्विच के साथ नियंत्रित किया जाता है। हालाँकि, पीकेवीएम का ईएल2 भाग, जो इन गुणों को लागू करता है, पूरे लिनक्स कर्नेल (कोड की लगभग 10 हजार बनाम 20 मिलियन लाइनों) की तुलना में लगभग आधी हमले की सतह है और इसलिए उन मामलों का उपयोग करने के लिए मजबूत आश्वासन प्रदान करता है जो भरोसा करने के लिए बहुत संवेदनशील हैं। प्रक्रिया अलगाव पर.

इसके आकार को देखते हुए, एक पीकेवीएम औपचारिक सत्यापन के लिए उपयुक्त है। हम सक्रिय रूप से अकादमिक अनुसंधान का समर्थन कर रहे हैं, जिसका उद्देश्य वास्तविक पीकेवीएम बाइनरी पर इन गुणों को औपचारिक रूप से साबित करना है।

इस पृष्ठ का शेष भाग गोपनीयता और अखंडता की गारंटी को संबोधित करता है जो पीकेवीएम के आसपास प्रत्येक घटक प्रदान करता है।

सूत्र

पीकेवीएम एक केवीएम-आधारित हाइपरविजर है जो पीवीएम और एंड्रॉइड को पारस्परिक रूप से अविश्वसनीय निष्पादन वातावरण में अलग करता है। होस्ट सहित किसी भी पीवीएम के भीतर समझौता होने की स्थिति में ये गुण मौजूद रहते हैं। एवीएफ का अनुपालन करने वाले वैकल्पिक हाइपरवाइज़र को समान गुण प्रदान करने की आवश्यकता होती है।

  • एक पीवीएम किसी अन्य इकाई से संबंधित पेज तक नहीं पहुंच सकता है, जैसे कि पीवीएम या हाइपरवाइजर, जब तक कि पेज मालिक द्वारा स्पष्ट रूप से साझा नहीं किया जाता है। इस नियम में होस्ट पीवीएम शामिल है और यह सीपीयू और डीएमए एक्सेस दोनों पर लागू होता है।

  • पीवीएम द्वारा उपयोग किए गए पृष्ठ को होस्ट में वापस करने से पहले, जैसे कि जब पीवीएम नष्ट हो जाता है, तो इसे मिटा दिया जाता है।

  • एक डिवाइस बूट से सभी पीवीएम और पीवीएम फर्मवेयर की मेमोरी को अगले डिवाइस बूट में ओएस बूटलोडर चलने से पहले मिटा दिया जाता है।

  • जब एक हार्डवेयर डिबगर, जैसे कि एसजेटीएजी, संलग्न किया जाता है, तो एक पीवीएम अपनी पहले से तैयार की गई कुंजियों तक नहीं पहुंच सकता है।

  • यदि पीवीएम फर्मवेयर प्रारंभिक छवि को सत्यापित नहीं कर पाता है तो वह बूट नहीं होता है।

  • यदि instance.img की अखंडता से समझौता किया जाता है तो पीवीएम फर्मवेयर बूट नहीं होता है।

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

अतिथि ओएस

माइक्रोड्रॉइड एक पीवीएम के भीतर चलने वाले ओएस का एक उदाहरण है। माइक्रोड्रॉइड में एक यू-बूट-आधारित बूटलोडर, जीकेआई, और एंड्रॉइड यूजरस्पेस का एक सबसेट और एक पेलोड लॉन्चर शामिल है। होस्ट सहित किसी भी पीवीएम के भीतर समझौता होने की स्थिति में ये गुण मौजूद रहते हैं। पीवीएम में चलने वाले वैकल्पिक ओएस को समान गुण प्रदान करने चाहिए।

  • यदि boot.img , super.img , vbmeta.img , या vbmeta\_system.img सत्यापित नहीं किया जा सकता है तो माइक्रोड्रॉइड बूट नहीं होगा।

  • एपीके सत्यापन विफल होने पर माइक्रोड्रॉइड बूट नहीं होगा।

  • एपीके अपडेट होने पर भी वही माइक्रोड्रॉइड इंस्टेंस बूट नहीं होगा।

  • यदि कोई भी APEX सत्यापन में विफल रहता है तो माइक्रोड्रॉइड बूट नहीं होगा।

  • यदि instance.img अतिथि पीवीएम के बाहर संशोधित किया गया है तो माइक्रोड्रॉइड बूट नहीं होगा (या साफ प्रारंभिक स्थिति के साथ बूट होगा)।

  • माइक्रोड्रॉइड बूट श्रृंखला को सत्यापन प्रदान करता है।

  • अतिथि पीवीएम के साथ साझा की गई डिस्क छवियों में कोई भी (अहस्ताक्षरित) संशोधन पीवीएम पक्ष पर I/O त्रुटि का कारण बनता है।

  • पीवीएम इंस्टेंस को प्रदान किए गए बीसीसी और सीडीआई केवल उस विशेष इंस्टेंस द्वारा प्राप्त किए जा सकते हैं।

  • एन्क्रिप्टेड स्टोरेज वॉल्यूम पर लिखना गोपनीय होता है, हालांकि एन्क्रिप्शन ब्लॉक की ग्रैन्युलैरिटी पर कोई रोलबैक सुरक्षा नहीं होती है। इसके अलावा, डेटा ब्लॉक में अन्य मनमानी बाहरी छेड़छाड़ के कारण वह ब्लॉक स्पष्ट रूप से I/O त्रुटि के रूप में पहचाने जाने के बजाय, माइक्रोड्रॉइड के लिए कचरा के रूप में दिखाई देता है।

एंड्रॉयड

ये एंड्रॉइड द्वारा होस्ट के रूप में बनाए गए गुण हैं, लेकिन होस्ट से समझौता होने की स्थिति में ये सही नहीं हैं:

  • एक अतिथि पीवीएम अन्य अतिथि पीवीएम के साथ सीधे इंटरैक्ट नहीं कर सकता (जैसे कि vsock कनेक्शन बनाना)।

  • होस्ट पीवीएम में केवल VirtualizationService ही पीवीएम के लिए संचार चैनल बना सकती है।

  • केवल वे ऐप्स जो प्लेटफ़ॉर्म कुंजी से हस्ताक्षरित हैं, पीवीएम बनाने, स्वामित्व करने या उनके साथ इंटरैक्ट करने की अनुमति का अनुरोध कर सकते हैं।

  • होस्ट और पीवीएम के बीच vsock कनेक्शन स्थापित करने में उपयोग किया जाने वाला पहचानकर्ता, जिसे संदर्भ पहचानकर्ता (सीआईडी) कहा जाता है, होस्ट पीवीएम चलने पर पुन: उपयोग नहीं किया जाता है। उदाहरण के लिए, आप एक चालू पीवीएम को दूसरे से नहीं बदल सकते।

उपलब्धता

पीवीएम के संदर्भ में, उपलब्धता से तात्पर्य मेजबान द्वारा मेहमानों को पर्याप्त संसाधन आवंटित करने से है ताकि मेहमान वे कार्य कर सकें जिनके लिए उन्हें डिज़ाइन किया गया है।

होस्ट की जिम्मेदारियों में पीवीएम के वर्चुअल सीपीयू को शेड्यूल करना शामिल है। केवीएम, पारंपरिक टाइप-1 हाइपरवाइजर्स (जैसे ज़ेन) के विपरीत, होस्ट कर्नेल को वर्कलोड शेड्यूलिंग सौंपने के लिए स्पष्ट डिज़ाइन निर्णय लेता है। आज के शेड्यूलर्स के आकार और जटिलता को देखते हुए, यह डिज़ाइन निर्णय विश्वसनीय कंप्यूटिंग बेस (टीसीबी) के आकार को काफी कम कर देता है और होस्ट को प्रदर्शन को अनुकूलित करने के लिए अधिक सूचित शेड्यूलिंग निर्णय लेने में सक्षम बनाता है। हालाँकि, एक दुर्भावनापूर्ण होस्ट कभी भी किसी अतिथि को शेड्यूल नहीं करने का विकल्प चुन सकता है।

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

अंत में, होस्ट की वर्चुअल मशीन मॉनिटर (वीएमएम) प्रक्रिया मेमोरी आवंटित करने और नेटवर्क कार्ड जैसे वर्चुअल डिवाइस प्रदान करने के लिए जिम्मेदार है। एक दुर्भावनापूर्ण वीएमएम अतिथि से संसाधन रोक सकता है।

हालाँकि pKVM मेहमानों को उपलब्धता प्रदान नहीं करता है, लेकिन डिज़ाइन होस्ट की उपलब्धता को दुर्भावनापूर्ण मेहमानों से बचाता है क्योंकि होस्ट हमेशा किसी अतिथि को प्रीमेप्ट या समाप्त कर सकता है और अपने संसाधनों को पुनः प्राप्त कर सकता है।

सुरक्षित बूट

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

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

प्रत्येक चरण एक नियतात्मक रूप से एन्कोडेड सीबीओआर ऑब्जेक्ट को अगले चरण में सौंपता है। इस ऑब्जेक्ट में रहस्य और बीसीसी शामिल हैं, जिसमें संचित स्थिति की जानकारी शामिल है, जैसे कि क्या अंतिम चरण सुरक्षित रूप से लोड किया गया है।

अनलॉक किए गए उपकरण

जब किसी डिवाइस को fastboot oem unlock के साथ अनलॉक किया जाता है, तो उपयोगकर्ता डेटा मिटा दिया जाता है। यह प्रक्रिया उपयोगकर्ता डेटा को अनधिकृत पहुंच से बचाती है। डिवाइस अनलॉक होने पर पीवीएम के लिए निजी डेटा भी अमान्य हो जाता है।

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

दूरस्थ पार्टियाँ कुंजी सत्यापन प्रमाणपत्र में डिवाइस की सत्यापित बूट स्थिति का निरीक्षण करके इस संभावित असुरक्षित स्थिति का निरीक्षण कर सकती हैं।