لمنع تشغيل حِزم بيانات عشوائية داخل جهاز افتراضي شخصي، يستخدم إطار عمل تكنولوجيات المحاكاة الافتراضية في Android (AVF) منهجًا للأمان على عدة طبقات تضيف كل طبقة إجراءات تنفيذ إضافية. في ما يلي قائمة بطبقات أمان AVF:
يضمن نظام التشغيل Android أنّه لا يُسمح إلا للتطبيقات التي تمتلك أذونات تشغيل الأجهزة الافتراضية بإنشاء الأجهزة الافتراضية أو فحصها.
أداة تحميل البرامج: تضمن أداة تحميل البرامج عدم السماح بتشغيل سوى صور نظام التشغيل الظاهري التي وقّعت عليها Google أو مورّدو الأجهزة، كما تلتزم بالإجراءات المتعلقة بميزة Android Verified Boot. تشير هذه البنية إلى أنّ التطبيقات التي تعمل على تشغيل آلات افتراضية للبرامج (pVM) لا يمكنها تجميع ملفاتها الأساسية.
توفّر pVM دفاعًا مكثّفًا، مثل SELinux، للحمولات التي يتم تشغيلها في pVM. لا تسمح استراتيجية الدفاع المتعدّد بربط البيانات على أنّها ملف قابل للتنفيذ (
neverallow execmem
) وتحرص على أن يسري W^X على جميع أنواع الملفات.
نموذج الأمان
تشكّل السرية والسلامة ومدى التوفّر (مثلث CIA) نموذجًا مصمّمًا لتوجيه سياسات أمان المعلومات:
- السرية هي مجموعة من القواعد التي تحدّ من الوصول إلى المعلومات.
- السلامة هي ضمان أنّ المعلومات جديرة بالثقة ودقيقة.
- مدى التوفّر هو ضمان الوصول الموثوق به إلى المعلومات من قِبل الكيانات المعتمَدة.
السرية والنزاهة
تنشأ السرية من خصائص عزل الذاكرة التي يفرضها مثبّت التشغيل pKVM. يتتبّع pKVM ملكية الذاكرة لصفحات الذاكرة الفعلية الفردية وأي طلبات من المالكين لمشاركة الصفحات. يضمن pKVM أنّه لا يمكن إلا لأجهزة افتراضية مزوّدة بنظام التشغيل (المضيف والضيف) المُسمَح لها أن يتم ربط الصفحة المحدّدة في جداول الصفحات من المرحلة 2 التي يتحكّم فيها مثبّت التشغيل. تحافظ هذه البنية على أن تظل محتويات الذاكرة التي يملكها جهاز افتراضي شخصي خاصة ما لم يشاركها المالك صراحةً مع جهاز افتراضي شخصي آخر.
تسري القيود المتعلقة بالحفاظ على السرية أيضًا على أي كيانات في النظام تُجري عمليات وصول إلى الذاكرة نيابةً عن آلات افتراضية مخصّصة، وهي الأجهزة المزوّدة بإمكانية الوصول المباشر إلى الذاكرة والخدمات التي تعمل في طبقات أكثر امتيازًا. على مورّدي وحدات النظام على الرقاقة (SoC) استيفاء مجموعة جديدة من المتطلبات قبل أن يتمكنوا من إتاحة تقنية pKVM. وفي حال عدم توفّر هذه الشروط، لا يمكن الحفاظ على السرية.
تنطبق السلامة على البيانات في الذاكرة والعمليات الحسابية. لا يمكن لأجهزة افتراضية الشخصية إجراء ما يلي:
- تعديل ذكريات بعضهم البعض بدون موافقة
- التأثير في حالة وحدة المعالجة المركزية (CPU) الخاصة بكل منهما
يفرض نظام التشغيل الظاهري هذه المتطلبات. ومع ذلك، تظهر أيضًا مشاكل متعلقة بسلامة البيانات عند تخزين البيانات الافتراضية عندما يجب تطبيق حلول أخرى، مثل dm-verity أو AuthFS.
لا تختلف هذه المبادئ عن عزل العمليات الذي يوفّره نظام التشغيل Linux، حيث يتم التحكّم في الوصول إلى صفحات الذاكرة باستخدام جداول الصفحات من المرحلة 1 وعمليات تبديل سياق ملف التمهيد (kernel) بين العمليات. ومع ذلك، فإنّ جزء EL2 من pKVM الذي يفرض هذه السمات يملك مساحة هجوم أقل بثلاثة أوامر من حيث الحجم مقارنةً بنواة Linux بالكامل (10 آلاف سطر برمجي تقريبًا مقابل 20 مليون سطر برمجي)، وبالتالي يقدّم ضمانًا أقوى لحالات الاستخدام التي تكون حساسة جدًا بحيث لا يمكن الاعتماد على عزل العمليات.
نظرًا لحجمه، يمكن إثبات صحة pKVM بشكل رسمي. نحن ندعم بشكلٍ نشط الأبحاث الأكاديمية التي تهدف إلى إثبات هذه الخصائص رسميًا في ملف pKVM الثنائي الفعلي.
يتناول الجزء المتبقّي من هذه الصفحة السرية والتكامل الضمانات التي يوفّرها كل مكوّن في وحدة تحكّم في شاشة البطاقة الشخصية (pKVM).
برنامج Hypervisor (مراقب الأجهزة الظاهرية)
pKVM هو برنامج إدارة خادم افتراضي يستند إلى KVM، ويعزل أنظمة التشغيل pVM وAndroid في بيئات تنفيذ غير موثوق بها. تظل هذه السمات سارية في حال اختراق أي جهاز افتراضي شخصي، بما في ذلك المضيف. يجب أن توفّر أنظمة التشغيل الافتراضية البديلة التي تتوافق مع AVF خصائص مشابهة.
لا يمكن لمحطة عمل افتراضية الوصول إلى صفحة تابعة لكيان آخر، مثل محطة عمل افتراضية أو جهاز افتراضي، ما لم يشاركها مالك الصفحة صراحةً. تشمل هذه القاعدة مضيف pVM وتنطبق على كلّ من عمليات الوصول إلى وحدة المعالجة المركزية وDMA.
قبل إعادة صفحة يستخدمها جهاز افتراضي شخصي إلى المضيف، مثلاً عند إزالة الجهاز الافتراضي الشخصي، تتم محو البيانات من الصفحة.
يتم محو ذاكرة جميع الأجهزة الافتراضية وبرامجها الثابتة من عملية تشغيل جهاز واحدة قبل تشغيل برنامج تشغيل نظام التشغيل في عملية تشغيل الجهاز اللاحقة.
عند إرفاق أداة تصحيح أخطاء الأجهزة، مثل SJTAG، لا يمكن لجهاز pVM الوصول إلى مفاتيحه التي تم إنشاؤها سابقًا.
لا يتم تشغيل البرامج الثابتة لنظام التشغيل pVM إذا تعذّر عليه التحقّق من الصورة الأولية.
لا يتم تشغيل البرامج الثابتة لنظام التشغيل pVM في حال اختراق سلامة
instance.img
.لا يمكن أن تحصل سوى تلك النسخة المحدّدة على سلسلة شهادة DICE ومعرّفات الأجهزة المركبة (CDIs) المقدَّمة إلى إحدى نُسخ جهاز افتراضي (VM).
نظام التشغيل الضيف
Microdroid هو مثال على نظام التشغيل الذي يعمل ضمن جهاز افتراضي شخصي. يتألف Microdroid من أداة تحميل تمهيدية تستند إلى U-boot وGKI ومجموعة فرعية من مساحة المستخدم في Android وبرنامج لإطلاق الحمولة. وتبقى هذه السمات سارية في حال اختراق أي جهاز افتراضي شخصي، بما في ذلك الجهاز المضيف. من المفترض أن توفّر أنظمة التشغيل البديلة التي تعمل في جهاز افتراضي خصائص مشابهة.
لن يتم تشغيل Microdroid إذا تعذّر إثبات صحة
boot.img
أوsuper.img
أوvbmeta.img
أوvbmeta\_system.img
.لن يتم تشغيل Microdroid في حال تعذّر إثبات صحة حزمة APK.
لن يتم تشغيل نسخة Microdroid نفسها حتى إذا تم تحديث حزمة APK.
لن يتم تشغيل Microdroid إذا تعذّر إثبات ملكية أي من حِزم APEX.
لن يتم تشغيل Microdroid (أو سيتم تشغيله بحالة أولية نظيفة) إذا تم تعديل
instance.img
خارج جهاز pVM الضيف.يقدّم Microdroid شهادة اعتماد لسلسلة التمهيد.
يؤدي أي تعديل (غير موقَّع) على صور القرص التي تتم مشاركتها مع جهاز التشغيل الظاهري للضيف إلى حدوث خطأ في الإدخال/الإخراج من جانب جهاز التشغيل الظاهري.
لا يمكن أن تحصل سوى تلك المثيل المحدّد على سلسلة شهادة DICE وبيانات اعتماد المشتركين في خدمات المحتوى (CDIs) المقدَّمة إلى مثيل جهاز افتراضي (VM).
تكون عمليات الكتابة في وحدة تخزين مشفّرة سرية، ولكن لا تتوفر حماية لعمليات التراجع على مستوى دقة كتلة التشفير. بالإضافة إلى ذلك، يؤدي التدخل الخارجي العشوائي الآخر في كتلة البيانات إلى ظهور تلك الكتلة كبيانات غير صالحة في Microdroid، بدلاً من رصدها صراحةً كخطأ في الإدخال/الإخراج.
Android
في ما يلي السمات التي يحافظ عليها Android كمضيف، ولكن لا تنطبق في حال اختراق المضيف:
لا يمكن لوحدة افتراضية ضيفة التفاعل مباشرةً مع وحدات افتراضية ضيفة أخرى (مثل إجراء
vsock
اتصال).لا يمكن إلا لـ
VirtualizationService
في جهاز الكمبيوتر الشخصي الظاهري المضيف إنشاء قناة اتصال بجهاز كمبيوتر شخصي ظاهري.لا يمكن للتطبيقات التي تم توقيعها باستخدام مفتاح النظام الأساسي إلا طلب الإذن بإنشاء الأجهزة الافتراضية المحمولة أو امتلاكها أو التفاعل معها.
لا تتم إعادة استخدام المعرّف، الذي يُعرف باسم معرّف السياق (CID)، المستخدَم في إعداد اتصالات
vsock
بين المضيف ووحدة المعالجة الافتراضية (VM) عندما تكون وحدة المعالجة الافتراضية للمضيف قيد التشغيل. على سبيل المثال، لا يمكنك استبدال جهاز افتراضي يعمل بجهاز آخر.
مدى التوفّر
في سياق آلات افتراضية مخصّصة، يشير مدى التوفّر إلى تخصيص المضيف موارد كافية للضيوف حتى يتمكّنوا من تنفيذ المهام التي تم تصميمها للقيام بها.
تشمل مسؤوليات المضيف جدولة وحدات المعالجة المركزية الافتراضية لنظام التشغيل pVM. على عكس أنظمة التشغيل الافتراضية من النوع 1 التقليدية (مثل Xen)، تُجري أداة KVM قرارًا صريحًا بشأن التصميم يقضي بتفويض جدولة أعباء العمل إلى نواة المضيف. نظرًا لحجم أدوات جدولة المهام الحالية و تعقيدها، يقلل قرار التصميم هذا بشكل كبير من حجم قاعدة الحوسبة الموثوق بها (TCB) ويمكّن المضيف من اتّخاذ قرارات جدولة أكثر استنارة لتحسين الأداء. ومع ذلك، يمكن للمضيف الضار اختيار عدم جدولة ضيف مطلقًا.
وبالمثل، تفوض pKVM أيضًا معالجة المقاطعات المادية إلى نواة المضيف لتقليل تعقيد برنامج التشغيل الظاهري وترك المضيف مسؤولاً عن الجدولة. يتم بذل الجهد لضمان أنّ إعادة توجيه عمليات مقاطعة الضيف لا تؤدي إلا إلى حجب الخدمة (عدد قليل جدًا أو كثير جدًا أو عمليات مقاطعة يتم توجيهها بشكل خاطئ).
أخيرًا، تتحمّل عملية "مراقبة الجهاز الافتراضي" (VMM) في المضيف مسؤولية تخصيص الذاكرة وتوفير الأجهزة الافتراضية، مثل بطاقة الشبكة. يمكن لمدير عمليات إدارة الأجهزة الافتراضية الضار حجب الموارد عن الجهاز الضيف.
على الرغم من أنّ بروتوكول pKVM لا يوفر إمكانية الوصول إلى أجهزة الضيف، يحمي التصميم إمكانية وصول المضيف إلى أجهزة الضيف من الأجهزة الضارّة لأنّه يمكن للمضيف في أي وقت استباق جهاز الضيف أو إنهاء عمله واسترداد موارده.
التمهيد الآمن
تكون البيانات مرتبطة بنُسخ من جهاز افتراضي شخصي، ويضمن التشغيل الآمن إمكانية التحكّم في الوصول إلى data بيانات النسخة. يؤدي بدء تشغيل المثيل لأول مرة إلى إعداده من خلال إنشاء ملح سري لوحدة pVM بشكل عشوائي واستخراج التفاصيل، مثل المفاتيح العامة لإثبات الهوية والتشفير من الصور المحمَّلة. تُستخدَم هذه المعلومات للتحقّق من عمليات التشغيل اللاحقة لوحدة pVM وضمان عدم إتاحة سرّات الوحدة إلا للصور التي تجتاز عملية التحقّق. تحدث هذه العملية في كل مرحلة تحميل ضمن pVM: البرامج الثابتة لنظام التشغيل pVM وABL لنظام التشغيل pVM وMicrodroid وما إلى ذلك.
توفّر DICE لكل مرحلة تحميل مفتاحَي إثبات الهوية، ويكون الجزء العلني منهما معتمَدًا في شهادة DICE لهذه المرحلة. يمكن أن يتغيّر مفتاح التشفير هذا بين عمليات بدء التشغيل، لذا يتم أيضًا اشتقاق مفتاح تشفير ختم ثابت لجلسة الجهاز الافتراضي عند إعادة التشغيل، وبالتالي يكون مناسبًا لحماية الحالة الثابتة. إنّ سرّ الإغلاق ذا قيمة عالية للجهاز الظاهري، لذا يجب عدم استخدامه مباشرةً. بدلاً من ذلك، يجب اشتقاق مفاتيح الإغلاق من مفتاح الإغلاق ويجب إتلاف مفتاح الإغلاق في أقرب وقت ممكن.
تُرسِل كل مرحلة عنصر CBOR مُشفَّرًا بشكلٍ حتمي إلى المرحلة التالية. يحتوي هذا العنصر على الأسرار وسلسلة شهادات DICE التي تحتوي على معلومات الحالة المتراكمة، مثل ما إذا تم تحميل المرحلة الأخيرة بأمان.
الأجهزة غير المقفلة
عند فتح قفل جهاز باستخدام fastboot oem unlock
، يتم محو بيانات المستخدم.
وتحمي هذه العملية بيانات المستخدمين من الوصول غير المصرّح به. يتم أيضًا إلغاء صلاحية البيانات الخاصة
بجهاز افتراضي شخصي عند فتح قفل الجهاز.
بعد فتح قفل الجهاز، يمكن لمالك الجهاز إعادة فلاش الأقسام التي يتم حمايتها عادةً من خلال ميزة "التمهيد المعتمد"، بما في ذلك الأقسام التي تحتوي على تنفيذ pKVM. لذلك، لن يتم الوثوق ببرنامج pKVM على جهاز تم فتح قفله للحفاظ على نموذج الأمان.
يمكن للجهات البعيدة رصد هذه الحالة التي يُحتمل أن تكون غير آمنة من خلال فحص حالة التشغيل التي تم التحقّق منها في شهادة مصادقة المفتاح.