安全的開發人員選項

根據 Android 相容性定義說明文件,原始設備製造商 (OEM) 必須提供啟用應用程式開發功能的方法。不過,在車內提供類似行動裝置的開發人員選項,會使車輛容易遭到攻擊。原始設備製造商 (OEM) 現在可以使用經過驗證的加密金鑰權杖機制,限制開發人員選項的存取權。具體來說,原始設備製造商可以:

  • 在第一次開機前,設定所需的預設限制。
  • 安全授權開發人員,並視需要使用加密權杖。
  • 在開發人員完成驗證及授權程序後,套用限制變更。

本文將說明參考實作項目,其中包含偵錯限制控制器應用程式和遠端符記發出端點。

術語

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

  • JSON Web Signature (JWS),定義於 RFC 7515
  • 國家標準暨技術研究院 (NIST)

設計

OEM 廠商可以使用 JSON Web Signature (JWS) 權杖 (RFC7515) 授權開發人員。在參考實作項目中,存取權杖由原始設備製造商 (OEM) 核發,並由限制控制器應用程式使用。存取權杖旨在抵禦重播攻擊和偽造的權杖。

圖 1. 設計

整合和設定

原始設備製造商必須在第一次啟動時指定所需的預設限制。這項操作會使用多個靜態資源疊加層,以便覆寫 Android 開放原始碼計畫架構中的預設值。

無頭系統使用者的預設限制可透過 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 的雲端服務 (選用)。確認您是否在後端服務中觀察到所需的流程。