این صفحه شامل موارد استفاده رایج برای 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 از فایل های خروجی با امضا محافظت می کند.
محیط توسعه لینوکس
اندروید به طور سنتی تنها سیستم عامل اصلی بوده است که به کاربران اجازه نمی دهد برنامه های خود را روی پلتفرم توسعه دهند. با معرفی محیط توسعه لینوکس، هدف ما ارائه یک محیط توسعه مبتنی بر لینوکس برای کاربران اندرویدی که توسعه دهنده هستند، هستیم. در آینده، ما قصد داریم تلاش خود را گسترش دهیم تا شرکایمان بتوانند موارد استفاده نوآورانه VM مانند اجرای برنامه های رابط کاربری گرافیکی و حتی بازی ها را اجرا کنند.
محیط توسعه لینوکس در دستگاههای منتخب موجود است و در یک ماشین مجازی غیر محافظتشده اجرا میشود.
جریان سطح بالا به شرح زیر است:
- برای استفاده از محیط توسعه لینوکس، گزینه های توسعه دهنده را فعال کنید .
- پس از فعال کردن گزینههای توسعهدهنده، برنامه ترمینال در راهانداز خانه شما ظاهر میشود.
- برنامه ترمینال را از لانچر خانه خود راه اندازی کنید.
- در صورت نیاز، برنامه ترمینال تصویر سیستم عامل را از Play دانلود می کند.
- برنامه ترمینال از چارچوب مجازی سازی اندروید (AVF) برای ایجاد ماشین مجازی (VM) استفاده می کند.
- سپس AVF ماشین مجازی را با تصویر سیستم عامل اجرا می کند.
- ماشین مجازی سیستم عامل را از روی تصویر بوت می کند.
- پس از بوت شدن VM، WebView در برنامه ترمینال به یک وب سرویس در ماشین مجازی متصل می شود. این سرویس دسترسی به ترمینال را از طریق HTTP فراهم می کند.
- شما با وارد کردن دستورات و مشاهده خروجی در برنامه با ترمینال تعامل دارید.
اجزای سطح بالای ماشین مجازی لینوکس به شرح زیر است:
- برنامه ترمینال: یک برنامه اندرویدی که یک رابط ترمینال ارائه می کند. از یک WebView برای اتصال به یک سرویس وب در حال اجرا در VM برای تعامل استفاده می کند. این برنامه به طور پیش فرض غیرفعال است. آن را در تنظیمات برنامه نویس فعال کنید.
- Android Virtualization Framework (AVF): زیرسیستم موجود اندروید برای ایجاد و مدیریت VM. برای پشتیبانی از تصاویر سیستم عامل سفارشی برای این ویژگی به حداقل تغییر نیاز دارد.
- ماشین مجازی: ماشین مجازی که AVF تولید می کند. این سرویس ترمینال را میزبانی می کند و AVF آن را به طور خاص برای عملکرد برنامه ترمینال ایجاد می کند.
- تصویر سیستم عامل: یک تصویر سیستم عامل مبتنی بر دبیان کمی تغییر یافته از دبیان بالادست. برنامه ترمینال این تصویر را از یک سرور خارجی Google دانلود می کند. این به عنوان پایه ای برای عملکرد VM عمل می کند.
- Guest Agent: نرم افزار جدید در VM. وضعیت سیستم عامل را به AVF گزارش می کند و کنترل ماشین مجازی را فراهم می کند.
- ttyd : نرم افزار منبع باز در حال اجرا در VM که شبیه سازی ترمینال را از طریق HTTP پیاده سازی می کند. WebView برنامه ترمینال به آن متصل می شود.
- Tethering Manager: یک زیرسیستم موجود اندروید. با اتصال VM به دستگاه مجهز به اندروید، دسترسی شبکه به ماشین مجازی را فراهم می کند.
ایمنی محتوا در دستگاه
Content Safety On-Device یک راه حل ایمنی محتوا برای حفظ حریم خصوصی است که توسط تیم Content Safety On-Device ایجاد شده است. طبقهبندی ایمنی محتوا را برای محصولات مختلف Google در دستگاههای 1P/3P انجام میدهد و از کاربران 1B+ در برابر محتوای توهینآمیز محافظت میکند، بدون اینکه نیازی به ارسال دادههای کاربر به سرورهای Google باشد. طراحی شده است تا از اصول PCC (Private Compute Core) برای اطمینان از ارتباط شفاف و حفظ حریم خصوصی بین مشتری، ماشین مجازی (VM) و جلوگیری از هرگونه نفوذ داده های کاربر پیروی کند. میتوان از آن برای مواردی مانند فعال کردن تشخیص سوء استفاده در دستگاهها، مانند شناسایی تهدید زنده Play Protect استفاده کرد.
در این مورد، سیستم از ماشینهای مجازی محافظتشده برای اجرای طبقهبندی مدل خود برای شناسایی تهدید زنده Play Protect استفاده میکند که سپس به طور قابلتوجهی امنیت مدلها و حفاظتهای خود را افزایش میدهد. این امر از مهندسی معکوس و دستکاری توسط مهاجمان، حتی در دستگاههای روت شده، با حصول اطمینان از اینکه فقط کد مورد تایید اجرا میشود و عملیات آن از فرآیندهای خارجی پنهان میشود، جلوگیری میکند.
جریان های سطح بالا به شرح زیر است:
- شناسایی تهدید زنده، خدمات محاسباتی خصوصی را برای راه اندازی VM پینگ می کند. Private Compute Services یک واسطه با محوریت حریم خصوصی بین PCC و سرور ابری است
- Private Compute Services VM را راه اندازی می کند و کلید عمومی آن را از VM می گیرد
- Private Compute Services مالکیت VM را به تشخیص تهدید زنده Play Protect واگذار می کند
- Private Compute Services گواهی و کلید عمومی را به سرور ارسال می کند
- سرور تأیید را تأیید می کند و حفاظت ها را با کلید عمومی VM رمزگذاری می کند
- سپس سرور حفاظت های رمزگذاری شده را به دستگاه باز می فرستد
- سپس، تشخیص تهدید زنده روی دستگاه می تواند از حفاظت رمزگذاری شده در VM استفاده کند. VM تنها موجودی است که دارای کلید خصوصی است که می تواند حفاظت ها را رمزگشایی کند
مولفه سطح بالا به شرح زیر است:
- سرور: رمزگذاری و ارائه حفاظت های رمزگذاری شده به VM
- خدمات محاسباتی خصوصی: برای راه اندازی VM و واسطه ارتباط با VM و نشان دادن شفافیت که هیچ داده کاربری از طریق Astrea به سرور منتقل نمی شود استفاده می شود.
- شناسایی تهدید زنده Play Protect:
- شامل و از طبقهبندیکنندههای مدل ارائهشده توسط Content Safety در دستگاه استفاده میکند
- مالکیت VM را می پذیرد و آن را برای استفاده طبقه بندی نگه می دارد
- VM را در صورت نیاز راه اندازی و متوقف می کند.