Status perangkat

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