Binder trong Android

Một phần của tài liệu TÌM HIỂU VỀ ANDROID SECURITY (Trang 28 - 30)

Chương 2 ANDROID SECURITY

2.12. Binder trong Android

* Binder Interface

Binder là trình điều khiển thiết bị kernel (kernel device driver) sử dụng tính năng chia sẻ bộ nhớ để đạt được hiệu quả và sự bảo mật cho thiết bị. Các dịch vụ của hệ thống (system services) được phát hành dưới dạng Binder interface và AIDL (Android Interface Definition Language: ngôn ngữ định nghĩa interface) được sử dụng khơng chỉ để định hình các giao diện Service, mà cịn cho phép các nhà phát

tượng, file description và một Binder. Binder có một tham chiếu để nó gọi đến interface của chính nó, nghĩa là bạn có thể gọi 2 hàm tương ứng của Binder ở cả client và bên server, nhưng điều này không đảm bảo rằng Service sẽ hiển thị đúng giao diện mà caller u cầu. Ví dụ, các chương trình khác có thể lấy tham chiếu của một ứng dụng nào đó và gọi đến yêu cầu các dịch vụ của nó, nhưng ứng dụng sẽ bỏ qua các request đó với các kết quả trả về khơng thành cơng vì lỗi processes khơng được cấp phép.

* Binder Security

Binder security có 2 key chính, nó có thể thực thi bảo mật bằng: kiểm tra định danh hoặc permission của caller thông qua tham chiếu bảo mật của Binder.

a. Kiểm tra định danh hoặc permission

Khi gọi một Binder interface, định dạng của caller được kernel cung cấp một cách rõ ràng. Android liên kết danh tính của ứng dụng với các luồng mà nó yêu cầu được xử lý (với UID của app và PID của processes được cung cấp). Điều này cho phép hệ thống có thể xác thực tính đúng đắn của caller bằng cách gọi các hàm của Context class như checkCallingPermission(String permission) hoặc

checkCallingPermissionOrSelf (String permission).

Binder Service cũng có permission truy cập và lấy định danh của caller bằng việc gọi các phương thức “getCallingUid() và getCallingPid()” của class Binder.

Các phương thức này trả về UID và PID của process được tạo bởi lệnh gọi Binder. Thông tin định danh được truyền qua một các bảo mật tới các lệnh thực thi Binder interface của kernel. Điều này tương tự như cách các Unix domain sockets có thể cho bạn xác định danh tính của caller hoặc hầu hết các cơ chế IPC trên Win32.

b. Kiểm tra tham chiếu của Binder

Không phải lúc nào cũng nhật được một Binder reference. Trong Java, điều này được biểu thị bằng một đối tượng “android.os.Binder”).

Binder là biến global đặc trưng khi đã được tạo. Một Binder khơng cần có một interface, nó được sử dụng như một giá trị unique. Một Binder có thể được truyền qua lại giữa các processes với nhau. Một Service có thể cung cấp cho caller một Binder một keys, và đó là key duy nhất để người nhận có key đó có thể gửi giao tiếp lại. Điều này hoạt động như một mật khẩu khó đốn. Activity Manager sử dụng tham

Một phần của tài liệu TÌM HIỂU VỀ ANDROID SECURITY (Trang 28 - 30)

Tải bản đầy đủ (PDF)

(37 trang)