การบูตที่ยืนยันแล้วกำหนดให้ต้องยืนยันโค้ดและข้อมูลที่เรียกใช้งานได้ทั้งหมด
ซึ่งเป็นส่วนหนึ่งของ Android เวอร์ชันที่กำลังบูตด้วยการเข้ารหัสลับก่อนที่จะนำไปใช้ ซึ่งรวมถึง
เคอร์เนล (โหลดจากพาร์ติชัน boot), แผนผังอุปกรณ์ (โหลด
จากพาร์ติชัน dtbo), พาร์ติชัน system, พาร์ติชัน vendor และอื่นๆ
โดยปกติแล้ว พาร์ติชันขนาดเล็ก เช่น boot และ dtbo ซึ่งอ่านได้เพียงครั้งเดียวจะได้รับการยืนยันโดยการโหลดเนื้อหาทั้งหมดลงในหน่วยความจำ แล้วคำนวณแฮช จากนั้นระบบจะเปรียบเทียบค่าแฮชที่คำนวณนี้กับค่าแฮชที่คาดไว้ หากค่าไม่ตรงกัน Android จะไม่โหลด
โปรดดูรายละเอียดเพิ่มเติมที่ลำดับการบูต
พาร์ติชันขนาดใหญ่ที่หน่วยความจำไม่พอ (เช่น ระบบไฟล์) อาจใช้ แฮชทรีซึ่งการยืนยันเป็นกระบวนการต่อเนื่องที่เกิดขึ้นเมื่อมีการโหลดข้อมูล ลงในหน่วยความจำ ในกรณีนี้ ระบบจะคำนวณแฮชรูทของแฮชทรี ในระหว่างรันไทม์และตรวจสอบกับค่าแฮชรูทที่คาดไว้ Android มีไดรเวอร์ dm-verity เพื่อยืนยันพาร์ติชันที่ใหญ่ขึ้น หากเมื่อใดก็ตามที่แฮชรูทที่คำนวณแล้วไม่ตรงกับค่าแฮชรูทที่คาดไว้ ระบบจะไม่ใช้ข้อมูลดังกล่าว และ Android จะเข้าสู่สถานะข้อผิดพลาด ดูรายละเอียดเพิ่มเติมได้ที่ ความเสียหายของ dm-verity
โดยปกติแล้ว แฮชที่คาดไว้จะจัดเก็บไว้ที่ส่วนท้ายหรือส่วนต้น ของแต่ละพาร์ติชันที่ยืนยันแล้ว ในพาร์ติชันเฉพาะ หรือทั้ง 2 ที่ ที่สำคัญคือแฮชเหล่านี้ได้รับการลงนาม (โดยตรงหรือโดยอ้อม) โดยรูทของความน่าเชื่อถือ ตัวอย่างเช่น การใช้งาน AVB รองรับทั้ง 2 วิธี โปรดดูรายละเอียดที่การเปิดเครื่องที่ได้รับการยืนยันของ Android
การป้องกันการย้อนกลับ
แม้ว่ากระบวนการอัปเดตจะปลอดภัยอย่างสมบูรณ์ แต่ก็เป็นไปได้ที่ช่องโหว่ของเคอร์เนล Android ที่ไม่คงอยู่จะติดตั้ง Android เวอร์ชันเก่าที่เสี่ยงต่อการถูกโจมตีมากกว่าด้วยตนเอง รีบูตเป็นเวอร์ชันที่มีช่องโหว่ แล้วใช้ Android เวอร์ชันนั้นเพื่อติดตั้งช่องโหว่ที่คงอยู่ จากนั้นผู้โจมตีจะเป็นเจ้าของอุปกรณ์อย่างถาวร และทำอะไรก็ได้ รวมถึงปิดใช้การอัปเดต
การป้องกันการโจมตีประเภทนี้เรียกว่าการป้องกันการย้อนกลับ โดยปกติแล้ว การป้องกันการย้อนกลับจะดำเนินการโดยใช้ พื้นที่เก็บข้อมูลที่ตรวจพบการดัดแปลงเพื่อบันทึก Android เวอร์ชันล่าสุดและ ปฏิเสธที่จะบูต Android หากเป็นเวอร์ชันที่ต่ำกว่าเวอร์ชันที่บันทึกไว้ โดยปกติแล้ว ระบบจะติดตามเวอร์ชัน ในระดับพาร์ติชัน
ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่ AVB จัดการการป้องกันการย้อนกลับได้ที่ README ของ AVB
จัดการข้อผิดพลาดในการยืนยัน
การยืนยันอาจล้มเหลวในเวลาเปิดเครื่อง (เช่น หากแฮชที่คำนวณในพาร์ติชัน
boot ไม่ตรงกับแฮชที่คาดไว้) หรือในเวลาที่รัน (เช่น หาก dm-verity พบข้อผิดพลาดในการยืนยันในพาร์ติชัน
system) หากการยืนยันล้มเหลวในเวลาที่เปิดเครื่อง อุปกรณ์จะ
เปิดเครื่องไม่ได้ และผู้ใช้ปลายทางจะต้องทำตามขั้นตอนเพื่อกู้คืนอุปกรณ์
หากการยืนยันไม่สำเร็จในขณะรันไทม์ ขั้นตอนจะซับซ้อนขึ้นเล็กน้อย หากอุปกรณ์ใช้ dm-verity ควรมีการกำหนดค่าในโหมด restart ในโหมด
restart หากพบข้อผิดพลาดในการยืนยัน ระบบจะรีสตาร์ทอุปกรณ์
ทันทีพร้อมตั้งค่าสถานะที่เฉพาะเจาะจงเพื่อระบุสาเหตุ โปรแกรมโหลด
ระบบควรสังเกตเห็นแฟล็กนี้และเปลี่ยน dm-verity ไปใช้ข้อผิดพลาด I/O
(eio) และอยู่ในโหมดนี้จนกว่าจะมีการติดตั้งอัปเดตใหม่
เมื่อบูตในโหมดeio อุปกรณ์จะแสดงหน้าจอข้อผิดพลาด
เพื่อแจ้งให้ผู้ใช้ทราบว่าตรวจพบความเสียหายและอุปกรณ์อาจ
ทำงานไม่ถูกต้อง หน้าจอจะแสดงจนกว่าผู้ใช้จะปิด ในโหมด
eio ไดรเวอร์ dm-verity จะไม่รีสตาร์ทอุปกรณ์หากพบ
ข้อผิดพลาดในการยืนยัน แต่จะแสดงข้อผิดพลาด EIO แทน และ
แอปจะต้องจัดการกับข้อผิดพลาด
โดยมีจุดประสงค์เพื่อให้โปรแกรมอัปเดตระบบทำงาน (จึงติดตั้งระบบปฏิบัติการใหม่ที่ไม่มีข้อผิดพลาดด้านความเสียหายได้) หรือเพื่อให้ผู้ใช้สามารถนำข้อมูลออกจากอุปกรณ์ได้มากที่สุด เมื่อติดตั้งระบบปฏิบัติการใหม่แล้ว Boot Loader
จะสังเกตเห็นระบบปฏิบัติการที่ติดตั้งใหม่และเปลี่ยนกลับไปเป็นโหมด restart