वाहन बाध्य फ़ाइल एन्क्रिप्शन का उपयोग करना

यह सामग्री बताती है कि वाहन-आधारित बाध्यकारी एन्क्रिप्शन बीज सुविधाओं को कैसे सक्षम किया जाए।

अवलोकन

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

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

वास्तुकला आरेख

यह आंकड़ा वाहन बाध्य एकीकरण की वास्तुकला को दर्शाता है:

चित्र 1. वाहन बाध्य वास्तुकला

वाहन आधारित बाइंडिंग को सक्षम करना

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

विक्रेता द्वारा आपूर्ति किए गए वाहन HAL में STORAGE_ENCRYPTION_BINDING_SEED संपत्ति का समर्थन करके यह सुविधा सक्षम है। यह गुण एक बाइट स्ट्रिंग 16 बाइट्स लंबाई में रखता है और IVI से अलग ECU पर बने रहने की उम्मीद है। संपत्ति प्रारंभ में एंड्रॉइड ऑटोमोटिव ओएस (एएओएस) द्वारा निर्धारित की जाती है, जो इसे क्रिप्टोग्राफिक रूप से सुरक्षित रैंडम नंबर जेनरेटर (सीएसआरएनजी) का उपयोग करके उत्पन्न करती है। AAOS फिर बाद के बूटों पर संपत्ति को पढ़ता है।

VHAL STORAGE_ENCRYPTION_BINDING_SEED के मान को कैसे संग्रहीत करता है, यह विक्रेता-विशिष्ट है। बीज की सुरक्षा के लिए हमारे पास सामान्य सिफारिशें हैं:

  1. ( अनुशंसित ) बीज को ईसीयू द्वारा उस वाहन में संग्रहित किया जाता है जो शारीरिक रूप से सुरक्षित है। यदि नहीं, तो आईवीआई और ईसीयू दोनों को वाहन से निकाला जाना तुच्छ है।
  2. ( अनुशंसित ) ईसीयू से बीज के लिए स्पूफिंग अनुरोधों को रोकने के लिए आईवीआई और ईसीयू को बीज का आदान-प्रदान करने के लिए पारस्परिक रूप से प्रमाणित करना चाहिए।
  3. ( अनुशंसित ) कैन बस सूँघने से बचाव के लिए बीज को एक सुरक्षित चैनल का उपयोग करके प्रेषित किया जाना चाहिए।

इसके अलावा, mount_all --late से पहले late-fs पर विक्रेता init.target.rc सुनिश्चित करने के लिए निम्नलिखित जोड़ें:

# feed vehicle binding seed to vold
exec_start vold_seed_binding

वाहन एचएएल को hal now हाल के बजाय early_hal में शुरू किया जाना चाहिए। कोई भी persist.* सिस्टम प्रॉपर्टी को early-hal में एक्सेस नहीं किया जा सकता है क्योंकि /data पार्टीशन अभी तक माउंट नहीं किया गया है।

वाहन-आधारित बाइंडिंग को कॉन्फ़िगर करना

यदि ईसीयू बीज मेल नहीं खाता है, तो डिवाइस पुनर्प्राप्ति में रीबूट हो जाता है और उपयोगकर्ता को /data विभाजन को मिटाने या पुनः प्रयास करने के लिए प्रेरित करता है।

बिल्टिन्स.सीपीपी में प्रॉम्प्ट और वाइप डेटा व्यवहार को बदला जा सकता है:

  1. प्रॉम्प्ट_और_वाइप_डेटा को prompt_and_wipe_data में wipe_data । डिवाइस मिटा देता है और फिर बिना किसी संकेत के रीबूट करता है।
  2. शीघ्र संदेश पुनर्प्राप्ति .cpp में निहित है।

    चित्र 2. शीघ्र संदेश

वाहन आधारित बंधन का परीक्षण

मॉक टेस्टिंग

packages/services/Car/cpp/security/vehicle_binding_util/tests में एक मॉक टेस्ट प्रदान किया जाता है।

इस मॉक टेस्ट को चलाने के लिए:

attest libvehicle_binding_util_test

एकीकरण जांच

packages/services/Car/cpp/security/vehicle_binding_util/tests में एक प्रमाणित परीक्षण प्रदान किया जाता है।

इस एकीकरण परीक्षण को चलाने के लिए:

atest vehicle_binding_integration_test