این سند حاوی موارد استفاده رایج برای AVF است.
تالیف جدا شده
به عنوان یک محیط امن نرم افزاری، یک VM محافظت شده یک محیط امن برای کامپایل کدهای حساس به امنیت فراهم می کند. این محیط اجازه می دهد تا کامپایل bootclasspath
و JAR های سرور سیستم (که توسط یک به روز رسانی APEX آغاز می شود) از راه اندازی اولیه به قبل از راه اندازی مجدد منتقل شود و زمان بوت به روز رسانی پس از APEX را به میزان قابل توجهی کاهش می دهد.
پیاده سازی در com.android.compos
APEX است. این مؤلفه اختیاری است و می تواند با استفاده از یک فایل ایجاد شود.
هدف امنیتی کامپایل صحیح ورودی تایید شده و تولید خروجی به صورت مجزا است. اندروید بهعنوان یک کلاینت نامعتبر، نمیتواند خروجی کامپایل را به هیچ وجه تغییر دهد جز اینکه باعث از کار افتادن آن شود (زمانی که Android به زمان کامپایل کردن زمان بوت باز میگردد).
سرویس کامپایل در VM تنها در صورتی امضا تولید می کند که در طول کل کامپایل خطایی وجود نداشته باشد. اندروید می تواند کلید عمومی را از VM برای تایید امضا بازیابی کند.
کلید VM از نمایه DICE ماشین مجازی تولید میشود که توسط APEXها و APKهای نصب شده روی ماشین مجازی، به اضافه سایر پارامترهای VM، مانند اشکالزدایی، تعریف شده است.
برای تعیین اینکه آیا کلید عمومی از یک ماشین مجازی غیرمنتظره نیست، اندروید ماشین مجازی را راهاندازی میکند تا تشخیص دهد که آیا کلید صحیح است یا خیر. VM در اوایل بوت شدن پس از هر به روز رسانی APEX بوت می شود.
با Protected VM's Verified Boot، سرویس کامپایل فقط کد تایید شده را اجرا می کند. بنابراین کد می تواند تعیین کند که فقط ورودی هایی را بپذیرد که شرایط خاصی را برآورده کنند، برای مثال، یک فایل ورودی را فقط در جایی بپذیرد که نام آن و خلاصه fs-verity
در یک لیست مجاز تعریف شده باشد.
هر API در معرض از VM سطوح حمله هستند. فرض میشود که تمام فایلهای ورودی و پارامترها از یک کلاینت غیرقابل اعتماد هستند و باید قبل از پردازش تأیید و بررسی شوند.
یکپارچگی فایل ورودی/خروجی توسط VM تأیید میشود و فایلهایی که در Android بهعنوان یک سرور فایل نامعتبر ذخیره میشوند، به شرح زیر است:
- محتوای یک فایل ورودی باید قبل از استفاده با استفاده از الگوریتم
fs-verity
تأیید شود. برای اینکه یک فایل ورودی در VM در دسترس قرار گیرد، هش ریشه آن باید در یک ظرف (APK) ارائه شود که به نمایه DICE ماشین مجازی کمک می کند. با هش ریشه قابل اعتماد، مهاجم نمی تواند بدون شناسایی شدن، ورودی را دستکاری کند. - یکپارچگی فایل خروجی باید در VM حفظ شود. حتی اگر یک فایل خروجی در اندروید ذخیره شود، در طول تولید، یکپارچگی با همان فرمت درختی
fs-verity
حفظ میشود اما میتوان آن را بهصورت پویا بهروزرسانی کرد. فایل خروجی نهایی را می توان با هش ریشه شناسایی کرد که در VM ایزوله شده است. سرویس در VM از فایل های خروجی با امضا محافظت می کند.