استخدام تشفير الملفات المرتبطة بالمركبة

توضّح هذه الصفحة كيفية تفعيل ميزات المحتوى الأساسي والملزم لتشفير المحتوى المستند إلى المركبة.

نظرة عامة

يتمثل الهدف الأساسي من ميزة "البذرة" لربط المركبة في تعزيز حماية خصوصية المستخدم من خلال حماية البيانات في نظام المعلومات والترفيه داخل المركبة (IVI) من الإزالة من المركبة. ويتم ذلك من خلال ربط مفاتيح تشفير التخزين بوحدة تحكّم إلكترونية أخرى (ECU) بحيث لا يمكن فك تشفير بيانات المستخدم المشفَّرة على IVI في حال إزالة المنظومة ووضعها في مركبة أخرى (أو تشغيلها على منصة اختبار).

لربط مفاتيح تشفير الملفات، يمزج Vold بذرة خاصة بالمركبة مع تشفير المفتاح استخراج المفتاح حتى تكون المفاتيح فريدة ومرتبطة فعليًا بالمركبة. البذرة هي صفيف بايت، ويعرضها المصنّع الأصلي للجهاز كخاصية جديدة لطبقة تجريد الأجهزة في المركبة (VHAL)، ويُشار إليها باسم STORAGE_ENCRYPTION_BINDING_SEED. تم حظر أذونات هذا الموقع الإلكتروني بحيث لا يمكن الاستعلام عنه إلا من خلال خدمات النظام الخفية المميّزة.

مخطّط البنية

يوضّح هذا الشكل بنية الدمج المرتبط بالمركبات:

الشكل 1: بنية مرتبطة بالمركبة

تفعيل الربط المستنِد إلى المركبة

يجب تفعيل ربط تشفير مساحة التخزين بالمركبة بشكل صريح، ولا يمكن تفعيله أو إيقافه بدون إجراء إعادة ضبط على الإعدادات الأصلية. ويعني ذلك أنّه لا يمكن لتحديث عبر الهواء (OTA) تفعيل الميزة بدون محو بيانات الجهاز أيضًا. يمكن لمصنعي الأجهزة الأصليين تفعيل الميزة عند الترقية إذا أعادوا أيضًا ضبط الجهاز على الإعدادات الأصلية. على سبيل المثال، في زيارة صيانة.

يتم تفعيل هذه الميزة من خلال توفير السمة STORAGE_ENCRYPTION_BINDING_SEED في HAL للمركبة الذي يقدّمه المورّد. تحتوي هذه السمة على سلسلة بايت بطول 16 بايت ومن المفترض أن يتم الاحتفاظ بها في وحدة تحكّم إلكترونية منفصلة عن وحدة IVI. يتم ضبط السمة في البداية من خلال نظام التشغيل Android Automotive ‏ (AAOS)، الذي ينشئها باستخدام أسلوب إنشاء أرقام عشوائية آمنة من خلال التشفير (CSRNG). بعد ذلك، يقرأ نظام التشغيل AAOS السمة عند بدء التشغيل اللاحق.

تختلف طريقة تخزين VHAL لقيمة STORAGE_ENCRYPTION_BINDING_SEED حسب المورّد. لدينا اقتراحات عامة لحماية البذرة:

  1. (إجراء مقترَح) تخزِّن وحدة التحكّم الإلكترونية (ECU) البذرة في السيارة التي يتم حمايتها بشكل جيد من الناحية المادية. إذا لم يكن الأمر كذلك، من السهل إزالة كل من وحدة IVI ووحدة التحكّم الإلكتروني من السيارة.
  2. (إجراء يُنصح به) يجب أن تتم مصادقة IVI ووحدة التحكّم الإلكترونية (ECU) بشكل متبادل لتبادل البذرة بهدف منع انتحال طلبات البذرة من وحدة التحكّم الإلكترونية.
  3. (إجراء مقترَح) يجب نقل البذرة باستخدام قناة آمنة للحماية من استنشاق بيانات ناقل CAN.

بالإضافة إلى ذلك، أضِف ما يلي لضمان حصول المورّد init.target.rc على late-fs قبل mount_all --late:

# feed vehicle binding seed to vold
exec_start vold_seed_binding

يجب بدء HAL للمركبة في early_hal بدلاً من hal now. لا يمكن الوصول إلى أيّ من سمات نظام persist.* في early-hal لأنّه لم يتمّ تركيب القسم /data بعد.

ضبط الربط بالمركبة

إذا لم تتطابق القيمة الأساسية لوحدة التحكّم في الإشعال (ECU)، تتم إعادة تشغيل الجهاز في وضع الاسترداد ويُطلب من المستخدم محو ملف /data أو إعادة المحاولة.

يمكن تغيير سلوك البيانات المطلوبة والمحذوفة فيملف builtins.cpp:

  1. غيِّر prompt_and_wipe_data إلى wipe_data. يتم محو بيانات الجهاز ثم إعادة تشغيله بدون طلب.
  2. تتضمّن رسالة الطلب ملف recovery.cpp.

    الشكل 2: رسالة الطلب

اختبار الربط بالمركبة

الاختبار التجريبي

يتم توفير اختبار تجريبي في packages/services/Car/cpp/security/vehicle_binding_util/tests.

لإجراء هذا الاختبار التجريبي:

attest libvehicle_binding_util_test

اختبار الدمج

يتوفّر اختبار atest في packages/services/Car/cpp/security/vehicle_binding_util/tests.

لإجراء اختبار الدمج هذا، اتّبِع الخطوات التالية:

atest vehicle_binding_integration_test