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