وفقًا لمستند تعريف التوافق مع Android، يجب أن يوفّر المصنّعون الأصليون للأجهزة طريقة لتفعيل تطوير التطبيقات. ومع ذلك، فإنّ توفير ميزات مخصَّصة للأجهزة الجوّالة خيارات المطورين داخل السيارات تجعل تلك السيارات عرضة للهجوم. الوصول إلى المطوّر يمكن الآن التحكم في الخيارات بواسطة مُصنّع أصلي يستخدم آلية رمز تشفير مُصادق عليه. على وجه التحديد، يمكن للمصنّع الأصلي للجهاز إجراء ما يلي:
- قم بتعيين القيود الافتراضية المطلوبة قبل التشغيل الأول.
- امنَح المطوِّرين الإذن بأمان باستخدام الرموز المميّزة المشفّرة، إذا كان ذلك مفضّلاً.
- يمكنك تطبيق تغييرات القيود بعد مصادقة المطوِّر واعتماده.
توضّح هذه المقالة تنفيذ مرجع يتألف من فرض قيود على تصحيح الأخطاء. تطبيق وحدة التحكم ونقطة نهاية جهة إصدار الرمز المميز البعيد.
المصطلحات
إضافةً إلى المصطلحات، المصطلحات التالية في هذه المقالة:
- توقيع الويب JSON (JWS)، المحدّد في RFC 7515
- المعهد الوطني للمعايير والتكنولوجيا (NIST)
التصميم
يمكن للمصنّعين الأصليين للأجهزة إعطاء الإذن للمطوّرين باستخدام رموز JSON Web Signature (JWS) المميَّزة (RFC7515). في جلسة المعمل، التنفيذ المرجعي، ويتم إصدار رموز الدخول من قِبل المصنّعين الأصليين للأجهزة ويتم استهلاكها من خلال القيود تطبيق وحدة التحكم. تم تصميم رموز الدخول لمقاومة هجمات إعادة التشغيل والرموز المميزة المزيفة.
الشكل 1. التصميم
الدمج والضبط
على المصنّعين الأصليين للأجهزة تحديد القيود التلقائية المطلوبة عند التشغيل الأول. يتم ذلك باستخدام العديد من تراكبات الموارد الثابتة لتجاوز الإعدادات الافتراضية في إطار عمل AOSP.
يمكن ضبط القيود التلقائية لمستخدِم النظام بلا واجهة مستخدم رسومية من خلال
سلسلة واحدة (config_defaultFirstUserRestrictions
) في
frameworks/base/core/res/res/values/config.xml
، على سبيل المثال:
<!-- User restrictions set when the first user is created. Note: Also update appropriate overlay files. --> <string-array translatable="false" name="config_defaultFirstUserRestrictions"> <item>no_debugging_features</item> </string-array>
يمكن ضبط القيود التلقائية للسائقين والركاب والضيوف في
frameworks/base/core/res/res/xml/config_user_types.xml
يمكن للمصنّع الأصلي للجهاز تركيبه على
السلاسل التالية لضبط القيود التلقائية على كل نوع من أنواع المستخدمين على التوالي، على سبيل المثال:
<user-types> <full-type name="android.os.usertype.full.SECONDARY" > <default-restrictions no_debugging_features="true"/> </full-type> <full-type name="android.os.usertype.full.GUEST" > <default-restrictions no_debugging_features="true"/> </full-type> </user-types>
يتم توفير التنفيذ المرجعي في الموقع التالي في بروتوكول AOSP:
packages/apps/Car/DebuggingRestrictionController
الاختبار
وتنصح Google بأن يبدأ المصنّعون الأصليون للأجهزة بالتنفيذ من خلال إنشاء المرجع.
- بعد تهيئة القيود المطلوبة في ملفات التراكب، قم بتجميع AAOS والتحقق من صحة التدفقات المحددة. استخدام التطبيق المرجعي والخدمة المحلية المفعَّلة في JWS للتحقّق من إعدادات الوصول
- اضبط النظام لاستخدام خدمة السحابة الإلكترونية المفعّلة في JWS (اختياري). إثبات أنك مراقبة التدفق المطلوب في خدمة الخلفية.