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.

Đăng ký ứng dụng

Việc ký ứng dụng cho phép các nhà phát triển xác định tác giả của ứng dụng và cập nhật ứng dụng của họ mà không cần tạo giao diện và quyền phức tạp. Mỗi ứng dụng được chạy trên nền tảng Android phải có chữ ký của các nhà phát triển . Các ứng dụng cố gắng cài đặt mà không được ký sẽ bị Google Play hoặc trình cài đặt gói trên thiết bị Android từ chối.

Trên Google Play, việc ký ứng dụng là cầu nối giữa sự tin cậy của Google với nhà phát triển và sự tin tưởng của nhà phát triển với ứng dụng của họ. Các nhà phát triển biết ứng dụng của họ được cung cấp, chưa sửa đổi, cho thiết bị Android; và các nhà phát triển có thể phải chịu trách nhiệm về hành vi của ứng dụng của họ.

Trên Android, ký ứng dụng là bước đầu tiên để đặt một ứng dụng vào Hộp cát ứng dụng của nó. Chứng chỉ ứng dụng đã ký xác định ID người dùng nào được liên kết với ứng dụng nào; các ứng dụng khác nhau chạy dưới các ID người dùng khác nhau. Việc ký ứng dụng đảm bảo rằng một ứng dụng không thể truy cập bất kỳ ứng dụng nào khác ngoại trừ thông qua IPC được xác định rõ.

Khi một ứng dụng (tệp APK) được cài đặt trên thiết bị Android, Trình quản lý gói sẽ xác minh rằng APK đã được ký đúng cách với chứng chỉ có trong APK đó. Nếu chứng chỉ (hoặc chính xác hơn là khóa công khai trong chứng chỉ) khớp với khóa được sử dụng để ký bất kỳ APK nào khác trên thiết bị, thì APK mới có tùy chọn để chỉ định trong tệp kê khai rằng nó sẽ chia sẻ UID với người khác tương tự APK đã ký.

Ứng dụng có thể được ký bởi bên thứ ba (OEM, nhà điều hành, thị trường thay thế) hoặc tự ký. Android cung cấp tính năng ký mã bằng chứng chỉ tự ký mà nhà phát triển có thể tạo mà không cần sự hỗ trợ hoặc cho phép từ bên ngoài. Các ứng dụng không cần phải có chữ ký của cơ quan trung ương. Android hiện không thực hiện xác minh CA cho các chứng chỉ ứng dụng.

Các ứng dụng cũng có thể khai báo quyền bảo mật ở cấp độ bảo vệ Chữ ký, chỉ hạn chế quyền truy cập vào các ứng dụng được ký bằng cùng một khóa trong khi vẫn duy trì các UID và Hộp cát ứng dụng riêng biệt. Một mối quan hệ gần gũi hơn với một ứng dụng Sandbox chia sẻ được cho phép thông qua tính năng chia sẻ UID nơi hai hoặc nhiều ứng dụng đã ký với khóa nhà phát triển tương tự có thể khai báo một UID chia sẻ trong manifest của họ.

Đề án ký APK

Android hỗ trợ ba chương trình ký ứng dụng:

Để có khả năng tương thích tối đa, hãy ký ứng dụng bằng tất cả các lược đồ, đầu tiên với v1, sau đó là v2 và sau đó là v3. Các thiết bị Android 7.0+ và mới hơn cài đặt ứng dụng được ký bằng sơ đồ v2 + nhanh hơn so với những ứng dụng chỉ được ký bằng sơ đồ v1. Các nền tảng Android cũ hơn bỏ qua chữ ký v2 + và do đó cần các ứng dụng chứa chữ ký v1.

Ký kết JAR (lược đồ v1)

Tính năng ký APK đã là một phần của Android ngay từ đầu. Nó được dựa trên JAR ký . Để biết chi tiết về việc sử dụng chương trình này, hãy xem tài liệu Android Studio trên ký ứng dụng của bạn .

chữ ký v1 không bảo vệ một số phần của APK, chẳng hạn như siêu dữ liệu ZIP. Trình xác minh APK cần xử lý nhiều cấu trúc dữ liệu không đáng tin cậy (chưa được xác minh) và sau đó loại bỏ dữ liệu không có chữ ký. Điều này cung cấp một bề mặt tấn công khá lớn. Hơn nữa, trình xác minh APK phải giải nén tất cả các mục đã nén, tiêu tốn nhiều thời gian và bộ nhớ hơn. Để giải quyết những vấn đề này, Android 7.0 đã giới thiệu APK Signature Scheme v2.

Lược đồ chữ ký APK v2 & v3 (lược đồ v2 +)

Các thiết bị chạy Android 7.0 trở lên hỗ trợ lược đồ chữ ký APK v2 (lược đồ v2) trở lên. (Lược đồ v2 đã được cập nhật lên v3 trong Android 9 để bao gồm thông tin bổ sung trong khối ký, nhưng nếu không thì hoạt động giống nhau.) Nội dung của APK được băm và ký, sau đó Khối ký APK kết quả sẽ được chèn vào APK. Để biết chi tiết về việc áp dụng chương trình + v2 để một ứng dụng, xem apk Chữ ký Đề án v2 .

Trong quá trình xác thực, lược đồ v2 + coi tệp APK như một đốm màu và thực hiện kiểm tra chữ ký trên toàn bộ tệp. Bất kỳ sửa đổi nào đối với APK, bao gồm cả sửa đổi siêu dữ liệu ZIP, đều làm mất hiệu lực chữ ký APK. Hình thức xác minh APK này về cơ bản nhanh hơn đáng kể và cho phép phát hiện nhiều lớp sửa đổi trái phép hơn.

Định dạng mới tương thích ngược, vì vậy các APK được ký bằng định dạng chữ ký mới có thể được cài đặt trên các thiết bị Android cũ hơn (đơn giản là bỏ qua dữ liệu bổ sung được thêm vào APK), miễn là các APK này cũng được ký v1.

Quy trình xác minh chữ ký APK

Hình 1. APK quá trình xác minh chữ ký

Hàm băm toàn bộ tệp của APK được xác minh dựa trên chữ ký v2 + được lưu trữ trong Khối ký APK. Hàm băm bao gồm mọi thứ ngoại trừ Khối ký APK, chứa chữ ký v2 +. Bất kỳ sửa đổi nào đối với APK bên ngoài Khối ký APK sẽ làm mất hiệu lực chữ ký v2 + của APK. APK có chữ ký v2 + bị tước bỏ cũng bị từ chối vì chữ ký v1 của chúng chỉ định rằng APK đã được ký v2, điều này khiến Android 7.0 trở lên từ chối xác minh APK bằng chữ ký v1 của chúng.

Để biết chi tiết về quá trình xác minh chữ ký apk, xem phần xác nhận của APK Chữ ký Đề án v2.