สถานะอุปกรณ์จะระบุระดับความอิสระในการแฟลชซอฟต์แวร์ลงในอุปกรณ์และระบุว่ามีการบังคับใช้การยืนยันหรือไม่ สถานะของอุปกรณ์คือ LOCKED
และ
UNLOCKED
อุปกรณ์ LOCKED
ป้องกันไม่ให้คุณแฟลชซอฟต์แวร์ใหม่ลงในอุปกรณ์ ส่วนอุปกรณ์ UNLOCKED
อนุญาตให้แก้ไข
เมื่ออุปกรณ์เปิดเครื่อง โปรแกรมโหลดบูตจะตรวจสอบก่อนว่าอุปกรณ์เป็นLOCKED
หรือUNLOCKED
หากอุปกรณ์มีสถานะUNLOCKED
โปรแกรมโหลดบูตจะแสดงคำเตือนให้ผู้ใช้เห็น แล้วดำเนินการบูตต่อแม้ว่าระบบปฏิบัติการที่โหลดมาจะไม่ได้ลงนามโดยรูทของความน่าเชื่อถือก็ตาม
หากอุปกรณ์เป็น LOCKED
บูตโหลดเดอร์จะดำเนินการตามขั้นตอนในการยืนยันการบูตเพื่อยืนยันซอฟต์แวร์ของอุปกรณ์ อุปกรณ์ LOCKED
จะบูตเฉพาะในกรณีที่ระบบปฏิบัติการที่โหลดลงได้รับการลงนามอย่างถูกต้องโดยรูทของความน่าเชื่อถือ โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อขั้นตอนการบูต
เปลี่ยนสถานะอุปกรณ์
หากต้องการเปลี่ยนสถานะของอุปกรณ์ ให้ใช้คำสั่ง fastboot flashing [unlock | lock]
การเปลี่ยนสถานะทั้งหมดจะล้างพาร์ติชันข้อมูลและขอการยืนยันจากผู้ใช้ก่อนที่จะลบข้อมูลออก เพื่อปกป้องข้อมูลผู้ใช้
การเปลี่ยนจาก UNLOCKED
เป็น LOCKED
จะเกิดขึ้นเมื่อผู้ใช้ซื้ออุปกรณ์สำหรับพัฒนาซอฟต์แวร์มือสอง การล็อกอุปกรณ์ทำให้ผู้ใช้มั่นใจได้ว่าอุปกรณ์อยู่ในสถานะที่ผู้ผลิตอุปกรณ์สร้างขึ้น ตราบใดที่ไม่มีคำเตือน การเปลี่ยนจาก LOCKED
เป็น UNLOCKED
จะเกิดขึ้นเมื่อนักพัฒนาแอปต้องการปิดใช้การยืนยันในอุปกรณ์เพื่อวัตถุประสงค์ในการพัฒนา
รูทของความน่าเชื่อถือ
รูทของความน่าเชื่อถือคือคีย์การเข้ารหัสลับที่ใช้รับรองสำเนาของ Android ที่เก็บไว้ในอุปกรณ์ เฉพาะผู้ผลิตอุปกรณ์เท่านั้นที่ทราบข้อมูลส่วนตัวของรูทของความน่าเชื่อถือ และข้อมูลดังกล่าวจะใช้เพื่อลงนามใน Android ทุกเวอร์ชันที่มีไว้เพื่อเผยแพร่ ส่วนที่เป็นสาธารณะของรูทของความน่าเชื่อถือจะฝังอยู่ในอุปกรณ์และจัดเก็บไว้ในตำแหน่งที่ไม่สามารถดัดแปลงได้ (โดยทั่วไปคือพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียว)
เมื่อโหลด Android โปรแกรมโหลดบูตจะใช้รูทของความน่าเชื่อถือเพื่อยืนยันความถูกต้อง ดูรายละเอียดเพิ่มเติมเกี่ยวกับกระบวนการนี้ได้ที่หัวข้อการยืนยันการบูต อุปกรณ์อาจมีโปรแกรมบูตหลายรายการ จึงอาจมีคีย์การเข้ารหัสหลายรายการ
รูทของความน่าเชื่อถือที่ผู้ใช้ตั้งค่าได้
อุปกรณ์อาจอนุญาตให้ผู้ใช้กำหนดค่ารูทของความน่าเชื่อถือ (เช่น คีย์สาธารณะ) อุปกรณ์ต่างๆ สามารถใช้รูทของความน่าเชื่อถือที่ผู้ใช้ตั้งค่าได้นี้สำหรับฟีเจอร์การบูตที่ยืนยันแล้วได้ (และอุปกรณ์ Google Pixel ก็ทำเช่นนั้น) นอกเหนือจากรูทของความน่าเชื่อถือในตัว
หากมีการใช้รูทของความน่าเชื่อถือที่ผู้ใช้กำหนดได้ ก็ควรทำในลักษณะต่อไปนี้
- ต้องมีการยืนยันตัวตนเพื่อตั้งค่า/ล้างรูทของความไว้วางใจที่ผู้ใช้กำหนดได้
- ผู้ใช้ปลายทางเท่านั้นที่จะตั้งค่ารูทของความน่าเชื่อถือที่ผู้ใช้กำหนดได้ ไม่สามารถตั้งค่าที่โรงงานหรือจุดใดก็ตามในระหว่างที่ผู้ใช้ปลายทางได้รับอุปกรณ์
- รูทของความน่าเชื่อถือที่ผู้ใช้ตั้งค่าได้จะจัดเก็บไว้ในพื้นที่เก็บข้อมูลที่ป้องกันการดัดแปลง ป้องกันการดัดแปลงหมายความว่าสามารถตรวจจับได้ว่า Android มีการดัดแปลงข้อมูลหรือไม่ เช่น มีการเขียนทับหรือเปลี่ยนแปลงข้อมูล
- หากตั้งค่ารูทของความน่าเชื่อถือที่ผู้ใช้กำหนดได้ อุปกรณ์ควรอนุญาตให้ Android เวอร์ชันที่ลงนามด้วยรูทของความน่าเชื่อถือในตัวหรือรูทของความน่าเชื่อถือที่ผู้ใช้กำหนดได้บูต
- ทุกครั้งที่อุปกรณ์บูตโดยใช้รูทของความน่าเชื่อถือที่ผู้ใช้กำหนดได้ ผู้ใช้ควรได้รับการแจ้งเตือนว่าอุปกรณ์กำลังโหลด Android เวอร์ชันที่กำหนดเอง ตัวอย่างเช่น หน้าจอคําเตือน โปรดดู
LOCKED
อุปกรณ์ที่มีชุดคีย์ที่กําหนดเอง
วิธีหนึ่งในการใช้รูทของความน่าเชื่อถือที่ผู้ใช้กำหนดได้คือให้มีพาร์ติชันเสมือนที่สามารถแฟลชหรือล้างได้เฉพาะเมื่ออุปกรณ์อยู่ในสถานะUNLOCKED
เท่านั้น อุปกรณ์ Google Pixel 2 ใช้แนวทางนี้และเรียกพาร์ติชันเสมือนว่า avb_custom_key
รูปแบบของข้อมูลในพาร์ติชันนี้คือเอาต์พุตของคำสั่ง avbtool extract_public_key
ต่อไปนี้คือตัวอย่างวิธีตั้งค่ารูทของความน่าเชื่อถือที่ผู้ใช้กำหนดได้
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
คุณสามารถล้างรูทของความน่าเชื่อถือที่ผู้ใช้กำหนดได้โดยออกคำสั่งต่อไปนี้
fastboot erase avb_custom_key