لضمان سلامة نظام السيارة، يحمي Android Automotive البيانات الواردة على المستويات التالية:

الشكل 1: بنية خدمات النظام
- التطبيقات: يتحقّق النظام من أنّ التطبيق لديه الإذن بالتواصل مع الأنظمة الفرعية للسيارة.
- واجهات برمجة تطبيقات محدّدة بوضوح: لا تقبل واجهات برمجة التطبيقات العامة مجموعات بيانات عشوائية (يجب تحديد واجهات برمجة التطبيقات بشكل جيد).
- خدمة السيارات: لا يُسمح بالتحديثات إلا من خلال OTA (أو USB)، مع تشفير القرص بالكامل وميزة "التمهيد التحقق منه". لا يمكن تثبيتها من مصدر غير معروف.
- طبقة HAL في المركبة: التحقّق من السماح برسائل معيّنة
التطبيقات وواجهات برمجة التطبيقات
يستند نظام Android Automotive إلى نظام التشغيل Android ويتفاعل مباشرةً مع العديد من الأنظمة الفرعية المُهمّة للسلامة. بالإضافة إلى ذلك، قد تتضمّن المركبات المختلفة واجهات مختلفة مع وظائف مختلفة متاحة لنظام التشغيل Android. لجعل هذه الوظائف آمنة ومبسّطة، يتم عزلها في طبقة تجريدية منفصلة عن بقية نظام التشغيل Android. لا يمكن التواصل مع واجهة برمجة التطبيقات HAL للمركبة إلا من خلال واجهات برمجة التطبيقاتالمحدَّدة بوضوح والتي تتضمّن تنسيقًا صارمًا للرسائل المُرسَلة من خلال الشبكات داخل المركبة. يقدّم ذلك واجهة متوقّعة لمطوّري تطبيقات Android ويوفّر تفاعلًا آمنًا مع بقية المركبة.
يتم فلترة رسائل Vehicle HAL على مستويَين:
- مستوى التطبيق: يمكن للتطبيقات غير المضمّنة في النظام الوصول إلى HAL للمركبة من خلال خدمة السيارة باستخدام الأذونات المناسبة.
- مستوى Vehicle HAL: يتيح ذلك توفير طبقة حماية إضافية وضمان بأنّ الرسائل المُرسَلة إلى الأنظمة الفرعية للمركبة مصدرها مشروع. يمكن أيضًا استخدامها لتحديد عدد الرسائل المسموح به، ما يمنع التطبيقات الضارة من إغراق ناقل CAN والتدخل في الأنظمة الفرعية للمركبة.
طبقة HAL في المركبة
واجهة HAL للمركبة هي طبقة سفلية تتفاعل مع المركبة وتتواصل مع الشبكات داخل المركبة وغيرها من الأجهزة في المركبة من خلال طلبات التحكّم في الإدخال/الإخراج (ioctl) الخاصة بالسائق.
واجهة HAL للمركبة هي المكوّن الوحيد في Android Automotive المتصل بنظام IVI، إما من خلال اتصال مباشر بين وحدة معالجة التطبيقات أو وحدة التحكّم الدقيقة أو من خلال وحدة تحكّم مركزي في المركبة (VMCU). يجب أن يقتصر الوصول إلى واجهة برمجة التطبيقات لوحدة التحكّم في السيارة على تطبيقات النظام التي تستخدم قواعد SELinux والأذونات المناسبة على واجهات نظام التشغيل.
سياسات SELinux
يُعدّ Android Automotive امتدادًا لنظام SELinux لفلترة إذن وصول برنامج تشغيل الجهاز، بما في ذلك عمليات open وclose وread وwrite وioctl. يؤدي استخدام فلترة ioctl (بالإضافة إلى وظائف SELinux الأخرى) إلى الحد من نوع رسائل CAN المسموح بها والمقبولة من خلال HAL للمركبة، ما يؤدي إلى تقليل مساحة الهجوم بشكل كبير. للاطّلاع على التفاصيل حول SELinux، يُرجى الاطّلاع على مقالة نظام التشغيل Security-Enhanced Linux في Android.
بالإضافة إلى ذلك، تتضمّن حالات استخدام السيارات أنواعًا جديدة من البيانات الحسّاسة التي يجب عزلها والتحكّم فيها. تتطلب البيانات الحسّاسة أذونات منفصلة، ويجب منح التطبيقات النظامية فقط القدرات الأخرى، مثل عناصر التحكّم في التدفئة والتهوية وتكييف الهواء وضبط النوافذ. مثال على سياسة 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 عناصر تحكّم إضافية (قائمة مسموح بها) لمحاولة ضمان عدم استخدام التطبيقات المحمَّلة من مصدر غير معروف عندما تكون المركبة في حركة. يمكن أن تظل هذه التطبيقات قيد التشغيل عندما تكون المركبة متوقفة.
تحدِّد القائمة المسموح بها التطبيقات التي يمكن استخدامها عندما تكون المركبة متحركة. يمكن فقط لتطبيقات النظام الموثوق بها تعديل القائمة المسموح بها. على الرغم من أنّه يمكن إجراء التحديثات عبر الشبكة، يجب عدم الاعتماد عليها.