Thứ Ba, 18 tháng 10, 2011

P2: Tìm hiểu về bảo mật trên Android - Các hộp cát, các tiến trình và các quyền hạn

II. Các hộp cát, các tiến trình và các quyền hạn

Android sử dụng khái niệm về hộp cát để bắt buộc tách riêng giữa ứng dụng với nhau và các quyền hạn để cho phép hoặc ngăn không cho một ứng dụng truy cập vào các tài nguyên của thiết bị như các tệp và các thư mục, các mạng, các cảm biến và các API nói chung.

Về việc này, Android sử dụng các phương tiện của Linux như bảo mật cấp-xử lý, các ID của người dùng và của nhóm có liên quan đến ứng dụng và các quyền hạn để bắt tuân thủ những hoạt động nào mà một ứng dụng được phép thực hiện.
Mã định danh (ID) người dùng: Linux so với Android:
Trong Linux - một ID của người dùng xác định một người dùng cụ thể còn trên Android -  một ID của người dùng xác định một ứng dụng. Các ID của người dùng được gán khi ứng dụng được cài đặt và chúng vẫn còn tồn tại cho đến hết vòng đời của ứng dụng đó trên thiết bị.
Các quyền hạn là nói về việc cho phép hoặc hạn chế ứng dụng (chứ không phải người dùng) truy cập vào tài nguyên của thiết bị.

Về khái niệm, một hộp cát có thể được thể hiện như trong Hình 1.

Hình 1. Hai ứng dụng Android, mỗi ứng dụng ở trong hộp cát hoặc tiến trình cơ sở riêng của mình

Các ứng dụng Android chạy trên tiến trình Linux riêng của mình và được gán cho một ID của người dùng duy nhất. Theo mặc định, các ứng dụng chạy trong một tiến trình của hộp cát cơ sở không được gán cho các quyền hạn, do đó ngăn không cho các ứng dụng như vậy được truy cập vào hệ thống hoặc các tài nguyên. Tuy nhiên, các ứng dụng Android có thể yêu cầu các quyền hạn thông qua các tệp bản kê (manifest) của ứng dụng.

Các ứng dụng Android có thể cho phép các ứng dụng khác truy cập vào tài nguyên của chúng bằng cách:

  • Khai báo các quyền hạn-bản kê thích hợp.
  • Chạy trong cùng tiến trình với các ứng dụng tin cậy khác, do đó chia sẻ quyền truy cập vào dữ liệu và mã của chúng.

Cách sau được minh họa trong Hình 2.

Hình 2. Hai ứng dụng Android, chạy trên cùng một tiến trình

Các ứng dụng khác nhau có thể chạy trong cùng tiến trình này. Đối với cách tiếp cận này, trước tiên bạn phải ký các ứng dụng đó bằng cách sử dụng cùng một khóa riêng và sau đó bạn phải gán cho chúng cùng một ID người dùng Linux khi sử dụng tệp bản kê, bằng cách định nghĩa thuộc tính bản kê android:sharedUserId với cùng một giá trị/tên.

Source: Ibm.com

Không có nhận xét nào:

Đăng nhận xét