Ở cấp hệ điều hành, nền tảng Android cung cấp tính năng bảo mật của nhân Linux, cũng như một cơ sở giao tiếp liên quy trình (IPC) an toàn để cho phép giao tiếp an toàn giữa các ứng dụng chạy trong nhiều quy trình. Các tính năng bảo mật này ở cấp hệ điều hành đảm bảo rằng ngay cả mã gốc cũng bị hạn chế bởi Hộp cát của ứng dụng. Cho dù mã đó là kết quả của hành vi ứng dụng được đưa vào hay là hành vi khai thác lỗ hổng bảo mật của ứng dụng, hệ thống đều được thiết kế để ngăn ứng dụng độc hại gây hại cho các ứng dụng khác, hệ thống Android hoặc chính thiết bị. Hãy xem phần Cấu hình hạt nhân để biết các biện pháp bạn có thể thực hiện nhằm tăng cường hạt nhân trên thiết bị. Hãy xem Tài liệu định nghĩa về khả năng tương thích (CDD) cho Android để biết các chế độ cài đặt bắt buộc.
Bảo mật Linux
Nền tảng của Android là nhân Linux. Nhân hệ điều hành Linux đã được sử dụng rộng rãi trong nhiều năm và được dùng trong hàng triệu môi trường nhạy cảm về bảo mật. Thông qua quá trình không ngừng được hàng nghìn nhà phát triển nghiên cứu, tấn công và khắc phục, Linux đã trở thành một nhân ổn định và an toàn được nhiều tập đoàn và chuyên gia bảo mật tin tưởng.
Là nền tảng cho môi trường điện toán di động, nhân Linux cung cấp cho Android một số tính năng bảo mật chính, bao gồm:
- Mô hình quyền dựa trên người dùng
- Cách ly quy trình
- Cơ chế mở rộng cho IPC bảo mật
- Khả năng xoá các phần không cần thiết và có thể không an toàn của hạt nhân
Là một hệ điều hành nhiều người dùng, mục tiêu bảo mật cơ bản của nhân hệ điều hành Linux là tách biệt tài nguyên của người dùng với nhau. Triết lý bảo mật của Linux là bảo vệ tài nguyên của người dùng khỏi nhau, Linux:
- Ngăn người dùng A đọc tệp của người dùng B
- Đảm bảo rằng người dùng A không làm hao tổn bộ nhớ của người dùng B
- Đảm bảo rằng người dùng A không sử dụng hết tài nguyên CPU của người dùng B
- Đảm bảo rằng người dùng A không làm cạn kiệt thiết bị của người dùng B (ví dụ: điện thoại, GPS và Bluetooth)
Hộp cát ứng dụng
Tính năng bảo mật ứng dụng của Android được thực thi bằng Hộp cát ứng dụng, giúp tách biệt các ứng dụng với nhau và bảo vệ ứng dụng cũng như hệ thống khỏi các ứng dụng độc hại. Để biết thêm thông tin chi tiết, hãy xem bài viết Hộp cát về ứng dụng.
Phân vùng hệ thống và chế độ an toàn
Các phân vùng được bảo vệ tính toàn vẹn chứa hạt nhân của Android cũng như các thư viện hệ điều hành, thời gian chạy ứng dụng, khung ứng dụng và ứng dụng. Phân vùng này được đặt thành chế độ chỉ có thể đọc. Khi người dùng khởi động thiết bị sang chế độ an toàn, chủ sở hữu thiết bị có thể chạy ứng dụng bên thứ ba theo cách thủ công nhưng theo mặc định, các ứng dụng này sẽ không chạy.
Quyền hệ thống tệp
Trong môi trường kiểu UNIX, các quyền hệ thống tệp đảm bảo rằng một người dùng không thể thay đổi hoặc đọc tệp của người dùng khác. Trong trường hợp của Android, mỗi ứng dụng chạy dưới dạng người dùng riêng. Trừ phi nhà phát triển chia sẻ rõ ràng các tệp với các ứng dụng khác, ứng dụng khác không thể đọc hoặc thay đổi các tệp do một ứng dụng tạo.
Linux tăng cường bảo mật
Android sử dụng Security-Enhanced Linux (SELinux) để áp dụng các chính sách kiểm soát quyền truy cập và thiết lập quyền kiểm soát truy cập bắt buộc (mac) trên các quy trình. Hãy xem bài viết Security-Enhanced Linux trong Android để biết thông tin chi tiết.
Xác minh quy trình khởi động
Android 7.0 trở lên hỗ trợ tính năng Khởi động được xác minh được thực thi nghiêm ngặt, nghĩa là các thiết bị bị xâm nhập sẽ không thể khởi động. Tính năng Xác minh quy trình khởi động đảm bảo tính toàn vẹn của phần mềm thiết bị bắt đầu từ một gốc phần cứng đáng tin cậy cho đến phân vùng hệ thống. Trong quá trình khởi động, mỗi giai đoạn sẽ xác minh tính toàn vẹn và tính xác thực của giai đoạn tiếp theo bằng mật mã trước khi thực thi giai đoạn đó.
Hãy xem phần Khởi động đã xác minh để biết thêm thông tin chi tiết.
Mật mã học
Android cung cấp một bộ API mật mã để các ứng dụng sử dụng. Những cách này bao gồm việc triển khai các dữ liệu mã hoá gốc tiêu chuẩn và thường dùng, chẳng hạn như AES, RSA, DSA và SHA. Ngoài ra, các API được cung cấp cho các giao thức cấp cao hơn như SSL và HTTPS.
Android 4.0 đã giới thiệu lớp KeyChain để cho phép các ứng dụng sử dụng bộ nhớ thông tin xác thực của hệ thống cho khoá riêng tư và chuỗi chứng chỉ.
Can thiệp vào hệ thống của thiết bị
Theo mặc định, trên Android, chỉ có nhân hệ điều hành và một nhóm nhỏ các dịch vụ chính chạy với quyền gốc. SELinux vẫn hạn chế các quy trình trong không gian người dùng chạy dưới quyền root. Tính năng Khởi động đã xác minh ngăn người dùng hoặc dịch vụ có quyền gốc chỉnh sửa vĩnh viễn hệ điều hành.
Khả năng sửa đổi thiết bị Android mà họ sở hữu rất quan trọng đối với các nhà phát triển làm việc với nền tảng Android. Trên nhiều thiết bị Android, người dùng có thể mở khoá trình tải khởi động để cho phép cài đặt một hệ điều hành thay thế. Các hệ điều hành thay thế này có thể cho phép chủ sở hữu truy cập vào quyền truy cập thư mục gốc cho mục đích gỡ lỗi ứng dụng và các thành phần hệ thống hoặc truy cập vào các tính năng không được API Android hiển thị cho ứng dụng.
Trên một số thiết bị, người có quyền kiểm soát thực tế đối với thiết bị và cáp USB có thể cài đặt một hệ điều hành mới cung cấp đặc quyền truy cập thư mục gốc cho người dùng. Để bảo vệ mọi dữ liệu người dùng hiện có khỏi bị xâm phạm, cơ chế mở khoá trình tải khởi động yêu cầu trình tải khởi động xoá mọi dữ liệu người dùng hiện có trong bước mở khoá. Quyền truy cập thư mục gốc có được thông qua việc khai thác lỗi hạt nhân hoặc lỗ hổng bảo mật có thể bỏ qua biện pháp bảo vệ này.
Việc mã hoá dữ liệu bằng khoá được lưu trữ trên thiết bị không bảo vệ dữ liệu ứng dụng khỏi người dùng có quyền truy cập thư mục gốc trên thiết bị đã bị can thiệp vào hệ thống. Ứng dụng có thể thêm một lớp bảo vệ dữ liệu bằng cách mã hoá bằng khoá được lưu trữ bên ngoài thiết bị, chẳng hạn như trên máy chủ hoặc mật khẩu của người dùng. Phương pháp này có thể cung cấp biện pháp bảo vệ tạm thời khi khoá không có sẵn, nhưng tại một thời điểm nào đó, khoá phải được cung cấp cho ứng dụng và sau đó người dùng cấp cao có thể truy cập vào khoá đó.
Một phương pháp mạnh mẽ hơn để bảo vệ dữ liệu khỏi người dùng cấp gốc là thông qua việc sử dụng các giải pháp phần cứng. OEM có thể chọn triển khai các giải pháp phần cứng hạn chế quyền truy cập vào các loại nội dung cụ thể như DRM để phát video hoặc bộ nhớ đáng tin cậy liên quan đến NFC cho Google Wallet. Trong trường hợp thiết bị bị mất hoặc bị đánh cắp, tính năng mã hoá bộ nhớ giúp đảm bảo rằng không thể truy cập dữ liệu người dùng nếu không biết thông tin đăng nhập màn hình khoá của người dùng.
Các tính năng bảo mật dành cho người dùng
Mã hoá bộ nhớ
CDD yêu cầu tất cả các thiết bị chạy Android 10 trở lên và hầu hết thiết bị chạy Android 6.0 trở lên đều phải bật tính năng mã hoá bộ nhớ ngay từ đầu.
Cách triển khai hiện tại của Android về việc mã hoá bộ nhớ là mã hoá dựa trên tệp kết hợp với mã hoá siêu dữ liệu. Phương thức mã hoá dựa trên tệp mã hoá nội dung và tên tệp một cách minh bạch trên phân vùng dữ liệu người dùng, sử dụng các khoá khác nhau cho các thư mục khác nhau. Thư mục này cung cấp các thư mục bộ nhớ được mã hoá bằng thông tin xác thực và được mã hoá bằng thiết bị cho mỗi người dùng, bao gồm cả hồ sơ công việc.
Tính năng mã hoá siêu dữ liệu bổ sung cho tính năng mã hoá dựa trên tệp. Phương thức này mã hoá tất cả các khối trên phân vùng dữ liệu người dùng chưa được mã hoá bằng phương thức mã hoá dựa trên tệp, bằng cách sử dụng khoá không liên kết với thông tin xác thực trên màn hình khoá của người dùng nào nhưng vẫn được bảo vệ bằng tính năng Xác minh quy trình khởi động.
Bảo vệ thông tin xác thực trên màn hình khoá
Bạn có thể định cấu hình Android để xác minh thông tin xác thực màn hình khoá do người dùng cung cấp (mã PIN, mật khẩu hoặc hình mở khoá) trước khi cấp quyền truy cập vào thiết bị. Ngoài việc ngăn hành vi sử dụng trái phép thiết bị, thông tin đăng nhập màn hình khoá còn bảo vệ khoá mã hoá cho dữ liệu được mã hoá thông tin đăng nhập. Quản trị viên thiết bị có thể yêu cầu sử dụng thông tin xác thực trên màn hình khoá và/hoặc các quy tắc về độ phức tạp của thông tin xác thực.
Quản trị thiết bị
Android 2.2 trở lên cung cấp Android Device Administration API (API quản trị thiết bị Android) cung cấp các tính năng quản trị thiết bị ở cấp hệ thống. Ví dụ: ứng dụng email tích hợp sẵn trên Android sử dụng các API để cải thiện khả năng hỗ trợ Exchange. Thông qua ứng dụng email, quản trị viên Exchange có thể thực thi các chính sách về thông tin đăng nhập trên màn hình khoá – bao gồm cả mật khẩu chữ-số hoặc mã PIN dạng số – trên các thiết bị. Quản trị viên cũng có thể xoá từ xa (tức là khôi phục chế độ mặc định về trạng thái ban đầu) của các điện thoại di động bị mất hoặc bị đánh cắp.
Ngoài việc sử dụng trong các ứng dụng đi kèm với hệ thống Android, các API này cũng được cung cấp cho các nhà cung cấp giải pháp Quản lý thiết bị bên thứ ba. Thông tin chi tiết về API được cung cấp tại phần Quản trị thiết bị.