Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Xác minh khởi động

Khởi động đã xác minh yêu cầu xác minh bằng mật mã tất cả mã thực thi và dữ liệu là một phần của phiên bản Android đang được khởi động trước khi nó được sử dụng. Điều này bao gồm hạt nhân (được tải từ phân vùng boot ), cây thiết bị (được tải từ phân vùng dtbo ), phân vùng system , phân vùng vendor , v.v.

Các phân vùng nhỏ, chẳng hạn như bootdtbo , chỉ được đọc một lần thường được xác minh bằng cách tải toàn bộ nội dung vào bộ nhớ và sau đó tính toán băm của nó. Giá trị băm được tính toán này sau đó được so sánh với giá trị băm mong đợi . Nếu giá trị không khớp, Android sẽ không tải. Để biết thêm chi tiết, hãy xem Dòng khởi động .

Các phân vùng lớn hơn sẽ không vừa với bộ nhớ (chẳng hạn như hệ thống tệp) có thể sử dụng cây băm trong đó xác minh là một quá trình liên tục xảy ra khi dữ liệu được tải vào bộ nhớ. Trong trường hợp này, giá trị băm gốc của cây băm được tính toán trong thời gian chạy và được kiểm tra với giá trị băm gốc dự kiến . Android bao gồm trình điều khiển dm-verity để xác minh các phân vùng lớn hơn. Nếu tại một thời điểm nào đó, giá trị băm gốc được tính toán không khớp với giá trị băm gốc dự kiến , dữ liệu sẽ không được sử dụng và Android sẽ rơi vào trạng thái lỗi. Để biết thêm chi tiết, hãy xem tham nhũng dm-verity .

Các băm mong đợi thường được lưu trữ ở cuối hoặc đầu của mỗi phân vùng đã được xác minh, trong một phân vùng chuyên dụng hoặc cả hai. Điều quan trọng, những băm này được ký (trực tiếp hoặc gián tiếp) bởi gốc của sự tin cậy. Ví dụ: việc triển khai AVB hỗ trợ cả hai cách tiếp cận, hãy xem Android Verified Boot để biết chi tiết.

Bảo vệ khôi phục

Ngay cả với quy trình cập nhật hoàn toàn an toàn, người khai thác hạt nhân Android không liên tục có thể cài đặt thủ công phiên bản Android cũ hơn, dễ bị tấn công hơn, khởi động lại vào phiên bản dễ bị tấn công và sau đó sử dụng phiên bản Android đó để cài đặt bản khai thác liên tục. Từ đó kẻ tấn công sở hữu vĩnh viễn thiết bị và có thể làm bất cứ điều gì, bao gồm cả việc vô hiệu hóa các bản cập nhật.

Biện pháp bảo vệ chống lại lớp tấn công này được gọi là Bảo vệ khôi phục . Bảo vệ khôi phục thường được triển khai bằng cách sử dụng bộ nhớ có bằng chứng giả mạo để ghi lại phiên bản Android mới nhất và từ chối khởi động Android nếu phiên bản đó thấp hơn phiên bản đã ghi. Các phiên bản thường được theo dõi trên cơ sở mỗi phân vùng.

Để biết thêm chi tiết về cách AVB xử lý các biện pháp bảo vệ khôi phục, hãy xem AVB README .

Xử lý lỗi xác minh

Việc xác minh có thể không thành công tại thời điểm khởi động (chẳng hạn như nếu hàm băm được tính toán trên phân vùng boot không khớp với hàm băm mong đợi) hoặc tại thời điểm chạy (chẳng hạn như nếu dm-verity gặp lỗi xác minh trên phân vùng system ). Nếu xác minh không thành công tại thời điểm khởi động, thiết bị không thể khởi động và người dùng cuối cần thực hiện các bước để khôi phục thiết bị.

Nếu việc xác minh không thành công trong thời gian chạy, quy trình sẽ phức tạp hơn một chút. Nếu thiết bị sử dụng dm-verity, nó phải được định cấu hình ở chế độ restart . Ở chế độ restart , nếu gặp lỗi xác minh, thiết bị sẽ được khởi động lại ngay lập tức với một cờ cụ thể được đặt để chỉ ra lý do. Bộ tải khởi động sẽ nhận thấy cờ này và chuyển dm-verity sang sử dụng chế độ Lỗi I / O ( eio ) và ở chế độ này cho đến khi bản cập nhật mới được cài đặt.

Khi khởi động ở chế độ eio , thiết bị sẽ hiển thị màn hình lỗi thông báo cho người dùng rằng đã phát hiện ra lỗi và thiết bị có thể hoạt động không chính xác. Màn hình hiển thị cho đến khi người dùng loại bỏ nó. Ở chế độ eio , trình điều khiển dm-verity sẽ không khởi động lại thiết bị nếu gặp lỗi xác minh, thay vào đó, lỗi EIO được trả về và ứng dụng cần xử lý lỗi.

Mục đích là trình cập nhật hệ thống sẽ chạy (vì vậy có thể cài đặt hệ điều hành mới không có lỗi hỏng) hoặc người dùng có thể lấy càng nhiều dữ liệu của họ ra khỏi thiết bị càng tốt. Khi hệ điều hành mới đã được cài đặt, bộ nạp khởi động thông báo hệ điều hành mới được cài đặt và chuyển trở restart chế độ restart .