ملف تعريف SDV لمحرك إنشاء معرّفات الأجهزة (DICE) هو امتداد لملف تعريف Android الخاص بـ DICE. في SDV، تستخدم الآلة الافتراضية سلسلتَي DICE متوازيتَين:
- سلسلة Secure World DICE
- سلسلة SDV DICE على Android
تكون الحقول التالية من وصف الإعداد الخاص بملف Android الشخصي لـ DICE ذات صلة بكل سلسلة من السلاسل التالية:
| الاسم | المفتاح | النوع | الوصف |
|---|---|---|---|
| اسم المكوّن <0x0A | -70002
|
tstr
|
يُنصح باستخدامها في كل طبقة من طبقات CDI. يحدّد اسم المكوّن المرحلة بشكل لا لبس فيه بين جميع سلاسل أجهزة DICE التي تشغّل أجهزة Android SDV الافتراضية على مركبة أو منصة مركبة. |
| إصدار الأمان <0x0A | -70005
|
uint
|
مطلوبة في كل مرحلة من مراحل CDI تتيح هذه السياسة تحديد سياسة DICE تمنع إصدارات الأجهزة الافتراضية غير الآمنة عن بُعد من الانضمام إلى شبكة SDV الآمنة. |
| اسم مثيل المكوّن <0x | -70007
|
tstr
|
مطلوب في أول طبقة CDI خاصة بالجهاز الظاهري. على سبيل المثال، بعد مراقب الأجهزة الافتراضية، بالنسبة إلى سلسلة DICE الخاصة بـ Android SDV. اسم مثيل بيئة التطوير الآمنة (SDV). إذا كانت طبقات CDI متعددة تحتوي على اسم مثيل المكوّن، يجب أن تحتوي كل طبقة على القيمة نفسها. |
سلسلة Secure World DICE
سلسلة Secure World DICE هي نفسها التي يتلقّاها خادم توفير المفاتيح عن بُعد
(RKP) في Android من أجهزة Android. تتيح
IRemotelyProvisionedComponent طبقة تجريد الأجهزة (HAL)generateCertificateRequestV2()
سلسلة DICE هذه لنظام التشغيل Android.
يعرض هذا الجدول نموذجًا لسلسلة DICE في "العالم الآمن":
| مرحلة التشغيل | طبقة DICE CDI | جهة الإصدار |
|---|---|---|
| برنامج الإقلاع الأساسي | CDI[0] |
UDS |
| برنامج الإقلاع الثانوي | CDI[1] |
برنامج الإقلاع الأساسي |
| تشغيل بيئة التنفيذ الموثوقة (TEE) | CDI[2] |
برنامج الإقلاع الثانوي |
| KeyMint TA boot | CDI[3] (رمز ورقة الشجر) |
TEE |
لتنفيذ تطبيق KeyMint الموثوق (TA)، استخدِم أحد الخيارات التالية:
- مثيل واحد من KeyMint لجميع الأجهزة الافتراضية (VM) الخاصة بالمركبات المحدّدة البرامج: يجب تحديد معرّف CDI واحد لجميع الأجهزة الافتراضية.
أو
- مثيل KeyMint واحد لكل جهاز افتراضي SDV: يجب تحديد قيمة CDI مختلفة لكل جهاز افتراضي. يجب أن تحتوي قيم CDI الفردية على اسم مثيل مكون يطابق اسم مثيل المكون الخاص بالجهاز الظاهري.
سلسلة DICE في أجهزة Android التي تتضمّن ميزة "التحقّق من صحة الجهاز"
تصدّق سلسلة DICE الخاصة بميزة "التحقّق من صحة البرامج" في Android على البرنامج الذي يتم تشغيله على مسار التشغيل الذي يؤدي من خلال برنامج Hypervisor إلى نظام التشغيل Android عالي المستوى الذي يتم تشغيله على الأجهزة الافتراضية لميزة "التحقّق من صحة البرامج".
يعرض هذا الجدول سلسلة نموذجية من عمليات التحقّق من صحة الجهاز باستخدام DICE على Android:
| مرحلة التشغيل | طبقة DICE CDI | جهة الإصدار |
|---|---|---|
| برنامج الإقلاع الأساسي | CDI[0] |
UDS |
| برنامج الإقلاع الثانوي | CDI[1] |
برنامج الإقلاع الأساسي |
| برنامج Hypervisor | CDI[2] |
برنامج الإقلاع الثانوي |
| Android HLOS | CDI[3] (رمز ورقة الشجر)
|
(برنامج تحميل Android في) Hypervisor1 |
1 يصدّق برنامج Hypervisor على برنامج إقلاع Android في الجهاز الضيف كطبقة. يصدّق برنامج إقلاع Android على نظام التشغيل Android HLOS.
شهادة HLOS CDI على Android
يوقّع برنامج الإقلاع في Android (أو مراقب الأجهزة الافتراضية إذا لم يكن هناك برنامج إقلاع في Android ولكن يوجد برنامج "عامل تحميل" في Android يحمّل الجهاز الافتراضي ضمن مراقب الأجهزة الافتراضية) على شهادة CDI لنظام التشغيل Android HLOS ويشمل نظام التشغيل Android HLOS. على سبيل المثال، يشمل ذلك جميع الرموز التي يتحقّق منها برنامج تحميل التشغيل في Android وفقًا لبرنامج "التحقّق من صحة التمهيد" في Android.
يجب أن تحتوي شهادة HLOS CDI لنظام التشغيل Android على قيم خاصة بمركبات SDV لنظام التشغيل Android التي تحدّ من الثغرات الأمنية. على سبيل المثال، منع تسرُّب الأسرار المحتمل من خلال حظر الأجهزة الافتراضية التي تتضمّن ثغرات أمنية معروفة من شبكة SDV Secure Mesh. توفّر عملية التحقّق من صحة AVB معظم هذه القيم.
يتم أيضًا تسليمها إلى KeyMint في بيئة التنفيذ الموثوقة (TEE)، حيث يتم توقيع الشهادة من خلال ورقة اعتماد الجهاز المركّب (CDI) في سلسلة SecureWorld DICE، ويتم تمريرها إلى Android في DeviceInfo لتفعيل ميزات، مثل إثبات صحة المفتاح ومعرّف الجهاز في نظام Android الأساسي.
حقول شهادة Code input وcodeHash
يغطّي ملخّص VBMeta (وهو ناتج ينفّذه برنامج إقلاع Android
لإجراء عملية التحقّق من AVB) برنامج HLOS لنظام التشغيل Android، وبالتالي،
يُستخدَم android-dice-input-values في استخلاص
أسرار CDI، ويتم إدخاله في الحقل dice-cert-fields من
شهادة CDI.
خوارزمية التجزئة الموصى بها لبرنامج AVB هي SHA-256 التي تؤدي إلى ملخّص VBMeta بطول 32 بايت. وخلافًا لملف التعريف المفتوح لبرنامج DICE، يتيح ملف تعريف Android لبرنامج DICE استخدام android-dice-hash-algos بطول 32 بايت
android-dice-input-values لعملية DICE، بالإضافة إلى وضع القيمة نفسها بطول 32 بايت كـ codeHash في شهادة DICE.
وصف الإعداد: الحقول في ملف Android الشخصي لـ DICE
بالإضافة إلى ما تم وصفه لجميع طبقات CDI، تنطبق التفاصيل التالية على حقول واصف الإعدادات من ملف Android الشخصي لـ DICE:
| الاسم | المفتاح | النوع | الوصف |
|---|---|---|---|
| إصدار المكوّن | -70003
|
int
|
إصدار نظام التشغيل من
AVB version-info-avb وهي أيضًا
مطابقة
لـ android.os.Build.VERSION.release. |
| إصدار الأمان | -70005
|
uint
|
تمثّل هذه السمة مستوى رمز تصحيح الأمان لقسم system بتنسيق YYYYMMDD. |
| علامة الجهاز الافتراضي RKP | -70006
|
null
|
يمنع برنامج RKP VM Remote Key Provisioning من إصدار شهادات لسلسلة Android SDV DICE. |
يجب أن يظهر مؤشر الجهاز الافتراضي RKP في شهادة CDI الأولى لسلسلة DICE الخاصة بخدمة Android SDV التي لا تتشارك مع سلسلة DICE الخاصة بـ Secure World. يجب أيضًا ألا يظهر في أي شهادات CDI أخرى لمنع خادم RKP (rkp-avf-support) من اعتبار سلسلة DICE صادرة من جهاز افتراضي RKP.
واصف الإعدادات: الحقول الجديدة
يجب أن يحتوي واصف الإعدادات لشهادة HLOS CDI على Android على قيم خاصة بـ SDV تتجاوز القيم التي يصفها ملف Android الشخصي لـ DICE. يحتفظ ملف تعريف SDV الخاص بـ DICE بنطاق قيمة المفتاح [-71000, -71999] لهذا الغرض. يمكنك إضافة حقول خاصة بالتنفيذ باستخدام قيم مفتاحية خارج النطاق المحجوز. القيم المحدّدة لـ SDV هي:
| الاسم | المفتاح | النوع | الوصف |
|---|---|---|---|
| حالة "التشغيل المتحقَّق منه" | -71000
|
tstr
|
إما green أو yellow أو orange
|
| build fingerprint | -71001
|
tstr
|
سلسلة يمكن لشخص عادي قراءتها وتحدّد هذا الإصدار بشكل فريد، وهي مطابقة للسلسلة ro.build.fingerprint. يحدّد مستند
تعريف التوافق مع Android، 3.2.2 مَعلمات الإصدار،
cdd-3-2-2 هذا.
يخزّن VBMeta هذا كسمة
اسمها
com.android.build.system.fingerprint |
system_ext
مستوى
رمز تصحيح الأمان |
-71002
|
uint
|
مستوى رمز تصحيح الأمان لقسم system_ext بالتنسيق YYYYMMDD |
product
مستوى
رمز تصحيح الأمان |
-71003
|
uint
|
مستوى رمز تصحيح الأمان لقسم product بالتنسيق YYYYMMDD |
vendor
مستوى
رمز تصحيح الأمان |
-71004
|
uint
|
مستوى رمز تصحيح الأمان لقسم vendor بالتنسيق YYYYMMDD |
boot
مستوى
رمز تصحيح الأمان |
-71005
|
uint
|
مستوى رمز تصحيح الأمان لقسم boot (الذي يحتوي على نواة Linux) بالتنسيق YYYYMMDD |
| وضع تشغيل SDV | -71006
|
tstr
|
locked أو unlocked. لمزيد من المعلومات، اطّلِع على حالة الشبكة المتداخلة وتوفيرها. |
اختيار قيمة إدخال الوضع في واجهة برمجة تطبيقات HLOS CDI على Android
يستخدم android-dice-mode لشهادة HLOS CDI على Android التعريف التالي:
| تم فتح قفل AVB | AVB LOCKED | |
|---|---|---|
| تم إلغاء قفل وضع تشغيل SDV | تصحيح الأخطاء | تصحيح الأخطاء |
| تم قفل وضع تشغيل SDV | لم يتم ضبطه (غير صالح) | عادي |
دالة اشتقاق المفاتيح
يجب أن تكون android-dice-kdf التي تستمد مفتاحي التشفير العام والخاص من سر CDI_Attest لنظام التشغيل Android HLOS CDI هي HKDF مع استخدام SHA512 كدالة تجزئة.