保護開發者選項

根據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 的雲端服務(可選)。驗證您在後端服務上觀察到所需的流量。