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

Một khái niệm mới có tên là Chế độ khởi động SDV (có thể là Đã khoá hoặc Chưa khoá) xác định cách hoạt động của tác nhân Khám phá dịch vụ SDV trong một máy ảo 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 máy ảo SDV khác) để thiết lập một mạng lưới an toàn. Nó tương tự như khái niệm Trạng thái thiết bị hiện có trong tính năng Xác minh quy trình khởi động của Android.

Chế độ khởi động SDV được tận dụng khi cung cấp Kho lưu trữ đáng tin cậy của máy ảo xe hoặc khi cập nhật kho lưu trữ này.

Hành vi lưới bảo mật SDV

Lưới Khám phá dịch vụ có thể ở một trong các trạng thái sau, tuỳ thuộc vào các giá trị khởi động mà lưới nhận được: Bình thường, Cảnh báo hoặc Nghiêm trọng.

Xe chỉ được giao cho chủ sở hữu khi lưới ở trạng thái "Bình thường". Lưới không thể chuyển từ trạng thái "Bình thường" sang trạng thái "Cảnh báo" mà không có sự can thiệp của quy trình chẩn đoán. "Cảnh báo" trong môi trường thực tế (ví dụ: không phải môi trường phát triển/gỡ lỗi) 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 Mesh chuyển từ trạng thái "Bình thường" sang "Nghiêm trọng" chỉ do bản cập nhật qua mạng (OTA), thì bản cập nhật đó sẽ được coi là không hợp lệ và bạn sẽ quay lại phiên bản "Bình thường" ban đầu.

Các phần sau đây mô tả chi tiết hơn về những trạng thái đó.

Bình thường

  • Hệ thống khởi động là SECURE theo quan điểm của Dịch vụ khám phá.
  • 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 mà tính năng này cho là đã khởi động một cách an toàn. Do đó, tính năng này cho rằng Lưới bảo mật SDV mà tính năng này là một phần của lưới bảo mật đó là an toàn.

Cảnh báo

  • Quá trình khởi động hệ thống có thể đã bị xâm nhập do một số quy trình xác minh bị tắt.
  • Dịch vụ Khám phá chỉ kết nối với những thiết bị ngang hàng cũng đã tắt các quy trình xác minh tương tự. Do đó, dịch vụ này là một phần của Mạng lưới bảo mật SDV với các thuộc tính bảo mật tương tự.
  • Quá trình Khởi động ngang hàng có thể đã hoàn tất thành công hoặc không thành công – không thể xác minh do lỗi / trạng thái vô hiệu hoá cục bộ.
  • 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 này không được truyền cũng như không bị ảnh hưởng bởi quá trình giao tiếp qua SDV Secure.
    • 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

  • Lỗi nghiêm trọng trong các giai đoạn 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 Khám phá dịch vụ 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 KHÔNG AN TOÀN theo quan điểm của Dịch vụ khám phá.

Chế độ khởi động SDV

Chế độ khởi động SDV có thể có hai giá trị: UNLOCKEDLOCKED. Đối với việc thiết lập lưới Khám phá dịch vụ, chế độ LOCKED (ĐÃ KHOÁ) có nghĩa là các lỗi xác minh là lỗi nghiêm trọng, trong khi ở chế độ UNLOCKED (CHƯA KHOÁ) thì không.

Xin lưu ý rằng Chế độ khởi động SDV khác với Trạng thái thiết bị của Android (còn gọi là Chế độ AVB). Chế độ khởi động SDV hướng dẫn hành vi của SDV Secure Mesh và liệu lỗi kết nối mạng có phải là FATAL hay không. Chế độ AVB quy định việc các quy trình xác minh do trình tải khởi động Android thực hiện có phải là quy trình quan trọng hay không.

ĐIỀU KIỆN Chế độ khởi động SDV
ĐÃ MỞ KHÓA ĐÃ KHOÁ
Local VVM Trust Store (Cửa hàng tin cậy VVM cục bộ) trống 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ế độ khớp SDV và AVB tại địa phương Xem bảng
So sánh giá trị Chế độ thiết bị từ xa Xem bảng
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 (bằng Chính sách DICE) Cảnh báo Nghiêm trọng
Không bắt tay được với quy trình xác thực từ xa Nghiêm trọng Nghiêm trọng

Chế độ khớp SDV và AVB tại địa phương

Bảng sau đây cho biết Chế độ AVB và Chế độ khởi động SDV ảnh hưởng đến Hành vi của lưới bảo mật SDV. 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
ĐÃ MỞ KHÓA ĐÃ KHOÁ
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ế độ. Lớp này được dùng để 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 lập trường bảo mật của tất cả phần mềm trên thiết bị, một Giá trị chế độ thiết bị được xác định, bắt nguồn từ Giá trị chế độ của tất cả các giai đoạn CDI của Chuỗi DICE liên quan đến một VM SDV nhất định (tức là Android HLOS và Secure World) và được xác định như sau:

enum DeviceMode {
  NotConfigured = 0,
  Recovery = 1,
  Debug = 2,
  Normal = 3,
}

Thuật toán

  1. Đặt deviceMode thành DeviceMode::Normal
  2. Giả sử diceChainList là 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. Giả sử cdiList là danh sách các chứng chỉ CDI trong diceChain:
    2. Đối với mỗi cdiCert trong cdiList:
      1. Giả sử cdiDeviceModeDeviceMode 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ụ sẽ chỉ kết nối với những Tác nhân khác có cùng Giá trị Chế độ thiết bị như chính nó.

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. Do đó, 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 nó.

Giá trị chế độ thiết bị Điều khiển từ xa
Chưa định cấu hình Gỡ lỗi Khôi phục Bình thường
Địa phương Chưa định 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 cung cấ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à 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à VVMFactoryTrust.

Trạng thái ban đầu

Ban đầu, tất cả ECU đều ở chế độ Khởi động SDV đã mở khoá, với VVMFactoryTrust và VVMTrustStore trống, ngoài mọi uds_certs có thể có trên VVMTrustStore.

Hình 1 mô tả một ví dụ 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).

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 máy ảo:

  • 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 đó 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 đó.

Bước 2: Viết VVMFactoryTrust

Trên một VM của mỗi ECU:

  • Ghi hàm băm của /vvmtruststore/uds_pubs do sdv_provisioning_tool xuất ra ở bước trước vào VVMFactoryTrust. Cách thực hiện thao tác ghi này là tuỳ theo OEM/nhà cung cấp và do đó nằm ngoài phạm vi của quy cách này.

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 máy ảo trong tất cả các ECU ở Chế độ khởi động SDV bị khoá.

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 VVMFactoryTrust.

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à do đó có thể được coi là một phần cứng duy nhất theo góc độ xác minh chuỗi DICE.

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 cung cấp tại nhà máy và đang chạy ở Chế độ khởi động SDV bị khoá.

Hình 5 mô tả một ví dụ trong đó ECU-0 bị trục trặc và do đó cần được thay thế
.

Bước 1: Lắp đặt ECU mới

Lắp đặt ECU mới. ECU này sẽ ở 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 cảnh báo và một ở trạng thái bình thường. Cả hai Lưới bảo mật SDV đều chưa hoàn chỉnh.

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 máy ảo của tất cả các ECU ở Chế độ khởi động SDV đã mở khoá.

Trong Hình 7, VM-B và VM-C sẽ tham gia SDV Secure Mesh cảnh báo, hiện đã hoàn tất.

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 đó 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 mã băm của /vvmtruststore/uds_pubs vừa được ghi và xuất mã băm đó, nhưng mã băm này không được dùng trong quy trình này.

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 Lưới bảo mật SDV sẽ 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 đó.
    • Điều này thường có nghĩa là gửi thông tin này đến một máy chủ từ xa đã lưu trữ các chứng chỉ hoặc sẽ tạo các chứng chỉ bằng cách kiểm tra khoá công khai đã nhận được dựa trên cơ sở dữ liệu khoá công khai UDS đã biết. Cơ sở dữ liệu này sẽ được tạo từ các khoá công khai UDS được trích xuất trong quá trình sản xuất ECU.
  • Viết /vvmtruststore/uds_certs của từng SDV VM.

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 bị khoá.

Nếu vì lý do nào đó mà Lưới bảo mật SDV không hoàn chỉnh, hãy quay lại Bước 2.