安全的开发者选项

根据Android 兼容性定义文档,OEM 必须提供启用应用开发的方法。但是,在汽车中提供类似移动设备的开发者选项会使这些汽车容易受到攻击。现在,OEM 可以使用经过身份验证的加密令牌机制来控制对开发者选项的访问。具体而言,OEM 可以:

  • 在首次启动前设置所需的默认限制。
  • 安全地授权开发者,首选使用加密令牌。
  • 在开发者通过身份验证和授权后应用限制更改。

本文介绍了一个参考实现,其中包含一个调试限制控制器应用和一个远程令牌颁发者端点。

术语

除了术语之外,本文还使用了以下术语:

  • JSON Web Signature (JWS),在 RFC 7515 中定义
  • 美国国家标准与技术研究院 (NIST)

设计

OEM 可以使用 JSON Web Signature (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 的云服务(可选)。验证您是否在后端服务上观察到所需的流程。