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.
Alur tingkat tingginya adalah sebagai berikut:
- Untuk menggunakan lingkungan pengembangan Linux, aktifkan opsi developer.
- Setelah Anda mengaktifkan opsi developer, aplikasi Terminal akan muncul di peluncur beranda Anda.
- Luncurkan aplikasi Terminal dari peluncur beranda Anda.
- Jika diperlukan, aplikasi Terminal akan mendownload image OS dari Play.
- Aplikasi Terminal menggunakan Android Virtualization Framework (AVF) untuk membuat virtual machine (VM).
- AVF kemudian menjalankan VM dengan image OS.
- Mesin virtual mem-booting OS dari image.
- Setelah VM melakukan booting, WebView di aplikasi Terminal akan terhubung ke layanan web di mesin virtual. Layanan ini menyediakan akses terminal melalui HTTP.
- Anda berinteraksi dengan terminal dengan memasukkan perintah dan melihat output di aplikasi.
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.
Content Safety On-Device
Content Safety On-device adalah solusi keamanan konten yang menjaga privasi dan dibuat oleh Tim Content Safety On-device. SafetyCore melakukan klasifikasi keamanan konten untuk berbagai produk Google di perangkat pihak pertama/pihak ketiga, dan melindungi lebih dari 1 miliar pengguna dari konten tidak pantas, tanpa mengharuskan data pengguna dikirim kembali ke server Google. Layanan ini dirancang untuk mematuhi prinsip Private Compute Core (PCC) guna memastikan komunikasi yang transparan dan menjaga privasi antara klien dan mesin virtual (VM), serta mencegah pemindahan data pengguna yang tidak sah. ID ini dapat digunakan untuk hal-hal seperti mengaktifkan deteksi penyalahgunaan di perangkat, seperti deteksi ancaman real-time Play Protect.
Dalam kasus penggunaan ini, sistem menggunakan mesin virtual yang dilindungi untuk menjalankan klasifikasi modelnya untuk deteksi ancaman real-time Play Protect yang kemudian meningkatkan keamanan model dan perlindungannya secara signifikan. Hal ini mencegah rekayasa balik dan manipulasi oleh penyerang, bahkan di perangkat yang di-root, dengan memastikan hanya kode yang disetujui yang berjalan dan operasinya disembunyikan dari proses eksternal.
Alur tingkat tingginya adalah sebagai berikut:
- Deteksi ancaman real-time mengirimkan ping ke Private Compute Services untuk memulai VM. Private Compute Services adalah perantara yang berfokus pada privasi antara PCC dan server cloud
- Private Compute Services memulai VM dan mendapatkan kunci publiknya dari VM
- Private Compute Services menyerahkan kepemilikan VM ke deteksi ancaman langsung Play Protect
- Private Compute Services mengirimkan pengesahan dan kunci publik ke server
- Server memverifikasi pengesahan dan melindungi enkripsi dengan kunci publik VM
- Server kemudian mengirimkan perlindungan terenkripsi kembali ke perangkat
- Kemudian, deteksi ancaman real-time di perangkat dapat memanfaatkan perlindungan terenkripsi dalam VM. VM adalah satu-satunya entitas dengan kunci pribadi yang dapat mendekripsi perlindungan
Komponen tingkat tingginya adalah sebagai berikut:
- Server: Mengenkripsi dan memberikan perlindungan terenkripsi ke VM
- Private Compute Services: Digunakan untuk memulai VM dan memediasi komunikasi ke VM serta menunjukkan transparansi bahwa tidak ada data pengguna yang melewati Astrea ke server
- Deteksi ancaman real-time Play Protect:
- Berisi dan menggunakan pengklasifikasi model yang disediakan oleh Content Safety di perangkat
- Menerima kepemilikan VM dan menahannya untuk penggunaan klasifikasi
- Memulai dan menghentikan VM sesuai kebutuhan.