कार के सिस्टम की सुरक्षा को पक्का करने के लिए, Android Automotive इन लेवल पर आने वाले डेटा की सुरक्षा करता है:

पहली इमेज. सिस्टम सर्विस आर्किटेक्चर
- ऐप्लिकेशन. सिस्टम यह पुष्टि करता है कि ऐप्लिकेशन के पास, कार के सब-सिस्टम से बात करने की अनुमति है या नहीं.
- बेहतर तरीके से तय किए गए एपीआई. सामान्य एपीआई, मनमुताबिक डेटा ब्लॉब स्वीकार नहीं करते. एपीआई को अच्छी तरह से तय किया जाना चाहिए.
- कार सेवा. अपडेट सिर्फ़ ओटीए (या यूएसबी) के ज़रिए किए जा सकते हैं. इसके लिए, डिस्क का पूरा एन्क्रिप्शन और वेरिफ़ाइड बूट की ज़रूरत होती है. इसे साइडलोड नहीं किया जा सकता.
- वाहन एचएएल. यह पुष्टि करता है कि कुछ खास मैसेज भेजने की अनुमति है.
ऐप्लिकेशन और एपीआई
Android Automotive, Android पर आधारित है. यह सीधे तौर पर, सुरक्षा से जुड़े कई सबसिस्टम के साथ इंटरैक्ट करता है. इसके अलावा, अलग-अलग वाहनों में अलग-अलग इंटरफ़ेस हो सकते हैं. इनमें Android के लिए अलग-अलग फ़ंक्शन उपलब्ध होते हैं. इन सुविधाओं को सुरक्षित और आसान बनाने के लिए, इन्हें Android के बाकी हिस्सों से अलग, एक अलग लेयर में रखा गया है. वाहन में मौजूद नेटवर्क से भेजे गए मैसेज के लिए, सही तरीके से तय किए गए एपीआई ही वाहन के एचएएल के साथ इंटरैक्ट कर सकते हैं. इससे Android डेवलपर को अनुमानित इंटरफ़ेस मिलता है. साथ ही, वाहन के बाकी हिस्सों के साथ सुरक्षित इंटरैक्शन की सुविधा मिलती है.
वाहन के HAL मैसेज दो लेवल पर फ़िल्टर किए जाते हैं:
- ऐप्लिकेशन लेवल. सिस्टम से जुड़े ऐप्लिकेशन के अलावा, अन्य ऐप्लिकेशन भी कार सेवा के ज़रिए वाहन के एचएएल को ऐक्सेस कर सकते हैं. इसके लिए, उनके पास ज़रूरी अनुमतियां होनी चाहिए.
- वाहन एचएएल लेवल. इससे सुरक्षा की एक और लेयर मिलती है. साथ ही, यह भी पक्का किया जा सकता है कि वाहन के सबसिस्टम को भेजे गए मैसेज, किसी मान्य सोर्स से भेजे गए हैं. इसका इस्तेमाल, मैसेज की दर को सीमित करने के लिए भी किया जा सकता है. इससे नुकसान पहुंचाने वाले ऐप्लिकेशन, CAN बस को फ़्लड नहीं कर पाते और वाहन के सबसिस्टम में रुकावट नहीं आती.
वाहन एचएएल
वाहन के लिए एचएएल एक निचली लेयर है, जो वाहन के साथ इंटरैक्ट करती है. यह ड्राइवर इनपुट/आउटपुट कंट्रोल (ioctl) कॉल की मदद से, वाहन में मौजूद नेटवर्क और वाहन के अन्य हार्डवेयर के साथ कम्यूनिकेट करती है.
वाहन का एचएएल, Android Automotive में मौजूद एकमात्र ऐसा कॉम्पोनेंट है जो सीधे तौर पर ऐप्लिकेशन प्रोसेसर/माइक्रोकंट्रोलर कनेक्शन या VMCU के ज़रिए, आईवीआई सिस्टम से कनेक्ट होता है. वाहन के एचएएल को सिर्फ़ उन सिस्टम ऐप्लिकेशन के लिए ऐक्सेस किया जाना चाहिए जो SELinux नियमों का इस्तेमाल करते हैं और कर्नेल इंटरफ़ेस पर सही अनुमतियां देते हैं.
SELinux की नीतियां
Android Automotive, SELinux को ड्राइवर के ऐक्सेस को फ़िल्टर करने के लिए बढ़ाता है. इसमें open, close, read, write, और ioctl कॉल शामिल हैं. ioctl फ़िल्टरिंग (SELinux की अन्य सुविधाओं के साथ) का इस्तेमाल करने से, वाहन के HAL की अनुमति वाले और स्वीकार किए जाने वाले CAN मैसेज के टाइप सीमित हो जाते हैं. इससे, हमले के दायरे को काफ़ी कम किया जा सकता है. SELinux के बारे में जानकारी पाने के लिए, Android में बेहतर सुरक्षा देने वाला Linux लेख पढ़ें.
इसके अलावा, वाहन से जुड़े इस्तेमाल के उदाहरणों में नए तरह का संवेदनशील डेटा शामिल होता है. इसे अलग रखा जाना चाहिए और कंट्रोल किया जाना चाहिए. संवेदनशील डेटा के लिए अलग से अनुमतियां होती हैं. एचवीएस कंट्रोल और विंडो अडजस्टमेंट जैसी अन्य सुविधाओं को सिर्फ़ सिस्टम ऐप्लिकेशन को दिया जाना चाहिए. वाहन से जुड़ी SELinux नीति का उदाहरण:
<permission-group android:name=”android.support.car.permission.CAR_MONITORING /> <permission android:name=”android.support.car.permission.CAR_MILEAGE” android:protectionLevel=”signature|privileged” /> <permission android:name=”android.support.car.permission.CAR_SPEED” android:permissionGroup=”android.permission-group.LOCATION” android:protectionLevel=”dangerous” /> <permission android:name=”android.support.car.permission.CAR_VENDOR_EXTENSION” android:permissionGroup=”android.support.car.permission.CAR_INFORMATION” android:protectionLevel=”signature|privileged” />
CAR_MONITORING
अनुमति ग्रुप, वाहन से जुड़ी अनुमतियों के लिए बनाया गया था.
मौजूदा स्पीड को संवेदनशील जानकारी माना जा सकता है. इसलिए, CAR_SPEED
अनुमतियां, सुरक्षा के लेवल के तौर पर खतरनाक के साथ बनाई गई थीं. इस लेवल का मतलब है कि जानकारी निजी और संवेदनशील है. अनुमति CAR_VENDOR_EXTENSION
को सिस्टम या सिग्नेचर-लेवल की अनुमति के साथ बनाया गया था. इसका इस्तेमाल, सिस्टम ऐप्लिकेशन या ऐसे साइन किए गए ऐप्लिकेशन के लिए किया जाता है जिन्हें साफ़ तौर पर यह अनुमति दी गई हो.
ऐप्लिकेशन और गतिविधि को ब्लॉक करना
गाड़ी चलाते समय ध्यान भटकने से रोकने के लिए, Android Automotive में अतिरिक्त कंट्रोल (अनुमति वाली सूची) दिए गए हैं. इससे यह पक्का किया जा सकता है कि गाड़ी चलने के दौरान, साइडलोड किए गए ऐप्लिकेशन का इस्तेमाल न किया जा सके. गाड़ी के पार्क या रुकने पर भी ये ऐप्लिकेशन काम कर सकते हैं.
अनुमति वाली सूची में उन ऐप्लिकेशन के बारे में बताया जाता है जिनका इस्तेमाल वाहन के चलने के दौरान किया जा सकता है. सिर्फ़ भरोसेमंद सिस्टम ऐप्लिकेशन, अनुमति वाली सूची को अपडेट कर सकते हैं. नेटवर्क की मदद से अपडेट किए जा सकते हैं. हालांकि, अपडेट को भरोसेमंद नहीं माना जाना चाहिए.