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

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

जब कोई डिवाइस चालू होता है, तो बूटलोडर सबसे पहले यह जांच करता है कि डिवाइस LOCKED है या UNLOCKED. अगर कोई डिवाइस UNLOCKED है, तो बूटलोडर उपयोगकर्ता को चेतावनी दिखाता है. इसके बाद, भरोसेमंद रूट से साइन न किए गए ओएस को भी बूट कर देता है.

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

डिवाइस की स्थिति बदलना

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

जब कोई उपयोगकर्ता इस्तेमाल किया गया डेवलपमेंट डिवाइस खरीदता है, तो UNLOCKED से LOCKED पर ट्रांज़िशन होने की उम्मीद की जाती है. डिवाइस को लॉक करने के बाद, उपयोगकर्ता को भरोसा होना चाहिए कि डिवाइस, डिवाइस बनाने वाली कंपनी की ओर से तय की गई स्थिति में है. ऐसा तब तक होगा, जब तक कोई चेतावनी न दिखे. LOCKED से UNLOCKED पर ट्रांज़िशन तब होता है, जब डेवलपर को डिवाइस पर पुष्टि करने की सुविधा को, डेवलपमेंट के मकसद से बंद करना हो.

रूट ऑफ़ ट्रस्ट

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

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

उपयोगकर्ता के सेट किए जा सकने वाले रूट ऑफ़ ट्रस्ट

डिवाइसों पर, उपयोगकर्ता को भरोसे का रूट कॉन्फ़िगर करने की अनुमति दी जा सकती है. उदाहरण के लिए, सार्वजनिक कुंजी. डिवाइसों में, डिफ़ॉल्ट रूप से मौजूद रूट ऑफ़ ट्रस्ट के अलावा, उपयोगकर्ता के सेट किए जा सकने वाले रूट ऑफ़ ट्रस्ट का इस्तेमाल किया जा सकता है. Google Pixel डिवाइसों में, पुष्टि किए गए बूट के लिए ऐसा किया जाता है.

अगर उपयोगकर्ता के सेट किए जा सकने वाले रूट ऑफ़ ट्रस्ट को लागू किया जाता है, तो इसे इस तरह से लागू किया जाना चाहिए कि:

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

उपयोगकर्ता के सेट किए जा सकने वाले रूट ऑफ़ ट्रस्ट को लागू करने का एक तरीका यह है कि एक वर्चुअल partition बनाया जाए. इसे सिर्फ़ तब फ़्लैश या मिटाया जा सकता है, जब डिवाइस 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