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

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