Sử dụng mã hóa tập tin ràng buộc xe

Trang này mô tả cách bật các tính năng mã hóa liên kết dựa trên phương tiện.

Tổng quan

Mục tiêu chính của tính năng hạt giống ràng buộc trên xe là để bảo vệ hơn nữa quyền riêng tư của người dùng bằng cách bảo vệ dữ liệu trên hệ thống Thông tin giải trí trên xe (IVI) không bị lấy ra khỏi xe. Điều này được thực hiện bằng cách liên kết các khóa mã hóa lưu trữ với một số Thiết bị Điều khiển Điện tử (ECU) khác sao cho nếu IVI bị tháo ra và đặt vào một phương tiện khác (hoặc chạy trên băng ghế thử nghiệm), thì dữ liệu người dùng đã mã hóa trên IVI sẽ không thể được giải mã.

Để liên kết các khóa mã hóa tệp, Vold trộn một hạt giống dành riêng cho xe với dẫn xuất khóa mã hóa khóa để các khóa này là duy nhất và được liên kết vật lý với xe. Hạt giống là một mảng byte, được OEM, STORAGE_ENCRYPTION_BINDING_SEED , hiển thị dưới dạng thuộc tính Lớp trừu tượng phần cứng phương tiện (VHAL) mới. Quyền của thuộc tính này bị hạn chế sao cho nó chỉ có thể được truy vấn bởi các daemon hệ thống đặc quyền.

Sơ đồ kiến ​​trúc

Hình này minh họa kiến ​​trúc tích hợp ràng buộc phương tiện:

Hình 1. Kiến trúc ràng buộc xe.

Cho phép liên kết dựa trên phương tiện

Việc liên kết mã hóa bộ nhớ với phương tiện phải được bật rõ ràng và không thể bật hoặc tắt nếu không thực hiện khôi phục cài đặt gốc. Điều này có nghĩa là bản cập nhật qua mạng (OTA) không thể bật tính năng này mà không xóa sạch thiết bị. OEM có thể chọn bật tính năng này khi nâng cấp nếu họ cũng khôi phục cài đặt gốc cho thiết bị. Ví dụ, trong một chuyến thăm dịch vụ.

Tính năng này được bật bằng cách hỗ trợ thuộc tính STORAGE_ENCRYPTION_BINDING_SEED trong phương tiện HAL do nhà cung cấp cung cấp. Thuộc tính này chứa một chuỗi byte có độ dài 16 byte và dự kiến ​​sẽ được lưu giữ trên ECU tách biệt với IVI. Thuộc tính này ban đầu được thiết lập bởi Android Automotive OS (AAOS), hệ điều hành này tạo ra thuộc tính này bằng cách sử dụng Trình tạo số ngẫu nhiên bảo mật bằng mật mã (CSRNG). AAOS sau đó đọc thuộc tính trên các lần khởi động tiếp theo.

Cách VHAL lưu trữ giá trị của STORAGE_ENCRYPTION_BINDING_SEED tùy theo nhà cung cấp. Chúng tôi có những khuyến nghị chung để bảo vệ hạt giống:

  1. ( Khuyến nghị ) Hạt giống được lưu trữ bởi ECU trong xe được bảo vệ tốt về mặt vật lý. Nếu không, việc cả IVI và ECU bị kéo ra khỏi xe là chuyện nhỏ.
  2. ( Khuyến nghị ) IVI và ECU nên xác thực lẫn nhau để trao đổi hạt giống nhằm ngăn chặn các yêu cầu giả mạo hạt giống từ ECU.
  3. ( Khuyến nghị ) Hạt giống phải được truyền bằng kênh an toàn để bảo vệ chống lại việc đánh hơi CAN bus.

Ngoài ra, hãy thêm phần sau để đảm bảo nhà cung cấp init.target.rclate-fs trước mount_all --late :

# feed vehicle binding seed to vold
exec_start vold_seed_binding

Xe HAL nên được khởi động vào early_hal thay vì hal now . Mọi thuộc tính hệ thống liên persist.* đều không thể truy cập được trong early-hal vì phân vùng /data chưa được gắn kết.

Định cấu hình ràng buộc dựa trên xe

Nếu hạt ECU không khớp, thiết bị sẽ khởi động lại vào recovery và nhắc người dùng xóa phân vùng /data hoặc thử lại.

Hành vi nhắc và xóa dữ liệu có thể được thay đổi trong buildins.cpp :

  1. Thay đổi prompt_and_wipe_data thành wipe_data . Thiết bị sẽ xóa sạch rồi khởi động lại mà không có lời nhắc.
  2. Thông báo nhắc nhở được chứa trong recovery.cpp .

    Hình 2. Tin nhắn nhắc nhở.

Kiểm tra ràng buộc dựa trên xe

Thử nghiệm giả

Một bài kiểm tra giả được cung cấp trong packages/services/Car/cpp/security/vehicle_binding_util/tests .

Để chạy thử nghiệm mô phỏng này:

attest libvehicle_binding_util_test

Thử nghiệm hội nhập

Kiểm tra atest được cung cấp trong packages/services/Car/cpp/security/vehicle_binding_util/tests .

Để chạy thử nghiệm tích hợp này:

atest vehicle_binding_integration_test