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

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

अवलोकन

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

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

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

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

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

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

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

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

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

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

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

# feed vehicle binding seed to vold
exec_start vold_seed_binding

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

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

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

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

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

    चित्र 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