用途

本文件說明 AVF 的常見用途。

獨立編譯

作為軟體安全的安全圍欄,受保護的 VM 能提供安全的環境, 以及編譯受到安全性保護的程式碼這個環境允許移動編譯 的 bootclasspath 和系統伺服器 JAR (由 APEX 更新觸發),來源為 及早啟動,然後再重新啟動。 更新啟動時間。

實作的 com.android.compos APEX。此元件為選用項目,可以 請使用 makefile

獨立編譯

圖 1. 在 Mainline 更新中編譯 JAR

安全性目標是完整編譯已驗證的輸入內容,然後產生輸出內容 獨立;Android 做為不受信任的用戶端無法修改編譯 而不是造成呼叫失敗的其他方式 (Android 改回使用模式時) 時間編譯)。

VM 中的編譯服務只有在沒有金鑰的情況下才會產生簽章 錯誤。Android 可從以下位置擷取公開金鑰: 驗證簽章

VM 的金鑰是由 APEXes 定義的 VM DICE 設定檔產生 和掛接於 VM 的 APK 以及其他 VM 參數 可進行偵錯。

Android 會啟動,判斷公開金鑰是否來自非預期的 VM VM 來判斷金鑰是否正確VM 會在早期啟動時啟動 。

採用 Protected VM 的驗證開機程序後,編譯服務只會執行驗證 再也不是件繁重乏味的工作因此,程式碼可以判定只接受符合 例如只接受檔名和 許可清單已定義 fs-verity 摘要。

任何從 VM 公開的 API 都會是攻擊介面。所有輸入檔案 系統會假設參數來自不受信任的用戶端,且必須通過驗證並 經過審查後 模型才會開始處理

VM 會驗證輸入/輸出檔案的完整性,檔案儲存在 將 Android 做為不受信任的檔案伺服器,如下所示:

  • 輸入檔案的內容必須先經過驗證,才能使用 fs-verity 演算法。如要在 VM 中使用輸入檔案 根雜湊必須在容器 (APK) 中提供根雜湊值, VM 的 DICE 設定檔。使用信任的根雜湊,攻擊者無法竄改 而不會被偵測到
  • 輸出檔案的完整性必須在 VM 中維護。即使 在產生過程中,輸出檔案會儲存在 Android 上 會以相同的 fs-verity 樹狀結構格式維護,但可以動態處理 已更新。最終輸出檔案可透過根雜湊值辨識 在 VM 中隔離出來VM 中的服務會保護輸出內容 檔案。