Trạng thái thiết bị

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

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

Nếu thiết bị bị LOCKED , bootloader sẽ thực hiện các bước trong Verifying Boot để xác minh phần mềm của thiết bị. Các thiết bị LOCKED chỉ khởi động nếu hệ điều hành đã tải được ký hợp lệ bởi gốc tin cậy. Để biết thêm chi tiết, hãy xem Luồng 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 fastboot flashing [unlock | lock] . Để bảo vệ dữ liệu người dùng, tất cả các chuyển đổi trạng thái sẽ xóa sạch phân vùng dữ liệu và yêu cầu người dùng xác nhận trước khi xóa dữ liệu.

Quá trình chuyển đổi UNLOCKED sang LOCKED được dự đoán trước khi người dùng mua một thiết bị phát triển đã qua sử dụng. Do khóa 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ị cung cấp, miễn là không có cảnh báo. Quá trình chuyển đổi LOCKED sang UNLOCKED được mong đợi khi nhà phát triển muốn tắt xác minh trên thiết bị vì mục đích phát triển.

Nguồn gốc của niềm tin

Root of Trust là khóa mật mã dùng để ký vào bản sao Android được lưu trữ trên thiết bị. Phần riêng tư của root of Trust chỉ được nhà sản xuất thiết bị biết và được sử dụng để ký mọi phiên bản Android dự định phân phối. Phần công khai của root of Trust được nhúng trong thiết bị và được lưu trữ ở một nơi để không thể bị giả mạo (thường là bộ lưu trữ chỉ đọc).

Khi tải Android, bộ nạp 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 chi tiết về quy trình này, hãy xem Xác minh khởi động . Các thiết bị có thể có nhiều bộ tải khởi động và do đó có thể có nhiều khóa mật mã đang hoạt động.

Người dùng có thể thiết lập gốc tin cậy

Các thiết bị có thể tùy chọn cho phép người dùng định cấu hình gốc tin cậy (ví dụ: khóa chung). Các thiết bị có thể sử dụng gốc tin cậy do người dùng thiết lập này cho Khởi động được xác minh thay vì gốc tin cậy được tích hợp sẵn. Điều này cho phép người dùng cài đặt và sử dụng các phiên bản Android tùy chỉnh mà không phải hy sinh các cải tiến bảo mật của Khởi động được xác minh.

Nếu gốc tin cậy có thể thiết lập của người dùng được triển khai thì việc này phải được thực hiện theo cách sau:

  • Cần có xác nhận vật lý để thiết lập/xóa gốc tin cậy mà người dùng có thể thiết lập.
  • Gốc tin cậy có thể thiết lập của người dùng chỉ có thể được đặt bởi người dùng cuối. Nó không thể được thiết lập 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ị.
  • Nguồn gốc tin cậy mà người dùng có thể thiết lập được lưu trữ trong bộ lưu trữ có bằng chứng giả mạo. Bằng chứng giả mạo có nghĩa là có thể phát hiện xem Android có giả mạo dữ liệu hay không, chẳng hạn như dữ liệu có bị ghi đè hoặc thay đổi hay không.
  • Nếu gốc tin cậy có thể thiết lập được của người dùng được đặt, 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 hoặc gốc tin cậy có thể thiết lập của người dùng.
  • Mỗi khi thiết bị khởi động bằng cách sử dụng gốc tin cậy mà người dùng có thể thiết lập, người dùng sẽ được thông báo rằng thiết bị đang tải phiên bản Android tùy chỉnh. Ví dụ: màn hình cảnh báo, xem Thiết bị LOCKED với bộ khóa tùy chỉnh .

Một cách để triển khai root tin cậy do người dùng thiết lập là có một phân vùng ảo chỉ có thể được flash hoặc xóa 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à đầu ra của lệnh avbtool extract_public_key . Dưới đây là ví dụ về cách đặt gốc tin cậy mà người dùng có thể thiết lập:

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

Có thể xóa gốc tin cậy do người dùng thiết lập bằng cách ban hành:

fastboot erase avb_custom_key