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:
- (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.
- (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.
- (Đề 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:
- Thay đổi
prompt_and_wipe_data
thànhwipe_data
. Thiết bị xoá sạch và sau đó khởi động lại mà không có lời nhắc. - 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