Trang này chứa các trường hợp sử dụng phổ biến cho AVF.
Biên dịch biệt lập
Là một vùng biệt lập bảo mật phần mềm, máy ảo (VM) đượ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ề 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à các JAR máy chủ hệ thống (do bản cập nhật APEX kích hoạt) từ quá trình 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 nằm 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 makefile.
Mục tiêu bảo mật là biên dịch trung thực dữ liệu đầu vào đã xác minh và tạo ra đầu ra riêng biệt; Android với tư cách 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 quá trình này thất bại (khi Android quay lại quá trình biên dịch thời gian khởi động).
Dịch vụ biên dịch trong VM 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ừ VM để xác minh chữ ký.
Khoá của VM được tạo từ hồ sơ DICE của VM, do các APEX và APK được gắn vào VM xác định, ngoài các thông số khác của VM, chẳng hạn như khả năng gỡ lỗi.
Để xác định xem khoá công khai có phải là từ một VM không mong muốn hay không, Android sẽ khởi động VM để xác định xem khoá có chính xác hay không. VM sẽ 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 Xác minh quy trình khởi động của VM đượ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 những dữ liệu đầu vào đáp ứng một số điều kiện nhất định, chẳng hạn như chỉ chấp nhận tệp đầu vào khi tên và giá trị fs-verity
của tệp đó được xác định trong danh sách cho phép.
Mọi API lộ diện từ VM đều là bề mặt tấn công. Tất cả các tệp đầu vào và tham số đều được giả định là từ một máy khách không đáng tin cậy, đồng thời phải được xác minh và kiểm tra kỹ lưỡng trước khi xử lý.
Tính toàn vẹn của tệp đầu vào và đầu ra được VM xác minh, với các tệp được lưu trữ trên Android dưới dạng một 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 thuật toán
fs-verity
. Để một tệp đầu vào có thể xuất hiện trong VM, bạn phải cung cấp hàm băm gốc của tệp đó trong một vùng chứa (APK) đóng góp vào hồ sơ DICE của VM. Với hàm băm gốc đáng tin cậy, kẻ tấn công không thể giả mạo dữ liệu đầu vào mà không bị phát hiện. - Tính toàn vẹn của tệp đầu ra phải được duy trì trong VM. Ngay cả khi một 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ì bằng cùng một định dạng cây
fs-verity
nhưng có thể được cập nhật linh hoạt. 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 VM. Dịch vụ trong VM bảo vệ các tệp đầu ra bằng chữ ký.
Môi trường phát triển Linux
Theo truyền thống, Android là hệ điều hành chính duy nhất không cho phép người dùng phát triển ứng dụng trên chính nền tảng này. Với việc ra mắt môi trường phát triển Linux, chúng tôi hướng đến việc cung cấp môi trường phát triển dựa trên Linux cho những người dùng Android là nhà phát triển. Trong tương lai, chúng tôi dự định mở rộng nỗ lực này để các đối tác có thể triển khai các trường hợp sử dụng VM (máy ảo) sáng tạo, chẳng hạn như chạy các ứng dụng giao diện người dùng đồ hoạ và thậm chí cả trò chơi.
Môi trường phát triển Linux có trên một số thiết bị và chạy trong một máy ảo không được bảo vệ.
Sau đây là các thành phần cấp cao của máy ảo Linux:
- Ứng dụng Terminal: Một ứng dụng Android cung cấp giao diện thiết bị đầu cuối. Ứng dụng này sử dụng WebView để kết nối với một dịch vụ web đang chạy trong VM để tương tác. Theo mặc định, ứng dụng này sẽ bị tắt. Kích hoạt tính năng này trong phần Cài đặt của nhà phát triển.
- Khung ảo hoá cho Android (AVF): Hệ thống con hiện có của Android để tạo và quản lý máy ảo. Bạn chỉ cần sửa đổi một chút để hỗ trợ hình ảnh hệ điều hành tuỳ chỉnh cho tính năng này.
- máy ảo: Một VM do AVF tạo. Nó lưu trữ dịch vụ thiết bị đầu cuối và AVF tạo dịch vụ này dành riêng cho chức năng của ứng dụng Terminal.
- Hình ảnh hệ điều hành: Hình ảnh hệ điều hành dựa trên Debian được sửa đổi một chút từ Debian nguồn. Ứng dụng Terminal sẽ tải hình ảnh này xuống từ một máy chủ bên ngoài của Google. Đây là nền tảng cho hoạt động của VM.
- Guest Agent: Phần mềm mới trong máy ảo. Nó báo cáo trạng thái của hệ điều hành cho AVF và cung cấp quyền kiểm soát máy ảo.
- ttyd: Phần mềm nguồn mở chạy trong VM, triển khai tính năng mô phỏng thiết bị đầu cuối qua HTTP. WebView của ứng dụng Terminal kết nối với ứng dụng này.
- Trình quản lý chia sẻ Internet: Một hệ thống con hiện có của Android. Nó cung cấp quyền truy cập mạng cho máy ảo bằng cách chia sẻ Internet từ máy ảo với thiết bị chạy Android.