Kunci dan buka kunci bootloader

Secara default, sebagian besar perangkat Android dikirimkan dengan bootloader terkunci, yang berarti pengguna tidak dapat mem-flash bootloader atau partisi perangkat. Jika diperlukan, Anda (dan pengguna perangkat dengan opsi Developer diaktifkan) dapat membuka kunci bootloader untuk mem-flash image baru.

Masuk ke bootloader

Untuk mengeluarkan perintah fastboot, Anda harus berada dalam mode bootloader. Salah satu cara untuk melakukannya adalah dengan mengirim perintah adb adb reboot bootloader. Beberapa ponsel juga memungkinkan Anda memulai ulang ke bootloader dengan menekan kombinasi tombol (biasanya volume turun) saat mem-booting perangkat.

Membuka kunci bootloader

Setelah dalam mode bootloader, jalankan perintah fastboot flashing unlock di perangkat untuk membuka kunci bootloader dan mengaktifkan partisi yang akan di-flash ulang. Setelah ditetapkan, mode buka kunci akan tetap ada saat memulai ulang.

Perangkat harus menolak perintah fastboot flashing unlock kecuali jika get_unlock_ability ditetapkan ke 1. Jika disetel ke 0, pengguna harus melakukan booting ke layar utama, membuka menu Settings > System > Developer options, dan mengaktifkan opsi OEM unlocking (yang menetapkan get_unlock_ability ke 1). Setelah disetel, mode ini akan tetap ada di seluruh mulai ulang dan reset data pabrik.

Saat perintah fastboot flashing unlock dikirim, perangkat akan meminta pengguna untuk memperingatkan mereka bahwa mereka mungkin mengalami masalah dengan gambar tidak resmi. Setelah pengguna mengonfirmasi peringatan, perangkat akan melakukan reset data setelan pabrik untuk mencegah akses data yang tidak sah. Bootloader harus mereset perangkat meskipun tidak dapat memformat ulang dengan benar. Hanya setelah reset, flag persisten dapat ditetapkan sehingga perangkat dapat di-flash ulang.

Semua RAM yang belum ditimpa harus direset selama proses fastboot flashing unlock. Tindakan ini mencegah serangan yang membaca konten RAM yang tersisa dari booting sebelumnya. Demikian pula, perangkat yang tidak terkunci harus menghapus RAM pada setiap booting (kecuali jika hal ini menyebabkan penundaan yang tidak dapat diterima), tetapi harus meninggalkan region yang digunakan untuk ramoops kernel.

Mengunci bootloader

Untuk mengunci bootloader dan mereset perangkat, jalankan perintah fastboot flashing lock di perangkat. Perangkat yang ditujukan untuk retail harus dikirim dalam status terkunci (dengan get_unlock_ability menampilkan 0) untuk memastikan bahwa penyerang tidak dapat membahayakan perangkat dengan menginstal sistem atau image booting baru.

Menetapkan properti kunci dan buka kunci

Properti ro.oem_unlock_supported harus ditetapkan pada waktu build berdasarkan apakah perangkat mendukung buka kunci dengan flash.

  • Jika perangkat mendukung flashing unlock, setel ro.oem_unlock_supported ke 1.
  • Jika perangkat tidak mendukung flash buka kunci, setel ro.oem_unlock_supported ke 0.

Jika perangkat mendukung flashing unlock, bootloader harus menunjukkan status kunci dengan menetapkan variabel command line kernel androidboot.flash.locked ke 1 jika terkunci atau ke 0 jika tidak terkunci. Variabel ini harus ditetapkan di bootconfig, bukan di command line kernel di Android 12.

Untuk perangkat yang mendukung dm-verity, gunakan ro.boot.verifiedbootstate untuk menetapkan nilai ro.boot.flash.locked ke 0; tindakan ini akan membuka kunci bootloader jika status booting terverifikasi berwarna oranye.

Melindungi bagian penting

Perangkat harus mendukung penguncian dan pembukaan kunci bagian penting, yang didefinisikan sebagai apa pun yang diperlukan untuk mem-booting perangkat ke bootloader. Bagian tersebut dapat mencakup sekring, partisi virtual untuk hub sensor, bootloader tahap pertama, dan lainnya. Untuk mengunci bagian penting, Anda harus menggunakan mekanisme yang mencegah kode (kernel, image pemulihan, kode OTA, dll.) yang berjalan di perangkat agar tidak sengaja mengubah bagian penting apa pun. OTA akan gagal memperbarui bagian penting jika perangkat berada dalam status kritis kunci.

Transisi dari status terkunci ke tidak terkunci harus memerlukan interaksi fisik dengan perangkat. Interaksi ini mirip dengan efek menjalankan perintah fastboot flashing unlock, tetapi mengharuskan pengguna menekan tombol fisik di perangkat. Perangkat tidak boleh mengizinkan transisi secara terprogram dari lock critical ke unlock critical tanpa interaksi fisik, dan perangkat tidak boleh dikirim dalam status unlock critical.