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

يحتوي هذا المستند على حالات الاستخدام الشائعة لميزة AVF.

عملية تجميع معزولة

بصفتها منطقة آمنة من البرامج، توفّر آلة افتراضية محمية بيئة آمنة ل compiling رمز حساس للأمان. تسمح هذه البيئة بنقل عملية تجميع حِزم 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 نفسه، ولكن يمكن تعديله ديناميكيًا. يمكن تحديد ملف الإخراج النهائي باستخدام تجزئة الجذر، التي يتم عزلها في الجهاز الظاهري. تحمي الخدمة في الجهاز الافتراضي (VM)ملفّات الإخراج باستخدام التوقيع.