保護開發人員選項

根據Android 兼容性定義文檔,OEM 必須提供一種啟用應用程序開發的方法。但是,在汽車中提供類似移動設備的開發人員選項會使這些汽車容易受到攻擊。 OEM 現在可以使用經過身份驗證的加密令牌機制來控制對開發人員選項的訪問。具體來說,OEM 可以:

  • 在首次引導之前設置所需的默認限制。
  • 安全地授權開發人員,如果願意,可以使用加密令牌。
  • 一旦開發人員經過身份驗證和授權,就應用限制更改。

本文描述了一個由調試限制控制器應用程序和遠程令牌頒發者端點組成的參考實現。

術語

除了術語,本文中還使用了以下術語:

  • JSON Web 簽名 (JWS),在 RFC 7515 中定義
  • 美國國家標準與技術研究院 (NIST)

設計

OEM 可以使用 JSON Web 簽名 (JWS) 令牌 (RFC7515) 授權開發人員。在參考實現中,訪問令牌由 OEM 頒發並由限制控制器應用程序使用。訪問令牌旨在抵抗重放攻擊和偽造令牌。

圖 1.設計

集成和配置

OEM 必須在首次啟動時指定所需的默認限制。這是通過幾個靜態資源覆蓋來完成的,以覆蓋 AOSP 框架中的默認值。

無頭系統用戶的默認限制可以使用frameworks/base/core/res/res/values/config.xml中的config_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 的雲服務(可選)。驗證您是否在後端服務上觀察到所需的流。