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.
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.