สถานะของอุปกรณ์จะระบุว่าสามารถแฟลชซอฟต์แวร์ไปยังอุปกรณ์ได้อย่างอิสระได้อย่างไร และมีการบังคับใช้การตรวจสอบหรือไม่ สถานะของอุปกรณ์ถูก LOCKED
และ UNLOCKED
อุปกรณ์ LOCKED
จะป้องกันไม่ให้คุณแฟลชซอฟต์แวร์ใหม่ไปยังอุปกรณ์ ในขณะที่อุปกรณ์ UNLOCKED
จะอนุญาตให้ทำการดัดแปลงได้
เมื่ออุปกรณ์เปิดเครื่อง Bootloader จะตรวจสอบก่อนว่าอุปกรณ์ LOCKED
หรือ UNLOCKED
หรือไม่ หากอุปกรณ์ถูก UNLOCKED
โปรแกรมบูตโหลดเดอร์จะแสดงคำเตือนให้ผู้ใช้ทราบ จากนั้นจึงบูตต่อแม้ว่าระบบปฏิบัติการที่โหลดจะไม่ได้ลงนามโดยรากแห่งความไว้วางใจก็ตาม
หากอุปกรณ์ LOCKED
โปรแกรมโหลดบูตจะต้องทำตามขั้นตอนใน การตรวจสอบการบูต เพื่อตรวจสอบซอฟต์แวร์ของอุปกรณ์ อุปกรณ์ LOCKED
จะบู๊ต ได้ก็ต่อ เมื่อระบบปฏิบัติการที่โหลดได้รับการลงนามอย่างถูกต้องโดยรูทแห่งความไว้วางใจ สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ ขั้นตอนการบูต
การเปลี่ยนสถานะอุปกรณ์
หากต้องการ เปลี่ยนสถานะของอุปกรณ์ ให้ใช้ fastboot flashing [unlock | lock]
คำสั่ง fastboot flashing [unlock | lock]
เพื่อปกป้องข้อมูลผู้ใช้ การเปลี่ยนสถานะ ทั้งหมด จะล้างพาร์ติชันข้อมูลและขอการยืนยันจากผู้ใช้ก่อนที่ข้อมูลจะถูกลบ
คาดว่าจะมีการเปลี่ยนแปลง UNLOCKED
ไปเป็น LOCKED
เมื่อผู้ใช้ซื้ออุปกรณ์การพัฒนาที่ใช้แล้ว จากการล็อคอุปกรณ์ ผู้ใช้ควรมั่นใจว่าอุปกรณ์อยู่ในสถานะที่ผลิตโดยผู้ผลิตอุปกรณ์ ตราบใดที่ไม่มีคำเตือน คาดว่าจะมีการเปลี่ยนจาก LOCKED
เป็น UNLOCKED
เมื่อนักพัฒนาต้องการปิดการตรวจสอบบนอุปกรณ์เพื่อวัตถุประสงค์ในการพัฒนา
รากฐานของความไว้วางใจ
รากฐานของความไว้วางใจ คือคีย์การเข้ารหัสที่ใช้ในการลงนามสำเนาของ Android ที่จัดเก็บไว้ในอุปกรณ์ ส่วนตัวของรากฐานของความไว้วางใจนั้นมีเพียงผู้ผลิตอุปกรณ์เท่านั้นที่รู้จัก และใช้เพื่อลงนาม Android ทุกเวอร์ชันที่มีจุดประสงค์เพื่อการเผยแพร่ ส่วนสาธารณะของรากฐานของความไว้วางใจนั้นฝังอยู่ในอุปกรณ์และถูกจัดเก็บไว้ในสถานที่เพื่อไม่ให้ถูกแก้ไข (โดยทั่วไปจะเป็นที่เก็บข้อมูลแบบอ่านอย่างเดียว)
เมื่อโหลด Android โปรแกรมโหลดบูตจะใช้รากของความไว้วางใจเพื่อตรวจสอบความถูกต้อง สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับกระบวนการนี้ โปรดดูที่ การตรวจสอบการบูต อุปกรณ์อาจมีบูตโหลดเดอร์หลายตัว และอาจมีคีย์เข้ารหัสหลายตัวที่ใช้งานอยู่
รากฐานของความไว้วางใจที่ผู้ใช้กำหนดได้
อุปกรณ์สามารถเลือกให้ผู้ใช้สามารถกำหนดค่ารูทของความน่าเชื่อถือได้ (เช่น คีย์สาธารณะ) อุปกรณ์สามารถใช้รูทความน่าเชื่อถือที่ผู้ใช้กำหนดได้สำหรับ Verified Boot แทนรูทความน่าเชื่อถือในตัว ซึ่งจะทำให้ผู้ใช้สามารถติดตั้งและใช้ Android เวอร์ชันที่กำหนดเองได้โดยไม่ต้องเสียสละการปรับปรุงความปลอดภัยของ Verified Boot
หากมีการใช้รากฐานของความไว้วางใจที่ผู้ใช้กำหนดได้ ก็ควรทำในลักษณะที่:
- จำเป็นต้องมีการยืนยันทางกายภาพเพื่อตั้งค่า/ล้างรากความเชื่อถือที่ผู้ใช้กำหนดได้
- รากของความไว้วางใจที่ผู้ใช้กำหนดได้เท่านั้นที่สามารถตั้งค่าได้โดยผู้ใช้ปลายทางเท่านั้น ไม่สามารถตั้งค่าที่โรงงานหรือจุดกึ่งกลางใดๆ ก่อนที่ผู้ใช้จะได้รับอุปกรณ์
- รากแห่งความไว้วางใจที่ผู้ใช้กำหนดได้จะถูกจัดเก็บไว้ในที่จัดเก็บข้อมูลที่บ่งชี้ร่องรอยการแกะ หลักฐานการงัดแงะ หมายความว่าสามารถตรวจสอบได้ว่า 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