Tính minh bạch của tệp APK Dịch vụ hệ thống của Google

Trong quá trình liên tục đầu tư vào tính minh bạch của các sản phẩm, Google sẽ tăng cường tính minh bạch cho hai tệp APK dịch vụ hệ thống mới của Google: Android System SafetyCore (com.google.android.safetycore) và Android System Key Verifier (com.google.android.contactkeys). Các APK này hỗ trợ tính năng Cảnh báo nội dung nhạy cảm và xác minh khoá mã hoá trong Google Tin nhắn. Nhật ký minh bạch mà chúng tôi đã xuất bản để xác minh các tuyên bố mà chúng tôi đưa ra liên quan đến các tệp APK này.

Gói được bảo hiểm

Phần này mô tả các gói được đề cập trong nhật ký minh bạch cũng như các khoá ký minh bạch mã tương ứng.

Android System SafetyCore

Android System SafetyCore (com.google.android.safetycore) là một thành phần hệ thống Android cung cấp cơ sở hạ tầng bảo vệ người dùng trên thiết bị, giúp bảo đảm quyền riêng tư cho các ứng dụng.

Mã trong tệp APK này hiện được ký bằng khoá sau đây do chứng chỉ này mô tả:

-----BEGIN CERTIFICATE-----
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
4ZM=
-----END CERTIFICATE-----

Trình xác minh khoá hệ thống Android

APK Trình xác minh khoá hệ thống Android (com.google.android.contactkeys) là một dịch vụ xác minh thông tin liên hệ trên Android. API này cho phép người dùng xác minh khoá công khai của một người liên hệ để xác nhận rằng họ đang giao tiếp với người mà họ định nhắn tin. Dịch vụ này là một hệ thống hợp nhất để xác minh khoá công khai trên nhiều ứng dụng, sử dụng phương thức xác minh thông qua tính năng quét Mã QR hoặc so sánh số điện thoại.

Mã trong tệp APK này hiện được ký bằng khoá sau đây do chứng chỉ này mô tả:

-----BEGIN CERTIFICATE-----
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
PLM=
-----END CERTIFICATE-----

Mô hình mối đe doạ

Các hệ thống minh bạch có thể được dùng để phát hiện – và do đó ngăn chặn các cuộc tấn công chuỗi cung ứng. Chúng tôi minh hoạ bằng một số ví dụ.

Giả sử một kẻ tấn công sửa đổi APK dịch vụ hệ thống của Google theo cách độc hại và thậm chí còn ký APK đó bằng khoá ký mà Google Play sử dụng. Bất kỳ ai nhận được tệp APK độc hại đều có thể truy vấn nhật ký minh bạch của tệp nhị phân để xác minh tính xác thực của tệp APK. Họ sẽ thấy rằng Google chưa thêm siêu dữ liệu APK tương ứng vào nhật ký và sẽ biết không nên tin tưởng tệp APK bị xâm phạm.

Vì việc phát hành vào nhật ký là một quy trình riêng biệt với quy trình phát hành có chữ ký (như minh hoạ trong Sơ đồ hệ sinh thái), nên điều này sẽ khiến kẻ tấn công gặp khó khăn hơn nhiều so với việc chỉ xâm phạm khoá.

Mặc dù chúng tôi cũng dự định tích hợp nhật ký này vào một mạng lưới công khai gồm các nhân chứng bằng cách sử dụng một giao thức nhân chứng tiêu chuẩn, nhưng chúng tôi khuyến khích các bên độc lập bên ngoài theo dõi tính toàn vẹn của nhật ký công khai này. Các bên này có thể chứng thực thuộc tính chỉ có thể thêm của nhật ký và báo cáo mọi hành vi can thiệp.

Sự tồn tại của một hệ thống minh bạch như vậy và khả năng phát hiện thêm các cuộc tấn công sẽ ngăn chặn hoạt động độc hại. Nếu một tệp APK bị xâm phạm nhưng người dùng chỉ tin tưởng những tệp APK có trong nhật ký, thì tệp APK bị xâm phạm đó cần được công khai. Điều này làm tăng khả năng phát hiện sự tồn tại của tệp APK bị xâm phạm và có thể tiến hành hành động để xoá hoạt động phân phối tệp APK đó.

Mô hình bên xác nhận quyền sở hữu

Mô hình bên xác nhận quyền sở hữu là một khung dùng để xác định vai trò và cấu phần phần mềm trong một hệ thống có thể xác minh. Trong trường hợp Minh bạch về APK của Dịch vụ hệ thống của Google, chúng tôi xác nhận rằng hàm băm của tệp nhị phân đã ký được ghi lại trong nhật ký này đại diện cho mã chính thức của các tệp APK dịch vụ hệ thống tương ứng của Google.

  • Xác nhận quyền sở hữuGoogleSystemServicesApk: (Tôi, Google, xác nhận rằng $codeSignature là dành cho $googleSystemServicesApk), trong đó:
    • $codeSignature là một Mã thông báo web JSON (JWT) đã ký, chứa danh sách các tệp DEX và thư viện gốc cùng với hàm băm tương ứng của các tệp đó có trong một phiên bản cụ thể của $googleSystemServicesApk.
    • $googleSystemServicesApk là một gói Android (APK) trong nhóm các gói sau: {Android System SafetyCore (com.google.android.safetycore), Android System Key Verifier (com.google.android.contactkeys)}

Bất kỳ ai có bản sao của $googleSystemServicesApk đều có thể xác minh tuyên bố ở trên. Chúng tôi mô tả quy trình này một cách chi tiết trong trang xác minh.

Nội dung nhật ký

Khi phát hành phiên bản mới của các tệp APK nêu trên, Google sẽ thêm một mục tương ứng vào Nhật ký minh bạch về APK của Dịch vụ hệ thống của Google.

Mỗi mục trong nhật ký này chứa 4 phần siêu dữ liệu APK:

  1. Hàm băm của chữ ký mã của tệp APK do Google phát triển. Đây là chuỗi thập lục phân của chuỗi đại diện SHA256 của mã thông báo minh bạch về mã (còn gọi là JWT minh bạch về mã).
  2. Nội dung mô tả về loại hàm băm ở trên. Đây là một chuỗi.
  3. Tên gói của tệp APK. Đây là một chuỗi.
  4. Số phiên bản (versionCode) của tệp APK. Đây là một số nguyên.

Định dạng của mục nhập nhật ký là chuỗi nối của 4 phần thông tin với ký tự dòng mới (\n), như minh hoạ sau:

hash\nSHA256(Signed Code Transparency JWT)\npackage_name\npackage_version\n

Xin lưu ý rằng trong bản phát hành này, chúng tôi đang thử nghiệm việc sử dụng tính năng minh bạch của mã. Điều này có nghĩa là thay vì hàm băm của tệp APK, chúng ta sẽ ghi lại chuỗi đại diện của mã thông báo minh bạch của mã. Do đó, nội dung mô tả hàm băm hiện được cố định là SHA256(Signed Code Transparency JWT).

Ngoài ra, đây là cách nhà phát triển ứng dụng có thể sử dụng tính năng minh bạch của mã khi Google Play giữ khoá ký ứng dụng của họ.

Sơ đồ hệ sinh thái

Sơ đồ hệ sinh thái nhật ký có thể xác minh