本頁面列出 AVF 的常見用途。
隔離編譯
受防護的虛擬機器 (VM) 是軟體安全封閉區,可提供安全環境來編譯安全敏感程式碼。這個環境可將 bootclasspath
和系統伺服器 JAR 的編譯作業 (由 APEX 更新觸發) 從早期啟動階段移至重新啟動前,大幅縮短 APEX 更新後的啟動時間。
實作方式位於 com.android.compos
APEX 中。這個元件為選用項目,可使用 makefile 納入。
安全目標是如實編譯經過驗證的輸入內容,並在隔離狀態下產生輸出內容;Android 是不受信任的用戶端,無法以任何方式變更編譯輸出內容,只能導致編譯失敗 (Android 回復為開機時間編譯時)。
只有在整個編譯過程中沒有發生錯誤時,VM 中的編譯服務才會產生簽章。Android 可以從 VM 擷取公開金鑰,用於驗證簽章。
VM 的金鑰是從 VM 的 DICE 設定檔產生,由掛接至 VM 的 APEX 和 APK 定義,此外還會使用其他 VM 參數,例如可偵錯性。
為判斷公開金鑰是否來自非預期的 VM,Android 會啟動 VM,確認金鑰是否正確。每次更新 APEX 後,VM 都會在早期啟動時啟動。
透過受防護 VM 的驗證啟動功能,編譯服務只會執行經過驗證的程式碼。因此,程式碼可以判斷只接受符合特定條件的輸入內容,例如只接受名稱和 fs-verity
摘要在允許清單中定義的輸入檔案。
VM 暴露的任何 API 都是攻擊面。所有輸入檔案和參數都來自不受信任的用戶端,因此必須先經過驗證和審查,才能處理。
VM 會驗證輸入和輸出檔案的完整性,並將檔案儲存在 Android 上做為不受信任的檔案伺服器,如下所示:
- 使用
fs-verity
演算法前,必須先驗證輸入檔案的內容。如要讓輸入檔案在 VM 中可用,必須在容器 (APK) 中提供其根雜湊,該容器會提供 VM 的 DICE 設定檔。有了可信的根雜湊值,攻擊者就無法在不被偵測到的情況下竄改輸入內容。 - 輸出檔案的完整性必須在 VM 中維持。即使輸出檔案儲存在 Android 上,生成期間也會以相同的
fs-verity
樹狀結構格式維持完整性,但可以動態更新。最終輸出檔案可透過根雜湊識別,該雜湊會隔離在 VM 中。VM 中的服務會透過簽章保護輸出檔案。
Linux 開發環境
傳統上,Android 是唯一不允許使用者在平台本身開發應用程式的主要作業系統。我們推出 Linux 開發環境,是為了向 Android 開發人員提供以 Linux 為基礎的開發環境。未來,我們計畫擴大這項工作,讓合作夥伴能夠實作創新的 VM 用途,例如執行圖形使用者介面應用程式,甚至是遊戲。
Linux 開發環境適用於特定裝置,並在非受保護的虛擬機器中執行。
高階流程如下:
- 如要使用 Linux 開發環境,請啟用開發人員選項。
- 啟用開發人員選項後,終端機應用程式就會顯示在主畫面啟動器上。
- 從主畫面啟動器啟動「終端機」應用程式。
- 如有需要,終端機應用程式會從 Play 下載 OS 映像檔。
- 「終端機」應用程式會使用 Android 虛擬化架構 (AVF) 建立虛擬機器 (VM)。
- AVF 隨後會使用 OS 映像檔執行 VM。
- 虛擬機器會從映像檔啟動 OS。
- VM 啟動後,終端機應用程式中的 WebView 會連線至虛擬機器中的網路服務。這項服務會透過 HTTP 提供終端機存取權。
- 您可以在應用程式中輸入指令並查看輸出內容,與終端機互動。
Linux VM 的高階元件如下:
- 終端機應用程式:提供終端機介面的 Android 應用程式。 這個應用程式會使用 WebView 連線至 VM 中執行的 Web 服務,以便進行互動。 這項應用程式預設為停用。在「開發人員設定」中啟用。
- Android 虛擬化架構 (AVF):Android 現有的子系統,用於建立及管理 VM。支援這項功能時,只需要對自訂 OS 映像檔進行最少的修改。
- 虛擬機器:AVF 產生的 VM。這個服務會代管終端機服務,AVF 專為終端機應用程式功能建立這個服務。
- OS 映像檔:上游 Debian 提供的 OS 映像檔經過稍微修改,「終端機」應用程式會從外部 Google 伺服器下載這張圖片。這是 VM 作業的基礎。
- 客體代理程式:VM 中的新軟體。並向 AVF 回報 OS 狀態,以及控管虛擬機器。
- ttyd:在 VM 中執行的開放原始碼軟體,可透過 HTTP 實作終端機模擬。終端機應用程式的 WebView 會連線至該網址。
- 網路共用管理員:現有的 Android 子系統。將虛擬機器連線至 Android 裝置,即可透過網路存取虛擬機器。
裝置端內容安全功能
裝置端內容安全防護是保護隱私權的內容安全防護解決方案,由裝置端內容安全防護團隊開發。這項技術可在第一方/第三方裝置上,為各種 Google 產品執行內容安全分類作業,並保護超過 10 億名使用者免於受到濫用內容侵害,且不需要將使用者資料傳回 Google 伺服器。這項技術的設計宗旨是遵循 Private Compute Core (PCC) 原則,確保用戶端與虛擬機器 (VM) 之間的通訊透明且能保護隱私,並防止任何使用者資料外洩。這項服務可用於在裝置上啟用濫用行為偵測功能,例如 Play 安全防護即時威脅偵測。
在這個用途中,系統會使用受保護的虛擬機器,執行 Play 安全防護即時威脅偵測的模型分類,大幅提升模型和防護措施的安全性。即使在已取得根存取權的裝置上,這項功能也能確保只有經過核准的程式碼會執行,且作業會對外部程序隱藏,防止攻擊者進行反向工程和操控。
高階流程如下:
- 即時威脅偵測會 Ping Private Compute Services,啟動 VM。 Private Compute Services 是以隱私權為中心的 PCC 與雲端伺服器中介服務
- Private Compute Services 會啟動 VM,並從 VM 取得公開金鑰
- Private Compute Services 會將 VM 擁有權移交給 Play 安全防護即時威脅偵測功能
- Private Compute Services 會將認證和公開金鑰傳送至伺服器
- 伺服器會驗證認證,並使用 VM 公開金鑰加密保護措施
- 伺服器接著將加密的保護措施傳回裝置
- 接著,裝置上的即時威脅偵測功能就能在 VM 內使用加密保護機制。只有 VM 擁有私密金鑰,可解密保護措施
高階元件如下:
- 伺服器:加密並將加密防護措施傳送至 VM
- Private Compute Services:用於啟動 VM、調解與 VM 的通訊,並確保沒有使用者資料透過 Astrea 傳輸至伺服器
- Play 安全防護即時威脅偵測:
- 包含並使用裝置端內容安全功能提供的模型分類器
- 接受 VM 的擁有權,並保留 VM 以供分類使用
- 視需要啟動及停止 VM。