Kasus penggunaan

Dokumen ini berisi kasus penggunaan umum untuk AVF.

Kompilasi terisolasi

Sebagai enklave yang aman bagi perangkat lunak, VM yang dilindungi menyediakan lingkungan yang aman untuk mengompilasi kode yang sensitif terhadap keamanan. Lingkungan ini memungkinkan pemindahan kompilasi dari bootclasspath dan JAR server sistem (yang dipicu oleh update APEX) dari booting awal hingga sebelum {i>reboot<i}, dan secara signifikan mengurangi jumlah posting APEX memperbarui waktu booting.

Implementasinya dilakukan dalam com.android.compos APEX. Komponen ini bersifat opsional dan dapat disertakan menggunakan makefile Anda.

Kompilasi terisolasi

Gambar 1. Mengompilasi JAR pada update Mainline

Tujuan keamanan adalah untuk secara jujur mengompilasi input terverifikasi dan menghasilkan output secara terpisah; Android sebagai klien yang tidak tepercaya tidak dapat mengubah kompilasi output dengan cara apa pun selain menyebabkannya gagal (saat Android kembali ke booting kompilasi waktu).

Layanan kompilasi di VM menghasilkan tanda tangan hanya jika tidak ada error selama seluruh kompilasi. Android dapat mengambil kunci publik dari VM untuk verifikasi tanda tangan.

Kunci VM dihasilkan dari profil DICE VM, yang ditentukan oleh APEX dan APK yang dipasang ke VM, selain parameter VM lainnya, seperti kemampuan debug.

Untuk menentukan apakah kunci publik bukan berasal dari VM yang tidak terduga, Android melakukan booting VM untuk menentukan apakah kuncinya sudah benar. VM di-booting pada saat booting awal setelah setiap pembaruan APEX.

Dengan Booting Terverifikasi Protected VM, layanan kompilasi hanya berjalan pada kode sumber. Oleh karena itu, kode dapat menentukan untuk hanya menerima input yang memenuhi kondisi tertentu, misalnya, menerima file input hanya di mana nama dan ringkasan fs-verity ditentukan dalam daftar yang diizinkan.

Setiap API yang diekspos dari VM adalah permukaan serangan. Semua {i>file<i} input dan parameter diasumsikan berasal dari klien yang tidak tepercaya, dan harus diverifikasi serta diperiksa sebelum diproses.

Integritas file input/output diverifikasi oleh VM, dengan file yang disimpan di Android sebagai server file yang tidak tepercaya, seperti berikut:

  • Konten file input harus diverifikasi sebelum digunakan menggunakan Algoritma fs-verity. Agar file input tersedia di VM, hash root harus diberikan dalam penampung (APK) yang berkontribusi terhadap Profil DICE VM. Dengan {i>hash<i} {i>root<i} tepercaya, penyerang tidak dapat mengutak-atik dengan input tanpa terdeteksi.
  • Integritas file output harus dipertahankan di VM. Meskipun jika file {i>output<i} disimpan di Android, selama pembuatan, dikelola dengan format hierarki fs-verity yang sama tetapi dapat secara dinamis diperbarui. File {i>output<i} akhir dapat diidentifikasi dengan {i>hash<i} root, yang terisolasi di dalam VM. Layanan di VM melindungi output file dengan tanda tangan.