Trạng thái và hoạt động cấp phép của mạng lưới

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 SECURE theo 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 UNSECURE theo 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ị: LOCKEDUNLOCKED. Đố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:

  1. Chỉ định deviceModeDeviceMode::Normal.
  2. Chỉ định diceChainList làm danh sách các chuỗi DICE liên quan đến một máy ảo SDV.
  3. Đối với mỗi diceChain trong diceChainList:
    1. Chỉ định cdiList làm danh sách chứng chỉ CDI trong diceChain:
    2. Đối với mỗi cdiCert trong cdiList:
      1. Chỉ định cdiDeviceMode làm DeviceMode tương ứng với cdiCert.mode.
      2. Đặt deviceMode thành min(deviceMode, cdiDeviceMode).
  4. 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):

Ví dụ về việc cung cấp tại nhà máy, trạng thái ban đầu

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.

  1. 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.
  2. 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 đó.

Cung cấp theo lô tại nhà máy, bước 1

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:

  1. Ghi hàm băm của /vvmtruststore/uds_pubs do sdv_provisioning_tool xuấ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.

Cung cấp theo lô tại nhà máy, bước 2

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.

Cấp phép tại nhà máy, bước 3

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ế:

Thay thế phụ tùng, trạng thái ban đầu

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.

Thay thế phụ tùng, bước 1

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.

Thay thế phụ tùng, bước 2

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.

Thay thế phụ tùng, bước 3

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_pubs từ 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.
  • Viết /vvmtruststore/uds_certs của từng SDV VM.

Thay thế linh kiện, bước 4

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.

Thay thế phụ tùng, bước 5

Hình 10. Thay thế linh kiện, bước 5.