تأمين خيارات المطور

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

  • قم بتعيين القيود الافتراضية المطلوبة قبل التمهيد الأول.
  • قم بتفويض المطورين بشكل آمن باستخدام رموز التشفير إذا كان ذلك مفضلاً.
  • قم بتطبيق تغييرات القيود بمجرد مصادقة المطور والترخيص له.

توضح هذه المقالة تطبيقًا مرجعيًا يتكون من تطبيق وحدة تحكم تقييد تصحيح الأخطاء ونقطة نهاية مُصدر الرمز المميز البعيد.

المصطلح

بالإضافة إلى المصطلحات ، يتم استخدام هذه المصطلحات في هذه المقالة:

  • توقيع ويب 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 بأن يبدأ مصنعو المعدات الأصلية بالتنفيذ المرجعي ثم البناء من هناك.

  1. بعد تكوين القيود المطلوبة في ملفات التراكب، قم بتجميع AAOS والتحقق من صحة التدفقات المحددة. استخدم التطبيق المرجعي وخدمة JWS المحلية الممكّنة للتحقق من إعدادات الوصول الخاصة بك.
  2. قم بتكوين النظام لاستخدام الخدمة السحابية الممكّنة لـ JWS (اختياري). تأكد من أنك تراقب التدفق المطلوب في الخدمة الخلفية لديك.