SDV बूट मोड से पता चलता है कि SDV वीएम में SDV सर्विस डिस्कवरी एजेंट, सुरक्षित मेश बनाने के लिए अन्य सर्विस डिस्कवरी एजेंट (अन्य SDV वीएम में चल रहे) से कनेक्ट करने की कोशिश करते समय कैसा व्यवहार करता है. यह Android वेरिफ़ाइड बूट की मौजूदा device
state सुविधा की तरह ही है. SDV बूट मोड LOCKED या UNLOCKED हो सकता है.
Vehicle VM Trust Store को चालू या अपडेट करते समय, SDV बूट मोड का इस्तेमाल किया जाता है.
SDV Secure Mesh का व्यवहार
बूट वैल्यू के आधार पर, सर्विस डिस्कवरी मेश इनमें से किसी एक स्थिति में होता है: Normal, Warning या Fatal.
कार का मालिकाना हक उसके मालिक को तब ही मिलता है, जब उसका मेश Normal
स्टेट में हो. मेश को Normal से Warning स्थिति में स्विच करने के लिए, गड़बड़ी की जांच करने की ज़रूरत होती है. प्रोडक्शन एनवायरमेंट में (उदाहरण के लिए, डेवलपमेंट या डीबगिंग नहीं), Warning स्थिति सिर्फ़ प्रोविज़निंग के दौरान होती है.
Fatal एक बुनियादी समस्या है. यह system_ext इमेज के Android बूटलोडर में हस्ताक्षर की पुष्टि न हो पाने की समस्या जैसी ही है. अगर एसडीवी मेश, ओवर-द-एयर (ओटीए) अपडेट की वजह से सिर्फ़ Normal से Fatal में बदलता है, तो अपडेट को खराब माना जाता है. साथ ही, मेश वापस Normal के ओरिजनल वर्शन पर चला जाता है.
यहां दिए गए सेक्शन में, इन स्थितियों के बारे में ज़्यादा जानकारी दी गई है.
सामान्य
- सिस्टम बूट, सर्विस डिस्कवरी के हिसाब से
SECUREहै. - Service Discovery, सिर्फ़ उन साथियों से कनेक्ट होती है जिन्होंने सुरक्षित तरीके से बूट किया है. सुरक्षित तरीके से बूट किए गए पीयर का मतलब है कि SDV Secure Mesh भी सुरक्षित है.
चेतावनी
- पुष्टि करने की कुछ सुविधाएं बंद होने की वजह से, सिस्टम बूट से समझौता किया जा सकता है.
- Service Discovery, सिर्फ़ उन साथियों से कनेक्ट होती है जिनके लिए भी पुष्टि करने की सुविधा बंद है. यह SDV Secure Mesh का हिस्सा है. इसमें सुरक्षा से जुड़ी वही प्रॉपर्टी होती हैं जो इसमें होती हैं.
- स्थानीय गड़बड़ियों या बंद की गई सुविधाओं की वजह से, पीयर बूट के सफल होने की पुष्टि नहीं की जा सकती.
- डेवलपमेंट एनवायरमेंट या स्थिति के बाहर, इसके ये मायने हैं:
- उपयोगकर्ता का डेटा उपलब्ध नहीं होना चाहिए. इसका मतलब है कि इसे न तो SDV Secure Mesh के ज़रिए ट्रांसमिट किया जाना चाहिए और न ही इस पर SDV Secure Mesh के ज़रिए किए गए कम्यूनिकेशन का असर पड़ना चाहिए.
- जब मेश इस स्थिति में हो, तब सिर्फ़ उन सेवाओं को उपलब्ध कराया जाना चाहिए जिनकी ज़रूरत प्रोविज़निंग फ़्लो के लिए होती है.
गंभीर
- सिस्टम बूट होने के दौरान गंभीर गड़बड़ी.
- कम से कम एक ऐसी बुनियादी गड़बड़ी हुई है जिसकी वजह से, सर्विस डिस्कवरी एजेंट मेश नहीं बना पा रहा है. Local services, रिमोट सेवाओं से कम्यूनिकेट नहीं कर सकतीं.
- Service Discovery के हिसाब से, सिस्टम बूट सुरक्षित नहीं है.
SDV बूट मोड
एसडीवी बूट मोड की दो वैल्यू हो सकती हैं: UNLOCKED और LOCKED. सर्विस डिस्कवरी मेश की स्थापना के लिए, LOCKED का मतलब है कि पुष्टि करने से जुड़ी गड़बड़ियां गंभीर हैं. वहीं, UNLOCKED का मतलब है कि वे गंभीर नहीं हैं.
| शर्त | SDV बूट मोड | |
|---|---|---|
UNLOCKED
| LOCKED |
|
| लोकल वीवीएम ट्रस्ट स्टोर खाली है | चेतावनी | गंभीर |
| स्थानीय DICE चेन मौजूद नहीं है | गंभीर | गंभीर |
| स्थानीय DICE चेन की पुष्टि नहीं हो सकी | चेतावनी | गंभीर |
| लोकल एसडीवी और एवीबी मोड मैच | लोकल एसडीवी और एवीबी मोड मैच में टेबल देखना | |
| रिमोट डिवाइस मोड की वैल्यू की तुलना | रिमोट डिवाइस मोड की वैल्यू की तुलना में दी गई टेबल देखें | |
रिमोट uds_pubs मैच नहीं हो सका |
चेतावनी | गंभीर |
| रिमोट DICE चेन की पुष्टि नहीं हो सकी (DICE की नीतियां इस्तेमाल करके) | चेतावनी | गंभीर |
| रिमोट ऑथेंटिकेशन हैंडशेक पूरा नहीं हो सका | गंभीर | गंभीर |
लोकल एसडीवी और एवीबी मोड मैच
यहां दी गई टेबल में बताया गया है कि AVB मोड और SDV बूट मोड से, SDV Secure Mesh के व्यवहार पर क्या असर पड़ता है. ये रंग, AVB के दस्तावेज़ के Android के लिए खास तौर पर बनाए गए इंटिग्रेशन सेक्शन में बताए गए हैं.
| AVB मोड x SDV बूट मोड | SDV बूट मोड | ||
|---|---|---|---|
UNLOCKED |
LOCKED |
||
एवीबी LOCKED |
हरा | चेतावनी | सामान्य |
| पीला | गंभीर | गंभीर | |
एवीबी UNLOCKED |
Orange | चेतावनी | गंभीर |
डिवाइस मोड की वैल्यू
DICE चेन में, हर सीडीआई सर्टिफ़िकेट की एक मोड वैल्यू होती है. इस वैल्यू से, कॉन्फ़िगरेशन इनपुट के आधार पर उस लेयर की सुरक्षा स्थिति के बारे में पता चलता है. डिवाइस पर मौजूद सभी सॉफ़्टवेयर की सुरक्षा की स्थिति बताने के लिए, डिवाइस मोड वैल्यू तय की जाती है. यह वैल्यू, किसी SDV VM (यानी कि Android HLOS और Secure World) से जुड़ी DICE चेन के सभी सीडीआई चरणों की मोड वैल्यू से मिलती है. इसे इस तरह से तय किया जाता है:
enum DeviceMode {
NotConfigured = 0,
Recovery = 1,
Debug = 2,
Normal = 3,
}
एल्गोरिदम
डिवाइस मोड वैल्यू का हिसाब लगाने का एल्गोरिदम इस तरह है:
deviceModeकोDeviceMode::Normalके तौर पर सेट करें.- SDV VM से जुड़ी DICE चेन की सूची के तौर पर
diceChainListतय करें. diceChainListमें मौजूद हरdiceChainके लिए:diceChainमें सीडीआई सर्टिफ़िकेट की सूची के तौर परcdiListडालें:cdiListमें मौजूद हरcdiCertके लिए:cdiCert.modeसे मेल खाने वालेDeviceModeके तौर परcdiDeviceModeको तय करें.deviceModeकोmin(deviceMode, cdiDeviceMode)पर सेट करें.
- वापसी की तारीख:
deviceMode.
रिमोट डिवाइस मोड की वैल्यू की तुलना
Service Discovery एजेंट, सिर्फ़ उन एजेंट से कनेक्ट होता है जिनमें डिवाइस मोड की वैल्यू एक जैसी होती है.
डिवाइस मोड की वैल्यू से यह पक्का किया जाता है कि किसी मेश में, अलग-अलग सुरक्षा प्रॉपर्टी वाले सदस्य शामिल न हों. इससे बनने वाले मेश में, सभी सदस्यों के लिए सुरक्षा से जुड़े एक जैसे नियम लागू होते हैं.
| डिवाइस मोड की वैल्यू | रिमोट | ||||
|---|---|---|---|---|---|
| कोई विकल्प तय नहीं किया गया है | डीबग | रिकवरी | सामान्य | ||
| स्थानीय | कोई विकल्प तय नहीं किया गया है | गंभीर | गंभीर | गंभीर | गंभीर |
| डीबग | गंभीर | चेतावनी | गंभीर | गंभीर | |
| रिकवरी | गंभीर | गंभीर | चेतावनी | गंभीर | |
| सामान्य | गंभीर | गंभीर | गंभीर | सामान्य | |
फ़ैक्ट्री प्रोविज़निंग फ़्लो
यह वाहन असेंबली लाइन पर प्रोविज़निंग फ़्लो है. इसमें सार्वजनिक कुंजी इंफ़्रास्ट्रक्चर उपलब्ध नहीं माना जाता है.
यह फ़्लो, एक बार प्रोग्राम की जा सकने वाली (ओटीपी) मेमोरी में सेव की गई 32 बाइट की वैल्यू पर निर्भर करता है. इसे VVMFactoryTrust कहा जाता है. इस वैल्यू को सेट करने पर, इसे कर्नल को androidboot.sdv.vvmfactorytrust नाम के पैरामीटर के तौर पर पास किया जाता है.
किसी ईसीयू में मौजूद सभी वीएम का एसडीवी बूट मोड और VVMFactoryTrust एक जैसा होना चाहिए.
प्रारंभिक स्थिति
सभी ईसीयू, शुरू में UNLOCKED मोड में एसडीवी बूट मोड में होते हैं. इनमें VVMFactoryTrust और Vehicle VM Trust Store खाली होता है. हालांकि, VVMTrustStore पर मौजूद uds_certs को छोड़कर.
इमेज 1 में एक उदाहरण दिखाया गया है. इसमें तीन SDV वीएम (वीएम-ए, वीएम-बी, और वीएम-सी) हैं. इन्हें दो अलग-अलग ईसीयू (ईसीयू-0 और ईसीयू-1) में बांटा गया है:
पहली इमेज. फ़ैक्ट्री प्रॉविज़निंग, शुरुआती स्थिति.
पहला चरण: sdv_provisioning_tool चलाएं
सभी ईसीयू से सभी वीएम बूट अप करें.
हर वीएम पर, sdv_provisioning_tool चलाएं.
- यह टूल, लोकल सर्विस डिस्कवरी एजेंट से कम्यूनिकेट करता है. साथ ही, यह तब तक इंतज़ार करता है, जब तक एजेंट यह सिग्नल नहीं देता कि SDV Secure Mesh पूरा हो गया है. इसके अलावा, एजेंट ने
/vvmtruststore/uds_pubsको यूडीएस की सार्वजनिक कुंजियों की सूची लिख दी है. - ऐसा होने पर, टूल को अभी-अभी लिखे गए
/vvmtruststore/uds_pubsका हैश मिल जाता है और वह उसे आउटपुट के तौर पर दिखाता है.
दूसरी इमेज. फ़ैक्ट्री प्रोविज़निंग, पहला चरण.
दूसरा चरण: VVMFactoryTrust लिखें
हर ईसीयू के एक वीएम पर:
- पिछले चरण में
sdv_provisioning_toolसे मिले/vvmtruststore/uds_pubsके हैश को VVMFactoryTrust में लिखें. यह जानकारी लिखने का तरीका, ओईएम या वेंडर के हिसाब से अलग-अलग होता है. यह इस स्पेसिफ़िकेशन के दायरे से बाहर है.
तीसरी इमेज. फ़ैक्ट्री प्रोविज़निंग, दूसरा चरण.
तीसरा चरण: SDV बूट मोड लॉक में रीबूट करें
LOCKED मोड में, SDV बूट मोड में मौजूद सभी ईसीयू में सभी वीएम को रीबूट करें.
Service Discovery एजेंट, ईसीयू में मौजूद वीएम पर भरोसा करता है. ऐसा इसलिए, क्योंकि uds_pubs में दी गई यूडीएस की सार्वजनिक कुंजियों से, इस फ़ाइल का हैश VVMFactoryTrust से मेल खाता है.
ईसीयू को एक साथ प्रोविज़न किया गया था. इसलिए, ये हमेशा के लिए एक-दूसरे से जुड़े होते हैं. साथ ही, DICE चेन की पुष्टि करने के नज़रिए से, इन्हें एक ही हार्डवेयर माना जा सकता है.
चौथी इमेज. फ़ैक्ट्री प्रोविज़निंग, तीसरा चरण.
पुर्ज़े बदलने की प्रोसेस
यह कार ठीक करने की अधिकृत वर्कशॉप या गैराज में डिवाइस को चालू करने का तरीका है. यहां खराब ईसीयू को नए और चालू न किए गए ईसीयू से बदलना होता है.
यह फ़्लो, vvmconfig में बताई गई रूट अथॉरिटी की ओर से सीधे तौर पर जारी किए गए यूडीएस सर्टिफ़िकेट पर निर्भर करता है. इसके अलावा, यह इंटरमीडिएट अथॉरिटी की किसी चेन के ज़रिए, परोक्ष रूप से जारी किए गए यूडीएस सर्टिफ़िकेट पर भी निर्भर करता है.
प्रारंभिक स्थिति
सभी वर्चुअल मशीनें, फ़ैक्ट्री में पहले से ही कॉन्फ़िगर की गई हैं. साथ ही, वे LOCKED मोड में SDV बूट मोड में चल रही हैं.
पांचवें फ़िगर में एक उदाहरण दिखाया गया है, जिसमें ECU-0 ठीक से काम नहीं कर रहा है और इसे बदलने की ज़रूरत है:
पांचवीं इमेज. पुर्ज़े बदलने की शुरुआती स्थिति.
पहला चरण: नया ईसीयू इंस्टॉल करना
नई ईसीयू इंस्टॉल करें. यह खाली होती है और इसमें कोई सॉफ़्टवेयर नहीं होता.
इमेज 6 में, जब ECU-2 (बदला गया ECU) चालू होता है, तो दो अलग-अलग SDV Secure मेश होते हैं: एक Warning स्थिति में और दूसरा Normal स्थिति में. SDV के दोनों सुरक्षित मेश अधूरे हैं.
छठी इमेज. पुर्ज़े बदलने का पहला चरण.
दूसरा चरण: एसडीवी बूट मोड अनलॉक करके रीबूट करना
SDV बूट मोड में, UNLOCKED मोड में सभी ईसीयू के सभी वीएम को रीबूट करें.
इमेज 7 में, VM-B और VM-C, Warning SDV Secure Mesh में शामिल होते हैं. यह पूरा हो चुका है.
सातवीं इमेज. पुर्ज़े बदलने का दूसरा चरण.
तीसरा चरण: sdv_provisioning_tool चलाएं
हर वीएम पर, sdv_provisioning_tool चलाएं.
यह टूल, लोकल सर्विस डिस्कवरी एजेंट से कम्यूनिकेट करता है. साथ ही, यह तब तक इंतज़ार करता है, जब तक एजेंट यह सिग्नल नहीं देता कि SDV Secure Mesh पूरा हो गया है. इसके बाद, एजेंट, UDS के सार्वजनिक पासकोड की सूची को /vvmtruststore/uds_pubs में लिखता है.
ऐसा होने पर, टूल अभी-अभी लिखे गए /vvmtruststore/uds_pubs का हैश पाता है और उसे आउटपुट करता है. हालांकि, इस फ़्लो में इस हैश का इस्तेमाल नहीं किया जाता.
आठवीं इमेज. पुर्ज़े बदलने का तीसरा चरण.
चौथा चरण: यूडीएस सर्टिफ़िकेट इंस्टॉल करना
- किसी भी एसडीवी वीएम से
/vvmtruststore/uds_pubsनिकालें. इससे कोई फ़र्क़ नहीं पड़ता कि कौनसी मशीन इस्तेमाल की जा रही है, क्योंकि यह एक ही SDV Secure Mesh में मौजूद सभी वर्चुअल मशीन के लिए एक जैसी होती है. - उस
/vvmtruststore/uds_pubsमें दी गई सभी यूडीएस सार्वजनिक कुंजियों के लिए, प्रोविज़निंग सर्टिफ़िकेट वापस पाएं.- इसका आम तौर पर मतलब यह होता है कि इसे किसी ऐसे रिमोट सर्वर को भेजा जाता है जिसके पास पहले से ही सर्टिफ़िकेट सेव हैं या जो यूडीएस की जानी-पहचानी सार्वजनिक कुंजियों के डेटाबेस से मिली हुई सार्वजनिक कुंजियों की जांच करके, उन्हें जनरेट करता है. इस डेटाबेस को, ईसीयू बनाने के दौरान निकाली गई यूडीएस की सार्वजनिक कुंजियों से बनाया गया था.
- हर SDV VM का
/vvmtruststore/uds_certsलिखें.
नौवीं इमेज. पुर्ज़े बदलने का चौथा चरण.
पांचवां चरण: SDV बूट मोड लॉक में रीबूट करें
LOCKED मोड में SDV बूट मोड में मौजूद सभी वीएम को रीबूट करें.
अगर एसडीवी सिक्योर मेश पूरा नहीं है, तो दूसरे चरण पर वापस जाएं.
दसवीं इमेज. पुर्ज़े बदलने का पांचवां चरण.