Status perangkat menunjukkan seberapa bebas perangkat lunak dapat di-flash ke perangkat dan apakah verifikasi diterapkan. Status perangkat LOCKED
dan UNLOCKED
. Perangkat LOCKED
mencegah Anda mem-flash perangkat lunak baru ke perangkat, sedangkan perangkat UNLOCKED
memungkinkan modifikasi.
Saat perangkat menyala, bootloader pertama-tama memeriksa apakah perangkat LOCKED
atau UNLOCKED
. Jika perangkat UNLOCKED
, bootloader menunjukkan peringatan kepada pengguna dan kemudian melanjutkan boot meskipun OS yang dimuat tidak ditandatangani oleh root of trust.
Jika perangkat LOCKED
, bootloader melakukan langkah-langkah dalam Memverifikasi Boot untuk memverifikasi perangkat lunak perangkat. Perangkat LOCKED
boot hanya jika OS yang dimuat ditandatangani dengan benar oleh akar kepercayaan. Untuk detail selengkapnya, lihat Alur boot .
Mengubah status perangkat
Untuk mengubah status perangkat , gunakan fastboot flashing [unlock | lock]
perintah. Untuk melindungi data pengguna, semua transisi status menghapus partisi data dan meminta konfirmasi pengguna sebelum data dihapus.
Transisi UNLOCKED
ke LOCKED
diantisipasi ketika pengguna membeli perangkat pengembangan bekas. Akibat penguncian perangkat, pengguna harus yakin bahwa perangkat dalam keadaan yang diproduksi oleh produsen perangkat, selama tidak ada peringatan. Transisi LOCKED
ke UNLOCKED
diharapkan ketika pengembang ingin menonaktifkan verifikasi pada perangkat untuk tujuan pengembangan.
Akar Kepercayaan
Root of trust adalah kunci kriptografi yang digunakan untuk menandatangani salinan Android yang tersimpan di perangkat. Bagian pribadi dari akar kepercayaan hanya diketahui oleh produsen perangkat dan digunakan untuk menandatangani setiap versi Android yang ditujukan untuk distribusi. Bagian publik dari akar kepercayaan tertanam di perangkat dan disimpan di suatu tempat sehingga tidak dapat dirusak (biasanya penyimpanan hanya-baca).
Saat memuat Android, bootloader menggunakan akar kepercayaan untuk memverifikasi keaslian. Untuk detail lebih lanjut tentang proses ini, lihat Memverifikasi Boot . Perangkat mungkin memiliki beberapa boot loader dan karena itu beberapa kunci kriptografi mungkin sedang dimainkan.
Akar kepercayaan yang dapat diatur pengguna
Perangkat secara opsional dapat mengizinkan pengguna untuk mengonfigurasi akar kepercayaan (misalnya, kunci publik). Perangkat dapat menggunakan akar kepercayaan yang dapat disetel pengguna ini untuk Boot Terverifikasi, bukan akar kepercayaan bawaan. Ini memungkinkan pengguna untuk menginstal dan menggunakan versi kustom Android tanpa mengorbankan peningkatan keamanan Boot Terverifikasi.
Jika root kepercayaan yang dapat diatur pengguna diimplementasikan, itu harus dilakukan sedemikian rupa sehingga:
- Konfirmasi fisik diperlukan untuk menyetel/menghapus akar kepercayaan yang dapat diatur pengguna.
- Akar kepercayaan yang dapat diatur pengguna hanya dapat diatur oleh pengguna akhir. Itu tidak dapat diatur di pabrik atau titik perantara mana pun sebelum pengguna akhir mendapatkan perangkat.
- Akar kepercayaan yang dapat diatur pengguna disimpan dalam penyimpanan anti-rusak. Tamper-evident berarti memungkinkan untuk mendeteksi apakah Android telah merusak data, misalnya, jika telah ditimpa atau diubah.
- Jika akar kepercayaan yang dapat disetel pengguna disetel, perangkat harus mengizinkan versi Android yang ditandatangani dengan akar kepercayaan bawaan atau akar kepercayaan yang dapat disetel pengguna untuk boot.
- Setiap kali perangkat melakukan booting menggunakan root kepercayaan yang dapat disetel pengguna, pengguna harus diberi tahu bahwa perangkat memuat versi khusus Android. Misalnya, layar peringatan, lihat perangkat
LOCKED
dengan set kunci khusus .
Salah satu cara untuk mengimplementasikan root of trust yang dapat diatur pengguna adalah dengan memiliki partisi virtual yang hanya dapat di-flash atau dihapus saat perangkat dalam status UNLOCKED
. Perangkat Google Pixel 2 menggunakan pendekatan ini dan partisi virtual disebut avb_custom_key
. Format data pada partisi ini adalah output dari perintah avbtool extract_public_key
. Berikut ini contoh cara menyetel root kepercayaan yang dapat diatur pengguna:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
Akar kepercayaan yang dapat diatur pengguna dapat dihapus dengan mengeluarkan:
fastboot erase avb_custom_key