Device Identifier Composition Engine (DICE) هو أحد مواصفات مجموعة الحوسبة الموثوق بها التي تم اعتمادها في Android. يهدف DICE إلى إنشاء هوية مشفَّرة غير قابلة للتغيير لأي جهاز، إلى جانب قياس البرامج الثابتة التي يتم تحميلها أثناء التشغيل ويمكن التحقق منها عن بُعد. تُنشئ هذه العملية أيضًا هويات تشفير لكل جزء من البرامج الثابتة التي يتم تحميلها. تعتمد هذه الهويات بالكامل على الهوية الأساسية وكل صورة برمجية تم تحميلها أثناء عملية تشغيل معيّنة.
يبدأ نظام DICE عندما يحمّل ROM الخاص بالشريحة سرًا فريدًا للجهاز (UDS) من بنك من البيانات غير القابلة للتغيير، عادةً ما يُدمج، ويتم توفير هذا الرمز بشكل آمن بقيمة عشوائية مشفّرة أثناء عملية إنتاج الشرائح. عندما تقرأ ذاكرة ROM هذا السر، يتم إيقاف أي وصول إضافي إلى وحدة تخزين البيانات القابلة للإزالة باستخدام آلية قفل أجهزة تعتمد على المورّد، مثل قفل. لا يمكن استعادة الوصول إلى النظام الفريد للجهاز حتى عملية التمهيد التالية.
يستخدم ذاكرة القراءة فقط (UDS) كإدخال لدالة اشتقاق المفاتيح (KDF) لإنشاء زوج المفاتيح غير المتماثل الدائم الذي يحدد هذا الجهاز بالتحديد. يقوم برنامج ROM بتحميل وقياس المرحلة التالية من البرامج الثابتة في تسلسل التمهيد، مع تحديد بيانات وصفية إضافية حول البيئة الخاصة بعملية التشغيل المحدّدة، مثل تفعيل "التشغيل الآمن". يعالج ROM القياس والتكوين ووحدة النظام العالمي (UDS) باستخدام KDF لاشتقاق السر للمرحلة التالية للتحميل. ويُشار إلى هذا السر باسم معرّف جهاز مركّب (CDI).
ثم تتكرر العملية. يعمل مفتاح التحكم في البيانات (CDI) كعنصر أمان بيانات في المرحلة التالية، وتستخرج هذه المرحلة مفتاحَي تشفير، ويتم إدخال مفتاح التحكم في البيانات (CDI) في دالة إنشاء مفتاح (KDF) مع تجزئة الصورة التالية التي سيتم تحميلها لإنشاء قيمة CDI أخرى مشتقة.
يستخدم البرنامج الثابت المحمَّل مفتاحَي التشفير اللذين تم إنشاؤهما لتوقيع شهادات CBOR Object Signing and Encryption (COSE) Sign1. تُوقّع كل مرحلة شهادة على المرحلة التالية التي سيتم تحميلها. تتضمّن هذه الشهادة معلومات، مثل قياس تلك المرحلة، ووضع التشغيل، والمفتاح العام لبرنامج CDI لهذه المرحلة، والبيانات الوصفية الأخرى المرتبطة بها.
الشكل 1: عملية اشتقاق DICE المبسّطة
تساعد هذه العملية في ضمان أنّ أي تغيير في صورة البرامج الثابتة المحمَّلة يؤدي إلى تغيير كلّ من قيمة CDI الخاصة بها وقيم CDI لجميع المراحل اللاحقة. وهذا يعني أنّ كل مجموعة من البرامج الثابتة المثبَّتة تُنشئ هويات فريدة ومفاتيح مرتبطة بها. بالإضافة إلى ذلك، يتم التوقيع بطريقة تضمن قياس كل مرحلة واعتمادها من خلال المرحلة السابقة، ما يمنع أي مرحلة من التحايل على القياس من خلال تزوير شهادتها الخاصة. وهذا يعني أنه ما دامت ذاكرة ROM غير مخترقة، يمكن تصحيح الوضع الأمني للجهاز والتحقق منه عن بُعد من خارج الجهاز.