Trạng thái thiết bị

Trạng thái thiết bị cho biết mức độ tự do mà phần mềm có thể được cài đặt ROM cho một thiết bị và liệu có thực thi quy trình xác minh hay không. Trạng thái thiết bị là LOCKEDUNLOCKED. Thiết bị LOCKED ngăn bạn cài đặt ROM mới cho thiết bị, trong khi thiết bị UNLOCKED cho phép sửa đổi.

Khi thiết bị bật nguồn, trước tiên, trình tải khởi động sẽ kiểm tra xem thiết bị có phải là LOCKED hay UNLOCKED. Nếu thiết bị là UNLOCKED, trình tải khởi động sẽ hiển thị cho người dùng một cảnh báo, sau đó tiếp tục khởi động ngay cả khi hệ điều hành đã tải không được ký bằng gốc đáng tin cậy.

Nếu thiết bị là LOCKED, trình tải khởi động sẽ thực hiện các bước trong phần Xác minh quy trình khởi động để xác minh phần mềm của thiết bị. Thiết bị LOCKED chỉ khởi động nếu hệ điều hành đã tải được ký đúng cách bởi gốc tin cậy. Để biết thêm thông tin chi tiết, hãy xem phần Quy trình khởi động.

Thay đổi trạng thái thiết bị

Để thay đổi trạng thái của thiết bị, hãy sử dụng lệnh fastboot flashing [unlock | lock]. Để bảo vệ dữ liệu người dùng, tất cả quá trình chuyển đổi trạng thái sẽ xoá sạch các phân vùng dữ liệu và yêu cầu người dùng xác nhận trước khi xoá dữ liệu.

Quá trình chuyển đổi từ UNLOCKED sang LOCKED được dự kiến khi người dùng mua một thiết bị phát triển đã qua sử dụng. Sau khi khoá thiết bị, người dùng phải tin tưởng rằng thiết bị đang ở trạng thái do nhà sản xuất thiết bị tạo ra, miễn là không có cảnh báo nào. Quá trình chuyển đổi từ LOCKED sang UNLOCKED dự kiến sẽ diễn ra khi nhà phát triển muốn tắt tính năng xác minh trên thiết bị cho mục đích phát triển.

Cây gốc tin cậy

Gốc tin cậy là khoá mật mã dùng để ký bản sao Android được lưu trữ trên thiết bị. Phần riêng tư của gốc niềm tin chỉ nhà sản xuất thiết bị mới biết và được dùng để ký mọi phiên bản Android dùng để phân phối. Phần công khai của gốc niềm tin được nhúng vào thiết bị và được lưu trữ ở một nơi không thể bị can thiệp (thường là bộ nhớ chỉ có thể đọc).

Khi tải Android, trình tải khởi động sẽ sử dụng gốc tin cậy để xác minh tính xác thực. Để biết thêm thông tin chi tiết về quy trình này, hãy xem phần Xác minh quy trình khởi động. Thiết bị có thể có nhiều trình tải khởi động và do đó, nhiều khoá mã hoá có thể được sử dụng.

Điểm gốc tin cậy do người dùng đặt

Các thiết bị có thể cho phép người dùng định cấu hình gốc đáng tin cậy (ví dụ: khoá công khai). Các thiết bị có thể và thiết bị Google Pixel sử dụng gốc tin cậy này do người dùng đặt cho tính năng Khởi động được xác minh ngoài gốc tin cậy tích hợp.

Nếu triển khai gốc tin cậy do người dùng đặt, bạn nên triển khai theo cách:

  • Bạn phải xác nhận thực tế để đặt/xoá thư mục gốc đáng tin cậy mà người dùng có thể đặt.
  • Chỉ người dùng cuối mới có thể đặt gốc tin cậy mà người dùng có thể đặt. Bạn không thể đặt giá trị này tại nhà máy hoặc bất kỳ điểm trung gian nào trước khi người dùng cuối nhận được thiết bị.
  • Điểm gốc tin cậy do người dùng đặt được được lưu trữ trong bộ nhớ chống can thiệp. Có thể phát hiện hành vi can thiệp có nghĩa là có thể phát hiện liệu Android có can thiệp vào dữ liệu hay không, ví dụ: dữ liệu có bị ghi đè hoặc thay đổi hay không.
  • Nếu bạn đặt một gốc tin cậy có thể thiết lập bởi người dùng, thì thiết bị sẽ cho phép khởi động một phiên bản Android được ký bằng gốc tin cậy tích hợp sẵn hoặc gốc tin cậy có thể thiết lập bởi người dùng.
  • Mỗi khi thiết bị khởi động bằng gốc đáng tin cậy do người dùng đặt, người dùng sẽ được thông báo rằng thiết bị đang tải một phiên bản Android tuỳ chỉnh. Ví dụ: màn hình cảnh báo, hãy xem các thiết bị LOCKED có bộ khoá tuỳ chỉnh.

Một cách để triển khai gốc tin cậy do người dùng đặt là có một phân vùng ảo chỉ có thể được cài đặt ROM hoặc xoá khi thiết bị ở trạng thái UNLOCKED. Các thiết bị Google Pixel 2 sử dụng phương pháp này và phân vùng ảo được gọi là avb_custom_key. Định dạng của dữ liệu trong phân vùng này là kết quả của lệnh avbtool extract_public_key. Sau đây là ví dụ về cách đặt gốc tin cậy do người dùng đặt:

avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin

Bạn có thể xoá gốc tin cậy do người dùng đặt bằng cách phát hành:

fastboot erase avb_custom_key