Chế độ khởi động SDV xác định cách hoạt động của tác nhân Khám phá dịch vụ SDV trong một VM SDV khi cố gắng kết nối với các tác nhân Khám phá dịch vụ khác (đang chạy trong các VM SDV khác) để thiết lập một mạng lưới an toàn. Điều này tương tự như khái niệm hiện có về trạng thái thiết bị trong tính năng Xác minh quy trình khởi động của Android.
Chế độ khởi động SDV được dùng khi cung cấp hoặc cập nhật Kho lưu trữ tin cậy của máy ảo trên xe (Kho lưu trữ tin cậy của VVM, còn được gọi là vvmtruststore).
Hành vi của SDV Secure Mesh
Lưới Khám phá dịch vụ ở một trong các trạng thái sau đây, tuỳ thuộc vào các giá trị khởi động mà lưới nhận được: Normal, Warning hoặc Fatal.
Trong các phương tiện sản xuất được giao cho khách hàng, SDV Secure Mesh phải ở trạng thái Normal. Mạng lưới này cần có sự can thiệp của quy trình chẩn đoán để chuyển từ trạng thái Normal sang Warning. Trong môi trường thực tế (ví dụ: không phải môi trường phát triển hoặc gỡ lỗi), trạng thái Warning chỉ xảy ra trong quá trình cung cấp.
Fatal là một lỗi cơ bản, tương tự như hình ảnh system_ext không xác minh được chữ ký trong trình tải khởi động Android. Nếu SDV Secure Mesh chuyển từ Normal sang Fatal chỉ do bản cập nhật qua mạng (OTA), thì bản cập nhật đó được coi là không hợp lệ và mạng lưới sẽ quay lại phiên bản Normal ban đầu.
Các phần sau đây mô tả chi tiết hơn về các trạng thái này.
Bình thường
- Hệ thống khởi động
SECUREtheo góc độ của Dịch vụ khám phá. - Dịch vụ Khám phá chỉ kết nối với những thiết bị ngang hàng đã khởi động an toàn. Một thiết bị ngang hàng khởi động an toàn ngụ ý rằng Lưới bảo mật SDV cũng an toàn.
Cảnh báo
- Quá trình khởi động hệ thống có thể đã bị xâm nhập vì một số quy trình xác minh bị tắt.
- Tính năng Khám phá dịch vụ chỉ kết nối với những thiết bị ngang hàng có cùng một bộ xác minh bị vô hiệu hoá, đảm bảo rằng tất cả các thiết bị ngang hàng trong Lưới bảo mật SDV đều có các thuộc tính bảo mật giống hệt nhau.
- Không thể xác minh việc khởi động ngang hàng thành công do lỗi cục bộ hoặc các tính năng bị vô hiệu hoá.
- Ngoài môi trường phát triển hoặc tình huống, việc này có những tác động sau:
- Không được có dữ liệu người dùng. Tức là dữ liệu đó không được truyền cũng như không bị ảnh hưởng bởi hoạt động giao tiếp qua SDV Secure Mesh.
- Chỉ những dịch vụ cần thiết cho quy trình cung cấp mới có sẵn khi mạng lưới ở trạng thái này.
Nghiêm trọng
- Đã xảy ra lỗi nghiêm trọng trong quá trình khởi động hệ thống.
- Có ít nhất một lỗi hoặc sự cố cơ bản ngăn tác nhân Service Discovery thiết lập một mạng lưới. Các dịch vụ cục bộ không thể giao tiếp với các dịch vụ từ xa.
- Hệ thống khởi động
UNSECUREtheo góc độ của Dịch vụ khám phá.
Chế độ khởi động SDV
Chế độ khởi động SDV có thể có 2 giá trị: LOCKED và UNLOCKED. Đối với việc thiết lập lưới Khám phá dịch vụ, LOCKED cho biết các lỗi xác minh là nghiêm trọng và UNLOCKED có nghĩa là các lỗi đó không nghiêm trọng.
| Điều kiện | Chế độ khởi động SDV | |
|---|---|---|
UNLOCKED |
LOCKED |
|
| Local VVM Trust Store empty | Cảnh báo | Nghiêm trọng |
| Thiếu chuỗi DICE cục bộ | Nghiêm trọng | Nghiêm trọng |
| Không xác minh được chuỗi DICE cục bộ | Cảnh báo | Nghiêm trọng |
| Chế độ SDV và AVB cục bộ phù hợp | Xem bảng trong phần Local SDV and AVB mode match (So khớp chế độ SDV cục bộ và AVB) | |
| So sánh giá trị chế độ thiết bị từ xa | Xem bảng trong phần So sánh giá trị chế độ thiết bị từ xa | |
Không thể so khớp uds_pubs từ xa |
Cảnh báo | Nghiêm trọng |
| Không xác minh được chuỗi DICE từ xa (sử dụng chính sách DICE) | Cảnh báo | Nghiêm trọng |
| Không bắt tay xác thực từ xa được | Nghiêm trọng | Nghiêm trọng |
Chế độ SDV và AVB tại địa phương
Bảng sau đây cho biết cách chế độ AVB và Chế độ khởi động SDV ảnh hưởng đến hành vi của SDV Secure Mesh. Màu sắc được xác định trong phần Tích hợp dành riêng cho Android của tài liệu AVB.
| Chế độ AVB x Chế độ khởi động SDV | Chế độ khởi động SDV | ||
|---|---|---|---|
UNLOCKED |
LOCKED |
||
AVB LOCKED |
Xanh lục | Cảnh báo | Bình thường |
| Vàng | Nghiêm trọng | Nghiêm trọng | |
AVB UNLOCKED |
Orange | Cảnh báo | Nghiêm trọng |
Giá trị chế độ thiết bị
Trong chuỗi DICE, mọi chứng chỉ CDI đều có một giá trị chế độ. Giá trị này mô tả trạng thái bảo mật của lớp đó dựa trên dữ liệu đầu vào cấu hình. Để thể hiện trạng thái bảo mật của tất cả phần mềm trên thiết bị, quy cách SDV xác định một giá trị Chế độ thiết bị. Giá trị này bắt nguồn từ giá trị chế độ của tất cả các giai đoạn CDI trong chuỗi DICE liên quan đến một VM SDV nhất định (tức là Android HLOS và Secure World) và sử dụng quy trình liệt kê sau:
enum DeviceMode {
NotConfigured = 0,
Recovery = 1,
Debug = 2,
Normal = 3,
}
Thuật toán
Thuật toán tính Giá trị chế độ thiết bị như sau:
- Chỉ định
deviceModelàDeviceMode::Normal. - Chỉ định
diceChainListlàm danh sách các chuỗi DICE liên quan đến một máy ảo SDV. - Đối với mỗi
diceChaintrongdiceChainList:- Chỉ định
cdiListlàm danh sách chứng chỉ CDI trongdiceChain: - Đối với mỗi
cdiCerttrongcdiList:- Chỉ định
cdiDeviceModelàmDeviceModetương ứng vớicdiCert.mode. - Đặt
deviceModethànhmin(deviceMode, cdiDeviceMode).
- Chỉ định
- Chỉ định
- Trả lại
deviceMode.
So sánh giá trị chế độ thiết bị từ xa
Tác nhân Khám phá dịch vụ chỉ kết nối với những tác nhân khác có cùng Giá trị chế độ thiết bị.
Giá trị Chế độ thiết bị đảm bảo rằng một mạng lưới không thể có các thành viên có thuộc tính bảo mật khác nhau. Lưới kết quả có một lập trường bảo mật đồng nhất giữa tất cả các thành viên của lưới.
| Giá trị Chế độ thiết bị | Điều khiển từ xa | ||||
|---|---|---|---|---|---|
| Chưa cấu hình | Gỡ lỗi | Khôi phục | Bình thường | ||
| Địa phương | Chưa cấu hình | Nghiêm trọng | Nghiêm trọng | Nghiêm trọng | Nghiêm trọng |
| Gỡ lỗi | Nghiêm trọng | Cảnh báo | Nghiêm trọng | Nghiêm trọng | |
| Khôi phục | Nghiêm trọng | Nghiêm trọng | Cảnh báo | Nghiêm trọng | |
| Bình thường | Nghiêm trọng | Nghiêm trọng | Nghiêm trọng | Bình thường | |
Quy trình cấp phép tại nhà máy
Đây là quy trình cung cấp tại dây chuyền lắp ráp xe, trong đó giả định rằng cơ sở hạ tầng khoá công khai không có sẵn. Quy trình này phụ thuộc vào giá trị 32 byte được lưu trữ trong bộ nhớ có thể lập trình một lần (OTP) có tên là Vehicle VM (VVM) Factory Trust hoặc vvmfactorytrust. Khi được đặt, giá trị này sẽ được truyền đến nhân dưới dạng một tham số có tên là androidboot.sdv.vvmfactorytrust.
Tất cả các VM trong ECU phải có cùng Chế độ khởi động SDV và VVM Factory Trust.
Trạng thái ban đầu
Ban đầu, tất cả ECU đều ở Chế độ khởi động SDV ở chế độ UNLOCKED, với VVM Factory Trust trống và Vehicle VM Trust Store, ngoài mọi uds_certs có trên vvmtruststore. Hình 1 mô tả một ví dụ trong đó có 3 VM SDV (VM-A, VM-B và VM-C) được phân phối trong 2 ECU riêng biệt (ECU-0 và ECU-1):
Hình 1. Cấp phép tại nhà máy, trạng thái ban đầu.
Bước 1: Chạy sdv_provisioning_tool
Khởi động tất cả máy ảo từ tất cả ECU.
Trên mỗi VM, hãy chạy sdv_provisioning_tool.
- Công cụ này giao tiếp với tác nhân Khám phá dịch vụ cục bộ và đợi tác nhân này báo hiệu rằng Lưới bảo mật SDV đã hoàn tất và tác nhân đã ghi danh sách khoá công khai UDS vào
/vvmtruststore/uds_pubs. - Khi điều này xảy ra, công cụ sẽ lấy hàm băm của
/vvmtruststore/uds_pubsvừa được ghi và xuất hàm băm đó.
Hình 2. Cung cấp theo lô, bước 1.
Bước 2: Viết VVM Factory Trust
Trên một VM của mỗi ECU:
- Ghi hàm băm của
/vvmtruststore/uds_pubsdosdv_provisioning_toolxuất ra ở bước trước vào VVM Factory Trust. Cách thực hiện thao tác ghi này là dành riêng cho OEM hoặc nhà cung cấp và nằm ngoài phạm vi của quy cách này.
Hình 3. Cung cấp theo yêu cầu của nhà máy, bước 2.
Bước 3: Khởi động lại ở Chế độ khởi động SDV bị khoá
Khởi động lại tất cả các VM trong tất cả các ECU ở Chế độ khởi động SDV ở chế độ LOCKED.
Tác nhân Khám phá dịch vụ tin tưởng các VM trong ECU có khoá công khai UDS được liệt kê trong uds_pubs vì hàm băm của tệp này khớp với VVM Factory Trust.
Vì các ECU được cung cấp cùng nhau, nên chúng được liên kết vĩnh viễn với nhau và có thể được coi là một phần cứng duy nhất theo góc độ xác minh chuỗi DICE.
Hình 4. Cung cấp tại nhà máy, bước 3.
Quy trình thay thế phụ tùng
Đây là quy trình cấp phép tại một xưởng sửa chữa hoặc gara ô tô được uỷ quyền, nơi ECU bị lỗi phải được thay thế bằng một ECU mới chưa được cấp phép.
Quy trình này phụ thuộc vào các chứng chỉ UDS do cơ quan gốc nêu trong vvmconfig phát hành trực tiếp hoặc gián tiếp thông qua một chuỗi các cơ quan trung gian.
Trạng thái ban đầu
Tất cả các máy ảo đều đã được cấp phép tại nhà máy và đang chạy ở Chế độ khởi động SDV ở chế độ LOCKED.
Hình 5 mô tả một ví dụ về trường hợp ECU-0 bị trục trặc và cần được thay thế:
Hình 5. Thay thế phụ tùng, trạng thái ban đầu.
Bước 1: Lắp đặt ECU mới
Lắp đặt ECU mới ở trạng thái trống, chưa được cung cấp.
Trong Hình 6, khi ECU-2 (ECU thay thế) được bật nguồn, sẽ có 2 Lưới bảo mật SDV rời rạc: một ở trạng thái Warning và một ở trạng thái Normal. Cả hai Lưới bảo mật SDV đều chưa hoàn chỉnh.
Hình 6. Thay thế linh kiện, bước 1.
Bước 2: Khởi động lại ở Chế độ khởi động SDV đã mở khoá
Khởi động lại tất cả các VM của tất cả ECU ở Chế độ khởi động SDV ở chế độ UNLOCKED.
Trong Hình 7, VM-B và VM-C tham gia vào Lưới bảo mật SDV Warning đã hoàn tất.
Hình 7. Thay thế linh kiện, bước 2.
Bước 3: Chạy sdv_provisioning_tool
Trên mỗi VM, hãy chạy sdv_provisioning_tool.
Công cụ này giao tiếp với tác nhân Khám phá dịch vụ cục bộ và đợi tác nhân này báo hiệu rằng Lưới bảo mật SDV đã hoàn tất và tác nhân đã ghi danh sách khoá công khai UDS vào /vvmtruststore/uds_pubs.
Khi điều này xảy ra, công cụ sẽ lấy hàm băm của /vvmtruststore/uds_pubs vừa được ghi và xuất hàm băm đó, nhưng hàm băm này không được dùng trong quy trình này.
Hình 8. Thay thế linh kiện, bước 3.
Bước 4: Cài đặt chứng chỉ UDS
- Trích xuất
/vvmtruststore/uds_pubstừ một máy ảo SDV bất kỳ. Không quan trọng bạn chọn cái nào vì tất cả các VM trong cùng một SDV Secure Mesh đều như nhau. - Truy xuất chứng chỉ cấp phép cho tất cả khoá công khai UDS có trong
/vvmtruststore/uds_pubsđó.- Bước này thường liên quan đến việc gửi các khoá công khai UDS đã trích xuất (hoặc tệp
/vvmtruststore/uds_pubs) đến một máy chủ cấp phép từ xa. Máy chủ truy xuất các chứng chỉ hiện có hoặc tạo chứng chỉ mới bằng cách kiểm tra các khoá công khai đã nhận được dựa trên cơ sở dữ liệu gồm các khoá công khai UDS đã biết được tạo trong quá trình sản xuất ECU.
- Bước này thường liên quan đến việc gửi các khoá công khai UDS đã trích xuất (hoặc tệp
- Viết
/vvmtruststore/uds_certscủa từng SDV VM.
Hình 9. Thay thế linh kiện, bước 4.
Bước 5: Khởi động lại ở Chế độ khởi động SDV bị khoá
Khởi động lại tất cả các máy ảo ở Chế độ khởi động SDV ở chế độ LOCKED.
Nếu Lưới bảo mật SDV chưa hoàn chỉnh, hãy quay lại Bước 2.
Hình 10. Thay thế linh kiện, bước 5.