Mengunci/Membuka Kunci Bootloader

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

Masuk ke bootloader

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

Membuka kunci bootloader

Setelah berada dalam mode bootloader, untuk membuka kunci bootloader dan mengaktifkan partisi untuk di-reflash, jalankan perintah fastboot flashing unlock pada perangkat. Setelah pengaturan, mode buka kunci tetap ada saat reboot.

Perangkat harus menolak perintah fastboot flashing unlock kecuali get_unlock_ability diatur ke 1 . Jika disetel ke 0 , pengguna perlu melakukan booting ke layar beranda, buka menu Pengaturan > Sistem > Opsi pengembang dan aktifkan opsi buka kunci OEM (yang menyetel get_unlock_ability ke 1 ). Setelah pengaturan, mode ini tetap ada selama reboot dan reset data pabrik.

Ketika perintah fastboot flashing unlock dikirim, perangkat akan meminta pengguna untuk memperingatkan mereka bahwa mereka mungkin mengalami masalah dengan gambar tidak resmi. Setelah pengguna menyetujui peringatan tersebut, perangkat harus melakukan reset data pabrik untuk mencegah akses data yang tidak sah. Bootloader harus mengatur ulang perangkat meskipun tidak dapat memformat ulang dengan benar. Hanya setelah reset, tanda persisten dapat disetel sehingga perangkat dapat di-reflash.

Semua RAM yang belum ditimpa harus direset selama proses fastboot flashing unlock . Tindakan ini mencegah serangan yang membaca sisa isi RAM dari booting sebelumnya. Demikian pula, perangkat yang tidak terkunci harus menghapus RAM pada setiap boot (kecuali jika hal ini menimbulkan penundaan yang tidak dapat diterima), tetapi harus membiarkan wilayah yang digunakan untuk ramoops kernel.

Mengunci bootloader

Untuk mengunci bootloader dan mereset perangkat, jalankan perintah fastboot flashing lock pada perangkat. Perangkat yang ditujukan untuk ritel harus dikirim dalam keadaan terkunci (dengan get_unlock_ability mengembalikan 0 ) untuk memastikan bahwa penyerang tidak dapat menyusupi perangkat dengan menginstal sistem baru atau image boot.

Mengatur properti kunci/buka kunci

Properti ro.oem_unlock_supported harus disetel pada waktu pembuatan berdasarkan apakah perangkat mendukung flashing unlock.

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

Jika perangkat mendukung flashing unlock, maka bootloader harus menunjukkan status kunci dengan mengatur variabel baris perintah kernel androidboot.flash.locked ke 1 jika terkunci atau ke 0 jika tidak terkunci. Variabel ini harus disetel di bootconfig, bukan di baris perintah kernel di Android 12.

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

Melindungi bagian-bagian penting

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

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