मेश नेटवर्क की स्थिति और प्रॉविज़निंग

एसडीवी बूट मोड यह तय करता है कि एसडीवी वीएम में मौजूद एसडीवी सर्विस डिस्कवरी एजेंट, सुरक्षित मेश बनाने के लिए, अन्य एसडीवी वीएम में चल रहे सर्विस डिस्कवरी एजेंट से कनेक्ट करने की कोशिश करते समय कैसा व्यवहार करता है. यह Android वेरिफ़ाइड बूट में मौजूद, डिवाइस की स्थिति के मौजूदा कॉन्सेप्ट जैसा है.

एसडीवी बूट मोड का इस्तेमाल, वीइकल वीएम ट्रस्ट स्टोर (वीवीएम ट्रस्ट स्टोर) को प्रोविज़निंग या अपडेट करते समय किया जाता है. इसे vvmtruststore भी कहा जाता है.

एसडीवी सुरक्षित मेश का व्यवहार

सर्विस डिस्कवरी मेश, बूट वैल्यू के आधार पर इनमें से किसी एक स्थिति में होता है: Normal, Warning या Fatal.

ग्राहकों को डिलीवर की गई गाड़ियों में, एसडीवी सुरक्षित मेश Normal स्थिति में होना चाहिए. मेश को Normal से Warning स्थिति में लाने के लिए, डाइग्नोस्टिक्स की मदद लेनी पड़ती है. प्रोडक्शन एनवायरमेंट (उदाहरण के लिए, डेवलपमेंट या डीबग करने के लिए नहीं) में, Warning स्थिति सिर्फ़ प्रोविज़निंग के दौरान होती है.

Fatal एक बुनियादी गड़बड़ी है. यह Android बूटलोडर में, system_ext इमेज के सिग्नेचर की पुष्टि न हो पाने जैसी होती है. अगर एसडीवी सुरक्षित मेश, सिर्फ़ ओवर-द-एयर (OTA) अपडेट की वजह से Normal से Fatal स्थिति में बदलता है, तो अपडेट को खराब माना जाता है. साथ ही, मेश वापस Normal के ओरिजनल वर्शन पर आ जाता है.

यहां दिए गए सेक्शन में, स्थितियों के बारे में ज़्यादा जानकारी दी गई है.

Normal

  • सर्विस डिस्कवरी के हिसाब से, सिस्टम बूट SECURE है.
  • सर्विस डिस्कवरी, सिर्फ़ उन पीयर से कनेक्ट होती है जो सुरक्षित तरीके से बूट हुए हैं. सुरक्षित तरीके से बूट हुए पीयर का मतलब है कि एसडीवी सुरक्षित मेश भी सुरक्षित है.

Warning

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

Fatal

  • सिस्टम बूट के चरणों के दौरान, कोई गंभीर गड़बड़ी हुई है.
  • कम से कम एक बुनियादी गड़बड़ी या समस्या है, जिसकी वजह से सर्विस डिस्कवरी एजेंट, मेश नहीं बना पा रहा है. स्थानीय सेवाएं, रिमोट सेवाओं से बात नहीं कर सकतीं.
  • सर्विस डिस्कवरी के हिसाब से, सिस्टम बूट UNSECURE है.

एसडीवी बूट मोड

एसडीवी बूट मोड की दो वैल्यू हो सकती हैं: LOCKED और UNLOCKED. सर्विस डिस्कवरी मेश बनाने के लिए, LOCKED का मतलब है कि पुष्टि में होने वाली गड़बड़ियां गंभीर हैं. वहीं, UNLOCKED का मतलब है कि वे गंभीर नहीं हैं.

शर्त एसडीवी बूट मोड
UNLOCKED LOCKED
स्थानीय वीवीएम ट्रस्ट स्टोर खाली है Warning Fatal
स्थानीय DICE चेन मौजूद नहीं है Fatal Fatal
स्थानीय DICE चेन की पुष्टि नहीं हो पाई Warning Fatal
स्थानीय एसडीवी और AVB मोड एक जैसे हैं स्थानीय एसडीवी और AVB मोड एक जैसे हैं में मौजूद टेबल देखें
रिमोट डिवाइस मोड वैल्यू की तुलना रिमोट डिवाइस मोड वैल्यू की तुलना में मौजूद टेबल देखें
रिमोट uds_pubs मैच नहीं हो पाया Warning Fatal
DICE की नीतियों का इस्तेमाल करके, रिमोट DICE चेन की पुष्टि नहीं हो पाई (using DICE policies) Warning Fatal
रिमोट ऑथेंटिकेशन हैंडशेक नहीं हो पाया Fatal Fatal

स्थानीय एसडीवी और AVB मोड एक जैसे हैं

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

AVB मोड x एसडीवी बूट मोड एसडीवी बूट मोड
UNLOCKED LOCKED
AVB LOCKED हरा Warning Normal
पीला Fatal Fatal
AVB UNLOCKED Orange Warning Fatal

डिवाइस मोड वैल्यू

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

enum DeviceMode {
  NotConfigured = 0,
  Recovery = 1,
  Debug = 2,
  Normal = 3,
}

एल्गोरिदम

डिवाइस मोड वैल्यू का हिसाब लगाने का एल्गोरिदम इस तरह है:

  1. deviceMode को DeviceMode::Normal के तौर पर तय करें.
  2. diceChainList को, किसी एसडीवी वीएम से जुड़ी DICE चेन की सूची के तौर पर तय करें.
  3. diceChainList में मौजूद हर diceChain के लिए:
    1. cdiList को, diceChain में मौजूद सीडीआई सर्टिफ़िकेट की सूची के तौर पर तय करें:
    2. cdiList में मौजूद हर cdiCert के लिए:
      1. cdiDeviceMode को, cdiCert.mode से जुड़े DeviceMode के तौर पर तय करें.
      2. deviceMode को min(deviceMode, cdiDeviceMode) पर सेट करें.
  4. deviceMode को वापस पाएं.

रिमोट डिवाइस मोड वैल्यू की तुलना

सर्विस डिस्कवरी एजेंट, सिर्फ़ उन एजेंट से कनेक्ट होता है जिनकी डिवाइस मोड वैल्यू एक जैसी होती है.

डिवाइस मोड वैल्यू से यह पक्का होता है कि मेश में, सुरक्षा से जुड़ी अलग-अलग प्रॉपर्टी वाले सदस्य न हों. इससे बनने वाले मेश में, सभी सदस्यों के लिए सुरक्षा की स्थिति एक जैसी होती है.

डिवाइस मोड वैल्यू रिमोट
कोई विकल्प तय नहीं किया गया है डीबग रिकवरी नॉर्मल
स्थानीय कोई विकल्प तय नहीं किया गया है Fatal Fatal Fatal Fatal
डीबग Fatal Warning Fatal Fatal
रिकवरी Fatal Fatal Warning Fatal
नॉर्मल Fatal Fatal Fatal Normal

फ़ैक्ट्री प्रोविज़निंग फ़्लो

यह गाड़ी की असेंबली लाइन पर होने वाला प्रोविज़निंग फ़्लो है. इसमें यह माना जाता है कि पब्लिक की इन्फ़्रास्ट्रक्चर उपलब्ध नहीं है. यह फ़्लो, वन-टाइम-प्रोग्रामेबल (ओटीपी) मेमोरी में सेव की गई 32 बाइट की वैल्यू पर निर्भर करता है. इसे वीइकल वीएम (वीवीएम) फ़ैक्ट्री ट्रस्ट या vvmfactorytrust कहा जाता है. सेट होने पर, यह वैल्यू कर्नल को androidboot.sdv.vvmfactorytrust नाम के पैरामीटर के तौर पर पास की जाती है.

किसी ईसीयू में मौजूद सभी वीएम के लिए, एसडीवी बूट मोड और वीवीएम फ़ैक्ट्री ट्रस्ट एक जैसा होना चाहिए.

प्रारंभिक स्थिति

शुरुआत में, सभी ईसीयू एसडीवी बूट मोड में UNLOCKED मोड में होते हैं, इनमें खाली वीवीएम फ़ैक्ट्री ट्रस्ट और वीइकल वीएम ट्रस्ट स्टोर होता है, हालांकि, uds_certs पर मौजूद vvmtruststore को छोड़कर. पहली इमेज में एक उदाहरण दिखाया गया है, जिसमें तीन एसडीवी वीएम (वीएम-ए, वीएम-बी, और वीएम-सी) दो अलग-अलग ईसीयू (ईसीयू-0 और ईसीयू-1) में डिस्ट्रिब्यूट किए गए हैं:

फ़ैक्ट्री प्रोविज़निंग का उदाहरण, शुरुआती स्थिति

पहली इमेज. फ़ैक्ट्री प्रोविज़निंग, शुरुआती स्थिति.

पहला चरण: sdv_provisioning_tool चलाना

सभी ईसीयू से सभी वीएम बूट करें.

हर वीएम पर, sdv_provisioning_tool चलाएं.

  1. यह टूल, स्थानीय सर्विस डिस्कवरी एजेंट से कम्यूनिकेट करता है और उसके इस सिग्नल का इंतज़ार करता है कि एसडीवी सुरक्षित मेश पूरा हो गया है. साथ ही, एजेंट ने यूडीएस की सार्वजनिक कुंजियों की सूची को /vvmtruststore/uds_pubs में लिख दिया है.
  2. ऐसा होने पर, टूल, /vvmtruststore/uds_pubs के हैश को वापस पाता है और उसे आउटपुट करता है.

फ़ैक्ट्री प्रोविज़निंग, पहला चरण

दूसरी इमेज. फ़ैक्ट्री प्रोविज़निंग, पहला चरण.

दूसरा चरण: वीवीएम फ़ैक्ट्री ट्रस्ट लिखना

हर ईसीयू के एक वीएम पर:

  1. पिछले चरण में sdv_provisioning_tool से मिले /vvmtruststore/uds_pubs के हैश को वीवीएम फ़ैक्ट्री ट्रस्ट में लिखें. यह काम कैसे किया जाता है, यह ओईएम या वेंडर के हिसाब से अलग-अलग होता है. साथ ही, यह इस स्पेसिफ़िकेशन के दायरे से बाहर है.

फ़ैक्ट्री प्रोविज़निंग, दूसरा चरण

तीसरी इमेज. फ़ैक्ट्री प्रोविज़निंग, दूसरा चरण.

तीसरा चरण: एसडीवी बूट मोड में रीबूट करना, लॉक किया गया

सभी ईसीयू में मौजूद सभी वीएम को एसडीवी बूट मोड में LOCKED मोड में रीबूट करें.

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

ईसीयू को एक साथ प्रोविज़न किया गया था. इसलिए, ये हमेशा के लिए एक-दूसरे से जुड़े होते हैं. साथ ही, DICE चेन की पुष्टि के हिसाब से, इन्हें हार्डवेयर का एक हिस्सा माना जा सकता है.

फ़ैक्ट्री प्रोविज़निंग, तीसरा चरण

चौथी इमेज. फ़ैक्ट्री प्रोविज़निंग, तीसरा चरण.

पुर्ज़े बदलने का फ़्लो

यह, कार की मरम्मत करने वाली वर्कशॉप या गैराज में होने वाला प्रोविज़निंग फ़्लो है. इसमें खराब ईसीयू को नए, बिना प्रोविज़न किए गए ईसीयू से बदलना होता है.

यह फ़्लो, यूडीएस सर्टिफ़िकेट पर निर्भर करता है. ये सर्टिफ़िकेट, vvmconfig में बताई गई रूट अथॉरिटी सीधे तौर पर या इंटरमीडिएट अथॉरिटी की किसी चेन के ज़रिए जारी करती है.

प्रारंभिक स्थिति

सभी वीएम को पहले से ही फ़ैक्ट्री प्रोविज़न किया गया है. साथ ही, ये एसडीवी बूट मोड में LOCKED मोड में चल रहे हैं.

पांचवी इमेज में एक उदाहरण दिखाया गया है, जिसमें ईसीयू-0 में गड़बड़ी है और इसे बदलने की ज़रूरत है:

पुर्ज़े बदलने की सुविधा, शुरुआती स्थिति

पांचवी इमेज. पुर्ज़े बदलना, शुरुआती स्थिति.

पहला चरण: नया ईसीयू इंस्टॉल करना

नया ईसीयू इंस्टॉल करें. यह खाली है और इसे प्रोविज़न नहीं किया गया है.

छठी इमेज में, जब ईसीयू-2 (बदला गया ईसीयू) चालू होता है, तब दो अलग-अलग एसडीवी सुरक्षित मेश होते हैं: एक Warning स्थिति में और दूसरा Normal स्थिति में. दोनों एसडीवी सुरक्षित मेश पूरे नहीं हैं.

पुर्ज़े बदलने की सुविधा, पहला चरण

छठी इमेज. पुर्ज़े बदलना, पहला चरण.

दूसरा चरण: एसडीवी बूट मोड में रीबूट करना, अनलॉक किया गया

सभी ईसीयू के सभी वीएम को एसडीवी बूट मोड में UNLOCKED मोड में रीबूट करें.

सातवीं इमेज में, वीएम-बी और वीएम-सी, Warning एसडीवी सुरक्षित मेश में शामिल होते हैं. यह मेश पूरा हो गया है.

पुर्ज़े बदलना, दूसरा चरण

सातवीं इमेज. पुर्ज़े बदलना, दूसरा चरण.

तीसरा चरण: sdv_provisioning_tool चलाना

हर वीएम पर, sdv_provisioning_tool चलाएं.

यह टूल, स्थानीय सर्विस डिस्कवरी एजेंट से कम्यूनिकेट करता है और उसके इस सिग्नल का इंतज़ार करता है कि एसडीवी सुरक्षित मेश पूरा हो गया है. साथ ही, एजेंट ने यूडीएस की सार्वजनिक कुंजियों की सूची को /vvmtruststore/uds_pubs में लिख दिया है.

ऐसा होने पर, टूल, /vvmtruststore/uds_pubs के हैश को वापस पाता है और उसे आउटपुट करता है. हालांकि, इस फ़्लो में इस हैश का इस्तेमाल नहीं किया जाता.

पुर्ज़े बदलने की प्रोसेस का तीसरा चरण

आठवीं इमेज. पुर्ज़े बदलना, तीसरा चरण.

चौथा चरण: यूडीएस सर्टिफ़िकेट इंस्टॉल करना

  • किसी भी एसडीवी वीएम से /vvmtruststore/uds_pubs एक्सट्रैक्ट करें. इससे कोई फ़र्क़ नहीं पड़ता कि कौनसे एसडीवी वीएम से एक्सट्रैक्ट किया गया है, क्योंकि यह एक ही एसडीवी सुरक्षित मेश में मौजूद सभी वीएम के लिए एक जैसा होता है.
  • उस /vvmtruststore/uds_pubs में दी गई यूडीएस की सभी सार्वजनिक कुंजियों के लिए, प्रोविज़निंग सर्टिफ़िकेट वापस पाएं.
    • इस चरण में आम तौर पर, एक्सट्रैक्ट की गई यूडीएस की सार्वजनिक कुंजियों (या /vvmtruststore/uds_pubs फ़ाइल) को किसी रिमोट प्रोविज़निंग सर्वर पर भेजा जाता है. सर्वर, पहले से मौजूद सर्टिफ़िकेट वापस पाता है या ईसीयू के मैन्युफ़ैक्चरिंग के दौरान बनाए गए, यूडीएस की सार्वजनिक कुंजियों के डेटाबेस के हिसाब से, नई कुंजियां जनरेट करता है.
  • हर एसडीवी वीएम का /vvmtruststore/uds_certs लिखें.

पुर्ज़े बदलना, चौथा चरण

नौवीं इमेज. पुर्ज़े बदलना, चौथा चरण.

पांचवा चरण: एसडीवी बूट मोड में रीबूट करना, लॉक किया गया

सभी वीएम को एसडीवी बूट मोड में LOCKED मोड में रीबूट करें.

अगर एसडीवी सुरक्षित मेश पूरा नहीं हुआ है, तो दूसरे चरण पर वापस जाएं.

पुर्ज़े बदलना, पांचवां चरण

दसवीं इमेज. पुर्ज़े बदलना, पांचवा चरण.