Transparansi APK Layanan Sistem Google

Sebagai bagian dari investasi berkelanjutan Google dalam transparansi produknya, kami menambahkan transparansi ke dua APK layanan sistem Google baru: Android System SafetyCore (com.google.android.safetycore) dan Android System Key Verifier (com.google.android.contactkeys). APK ini masing-masing mendukung Peringatan Konten Sensitif dan fitur verifikasi kunci kriptografis di Google Message. Log transparansi yang kami publikasikan untuk memverifikasi klaim yang kami buat terkait APK ini.

Paket yang Dijamin

Bagian ini menjelaskan paket yang tercakup dalam log transparansi dan juga kunci penandatanganan transparansi kode masing-masing.

SafetyCore Sistem Android

Android System SafetyCore (com.google.android.safetycore) adalah komponen sistem Android yang menyediakan infrastruktur perlindungan pengguna di perangkat yang menjaga privasi untuk aplikasi.

Kode dari APK ini saat ini ditandatangani dengan kunci berikut yang dijelaskan oleh sertifikat ini:

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

Android System Key Verifier

APK Android System Key Verifier (com.google.android.contactkeys) adalah layanan untuk verifikasi kontak di Android. Hal ini memungkinkan pengguna memverifikasi kunci publik kontak untuk mengonfirmasi bahwa mereka berkomunikasi dengan orang yang ingin mereka kirimi pesan. Layanan ini adalah sistem terpadu untuk verifikasi kunci publik di berbagai aplikasi, yang menggunakan verifikasi melalui pemindaian Kode QR atau perbandingan angka.

Kode dari APK ini saat ini ditandatangani dengan kunci berikut yang dijelaskan oleh sertifikat ini:

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

Model Ancaman

Sistem transparansi dapat digunakan untuk mendeteksi - dan dengan demikian mencegah serangan rantai pasokan. Kami akan mengilustrasikannya dengan beberapa contoh.

Misalkan penyerang dengan niat jahat mengubah APK layanan sistem Google dan bahkan berhasil menandatanganinya dengan kunci penandatanganan yang digunakan oleh Google Play. Siapa pun yang menerima APK berbahaya dapat membuat kueri log transparansi biner untuk memverifikasi keaslian APK. Mereka akan menemukan bahwa Google belum menambahkan metadata APK yang sesuai ke log dan akan tahu untuk tidak memercayai APK yang disusupi.

Karena publikasi ke log adalah proses terpisah dari proses rilis dengan penanda tanganan (seperti yang diilustrasikan dalam Diagram Ekosistem), hal ini meningkatkan standar bagi penyerang selain hanya membahayakan kunci.

Meskipun kami juga berencana untuk mengintegrasikan log ini ke dalam jaringan saksi publik menggunakan protokol saksi standar, kami mendorong pihak independen eksternal untuk memantau integritas log yang tersedia untuk publik ini. Pihak ini dapat membuktikan properti log hanya tambahan, dan melaporkan perubahan apa pun.

Adanya sistem transparansi tersebut dan kemampuan penemuan tambahan serangan akan mencegah aktivitas berbahaya. Jika APK disusupi, tetapi pengguna hanya memercayai APK yang ada dalam log, APK yang disusupi harus diekspos secara publik. Hal ini meningkatkan kemungkinan penemuan bahwa APK yang disusupi ada, dan tindakan dapat dilakukan untuk menghapus distribusinya.

Model Penggugat

Model Penggugat adalah framework yang digunakan untuk menentukan peran dan artefak dalam sistem yang dapat diverifikasi. Dalam kasus Transparansi APK Layanan Sistem Google, klaim yang kami buat adalah bahwa hash biner yang ditandatangani yang dicatat dalam log ini mewakili kode resmi untuk APK layanan sistem Google masing-masing.

  • KlaimGoogleSystemServicesApk: (Saya, Google, mengklaim bahwa $codeSignature adalah untuk $googleSystemServicesApk), dengan:
    • $codeSignature adalah Token Web JSON (JWT) yang ditandatangani yang berisi daftar file DEX dan library native serta hash yang sesuai yang disertakan dalam versi $googleSystemServicesApk tertentu.
    • $googleSystemServicesApk adalah paket Android (APK) dari kumpulan paket berikut: {Android System SafetyCore (com.google.android.safetycore), Android System Key Verifier (com.google.android.contactkeys)}

Siapa pun yang memiliki salinan $googleSystemServicesApk dapat memverifikasi klaim di atas, dan kami menjelaskan proses ini secara mendetail di halaman verifikasi.

Konten Log

Saat merilis versi baru APK yang tercantum di atas, Google akan menambahkan entri yang sesuai ke Log Transparansi APK Layanan Sistem Google.

Setiap entri dalam log ini berisi empat bagian metadata APK:

  1. Hash tanda tangan kode APK yang dikembangkan Google. Ini adalah string hex dari ringkasan SHA256 token transparansi kode (juga dikenal sebagai JWT Transparansi Kode).
  2. Deskripsi jenis hash di atas. Ini adalah string.
  3. Nama paket APK. Ini adalah string.
  4. Nomor versi (versionCode) APK. Ini adalah bilangan bulat.

Format entri log adalah penyambungan empat bagian informasi dengan karakter baris baru (\n), seperti yang diilustrasikan oleh hal berikut:

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

Perhatikan bahwa dalam rilis ini, kami bereksperimen dengan menggunakan transparansi kode. Artinya, kita merekam ringkasan token transparansi kode, bukan hash APK. Dengan demikian, deskripsi hash saat ini diperbaiki menjadi SHA256(Signed Code Transparency JWT).

Selain itu, hal ini menunjukkan cara transparansi kode dapat digunakan oleh developer aplikasi saat kunci penandatanganan aplikasi mereka dipegang oleh Google Play.

Diagram Ekosistem

Diagram Ekosistem Log yang Dapat Diverifikasi