Tài liệu này trình bày các trường hợp sử dụng phổ biến của AVF.
Biên dịch tách biệt
Là một mạng lưới bảo mật phần mềm, máy ảo được bảo vệ cung cấp một môi trường an toàn để biên dịch mã nhạy cảm về tính bảo mật. Môi trường này cho phép di chuyển quá trình biên dịch bootclasspath
và tệp JAR của máy chủ hệ thống (do bản cập nhật APEX kích hoạt) từ thời điểm khởi động sớm sang trước khi khởi động lại, đồng thời giảm đáng kể thời gian khởi động sau khi cập nhật APEX.
Quá trình triển khai diễn ra trong APEX com.android.compos
. Thành phần này không bắt buộc và có thể được đưa vào bằng cách sử dụng tệp makefile.
Mục tiêu bảo mật là biên dịch một cách trung thực dữ liệu đầu vào đã xác minh và tạo ra đầu ra riêng biệt; Android là một ứng dụng không đáng tin cậy không thể thay đổi đầu ra biên dịch theo bất kỳ cách nào khác ngoài việc khiến đầu ra đó không thành công (khi Android quay lại biên dịch thời gian khởi động).
Dịch vụ biên dịch trong máy ảo chỉ tạo chữ ký nếu không có lỗi trong toàn bộ quá trình biên dịch. Android có thể truy xuất khoá công khai từ máy ảo để xác minh chữ ký.
Khoá của máy ảo được tạo từ hồ sơ DICE của máy ảo, do các APEX và APK được gắn vào máy ảo xác định, ngoài các tham số máy ảo khác, chẳng hạn như khả năng gỡ lỗi.
Để xác định xem khoá công khai có phải là của một máy ảo không mong muốn hay không, Android sẽ khởi động máy ảo để xác định xem khoá có chính xác hay không. Máy ảo được khởi động ở giai đoạn khởi động sớm sau mỗi lần cập nhật APEX.
Với tính năng Khởi động đã xác minh của máy ảo được bảo vệ, dịch vụ biên dịch chỉ chạy mã đã xác minh. Do đó, mã có thể xác định chỉ chấp nhận các dữ liệu đầu vào đáp ứng một số điều kiện nhất định, ví dụ: chỉ chấp nhận tệp đầu vào có tên và chuỗi đại diện fs-verity
được xác định trong danh sách cho phép.
Mọi API bị lộ từ máy ảo đều là các nền tảng dễ bị tấn công. Tất cả tệp đầu vào và tham số được giả định là từ một ứng dụng không đáng tin cậy và phải được xác minh và kiểm tra trước khi xử lý.
Tính toàn vẹn của tệp đầu vào/đầu ra được xác minh bằng máy ảo, với các tệp được lưu trữ trên Android dưới dạng máy chủ tệp không đáng tin cậy, như sau:
- Bạn phải xác minh nội dung của tệp đầu vào trước khi sử dụng bằng cách sử dụng thuật toán
fs-verity
. Để tệp đầu vào có mặt trong máy ảo, hàm băm gốc của tệp đó phải được cung cấp trong một vùng chứa (APK) đóng góp vào hồ sơ DICE của máy ảo. Với hàm băm gốc đáng tin cậy, kẻ tấn công không thể can thiệp vào dữ liệu đầu vào mà không bị phát hiện. - Bạn phải duy trì tính toàn vẹn của tệp đầu ra trong máy ảo. Ngay cả khi tệp đầu ra được lưu trữ trên Android, trong quá trình tạo, tính toàn vẹn vẫn được duy trì ở cùng một định dạng cây
fs-verity
nhưng có thể được cập nhật một cách linh động. Bạn có thể xác định tệp đầu ra cuối cùng bằng hàm băm gốc, được tách biệt trong máy ảo. Dịch vụ trong máy ảo bảo vệ các tệp đầu ra bằng chữ ký.