حالات الاستخدام

يتضمّن هذا المستند حالات استخدام شائعة لملفات AVF.

فيديو مجمّع معزول

يكون الجهاز الافتراضي (VM) المحمي بمثابة حصون محمي من البرامج، وهو يوفّر بيئة آمنة لتجميع الرموز البرمجية الحسّاسة المتعلقة بالأمان. تسمح هذه البيئة بنقل عملية تجميع حِزم JAR الخاصة بخادم النظام وbootclasspath (التي يتم تشغيلها من خلال تحديث APEX) من مرحلة التمهيد المبكر إلى مرحلة ما قبل إعادة التشغيل، كما تقلّل بشكل كبير من وقت التمهيد بعد تحديث APEX.

يتم التنفيذ في com.android.compos APEX. هذا المكوّن اختياري ويمكن تضمينه باستخدام ملف makefile.

فيديو مجمّع معزول

الشكل 1: تجميع ملفات JAR في تحديثات Mainline

يتمثل هدف الأمان في تجميع الإدخال الذي تم التحقّق منه بصدق وإنشاء الإخراج بشكل منفصل. لا يمكن لنظام التشغيل Android، بصفته وكيلاً غير موثوق به، تغيير ناتج compilation بأي طريقة أخرى غير التسبب في حدوث خطأ (عندما يعود Android إلى compilation وقت التمهيد).

لا تنشئ خدمة الترجمة في الجهاز الظاهري توقيعًا إلا في حال عدم حدوث خطأ أثناء عملية الترجمة بأكملها. يمكن لنظام التشغيل Android استرداد المفتاح العام من VM للتحقق من التوقيع.

يتم إنشاء مفتاح الجهاز الظاهري من ملف تعريف DICE الخاص بالجهاز الظاهري، والذي يتم تحديده من خلال حِزم APEX وملفات APK المثبَّتة على الجهاز الظاهري، بالإضافة إلى مَعلمات الجهاز الظاهري الأخرى، مثل إمكانية تصحيح الأخطاء.

لتحديد ما إذا كان المفتاح العام ليس من جهاز افتراضي غير متوقَّع، يشغِّل Android الجهاز الافتراضي لتحديد ما إذا كان المفتاح صحيحًا. يتم تشغيل الجهاز الظاهري في مرحلة التشغيل المبكر بعد كل تحديث في APEX.

باستخدام ميزة "التمهيد التحقق منه" في "الأجهزة الافتراضية المحمية"، لا تعمل خدمة الترجمة إلا على رمز تم التحقّق منه. وبالتالي، يمكن للرمز تحديد قبول الإدخالات التي تستوفي شروطًا معيّنة فقط، على سبيل المثال، قبول ملف إدخال فقط عندما يكون اسمه وخلاصة fs-verity محدّدَين في قائمة مسموح بها.

إنّ أي واجهات برمجة تطبيقات معروضة من جهاز افتراضي هي أجزاء معروضة للهجوم. يُفترض أن تكون جميع ملفات الإدخال والملفّات المرجعية من عميل غير موثوق به، ويجب التحقّق منها والتدقيق فيها قبل معالجتها.

تتحقّق آلة افتراضية من سلامة ملفات الإدخال/الإخراج، مع تخزين الملفات على Android كخادم ملفات غير موثوق به، على النحو التالي:

  • يجب التحقّق من محتوى ملف الإدخال قبل استخدامه باستخدام خوارزمية fs-verity. لكي يصبح ملف الإدخال متاحًا في الجهاز الظاهري، يجب تقديم ملف التجزئة الأساسي له في حاوية (APK) تساهم في ملف تعريف DICE للجهاز الظاهري. باستخدام تجزئة الجذر الموثوق بها، لا يمكن للمهاجم العبث بالمدخلات بدون أن يتم رصده.
  • يجب الحفاظ على سلامة ملف الإخراج في الجهاز الافتراضي. حتى إذا كان ملف الإخراج محفوظًا على جهاز Android، يتم الحفاظ على سلامة الملف أثناء عملية الإنشاء باستخدام تنسيق شجرة fs-verity نفسه، ولكن يمكن تعديله ديناميكيًا. يمكن تحديد ملف الإخراج النهائي باستخدام تجزئة الجذر، والتي يتم عزلها في الجهاز الافتراضي. تحمي الخدمة في الجهاز الافتراضي ملفات الإخراج من خلال التوقيع.