Sử dụng tính năng mã hoá tệp được liên kết với xe

Trang này mô tả cách bật các tính năng hạt giống mã hoá liên kết dựa trên xe.

Tổng quan

Mục tiêu chính của tính năng gốc liên kết xe là tăng cường bảo vệ 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í trong xe (IVI) để tránh bị xoá khỏi xe. Đây là được thực hiện bằng cách liên kết khoá mã hoá 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 sẽ bị gỡ bỏ và đặt vào một xe khác (hoặc chạy trên ghế thử nghiệm), dữ liệu người dùng được mã hoá trên Không thể giải mã IVI.

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

Sơ đồ cấu trúc

Hình này minh hoạ kiến trúc của tính năng tích hợp liên kết với xe:

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

Bật tính năng liên kết dựa trên xe

Việc liên kết phương thức mã hoá bộ nhớ với xe phải được bật một cách rõ ràng và không được bật hoặc tắt mà không cần đặt lại về trạng thái ban đầu. Điều này có nghĩa là bản cập nhật qua mạng không dây (OTA) không thể bật tính năng này mà không cần xoá sạch thiết bị. Nhà sản xuất thiết bị gốc có thể chọn bật tính năng này nếu họ cũng đặt lại thiết bị về trạng thái ban đầu. Ví dụ: trong một lần ghé 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 HAL (Lớp trừu tượng phần cứng) cho xe 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à có độ dài dự kiến sẽ được duy trì trên ECU tách biệt với IVI. Ban đầu, thuộc tính được đặt bởi Android Automotive OS (AAOS), tạo hệ điều hành này bằng một Số ngẫu nhiên bảo mật được mã hoá Trình tạo (CSRNG). Sau đó, AAOS sẽ đọc thuộc tính trong các lần khởi động tiếp theo.

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

  1. (Nên dùng) Hạt giống được ECU lưu trữ trong xe thực tế được bảo vệ tốt. Nếu không, việc lấy cả IVI và ECU từ chiếc xe.
  2. (Nên dùng) IVI và ECU phải xác thực lẫn nhau để trao đổi hạt giống với ngăn chặn các yêu cầu giả mạo cho mã gốc từ ECU.
  3. (Đề xuất) Hạt giống phải được truyền qua một kênh an toàn để tránh Quét tìm xe buýt CAN.

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

# feed vehicle binding seed to vold
exec_start vold_seed_binding

Bạn phải khởi động HAL (Lớp trừu tượng phần cứng) cho xe bằng early_hal thay vì hal now. Bạn không thể truy cập bất kỳ thuộc tính hệ thống persist.* nào trong early-hal vì Phân vùng /data chưa được gắn kết.

Định cấu hình liên kết dựa trên xe

Nếu số gốc ECU không khớp, thiết bị sẽ khởi động lại để khôi phục và nhắc người dùng xoá dữ liệu phân vùng /data hoặc thử lại.

Có thể thay đổi hành vi về lời nhắc và xoá sạch dữ liệu trong Buildins.cpp:

  1. Thay đổi prompt_and_wipe_data thành wipe_data. Thiết bị xoá sạch và sau đó khởi động lại mà không có lời nhắc.
  2. Thông báo nhắc có trong recovery.cpp.

    Hình 2. Thông báo nhắc.

Kiểm thử tính năng liên kết dựa trên xe

Kiểm thử mô phỏng

Một bài kiểm thử mô phỏng được cung cấp trong packages/services/Car/cpp/security/vehicle_binding_util/tests.

Cách chạy chương trình kiểm thử mô phỏng này:

attest libvehicle_binding_util_test

Kiểm thử tích hợp

Trường hợp kiểm thử atest được cung cấp trong packages/services/Car/cpp/security/vehicle_binding_util/tests.

Cách chạy bài kiểm thử quá trình tích hợp này:

atest vehicle_binding_integration_test