Status perangkat menunjukkan seberapa bebas software dapat di-flash ke perangkat dan
apakah verifikasi diterapkan. Status perangkat adalah LOCKED
dan
UNLOCKED
. Perangkat LOCKED
mencegah Anda mem-flash software
baru ke perangkat, sedangkan perangkat UNLOCKED
memungkinkan
perubahan.
Saat perangkat dinyalakan, bootloader akan memeriksa terlebih dahulu apakah perangkat
LOCKED
atau UNLOCKED
. Jika perangkat
UNLOCKED
, bootloader akan menampilkan peringatan kepada pengguna, lalu melanjutkan
untuk melakukan booting meskipun OS yang dimuat tidak ditandatangani oleh root of trust.
Jika perangkat adalah LOCKED
, bootloader akan melalui langkah-langkah dalam
Memverifikasi Booting untuk memverifikasi
software perangkat. Perangkat LOCKED
hanya melakukan booting jika
OS yang dimuat ditandatangani dengan benar oleh root of trust. Untuk mengetahui detail selengkapnya, lihat
Alur booting.
Mengubah status perangkat
Untuk mengubah status perangkat, gunakan
perintah fastboot flashing [unlock | lock]
. Untuk melindungi data
pengguna, semua transisi status akan menghapus partisi data dan meminta
konfirmasi pengguna sebelum data dihapus.
Transisi UNLOCKED
ke LOCKED
diperkirakan saat
pengguna membeli perangkat pengembangan bekas. Sebagai akibat dari penguncian perangkat, pengguna harus yakin bahwa perangkat berada dalam status yang dihasilkan oleh produsen
perangkat, selama tidak ada peringatan. Transisi LOCKED
ke
UNLOCKED
diharapkan saat developer ingin menonaktifkan
verifikasi di perangkat untuk tujuan pengembangan.
Root of trust
Root of trust adalah kunci kriptografis yang digunakan untuk menandatangani salinan Android yang disimpan di perangkat. Bagian pribadi root of trust hanya diketahui oleh produsen perangkat dan digunakan untuk menandatangani setiap versi Android yang ditujukan untuk distribusi. Bagian publik dari root of trust disematkan di perangkat dan disimpan di tempat sehingga tidak dapat dirusak (biasanya penyimpanan hanya baca).
Saat memuat Android, bootloader menggunakan root of trust untuk memverifikasi keaslian. Untuk mengetahui detail selengkapnya tentang proses ini, lihat Memverifikasi Booting. Perangkat mungkin memiliki beberapa bootloader sehingga beberapa kunci kriptografis mungkin digunakan.
Root of trust yang dapat ditetapkan pengguna
Secara opsional, perangkat dapat mengizinkan pengguna mengonfigurasi root of trust (misalnya, kunci publik). Perangkat dapat, dan perangkat Google Pixel melakukannya, menggunakan root of trust yang dapat disetel pengguna ini untuk Verified Boot selain root of trust bawaan.
Jika root of trust yang dapat ditetapkan pengguna diterapkan, hal ini harus dilakukan sedemikian rupa sehingga:
- Konfirmasi fisik diperlukan untuk menetapkan/menghapus root kepercayaan yang dapat ditetapkan pengguna.
- Root of trust yang dapat ditetapkan pengguna hanya dapat ditetapkan oleh pengguna akhir. ID ini tidak dapat ditetapkan di pabrik atau titik perantara sebelum pengguna akhir mendapatkan perangkat.
- Root of trust yang dapat ditetapkan pengguna disimpan dalam penyimpanan yang tahan modifikasi. Tamper-evident berarti data dapat dideteksi jika Android telah memodifikasinya, misalnya, jika data telah ditimpa atau diubah.
- Jika root of trust yang dapat disetel pengguna ditetapkan, perangkat harus mengizinkan versi Android yang ditandatangani dengan root of trust bawaan atau root of trust yang dapat disetel pengguna untuk melakukan booting.
- Setiap kali perangkat melakukan booting menggunakan root of trust yang dapat ditetapkan pengguna, pengguna
harus diberi tahu bahwa perangkat sedang memuat versi Android kustom. Misalnya, layar peringatan, lihat
perangkat
LOCKED
dengan kumpulan kunci kustom.
Salah satu cara menerapkan root of trust yang dapat ditetapkan pengguna adalah dengan memiliki
partisi virtual yang hanya dapat di-flash atau dihapus saat perangkat berada dalam
status UNLOCKED
. Perangkat Google Pixel 2 menggunakan pendekatan ini dan
partisi virtual disebut avb_custom_key
. Format
data dalam partisi ini adalah output dari
perintah avbtool extract_public_key
. Berikut adalah contoh cara menetapkan
root of trust yang dapat ditetapkan pengguna:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
Root of trust yang dapat ditetapkan pengguna dapat dihapus dengan mengeluarkan:
fastboot erase avb_custom_key