เครื่องมือการคอมโพสิชันตัวระบุอุปกรณ์

Device Identifier Composition Engine (DICE) เป็นข้อกำหนดของกลุ่มการประมวลผลข้อมูลที่เชื่อถือได้ (Trusted Computing Group) ที่นำมาใช้กับ Android DICE มีเป้าหมายที่จะสร้างข้อมูลระบุตัวตนแบบเข้ารหัสที่เปลี่ยนแปลงไม่ได้สำหรับอุปกรณ์ พร้อมกับการวัดเฟิร์มแวร์ที่ตรวจสอบได้จากระยะไกลซึ่งโหลดระหว่างเปิดเครื่อง กระบวนการนี้จะสร้างข้อมูลประจำตัวการเข้ารหัสเพิ่มเติมสำหรับเฟิร์มแวร์แต่ละรายการที่โหลด ข้อมูลประจำตัวเหล่านี้ขึ้นอยู่กับข้อมูลประจำตัวพื้นฐานและแต่ละอิมเมจเฟิร์มแวร์ที่โหลดในระหว่างการบูต

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

ROM ใช้ UDS เป็นอินพุตสำหรับฟังก์ชันการสร้างคีย์ (KDF) เพื่อสร้างคู่คีย์แบบไม่สมมาตรถาวรซึ่งระบุอุปกรณ์เครื่องนั้นๆ ROM จะโหลดและวัดเฟิร์มแวร์ระยะถัดไปในลำดับการบูต พร้อมกับระบุข้อมูลเมตาเพิ่มเติมเกี่ยวกับสภาพแวดล้อมสำหรับการบูตนั้นๆ เช่น การเปิดใช้การบูตอย่างปลอดภัย ROM จะประมวลผลการวัดค่า การกําหนดค่า และ UDS ด้วย KDF เพื่อดึงข้อมูลลับสําหรับการโหลดระยะถัดไป ข้อมูลลับนี้เรียกว่าตัวระบุอุปกรณ์แบบผสม (CDI)

จากนั้นระบบจะทําขั้นตอนนี้ซ้ำ CDI จะทำหน้าที่เป็น UDS ของระยะถัดไป ระยะดังกล่าวจะสร้างคู่คีย์ และป้อน CDI ลงใน KDF พร้อมกับแฮชของรูปภาพถัดไปที่จะโหลดเพื่อสร้างค่า CDI อื่นที่ดึงข้อมูล

เฟิร์มแวร์ที่โหลดจะใช้คู่คีย์ที่สร้างขึ้นเพื่อลงชื่อการรับรองและการเข้ารหัสออบเจ็กต์ CBOR (COSE) ใบรับรอง Sign1 แต่ละระยะจะลงนามในใบรับรองของระยะถัดไปที่จะโหลด ใบรับรองนี้ประกอบด้วยข้อมูลต่างๆ เช่น การวัดระยะของระยะนั้น โหมดที่บูตอยู่ คีย์สาธารณะ CDI สำหรับระยะนั้น และข้อมูลเมตาอื่นๆ ที่เกี่ยวข้อง

กระบวนการดึงข้อมูล DICE ที่ง่ายขึ้น

รูปที่ 1 กระบวนการดึงข้อมูล DICE ที่ง่ายขึ้น

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