Kasus penggunaan

Dokumen ini berisi kasus penggunaan umum untuk AVF.

Kompilasi terisolasi

Sebagai enklave yang aman untuk software, VM yang dilindungi menyediakan lingkungan yang aman untuk mengompilasi kode yang sensitif terhadap keamanan. Lingkungan ini memungkinkan pemindahan kompilasi bootclasspath dan JAR server sistem (dipicu oleh update APEX) dari awal booting hingga sebelum mulai ulang, dan secara signifikan mengurangi waktu booting setelah update APEX.

Implementasinya ada di APEX com.android.compos. Komponen ini bersifat opsional dan dapat disertakan menggunakan makefile.

Kompilasi terisolasi

Gambar 1. Mengompilasi JAR pada update Mainline

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

Layanan kompilasi di VM hanya menghasilkan tanda tangan 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 akan mem-boot VM untuk menentukan apakah kunci tersebut benar. VM di-booting pada booting awal setelah setiap update APEX.

Dengan Booting Terverifikasi Protected VM, layanan kompilasi hanya menjalankan kode yang diverifikasi. Oleh karena itu, kode dapat menentukan untuk hanya menerima input yang memenuhi kondisi tertentu, misalnya, menerima file input hanya jika namanya dan ringkasan fs-verity ditentukan dalam daftar yang diizinkan.

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

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

  • Konten file input harus diverifikasi sebelum digunakan menggunakan algoritma fs-verity. Agar file input tersedia di VM, hash root-nya harus disediakan dalam penampung (APK) yang berkontribusi pada profil DICE VM. Dengan hash root tepercaya, penyerang tidak dapat mengubah input tanpa terdeteksi.
  • Integritas file output harus dipertahankan di VM. Meskipun file output disimpan di Android, selama pembuatan, integritas dipertahankan dengan format hierarki fs-verity yang sama, tetapi dapat diperbarui secara dinamis. File output akhir dapat diidentifikasi dengan hash root, yang diisolasi di VM. Layanan di VM melindungi file output dengan tanda tangan.