Halaman ini berisi kasus penggunaan umum untuk AVF.
Kompilasi terisolasi
Sebagai enclave yang aman secara software, virtual machine (VM) yang dilindungi menyediakan lingkungan yang aman untuk mengompilasi kode yang sensitif terhadap keamanan.
Lingkungan ini memungkinkan pemindahan kompilasi
JAR bootclasspath
dan server sistem (dipicu oleh update APEX) dari
boot awal ke sebelum reboot, dan secara signifikan mengurangi waktu boot setelah update APEX.
Implementasinya ada di APEX com.android.compos
. Komponen
ini bersifat opsional dan dapat disertakan menggunakan makefile.
Tujuan keamanan adalah mengompilasi input terverifikasi secara akurat dan menghasilkan output secara terpisah; Android sebagai klien yang tidak tepercaya tidak dapat mengubah output kompilasi dengan cara apa pun selain menyebabkan kegagalan (saat Android melakukan penggantian ke kompilasi waktu booting).
Layanan kompilasi di VM membuat 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 di-mount ke VM, selain parameter VM lainnya, seperti kemampuan men-debug.
Untuk menentukan apakah kunci publik bukan berasal dari VM yang tidak terduga, Android mem-booting VM untuk menentukan apakah kunci tersebut benar. VM di-boot saat booting awal setelah setiap update APEX.
Dengan Booting Terverifikasi Protected VM, layanan kompilasi hanya menjalankan kode terverifikasi. Oleh karena itu, kode dapat menentukan untuk menerima hanya input yang memenuhi kondisi tertentu, misalnya, menerima file input hanya jika nama dan ringkasan fs-verity
-nya ditentukan dalam daftar yang diizinkan.
Semua API yang terekspos dari VM adalah permukaan serangan. Semua file input dan parameter diasumsikan berasal dari klien yang tidak tepercaya, dan harus diverifikasi dan diperiksa sebelum diproses.
Integritas file input dan 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 container (APK) yang berkontribusi pada profil DICE VM. Dengan hash root tepercaya, penyerang tidak dapat memalsukan 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.
Lingkungan pengembangan Linux
Android secara tradisional menjadi satu-satunya sistem operasi utama yang tidak mengizinkan pengguna mengembangkan aplikasi di platform itu sendiri. Dengan diperkenalkannya lingkungan pengembangan Linux, kami bertujuan untuk menyediakan lingkungan pengembangan berbasis Linux bagi pengguna Android yang merupakan developer. Pada masa mendatang, kami berencana memperluas upaya ini untuk memungkinkan partner kami menerapkan kasus penggunaan VM inovatif seperti menjalankan aplikasi antarmuka pengguna grafis dan bahkan game.
Lingkungan pengembangan Linux tersedia di perangkat tertentu dan berjalan di mesin virtual yang tidak dilindungi.
Komponen tingkat tinggi VM Linux adalah sebagai berikut:
- Aplikasi terminal: Aplikasi Android yang menyediakan antarmuka terminal. Aplikasi ini menggunakan WebView untuk terhubung ke layanan web yang berjalan di VM untuk berinteraksi. Aplikasi ini dinonaktifkan secara default. Aktifkan di Setelan Developer.
- Android Virtualization Framework (AVF): Subsistem Android yang ada untuk pembuatan dan pengelolaan VM. Fitur ini memerlukan sedikit modifikasi untuk mendukung image OS kustom.
- virtual machine: VM yang dihasilkan AVF. Layanan ini menghosting layanan terminal, dan AVF membuatnya khusus untuk fungsi aplikasi Terminal.
- Image OS: Image OS berbasis Debian yang sedikit dimodifikasi dari Debian upstream. Aplikasi Terminal mendownload gambar ini dari server Google eksternal. Image ini berfungsi sebagai dasar untuk operasi VM.
- Agen Tamu: Software baru di VM. Proses ini melaporkan status OS ke AVF dan menyediakan kontrol mesin virtual.
- ttyd: Software open source yang berjalan di VM yang mengimplementasikan emulasi terminal melalui HTTP. WebView aplikasi Terminal terhubung ke aplikasi tersebut.
- Tethering Manager: Subsistem Android yang ada. Fitur ini menyediakan akses jaringan ke mesin virtual dengan menambatkan VM ke perangkat berteknologi Android.