Booting Terverifikasi mengharuskan verifikasi kriptografi semua kode dan data yang dapat dieksekusi yang merupakan bagian dari versi Android yang di-booting sebelum digunakan. Hal ini mencakup kernel (dimuat dari partisi boot), pohon perangkat (dimuat dari partisi dtbo), partisi system, partisi vendor, dan sebagainya.
Partisi kecil, seperti boot dan dtbo, yang hanya dibaca satu kali biasanya diverifikasi dengan memuat seluruh konten ke dalam memori, lalu menghitung hash-nya. Nilai hash yang dihitung ini kemudian dibandingkan dengan nilai hash yang diharapkan. Jika nilainya tidak cocok, Android tidak akan dimuat.
Untuk mengetahui detail selengkapnya, lihat Alur Booting.
Partisi yang lebih besar yang tidak dapat dimuat ke dalam memori (seperti, sistem file) dapat menggunakan pohon hash yang verifikasinya merupakan proses berkelanjutan yang terjadi saat data dimuat ke dalam memori. Dalam hal ini, hash root pohon hash dihitung selama waktu proses dan diperiksa terhadap nilai hash root yang diharapkan. Android menyertakan driver dm-verity untuk memverifikasi partisi yang lebih besar. Jika pada suatu saat hash root yang dihitung tidak cocok dengan nilai hash root yang diharapkan, data tidak akan digunakan dan Android akan memasuki status error. Untuk mengetahui detail selengkapnya, lihat kerusakan dm-verity.
Hash yang diharapkan biasanya disimpan di akhir atau awal setiap partisi yang diverifikasi, di partisi khusus, atau keduanya. Yang terpenting, hash ini ditandatangani (secara langsung atau tidak langsung) oleh root of trust. Sebagai contoh, implementasi AVB mendukung kedua pendekatan tersebut. Lihat Android Verified Boot untuk mengetahui detailnya.
Perlindungan rollback
Meskipun dengan proses update yang sepenuhnya aman, eksploitasi kernel Android yang tidak persisten dapat menginstal versi Android yang lebih lama dan lebih rentan secara manual, melakukan booting ke versi yang rentan, lalu menggunakan versi Android tersebut untuk menginstal eksploitasi persisten. Dari sana, penyerang akan memiliki perangkat secara permanen dan dapat melakukan apa saja, termasuk menonaktifkan update.
Perlindungan terhadap kelas serangan ini disebut Perlindungan Rollback. Perlindungan rollback biasanya diterapkan dengan menggunakan penyimpanan yang tidak dapat dirusak untuk mencatat versi Android terbaru dan menolak untuk melakukan booting Android jika versinya lebih rendah dari versi yang tercatat. Versi biasanya dilacak berdasarkan per partisi.
Untuk mengetahui detail selengkapnya tentang cara AVB menangani perlindungan rollback, lihat AVB README.
Menangani error verifikasi
Verifikasi dapat gagal pada waktu booting (misalnya, jika hash yang dihitung pada partisi boot tidak cocok dengan hash yang diharapkan) atau pada waktu proses (misalnya, jika dm-verity mengalami error verifikasi pada partisi system). Jika verifikasi gagal pada waktu booting, perangkat tidak dapat melakukan booting dan pengguna akhir harus melalui langkah-langkah untuk memulihkan perangkat.
Jika verifikasi gagal pada waktu proses, alurnya akan sedikit lebih rumit. Jika perangkat menggunakan dm-verity, perangkat harus dikonfigurasi dalam mode restart. Dalam mode restart, jika terjadi error verifikasi, perangkat akan segera dimulai ulang dengan flag tertentu yang ditetapkan untuk menunjukkan alasannya. Boot loader harus memperhatikan flag ini dan mengalihkan dm-verity untuk menggunakan mode Error I/O (eio) dan tetap dalam mode ini hingga update baru diinstal.
Saat melakukan booting dalam mode eio, perangkat akan menampilkan layar error yang memberi tahu pengguna bahwa kerusakan telah terdeteksi dan perangkat mungkin tidak berfungsi dengan benar. Layar akan ditampilkan hingga pengguna menutupnya. Dalam mode eio, driver dm-verity tidak akan memulai ulang perangkat jika terjadi error verifikasi. Sebagai gantinya, error EIO akan ditampilkan dan aplikasi harus menangani error tersebut.
Tujuannya adalah agar updater sistem berjalan (sehingga OS baru tanpa error kerusakan dapat diinstal) atau pengguna dapat mengambil data sebanyak mungkin dari perangkat. Setelah OS baru diinstal, boot loader akan melihat OS yang baru diinstal dan beralih kembali ke mode restart.