開発者向けオプションの保護

Android 互換性定義ドキュメントに記載されているとおり、OEM はアプリ開発を可能にする方法を提供する必要があります。ただし、車内にモバイル同然の開発者向けオプションがあれば、その自動車は攻撃を受けやすくなります。そこで、OEM は認証済みの暗号トークンのメカニズムを使用して、開発者向けオプションへのアクセスを制限できるようになりました。具体的に、OEM は次のことを行えます。

  • 初回起動前に必要なデフォルトの制限を設定する。
  • 必要に応じて暗号鍵を使用して開発者を承認し、セキュリティを保護する。
  • 開発者が認証および承認されたら、制限の変更を適用する。

この記事では、デバッグ制限コントローラ アプリとリモート トークン発行者エンドポイントで構成されるリファレンス実装について説明します。

用語

用語に加えて、この記事では、以下の用語も使用されています。

  • RFC 7515 で定義されている JSON Web Signature(JWS)
  • 国立標準技術研究所(NIST)

設計

OEM は JSON Web Signature(JWS)トークン(RFC7515)を使用して、開発者を承認できます。リファレンス実装では、OEM がアクセス トークンを発行し、制限コントローラ アプリが使用します。アクセス トークンはリプレイ攻撃と偽造トークンに対抗するように設計されています。

図 1. 設計

統合と構成

OEM は、初回起動時に必要なデフォルトの制限を指定する必要があります。これは、いくつかの静的リソース オーバーレイを使用して行われ、AOSP フレームワークのデフォルトをオーバーライドします。

ヘッドレス システム ユーザーのデフォルトの制限は、frameworks/base/core/res/res/values/config.xmlconfig_defaultFirstUserRestrictions 文字列で構成できます。次に例を示します。

<!-- 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

テスト

Google では、OEM はリファレンス実装から始めて、そこからビルドすることをおすすめしています。

  1. オーバーレイ ファイルで必要な制限を構成した後、AAOS をコンパイルして、定義済みのフローを検証します。リファレンス アプリとローカルの JWS 対応サービスを使用して、アクセス設定を確認します。
  2. JWS 対応のクラウド サービスを使用するようにシステムを構成します(省略可)。バックエンド サービスで必要なフローを監視していることを確認します。