ملف SDV لـ DICE

ملف تعريف 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 وفقًا لبرنامج &quot;التحقّق من صحة التمهيد&quot; في 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 كدالة تجزئة.