กำลังตรวจสอบการบูต

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

การบูตที่ยืนยันแล้วต้องมีการตรวจสอบโค้ดและข้อมูลที่ปฏิบัติการได้ทั้งหมดด้วยการเข้ารหัสลับ ซึ่งเป็นส่วนหนึ่งของเวอร์ชัน Android ที่ถูกบู๊ตก่อนที่จะใช้งาน ซึ่งรวมถึงเคอร์เนล (โหลดจากพาร์ boot ชั่นสำหรับเริ่มระบบ), โครงสร้างอุปกรณ์ (โหลดจากพาร์ติ dtbo ), พาร์ติชั่น system , พาร์ติชั่นของ vendor และอื่นๆ

พาร์ติชั่นขนาดเล็ก เช่น boot และ dtbo ที่อ่านเพียงครั้งเดียว โดยทั่วไปแล้วจะตรวจสอบโดยการโหลดเนื้อหาทั้งหมดลงในหน่วยความจำ แล้วคำนวณแฮช ค่าแฮชที่คำนวณนี้จะถูกเปรียบเทียบกับ ค่าแฮชที่คาด ไว้ หากค่าไม่ตรงกัน Android จะไม่โหลด สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Boot Flow

พาร์ติชันขนาดใหญ่ที่ไม่พอดีกับหน่วยความจำ (เช่น ระบบไฟล์) อาจใช้แผนผังแฮชซึ่งการตรวจสอบเป็นกระบวนการที่ต่อเนื่องเกิดขึ้นเมื่อมีการโหลดข้อมูลลงในหน่วยความจำ ในกรณีนี้ แฮชรูทของแผนผังแฮชจะถูกคำนวณระหว่างรันไทม์ และตรวจสอบกับ ค่าแฮชรูทที่คาด ไว้ Android มี ไดรเวอร์ dm-verity เพื่อตรวจสอบพาร์ติชั่นที่ใหญ่ขึ้น หากในบางจุด แฮชของรูทที่คำนวณไม่ตรงกับ ค่าแฮชรูทที่คาดไว้ จะไม่มีการใช้ข้อมูลและ Android เข้าสู่สถานะข้อผิดพลาด สำหรับรายละเอียดเพิ่มเติม โปรดดู ที่ dm-verity คอร์รัปชั่

โดยทั่วไป แฮชที่คาดไว้ จะถูกเก็บไว้ที่ส่วนท้ายหรือจุดเริ่มต้นของแต่ละพาร์ติชั่นที่ตรวจสอบแล้ว ในพาร์ติชั่นเฉพาะ หรือทั้งสองอย่าง สิ่งที่สำคัญที่สุดคือ การลงนามแฮชเหล่านี้ (ไม่ว่าโดยตรงหรือโดยอ้อม) โดยรากฐานของความไว้วางใจ ตัวอย่างเช่น การใช้งาน AVB รองรับทั้งสองวิธี โปรดดูรายละเอียดที่ Android Verified Boot

ป้องกันการย้อนกลับ

แม้จะมีกระบวนการอัปเดตที่ปลอดภัยอย่างสมบูรณ์ แต่ก็เป็นไปได้ที่การใช้ประโยชน์จากเคอร์เนล Android ที่ไม่ถาวรเพื่อติดตั้ง Android เวอร์ชันเก่าที่มีช่องโหว่มากกว่าด้วยตนเอง รีบูตเป็นเวอร์ชันที่มีช่องโหว่ แล้วจึงใช้เวอร์ชัน Android นั้นเพื่อติดตั้งช่องโหว่แบบถาวร จากนั้นผู้โจมตีจะเป็นเจ้าของอุปกรณ์อย่างถาวรและสามารถทำอะไรก็ได้ รวมถึงการปิดใช้งานการอัปเดต

การป้องกันการโจมตีประเภทนี้เรียกว่า Rollback Protection โดยทั่วไปแล้วการป้องกันการย้อนกลับจะใช้ที่เก็บข้อมูลที่ป้องกันการงัดแงะเพื่อบันทึกเวอร์ชันล่าสุดของ Android และปฏิเสธที่จะบูต Android หากเวอร์ชันนั้นต่ำกว่าเวอร์ชันที่บันทึกไว้ โดยทั่วไปแล้วเวอร์ชันต่างๆ จะถูกติดตามตามพาร์ติชั่น

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่ AVB จัดการกับการป้องกันการย้อนกลับ โปรดดูที่ AVB README

การจัดการข้อผิดพลาดในการตรวจสอบ

การยืนยันอาจล้มเหลวทั้งในเวลาบูต (เช่น หากแฮชที่คำนวณบนพาร์ติชัน boot ไม่ตรงกับแฮชที่คาดไว้) หรือขณะรันไทม์ (เช่น หาก dm-verity พบข้อผิดพลาดในการตรวจสอบบนพาร์ติชัน system ) หากการตรวจสอบล้มเหลวในขณะบู๊ต อุปกรณ์จะไม่สามารถบู๊ตได้ และผู้ใช้ต้องทำตามขั้นตอนต่างๆ เพื่อกู้คืนอุปกรณ์

หากการตรวจสอบล้มเหลวในขณะใช้งาน โฟลว์จะซับซ้อนขึ้นเล็กน้อย หากอุปกรณ์ใช้ dm-verity ควรกำหนดค่าให้อยู่ในโหมด restart ในโหมด restart หากพบข้อผิดพลาดในการตรวจสอบ อุปกรณ์จะรีสตาร์ททันทีโดยตั้งค่าสถานะเฉพาะเพื่อระบุสาเหตุ ตัวโหลดการบูตควรสังเกตเห็นแฟล็กนี้และเปลี่ยน dm-verity ไปใช้โหมด I/O Error ( eio ) และอยู่ในโหมดนี้จนกว่าจะมีการติดตั้งการอัปเดตใหม่

เมื่อบูตในโหมด eio อุปกรณ์จะแสดงหน้าจอข้อผิดพลาดเพื่อแจ้งให้ผู้ใช้ทราบว่าตรวจพบการทุจริตและอุปกรณ์อาจทำงานไม่ถูกต้อง หน้าจอจะแสดงจนกว่าผู้ใช้จะยกเลิก ในโหมด eio ไดรเวอร์ dm-verity จะไม่รีสตาร์ทอุปกรณ์หากพบข้อผิดพลาดในการตรวจสอบ แต่จะส่งคืนข้อผิดพลาด EIO และแอปพลิเคชันจำเป็นต้องจัดการกับข้อผิดพลาด

จุดประสงค์คือตัวอัปเดตระบบจะทำงาน (ดังนั้นสามารถติดตั้งระบบปฏิบัติการใหม่โดยไม่มีข้อผิดพลาดการทุจริตได้) หรือผู้ใช้สามารถรับข้อมูลออกจากอุปกรณ์ได้มากที่สุด เมื่อติดตั้งระบบปฏิบัติการใหม่แล้ว บูตโหลดเดอร์จะสังเกตเห็นระบบปฏิบัติการที่เพิ่งติดตั้งใหม่และสลับกลับไปเป็นโหมด restart