Theo Tài liệu định nghĩa về khả năng tương thích của Android, OEM phải cung cấp một cách để cho phép phát triển ứng dụng. Tuy nhiên, việc cung cấp các tuỳ chọn dành cho nhà phát triển giống như trên thiết bị di động trong ô tô sẽ khiến những chiếc ô tô đó dễ bị tấn công. Giờ đây, nhà sản xuất thiết bị gốc (OEM) có thể kiểm soát quyền truy cập vào các tuỳ chọn dành cho nhà phát triển bằng cách sử dụng cơ chế mã thông báo mã hoá đã xác thực. Cụ thể, nhà sản xuất thiết bị gốc (OEM) có thể:
- Đặt các quy định hạn chế mặc định mong muốn trước lần khởi động đầu tiên.
- Uỷ quyền an toàn cho nhà phát triển bằng mã thông báo tiền mã hoá (nếu muốn).
- Áp dụng các thay đổi về hạn chế sau khi nhà phát triển được xác thực và uỷ quyền.
Bài viết này mô tả cách triển khai tham chiếu bao gồm một ứng dụng trình điều khiển hạn chế gỡ lỗi và một điểm cuối của trình phát hành mã thông báo từ xa.
Thuật ngữ
Ngoài Thuật ngữ, bài viết này còn sử dụng các thuật ngữ sau:
- Chữ ký web JSON (JWS), được xác định trong RFC 7515
- Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST)
Thiết kế
Nhà sản xuất thiết bị gốc (OEM) có thể uỷ quyền cho nhà phát triển bằng mã thông báo Chữ ký web JSON (JWS) (RFC7515). Trong quá trình triển khai tham chiếu, mã thông báo truy cập do OEM phát hành và được ứng dụng trình điều khiển hạn chế sử dụng. Mã thông báo truy cập được thiết kế để chống lại các cuộc tấn công phát lại và mã thông báo giả mạo.
Hình 1. Thiết kế
Tích hợp và định cấu hình
Nhà sản xuất thiết bị gốc (OEM) phải chỉ định các quy định hạn chế mặc định mong muốn trong lần khởi động đầu tiên. Việc này được thực hiện bằng một số lớp phủ tài nguyên tĩnh để ghi đè các giá trị mặc định trong khung AOSP.
Bạn có thể định cấu hình các quy tắc hạn chế mặc định cho người dùng hệ thống không có giao diện người dùng bằng chuỗi config_defaultFirstUserRestrictions
trong frameworks/base/core/res/res/values/config.xml
, ví dụ:
<!-- 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>
Bạn có thể định cấu hình các quy định hạn chế mặc định cho người lái xe, hành khách và khách trong frameworks/base/core/res/res/xml/config_user_types.xml
. Nhà sản xuất thiết bị gốc (OEM) có thể phủ lên|
các chuỗi này để đặt các quy định hạn chế mặc định cho từng loại người dùng, ví dụ:
<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>
Cách triển khai tham chiếu được cung cấp ở vị trí sau trong AOSP:
packages/apps/Car/DebuggingRestrictionController
Thử nghiệm
Google khuyên các OEM nên bắt đầu bằng cách triển khai tham chiếu và phát triển từ đó.
- Sau khi định cấu hình các quy tắc hạn chế mong muốn trong tệp lớp phủ, hãy biên dịch AAOS và xác thực các luồng đã xác định. Sử dụng ứng dụng tham chiếu và dịch vụ JWS cục bộ đã bật để xác minh chế độ cài đặt quyền truy cập.
- Định cấu hình hệ thống để sử dụng dịch vụ đám mây hỗ trợ JWS (không bắt buộc). Xác minh rằng bạn đang quan sát luồng mong muốn trên dịch vụ phụ trợ.