Cihaz durumu, yazılımın bir cihaza ne kadar özgürce yüklenebileceğini ve doğrulamanın zorunlu kılınıp kılınmadığını belirtir. Cihaz durumları LOCKED
ve UNLOCKED
'dir. LOCKED
cihazlar, cihaza yeni yazılım yüklemenizi engellerken UNLOCKED
cihazlar değişiklik yapılmasına izin verir.
Bir cihaz açıldığında önyükleme programı önce cihazın LOCKED
veya UNLOCKED
olup olmadığını kontrol eder. Bir cihaz UNLOCKED
ise önyükleyici kullanıcıya bir uyarı gösterir ve yüklenen işletim sistemi güven kökü tarafından imzalanmamış olsa bile önyüklemeye devam eder.
Cihaz LOCKED
ise önyükleyici, cihazın yazılımını doğrulamak için Başlatmayı Doğrulama bölümündeki adımları uygular. LOCKED
cihazlar, yüklenen işletim sistemi güven kökü tarafından düzgün bir şekilde imzalanmışsa yalnızca açılır. Daha fazla bilgi için Açılış akışı bölümüne bakın.
Cihaz durumunu değiştirme
Bir cihazın durumunu değiştirmek için fastboot flashing [unlock | lock]
komutunu kullanın. Kullanıcı verilerini korumak için tüm durum geçişlerinde veri bölümleri silinir ve veriler silinmeden önce kullanıcı onayı istenir.
Kullanıcılar kullanılmış bir geliştirme cihazı satın aldığında UNLOCKED
ile LOCKED
arasında geçiş yapılması beklenir. Cihaz kilitlendiğinde, uyarı olmadığı sürece kullanıcının cihazın üretici tarafından üretilmiş bir durumda olduğundan emin olması gerekir. Geliştirici, geliştirme amacıyla cihazda doğrulamayı devre dışı bırakmak istediğinde LOCKED
ile UNLOCKED
arasında geçiş yapılması beklenir.
Güven kökü
Güvenlik kökü, cihazda depolanan Android kopyasını imzalamak için kullanılan kriptografik anahtardır. Güven kökünün özel kısmı yalnızca cihaz üreticisi tarafından bilinir ve dağıtılmak üzere tasarlanmış her Android sürümünü imzalamak için kullanılır. Güven kökünün herkese açık kısmı cihaza yerleştirilir ve üzerinde değişiklik yapılamayacak bir yerde (genellikle salt okunur depolama birimi) saklanır.
Android'i yüklerken önyükleyici, özgünlüğü doğrulamak için güven kökünü kullanır. Bu süreç hakkında daha fazla bilgi için Başlangıcı doğrulama başlıklı makaleyi inceleyin. Cihazlarda birden fazla önyükleme yükleyici olabilir ve bu nedenle birden fazla kriptografik anahtar kullanılıyor olabilir.
Kullanıcı tarafından ayarlanabilen güven kökü
Cihazlar isteğe bağlı olarak kullanıcının güven kökünü (ör. ortak anahtar) yapılandırmasına izin verebilir. Cihazlar, yerleşik güven köküne ek olarak Doğrulanmış Başlatma için kullanıcı tarafından ayarlanabilen bu güven kökünü kullanabilir (Google Pixel cihazlar bu kökü kullanır).
Kullanıcı tarafından ayarlanabilen güven kökü uygulanıyorsa bu, aşağıdaki şekilde yapılmalıdır:
- Kullanıcı tarafından ayarlanabilen güven kökünü ayarlamak/silmek için fiziksel onay gerekir.
- Kullanıcı tarafından ayarlanabilen güven kökü yalnızca son kullanıcı tarafından ayarlanabilir. Fabrikada veya son kullanıcı cihazı almadan önce herhangi bir aşamada ayarlanamaz.
- Kullanıcı tarafından ayarlanabilen güven kökü, bozulmaya karşı korumalı depolama alanında saklanır. Değişiklik algılanabilir, Android'in verilere müdahale edip etmediğini (ör. verilerin üzerine yazılmış veya değiştirilmiş olup olmadığını) algılamayı mümkün kılar.
- Kullanıcı tarafından ayarlanabilen bir güven kökü ayarlandıysa cihaz, yerleşik güven kökü veya kullanıcı tarafından ayarlanabilen güven kökü ile imzalanan bir Android sürümünün başlatılmasına izin vermelidir.
- Cihaz, kullanıcı tarafından ayarlanabilen güven kökü kullanılarak her başlatıldığında kullanıcıya cihazın Android'in özel bir sürümünü yüklediği bildirilmelidir. Örneğin, uyarı ekranları için
LOCKED
özel anahtar grubuna sahip cihazlar başlıklı makaleyi inceleyin.
Kullanıcı tarafından ayarlanabilen güven kökü uygulamanın bir yolu, yalnızca cihaz UNLOCKED
durumundayken önyükleme yapılabilen veya temizlenebilen bir sanal bölüme sahip olmaktır. Google Pixel 2 cihazlarda bu yaklaşım kullanılır ve sanal bölüme avb_custom_key
adı verilir. Bu bölümdeki verilerin biçimi, avbtool extract_public_key
komutunun çıkışıdır. Kullanıcı tarafından ayarlanabilen güven kökünü ayarlama örneği aşağıda verilmiştir:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
Kullanıcı tarafından ayarlanabilen güven kökü aşağıdaki komutlar verilerek temizlenebilir:
fastboot erase avb_custom_key