Kasus penggunaan

Dokumen ini berisi kasus penggunaan umum untuk AVF.

Kompilasi terisolasi

Sebagai enklave yang aman terhadap perangkat lunak, 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 pembaruan APEX) dari boot awal ke sebelum reboot, dan secara signifikan mengurangi waktu booting pasca pembaruan APEX.

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

Kompilasi terisolasi

Gambar 1. Mengompilasi JAR pada pembaruan Mainline

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

Layanan kompilasi di VM menghasilkan tanda tangan hanya jika tidak ada kesalahan selama keseluruhan 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 pada VM untuk menentukan apakah kunci tersebut benar. VM di-boot pada boot awal setelah setiap pembaruan APEX.

Dengan Boot Terverifikasi VM yang Dilindungi, layanan kompilasi hanya menjalankan kode terverifikasi. Oleh karena itu, kode dapat menentukan untuk hanya menerima masukan yang memenuhi kondisi tertentu, misalnya, menerima file masukan hanya jika nama dan intisari fs-verity ditentukan dalam daftar yang diizinkan.

API apa pun yang terekspos dari VM merupakan permukaan serangan. Semua file masukan dan parameter diasumsikan berasal dari klien yang tidak tepercaya, dan harus diverifikasi dan diperiksa sebelum diproses.

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

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