موارد استفاده کنید

این صفحه شامل موارد استفاده رایج برای AVF است.

تالیف جدا شده

به عنوان یک محیط امن نرم افزاری، یک ماشین مجازی محافظت شده (VM) یک محیط امن برای کامپایل کدهای حساس به امنیت فراهم می کند. این محیط اجازه می دهد تا کامپایل bootclasspath و JAR های سرور سیستم (که توسط یک به روز رسانی APEX آغاز می شود) از راه اندازی اولیه به قبل از راه اندازی مجدد منتقل شود و زمان بوت به روز رسانی پس از APEX را به میزان قابل توجهی کاهش می دهد.

پیاده سازی در com.android.compos APEX است. این مؤلفه اختیاری است و می تواند با استفاده از یک فایل ایجاد شود.

تالیف جدا شده

شکل 1. کامپایل JAR ها در به روز رسانی های خط اصلی. کامپایل JAR ها در به روز رسانی های Mainline

هدف امنیتی کامپایل صحیح ورودی تایید شده و تولید خروجی به صورت مجزا است. اندروید به‌عنوان یک کلاینت نامعتبر، نمی‌تواند خروجی کامپایل را به هیچ وجه تغییر دهد جز اینکه باعث از کار افتادن آن شود (زمانی که 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 از فایل های خروجی با امضا محافظت می کند.

محیط توسعه لینوکس

اندروید به طور سنتی تنها سیستم عامل اصلی بوده است که به کاربران اجازه نمی دهد برنامه های خود را روی پلتفرم توسعه دهند. با معرفی محیط توسعه لینوکس، هدف ما ارائه یک محیط توسعه مبتنی بر لینوکس برای کاربران اندرویدی که توسعه دهنده هستند، هستیم. در آینده، ما قصد داریم تلاش خود را گسترش دهیم تا شرکایمان بتوانند موارد استفاده نوآورانه VM مانند اجرای برنامه های رابط کاربری گرافیکی و حتی بازی ها را اجرا کنند.

محیط توسعه لینوکس در دستگاه‌های منتخب موجود است و در یک ماشین مجازی غیر محافظت‌شده اجرا می‌شود.

مورد استفاده از محیط توسعه لینوکس

شکل 2. مورد استفاده از محیط توسعه لینوکس.

اجزای سطح بالای ماشین مجازی لینوکس به شرح زیر است:

  • برنامه ترمینال: یک برنامه اندرویدی که یک رابط ترمینال ارائه می کند. از یک WebView برای اتصال به یک سرویس وب در حال اجرا در VM برای تعامل استفاده می کند. این برنامه به طور پیش فرض غیرفعال است. آن را در تنظیمات برنامه نویس فعال کنید.
  • Android Virtualization Framework (AVF): زیرسیستم موجود اندروید برای ایجاد و مدیریت VM. برای پشتیبانی از تصاویر سیستم عامل سفارشی برای این ویژگی به حداقل تغییر نیاز دارد.
  • ماشین مجازی: ماشین مجازی که AVF تولید می کند. این سرویس ترمینال را میزبانی می کند و AVF آن را به طور خاص برای عملکرد برنامه ترمینال ایجاد می کند.
  • تصویر سیستم عامل: یک تصویر سیستم عامل مبتنی بر دبیان کمی تغییر یافته از دبیان بالادست. برنامه ترمینال این تصویر را از یک سرور خارجی Google دانلود می کند. این به عنوان پایه ای برای عملکرد VM عمل می کند.
  • Guest Agent: نرم افزار جدید در VM. وضعیت سیستم عامل را به AVF گزارش می کند و کنترل ماشین مجازی را فراهم می کند.
  • ttyd : نرم افزار منبع باز در حال اجرا در VM که شبیه سازی ترمینال را از طریق HTTP پیاده سازی می کند. WebView برنامه ترمینال به آن متصل می شود.
  • Tethering Manager: یک زیرسیستم موجود اندروید. با اتصال VM به دستگاه مجهز به اندروید، دسترسی شبکه به ماشین مجازی را فراهم می کند.