يحتوي هذا المستند على حالات الاستخدام الشائعة لـ AVF.
تجميع معزول
كجيب آمن للبرامج ، يوفر الجهاز الظاهري المحمي بيئة آمنة لتجميع التعليمات البرمجية الحساسة للأمان. تسمح هذه البيئة بنقل تجميع bootclasspath
وخادم النظام JARs (الذي تم تشغيله بواسطة تحديث APEX) من التمهيد المبكر إلى ما قبل إعادة التشغيل ، ويقلل بشكل كبير من وقت تمهيد التحديث التالي لـ APEX.
يتم التنفيذ في com.android.compos
APEX. هذا المكون اختياري ويمكن تضمينه باستخدام makefile .
الهدف الأمني هو تجميع المدخلات التي تم التحقق منها بصدق وإنتاج المخرجات بمعزل عن غيرها ؛ لا يمكن لنظام Android كعميل غير موثوق به تغيير مخرجات الترجمة بأي طريقة بخلاف التسبب في فشلها (عندما يعود Android إلى تجميع وقت التمهيد).
تنشئ خدمة الترجمة في الجهاز الظاهري توقيعًا فقط إذا لم يكن هناك خطأ أثناء التجميع بالكامل. يمكن لنظام Android استرداد المفتاح العام من الجهاز الظاهري للتحقق من صحة التوقيع.
يتم إنشاء مفتاح الجهاز الظاهري من ملف تعريف DICE الخاص بـ VM ، والذي تم تحديده بواسطة APEXes وملفات APK المثبتة على الجهاز الظاهري ، بالإضافة إلى معلمات VM الأخرى ، مثل قابلية التصحيح.
لتحديد ما إذا كان المفتاح العام ليس من جهاز افتراضي غير متوقع ، يقوم Android بتشغيل الجهاز الظاهري لتحديد ما إذا كان المفتاح صحيحًا أم لا. يتم تمهيد VM في وقت مبكر من التمهيد بعد كل تحديث APEX.
مع التمهيد المتحقق من جهاز VM المحمي ، تقوم خدمة التجميع بتشغيل الكود الذي تم التحقق منه فقط. لذلك ، يمكن أن تحدد الشفرة قبول المدخلات التي تفي بشروط معينة فقط ، على سبيل المثال ، قبول ملف إدخال فقط حيث يتم تحديد اسمه وملخص fs-verity
في قائمة السماح.
أي واجهات برمجة تطبيقات مكشوفة من الجهاز الظاهري هي أسطح هجومية. يُفترض أن تكون جميع ملفات الإدخال والمعلمات من عميل غير موثوق به ، ويجب التحقق منها وفحصها قبل المعالجة.
يتم التحقق من سلامة ملف الإدخال / الإخراج بواسطة VM ، مع الملفات المخزنة على Android كخادم ملفات غير موثوق به ، على النحو التالي:
- يجب التحقق من محتوى ملف الإدخال قبل استخدامه باستخدام خوارزمية
fs-verity
. لكي يصبح ملف الإدخال متاحًا في الجهاز الظاهري ، يجب توفير تجزئة الجذر الخاصة به في حاوية (APK) تساهم في ملف تعريف DICE الخاص بـ VM. باستخدام تجزئة الجذر الموثوقة ، لا يمكن للمهاجم التلاعب بالإدخال دون أن يتم اكتشافه. - يجب الحفاظ على سلامة ملف الإخراج في VM. حتى إذا تم تخزين ملف الإخراج على Android ، أثناء الإنشاء ، يتم الحفاظ على التكامل بنفس تنسيق شجرة
fs-verity
ولكن يمكن تحديثه ديناميكيًا. يمكن تحديد ملف الإخراج النهائي باستخدام تجزئة الجذر المعزولة في الجهاز الظاهري. تحمي الخدمة في الجهاز الظاهري ملفات الإخراج بالتوقيع.