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

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

کامپایل ایزوله

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

پیاده‌سازی در فایل com.android.compos APEX قرار دارد. این کامپوننت اختیاری است و می‌تواند با استفاده از makefile اضافه شود.

کامپایل ایزوله

شکل ۱. کامپایل JARها روی به‌روزرسانی‌های خط اصلی. کامپایل JARها روی به‌روزرسانی‌های خط اصلی

هدف امنیتی، کامپایل صادقانه ورودی‌های تأیید شده و تولید خروجی به صورت ایزوله است؛ اندروید به عنوان یک کلاینت غیرقابل اعتماد نمی‌تواند خروجی کامپایل را به هیچ وجه تغییر دهد، مگر اینکه باعث خرابی آن شود (وقتی اندروید به کامپایل زمان بوت برمی‌گردد).

سرویس کامپایل در ماشین مجازی تنها در صورتی امضا تولید می‌کند که در طول کل فرآیند کامپایل خطایی وجود نداشته باشد. اندروید می‌تواند کلید عمومی را از ماشین مجازی برای تأیید امضا بازیابی کند.

کلید ماشین مجازی از پروفایل DICE ماشین مجازی تولید می‌شود که توسط APEXها و APKهای نصب‌شده روی ماشین مجازی، علاوه بر سایر پارامترهای ماشین مجازی، مانند قابلیت اشکال‌زدایی، تعریف می‌شود.

برای تعیین اینکه آیا کلید عمومی از یک ماشین مجازی غیرمنتظره نیست، اندروید ماشین مجازی را بوت می‌کند تا صحت کلید را بررسی کند. ماشین مجازی پس از هر به‌روزرسانی APEX، در ابتدای بوت بوت می‌شود.

با قابلیت Verified Boot در ماشین مجازی محافظت‌شده، سرویس کامپایل فقط کد تأیید شده را اجرا می‌کند. در نتیجه، کد می‌تواند تعیین کند که فقط ورودی‌هایی را بپذیرد که شرایط خاصی را برآورده می‌کنند، برای مثال، فقط یک فایل ورودی را بپذیرد که نام آن و خلاصه fs-verity آن در یک لیست مجاز تعریف شده باشد.

هرگونه API در معرض خطر از ماشین مجازی، سطوح حمله هستند. فرض بر این است که تمام فایل‌ها و پارامترهای ورودی از یک کلاینت غیرقابل اعتماد ارسال شده‌اند و باید قبل از پردازش، تأیید و بررسی شوند.

یکپارچگی فایل‌های ورودی و خروجی توسط ماشین مجازی تأیید می‌شود و فایل‌های ذخیره شده در اندروید به عنوان یک سرور فایل غیرقابل اعتماد، به شرح زیر است:

  • محتوای یک فایل ورودی باید قبل از استفاده با استفاده از الگوریتم fs-verity تأیید شود. برای اینکه یک فایل ورودی در ماشین مجازی در دسترس قرار گیرد، هش ریشه آن باید در یک کانتینر (APK) ارائه شود که به پروفایل DICE ماشین مجازی کمک می‌کند. با هش ریشه قابل اعتماد، یک مهاجم نمی‌تواند بدون شناسایی شدن، ورودی را دستکاری کند.
  • یکپارچگی فایل خروجی باید در ماشین مجازی حفظ شود. حتی اگر یک فایل خروجی در اندروید ذخیره شود، در طول تولید، یکپارچگی با همان فرمت درخت fs-verity حفظ می‌شود اما می‌تواند به صورت پویا به‌روزرسانی شود. فایل خروجی نهایی را می‌توان با هش ریشه که در ماشین مجازی ایزوله شده است، شناسایی کرد. سرویس موجود در ماشین مجازی از فایل‌های خروجی با امضا محافظت می‌کند.

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

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

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

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

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

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

  1. برای استفاده از محیط توسعه لینوکس، گزینه‌های توسعه‌دهنده را فعال کنید .
  2. بعد از اینکه گزینه‌های توسعه‌دهنده را فعال کردید، برنامه ترمینال در لانچر خانگی شما ظاهر می‌شود.
  3. برنامه ترمینال را از لانچر خانگی خود اجرا کنید.
  4. در صورت نیاز، برنامه ترمینال، تصویر سیستم عامل را از Play دانلود می‌کند.
  5. برنامه ترمینال از چارچوب مجازی‌سازی اندروید (AVF) برای ایجاد یک ماشین مجازی (VM) استفاده می‌کند.
  6. سپس AVF ماشین مجازی را با تصویر سیستم عامل اجرا می‌کند.
  7. ماشین مجازی، سیستم عامل را از روی ایمیج بوت می‌کند.
  8. پس از بوت شدن ماشین مجازی، WebView در برنامه ترمینال به یک سرویس وب در ماشین مجازی متصل می‌شود. این سرویس دسترسی به ترمینال را از طریق HTTP فراهم می‌کند.
  9. شما با وارد کردن دستورات و مشاهده خروجی در برنامه، با ترمینال تعامل می‌کنید.

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

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

ایمنی محتوا در دستگاه

امنیت محتوا روی دستگاه، یک راهکار امنیت محتوا با حفظ حریم خصوصی است که توسط تیم امنیت محتوا روی دستگاه ایجاد شده است. این راهکار، طبقه‌بندی امنیت محتوا را برای محصولات مختلف گوگل روی دستگاه‌های ۱P/3P انجام می‌دهد و از بیش از ۱ میلیارد کاربر در برابر محتوای توهین‌آمیز محافظت می‌کند، بدون اینکه نیازی به ارسال داده‌های کاربر به سرورهای گوگل باشد. این راهکار به گونه‌ای طراحی شده است که به اصول هسته محاسبات خصوصی (PCC) پایبند باشد تا ارتباط شفاف و حفظ حریم خصوصی بین کلاینت، ماشین مجازی (VM) را تأیید کند و از هرگونه نشت داده‌های کاربر جلوگیری کند. این راهکار می‌تواند برای مواردی مانند فعال کردن تشخیص سوءاستفاده در دستگاه‌ها، مانند تشخیص تهدید زنده Play Protect ، مورد استفاده قرار گیرد.

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

جریان‌های سطح بالا به شرح زیر هستند:

  1. تشخیص تهدید زنده، سرویس‌های محاسبات خصوصی را برای شروع ماشین مجازی پینگ می‌کند. سرویس‌های محاسبات خصوصی یک واسطه با محوریت حریم خصوصی بین PCC و سرور ابری است.
  2. سرویس‌های محاسبات خصوصی، ماشین مجازی را راه‌اندازی کرده و کلید عمومی آن را از ماشین مجازی دریافت می‌کند.
  3. خدمات محاسبات خصوصی، مالکیت ماشین مجازی را به سرویس تشخیص تهدید زنده Play Protect واگذار کرد.
  4. سرویس‌های محاسبات خصوصی، گواهی و کلید عمومی را به سرور ارسال می‌کنند.
  5. سرور، گواهی را تأیید می‌کند و محافظت‌ها را با کلید عمومی ماشین مجازی رمزگذاری می‌کند.
  6. سپس سرور، محافظت‌های رمزگذاری‌شده را به دستگاه ارسال می‌کند.
  7. سپس، تشخیص تهدید زنده روی دستگاه می‌تواند از محافظت رمزگذاری شده در ماشین مجازی استفاده کند. ماشین مجازی تنها نهادی است که کلید خصوصی را دارد و می‌تواند محافظت‌ها را رمزگشایی کند.

اجزای سطح بالا به شرح زیر است:

  • سرور: رمزگذاری و ارائه حفاظت‌های رمزگذاری شده به ماشین مجازی
  • سرویس‌های محاسباتی خصوصی: برای شروع ماشین مجازی و واسطه‌گری ارتباط با ماشین مجازی و نشان دادن شفافیت مبنی بر اینکه هیچ داده کاربری از طریق Astrea به سرور منتقل نمی‌شود، استفاده می‌شود.
  • تشخیص تهدید زنده توسط Play Protect:
    • شامل و استفاده از طبقه‌بندی‌کننده‌های مدل ارائه شده توسط Content Safety روی دستگاه
    • مالکیت ماشین مجازی را می‌پذیرد و آن را برای استفاده در طبقه‌بندی نگه می‌دارد.
    • در صورت نیاز، ماشین مجازی را شروع و متوقف می‌کند.

تولیدکنندگان اصلی تجهیزات (OEM)

یک تولیدکننده اصلی تجهیزات (OEM) می‌تواند از AVF برای موارد استفاده سفارشی استفاده کند. به عنوان مثال، OPPO از AVF برای فعال کردن فضای محاسباتی خصوصی هوش مصنوعی خود استفاده می‌کند. اولین برنامه این فضا، یک راهکار کنترل ریسک روی دستگاه را برای کلاینت‌های برنامه ارائه می‌دهد که در یک ماشین مجازی اجرا می‌شوند. این سیستم با تهدیدات ناشی از فعالیت‌های غیرقانونی مقابله می‌کند و در برابر خطرات مختلف محافظت ارائه می‌دهد.