Hồ sơ SDV cho DICE

Hồ sơ SDV cho Công cụ kết hợp giá trị nhận dạng thiết bị (DICE) là một phần mở rộng của Hồ sơ Android cho DICE. Trong SDV, một VM sử dụng 2 chuỗi DICE song song:

  • Chuỗi DICE bảo mật trên toàn cầu
  • Chuỗi Android SDV DICE

Các trường sau đây trong Configuration descriptor (Bộ mô tả cấu hình) của Cấu hình Android cho DICE có liên quan đến từng chuỗi này:

Tên Khoá Loại Mô tả
Tên thành phần -70002 tstr Được đề xuất trên mỗi lớp CDI. Tên thành phần xác định rõ ràng giai đoạn trong số tất cả các chuỗi DICE của phần cứng chạy VM SDV Android trên một phương tiện hoặc nền tảng phương tiện.
Phiên bản bảo mật <0x0A -70005 uint Bắt buộc ở mỗi giai đoạn CDI. Cho phép xác định một chính sách DICE ngăn các phiên bản máy ảo từ xa không an toàn tham gia vào mạng lưới an toàn SDV.
Tên thực thể thành phần <0x0 -70007 tstr Bắt buộc trên lớp CDI dành riêng cho VM đầu tiên. Ví dụ: sau trình điều khiển ảo hoá, đối với chuỗi DICE SDV Android. Tên của phiên bản SDV. Nếu nhiều lớp CDI chứa tên phiên bản thành phần, thì mỗi lớp phải có cùng một giá trị.

Chuỗi DICE bảo mật trên toàn cầu

Chuỗi DICE của Secure World giống với chuỗi mà máy chủ Cung cấp khoá từ xa (RKP) của Android nhận được từ các thiết bị Android. generateCertificateRequestV2() HAL của IRemotelyProvisionedComponent sẽ hiển thị chuỗi DICE này cho Android.

Bảng này mô tả một chuỗi DICE của Secure World:

Giai đoạn khởi động Lớp CDI của DICE Do
Trình tải khởi động chính CDI[0] UDS
Trình tải khởi động phụ CDI[1] Trình tải khởi động chính
Khởi động TEE CDI[2] Trình tải khởi động phụ
Khởi động TA KeyMint CDI[3] (Leaf) TEE

Để triển khai ứng dụng đáng tin cậy (TA) KeyMint, hãy sử dụng một trong các lựa chọn sau:

  • Một phiên bản KeyMint cho tất cả các VM SDV: Bạn PHẢI chỉ định một CDI duy nhất cho tất cả các VM.

hoặc

  • Một phiên bản KeyMint cho mỗi VM SDV: Bạn PHẢI chỉ định một giá trị CDI khác cho mỗi VM. Các giá trị CDI riêng lẻ PHẢI chứa một Component Instance Name (Tên phiên bản thành phần) khớp với Component Instance Name (Tên phiên bản thành phần) của VM.

Chuỗi Android SDV DICE

Chuỗi SDV DICE của Android chứng nhận phần mềm đang chạy trên đường dẫn khởi động dẫn qua trình điều khiển ảo hoá đến hệ điều hành cấp cao (HLOS) Android đang chạy trên các máy ảo SDV.

Bảng này mô tả một chuỗi DICE SDV mẫu của Android:

Giai đoạn khởi động Lớp CDI của DICE Do
Trình tải khởi động chính CDI[0] UDS
Trình tải khởi động phụ CDI[1] Trình tải khởi động chính
Trình điều khiển ảo hoá CDI[2] Trình tải khởi động phụ
Android HLOS CDI[3] (Leaf) (Trình tải Android trong) Trình điều khiển ảo hoá 1

1 Trình điều khiển ảo hoá chứng nhận trình tải khởi động Android trong khách dưới dạng một lớp. Trình tải khởi động Android chứng nhận HLOS Android.

Chứng chỉ CDI HLOS của Android

Trình tải khởi động Android (hoặc trình điều khiển ảo hoá, nếu không có trình tải khởi động Android mà chỉ có chương trình "trình tải" Android tải máy ảo trong trình điều khiển ảo hoá) sẽ ký Chứng chỉ CDI HLOS Android và bao gồm HLOS Android. Ví dụ: trình tải khởi động này bao gồm tất cả mã mà Trình tải khởi động Android xác minh theo Xác minh quy trình khởi động của Android (AVB).

Chứng chỉ CDI HLOS của Android phải chứa các giá trị dành riêng cho SDV của Android OS giúp giảm thiểu các lỗ hổng bảo mật. Ví dụ: khả năng rò rỉ bí mật bằng cách cấm các VM có lỗ hổng đã biết trong SDV Secure Mesh. Quy trình xác minh AVB cung cấp hầu hết các giá trị này.

Chúng cũng được chuyển cho KeyMint trong TEE, nơi chứng chỉ được CDI lá của chuỗi DICE SecureWorld ký và được truyền đến Android trong DeviceInfo để bật các tính năng như Chứng thực khoá và Chứng thực mã nhận dạng trong Android cốt lõi.

Các trường nhập mã và chứng chỉ codeHash

Chuỗi đại diện VBMeta (đầu ra mà trình tải khởi động Android thực hiện cho quy trình xác minh AVB) bao gồm phần mềm của HLOS Android. Do đó, khoá này đóng vai trò là android-dice-input-values để lấy các khoá bí mật CDI và được đưa vào trường dice-cert-fields của chứng chỉ CDI.

Thuật toán băm được đề xuất cho AVB là SHA-256, tạo ra một thông báo VBMeta dài 32 byte. Khác với Open Profile for DICE, Android Profile for DICE cho phép android-dice-hash-algos sử dụng android-dice-input-values có độ dài 32 byte cho quy trình DICE cũng như đặt giá trị có độ dài 32 byte tương tự làm codeHash trong chứng chỉ DICE.

Configuration descriptor: các trường trong Hồ sơ Android cho DICE

Ngoài những gì được mô tả cho tất cả các lớp CDI, những thông tin cụ thể sau đây áp dụng cho các trường trong Trình mô tả cấu hình trong Hồ sơ Android cho DICE:

Tên Khoá Loại Mô tả
Phiên bản thành phần -70003 int Phiên bản hệ điều hành của hệ thống từ AVB version-info-avb. Ngoài ra, giống như android.os.Build.VERSION.release.
Phiên bản bảo mật -70005 uint Cấp bản vá bảo mật của phân vùng system ở định dạng YYYYMMDD.
Điểm đánh dấu máy ảo RKP -70006 null Trình đánh dấu RKP VM ngăn tính năng Cung cấp khoá từ xa phát hành chứng chỉ cho chuỗi DICE SDV Android.

Trình đánh dấu VM RKP phải xuất hiện trong chứng chỉ CDI đầu tiên của Chuỗi DICE SDV Android không giống với chuỗi DICE Secure World. Trình đánh dấu này cũng KHÔNG ĐƯỢC xuất hiện trong bất kỳ chứng chỉ CDI nào khác để ngăn máy chủ RKP rkp-avf-support coi chuỗi DICE là đến từ một VM RKP.

Nội dung mô tả cấu hình: các trường mới

Trình mô tả Cấu hình của Chứng chỉ CDI HLOS Android phải chứa các giá trị cụ thể của SDV ngoài những giá trị mà Cấu hình Android cho DICE mô tả. Cấu hình SDV cho DICE dành riêng dải giá trị khoá [-71000, -71999] cho mục đích này. Bạn có thể thêm các trường dành riêng cho việc triển khai bằng cách sử dụng các giá trị khoá bên ngoài dải dành riêng. Các giá trị cụ thể của SDV là:

Tên Khoá Loại Mô tả
Trạng thái khởi động đã được xác minh -71000 tstr green, yellow hoặc orange.
build fingerprint -71001 tstr Chuỗi mà người dùng có thể đọc, xác định duy nhất bản dựng này, giống như ro.build.fingerprint. Android CDD, 3.2.2 Build Parameters (Các tham số bản dựng), cdd-3-2-2 xác định bản dựng này. VBMeta lưu trữ bản dựng này dưới dạng thuộc tính có tên com.android.build.system.fingerprint
system_ext cấp bản vá bảo mật -71002 uint Cấp bản vá bảo mật của phân vùng system_ext ở định dạng YYYYMMDD.
product cấp bản vá bảo mật -71003 uint Cấp bản vá bảo mật của phân vùng product ở định dạng YYYYMMDD.
vendor cấp bản vá bảo mật -71004 uint Cấp bản vá bảo mật của phân vùng vendor ở định dạng YYYYMMDD.
boot cấp bản vá bảo mật -71005 uint Cấp bản vá bảo mật của phân vùng boot (chứa Nhân Linux) ở định dạng YYYYMMDD.
Chế độ khởi động SDV -71006 tstr locked hoặc unlocked. Để tìm hiểu thêm, hãy xem phần Trạng thái và việc cung cấp mạng lưới.

Lựa chọn giá trị đầu vào chế độ của CDI HLOS Android

android-dice-mode của chứng chỉ CDI HLOS Android sử dụng định nghĩa sau:

AVB UNLOCKED AVB LOCKED
Chế độ khởi động SDV ĐÃ MỞ KHOÁ Gỡ lỗi Gỡ lỗi
Chế độ khởi động SDV ở trạng thái KHOÁ Chưa được định cấu hình (không hợp lệ) Bình thường

Hàm dẫn xuất khoá

android-dice-kdf lấy cặp khoá công khai và khoá riêng tư từ bí mật CDI_Attest cho CDI HLOS Android phải là HKDF có SHA512 làm hàm băm.