Tất cả khoá KeyMint phải được liên kết với một gốc tin cậy cho thiết bị. Gốc tin cậy là một chuỗi bit bắt nguồn từ khoá công khai dùng để xác minh chữ ký của hình ảnh khởi động, cùng với trạng thái khoá của trình tải khởi động.
Khoá KeyMint cũng phải được liên kết với phiên bản hệ điều hành và cấp bản vá của thiết bị. Để hỗ trợ cấu trúc mô-đun của Treble, liên kết phiên bản này bao gồm các cấp bản vá riêng biệt cho từng phân vùng (boot, system và vendor). Điều này cho phép mỗi phân vùng được cập nhật độc lập, trong khi vẫn cung cấp tính năng bảo vệ khôi phục.
Để triển khai liên kết phiên bản này, ứng dụng đáng tin cậy (TA) KeyMint cần có cách để nhận phiên bản hệ điều hành và cấp bản vá hiện tại một cách an toàn, đồng thời đảm bảo rằng thông tin mà ứng dụng nhận được khớp với tất cả thông tin về hệ thống đang chạy.
- Thiết bị có tính năng Xác minh quy trình khởi động trên Android (AVB):
- Cấp bản vá và phiên bản hệ điều hành có thể được đưa vào
vbmeta.imgđể trình tải khởi động có thể cung cấp các thông tin này cho KeyMint. - Đối với các phân vùng theo chuỗi, thông tin phiên bản của phân vùng nằm trong VBMeta theo chuỗi.
- Nhìn chung, thông tin phiên bản phải nằm trong
VBMeta structchứa dữ liệu xác minh (băm hoặc cây băm) cho một phân vùng nhất định.
- Cấp bản vá và phiên bản hệ điều hành có thể được đưa vào
- Thiết bị không có AVB:
- Các phương thức triển khai tính năng Xác minh quy trình khởi động cần cung cấp hàm băm của siêu dữ liệu phiên bản cho trình tải khởi động để trình tải khởi động có thể cung cấp hàm băm cho KeyMint.
boot.imgcó thể tiếp tục lưu trữ các cấp bản vá trong tiêu đề.system.imgcó thể tiếp tục lưu trữ cấp bản vá và phiên bản hệ điều hành trong các thuộc tính chỉ có thể đọc.vendor.imglưu trữ cấp bản vá trong thuộc tính chỉ có thể đọcro.vendor.build.version.security_patch.- Trình tải khởi động có thể cung cấp hàm băm của tất cả dữ liệu được xác thực bằng tính năng Xác minh quy trình khởi động cho KeyMint.
Các thẻ sau đây mô tả thông tin phiên bản cho các phân vùng có liên quan:
Tag::VENDOR_PATCHLEVEL: phân vùngvendorTag::BOOT_PATCHLEVEL: phân vùngbootTag::OS_PATCHLEVELvàTag::OS_VERSION: Phân vùngsystem;Tag::OS_VERSIONbị xoá khỏi tiêu đềboot.img
Các phương thức triển khai KeyMint phải xử lý tất cả các cấp bản vá một cách độc lập. Khoá có thể sử dụng được nếu tất cả thông tin phiên bản đều khớp với các giá trị liên kết với khoá. Nếu phiên bản thiết bị hiện tại mới hơn bất kỳ giá trị nào liên kết với một khoá, thì KeyMint sẽ trả về lỗi KEY_REQUIRES_UPGRADE khi có bất kỳ nỗ lực nào sử dụng khoá đó. Sau đó, Kho khoá sẽ thực hiện IKeyMintDevice::upgradeKey để tạo một blob khoá mới liên kết với các cấp bản vá hiện tại (và sau đó, Kho khoá sẽ xoá blob khoá trước đó bằng lệnh gọi đến IKeyMintDevice::deleteKey).