ایمن سازی گزینه های توسعه دهنده

طبق سند تعریف سازگاری اندروید ، OEM ها باید راهی برای فعال کردن توسعه برنامه ارائه دهند. با این حال، ارائه گزینه‌های توسعه‌دهنده شبیه موبایل در داخل خودروها، این خودروها را در برابر حمله آسیب‌پذیر می‌کند. اکنون می‌توان دسترسی به گزینه‌های توسعه‌دهنده را توسط یک OEM با استفاده از مکانیزم رمزنگاری تأیید شده مسدود کرد. به طور خاص، یک OEM می تواند:

  • قبل از اولین بوت، محدودیت های پیش فرض دلخواه را تنظیم کنید.
  • به توسعه‌دهندگان، در صورت تمایل، با توکن‌های رمزنگاری مجوز ایمن بدهید.
  • زمانی که یک توسعه‌دهنده احراز هویت و مجاز شد، تغییرات محدودیت را اعمال کنید.

این مقاله یک پیاده‌سازی مرجع را توصیف می‌کند که شامل یک برنامه کنترل‌کننده محدودیت اشکال‌زدایی و یک نقطه پایانی صادرکننده نشانه راه دور است.

واژه شناسی

علاوه بر اصطلاحات ، از این اصطلاحات در این مقاله استفاده می شود:

  • JSON Web Signature (JWS)، تعریف شده در RFC 7515
  • موسسه ملی استاندارد و فناوری (NIST)

طرح

OEM ها می توانند به توسعه دهندگان با توکن های JSON Web Signature (JWS) (RFC7515) مجوز دهند. در پیاده سازی مرجع، توکن های دسترسی توسط OEM ها صادر می شوند و توسط برنامه کنترل کننده محدودیت مصرف می شوند. توکن های دسترسی برای مقاومت در برابر حملات تکراری و توکن های جعلی طراحی شده اند.

شکل 1. طراحی

یکپارچه سازی و پیکربندی

OEM ها باید محدودیت های پیش فرض مورد نظر را در اولین بوت مشخص کنند. این کار با چندین همپوشانی منبع ثابت انجام می‌شود تا پیش‌فرض‌ها در چارچوب 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 پیکربندی کرد. یک OEM می تواند پوشش داده شود| این رشته ها برای تعیین محدودیت های پیش فرض برای هر نوع کاربر به ترتیب، به عنوان مثال:

<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

آزمایش کردن

گوگل توصیه می کند که OEM ها با پیاده سازی مرجع شروع کنند و از آنجا بسازند.

  1. پس از پیکربندی محدودیت های مورد نظر در فایل های همپوشانی، AAOS را کامپایل کرده و جریان های تعریف شده را اعتبار سنجی کنید. از برنامه مرجع و سرویس محلی فعال JWS برای تأیید تنظیمات دسترسی خود استفاده کنید.
  2. سیستم را برای استفاده از سرویس ابری فعال JWS خود پیکربندی کنید (اختیاری). بررسی کنید که جریان مورد نظر را در سرویس باطن خود مشاهده می کنید.