保護開發者選項

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

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

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

術語

除了術語,這些術語在本文中使用:

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

設計

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

圖1.設計

集成和配置

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

用於無頭系統用戶的默認限制可以與被configred 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

測試

Google 建議 OEM 從參考實現開始,然後從那裡開始構建。

  1. 在覆蓋文件中配置所需的限制後,編譯 AAOS 並驗證定義的流。使用參考應用程序和本地 JWS 啟用服務來驗證您的訪問設置。
  2. 將系統配置為使用啟用了 JWS 的雲服務(可選)。驗證您正在觀察後端服務上的所需流程。