एसडीवी बूट मोड यह तय करता है कि एसडीवी वीएम में मौजूद एसडीवी सर्विस डिस्कवरी एजेंट, सुरक्षित मेश बनाने के लिए, अन्य एसडीवी वीएम में चल रहे सर्विस डिस्कवरी एजेंट से कनेक्ट करने की कोशिश करते समय कैसा व्यवहार करता है. यह 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,
}
एल्गोरिदम
डिवाइस मोड वैल्यू का हिसाब लगाने का एल्गोरिदम इस तरह है:
deviceModeकोDeviceMode::Normalके तौर पर तय करें.diceChainListको, किसी एसडीवी वीएम से जुड़ी DICE चेन की सूची के तौर पर तय करें.diceChainListमें मौजूद हरdiceChainके लिए:cdiListको,diceChainमें मौजूद सीडीआई सर्टिफ़िकेट की सूची के तौर पर तय करें:cdiListमें मौजूद हरcdiCertके लिए:cdiDeviceModeको,cdiCert.modeसे जुड़ेDeviceModeके तौर पर तय करें.deviceModeकोmin(deviceMode, cdiDeviceMode)पर सेट करें.
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 चलाएं.
- यह टूल, स्थानीय सर्विस डिस्कवरी एजेंट से कम्यूनिकेट करता है और उसके इस सिग्नल का इंतज़ार करता है कि एसडीवी सुरक्षित मेश पूरा हो गया है. साथ ही, एजेंट ने यूडीएस की सार्वजनिक कुंजियों की सूची को
/vvmtruststore/uds_pubsमें लिख दिया है. - ऐसा होने पर, टूल,
/vvmtruststore/uds_pubsके हैश को वापस पाता है और उसे आउटपुट करता है.
दूसरी इमेज. फ़ैक्ट्री प्रोविज़निंग, पहला चरण.
दूसरा चरण: वीवीएम फ़ैक्ट्री ट्रस्ट लिखना
हर ईसीयू के एक वीएम पर:
- पिछले चरण में
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 मोड में रीबूट करें.
अगर एसडीवी सुरक्षित मेश पूरा नहीं हुआ है, तो दूसरे चरण पर वापस जाएं.
दसवीं इमेज. पुर्ज़े बदलना, पांचवा चरण.