डिवाइस की स्थिति

डिवाइस स्थिति इंगित करती है कि सॉफ़्टवेयर को किसी डिवाइस पर कितनी आसानी से फ़्लैश किया जा सकता है और क्या सत्यापन लागू किया गया है। डिवाइस की स्थिति LOCKED और UNLOCKED है। LOCKED डिवाइस आपको नए सॉफ़्टवेयर को डिवाइस में फ्लैश करने से रोकते हैं, जबकि UNLOCKED डिवाइस संशोधन की अनुमति देते हैं।

जब कोई डिवाइस चालू होता है, तो बूटलोडर पहले जांचता है कि डिवाइस LOCKED है या UNLOCKED । यदि कोई डिवाइस UNLOCKED है, तो बूटलोडर उपयोगकर्ता को एक चेतावनी दिखाता है और फिर बूट करने के लिए आगे बढ़ता है, भले ही लोड किया गया ओएस ट्रस्ट के रूट द्वारा हस्ताक्षरित न हो।

यदि डिवाइस LOCKED है, तो बूटलोडर डिवाइस के सॉफ़्टवेयर को सत्यापित करने के लिए बूट को सत्यापित करने के चरणों से गुजरता है। LOCKED डिवाइस केवल तभी बूट होते हैं जब लोड किए गए ओएस पर ट्रस्ट के रूट द्वारा ठीक से हस्ताक्षर किए गए हों। अधिक विवरण के लिए, बूट प्रवाह देखें।

डिवाइस की स्थिति बदल रही है

किसी डिवाइस की स्थिति बदलने के लिए, fastboot flashing [unlock | lock] उपयोग करें fastboot flashing [unlock | lock] कमांड। उपयोगकर्ता डेटा की सुरक्षा के लिए, सभी राज्य परिवर्तन डेटा विभाजन को मिटा देते हैं और डेटा हटाने से पहले उपयोगकर्ता की पुष्टि मांगते हैं।

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

भरोसे की जड़

ट्रस्ट की जड़ क्रिप्टोग्राफ़िक कुंजी है जिसका उपयोग डिवाइस पर संग्रहीत एंड्रॉइड की कॉपी पर हस्ताक्षर करने के लिए किया जाता है। ट्रस्ट के रूट का निजी हिस्सा केवल डिवाइस निर्माता को ही पता होता है और इसका उपयोग वितरण के लिए एंड्रॉइड के हर संस्करण पर हस्ताक्षर करने के लिए किया जाता है। ट्रस्ट की जड़ का सार्वजनिक हिस्सा डिवाइस में एम्बेडेड होता है और इसे एक जगह संग्रहीत किया जाता है ताकि इसके साथ छेड़छाड़ न की जा सके (आमतौर पर रीड-ओनली स्टोरेज)।

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

उपयोगकर्ता-सेटेबल विश्वास की जड़

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

यदि उपयोगकर्ता-सेटेबल ट्रस्ट रूट लागू किया गया है, तो इसे इस तरह से किया जाना चाहिए:

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

उपयोगकर्ता-सेटेबल ट्रस्ट रूट को लागू करने का एक तरीका एक वर्चुअल विभाजन है जिसे केवल तभी फ्लैश या साफ़ किया जा सकता है जब डिवाइस UNLOCKED स्थिति में हो। Google Pixel 2 डिवाइस इस दृष्टिकोण का उपयोग करते हैं और वर्चुअल विभाजन को avb_custom_key कहा जाता है। इस विभाजन में डेटा का प्रारूप avbtool extract_public_key कमांड का आउटपुट है। उपयोगकर्ता-सेटेबल ट्रस्ट रूट को कैसे सेट करें इसका एक उदाहरण यहां दिया गया है:

avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin

उपयोगकर्ता-सेटेबल ट्रस्ट रूट को जारी करके साफ़ किया जा सकता है:

fastboot erase avb_custom_key