【CSDN 編者按】MicroDroid 本質上還是一個 Android 系統,換句話說,甚至不能將 MicroDroid 作為一個單獨的系統來使用,谷歌如今為現有的Android 系統開發基于虛擬機技術的安全功能,MicroDroid 是為此而生的。
近日有消息稱,谷歌正在研發一個新版本的 Android 系統,名為 MicroDroid 。這個新版本的 Android 首次官方露面是在谷歌提交的開發說明上,谷歌將其稱為“基于 Android 的最小 Linux 映像”。
據 MicroDroid 的描述說明顯示,MicroDroid 將在虛擬機中使用,并且被稱為“通用的 Android 系統鏡像(GSI)的精簡版”,GSI 已經是開源 Android 的一個鏡像,而 MicroDroid 則是一個比通用的 Android 系統更精簡的版本。
MicroDroid 有什么用?
剛才說到,GSI 已經是一個開源的 Android 的基礎版本,但 MicroDroid 相對更精簡。根據 XDA Developers 的分析,谷歌的目標或許是在 Android 旁側運行的虛擬機,如 DRM 相關的應用。MicroDroid 內部擁有少量組件,如 init 和 binder 服務,以便與底層 Android 主機進通信。
通過 MicroDroid,我們可以設想在 Android 的同時運行一個小型的虛擬機,MicroDroid 是任意設備可運行的,方便開發者虛擬化一個單獨的 Android 應用程序,而不是提供一個完整的輔助桌面環境。這使得在云端運行安全應用、在操作系統迭代之間切換安全配件文件的能力變得更簡單。
同時,也可以與市場上較新的芯片(如驍龍 888)中的虛擬化功能相結合。而高通方面則表示,允許隔離應用程序和同一設備上的操作系統之間的數據,也可以在隔離的操作系統之間即時更改,并且適應性很好。
圖片來源:高通
圖為驍龍 888 上的上的新型 Type-1 虛擬機管理程序,Hypervisor 在隔離的操作系統之間進行即時切換
另外,據 LWN 的 Jake Edge 介紹,為了提高安全性,谷歌正在致力于將名為“KVM”的 Linux 內核虛擬化機制引入 ARM64 soc 驅動的 Android 設備。
據稱,引入 KVM 支持可以“取消”運行在 Armv8 的高度特權異常級別之一的第三方代碼的特權。例如用于 DRM 、密碼學和其他二進制文件的第三方代碼,可以在 Android 操作系統相同級別的 VM 中運行。
圖片來源:ARM
為了管理這些虛擬機,谷歌正在適配 Chrome OS VMM ( crosvm ),這是用于在 Chrome OS 上運行 Linux 應用程序。同時也準備在一個名為“虛擬化”的 APEX 新包中將 Cromsvm 包含進去一同發布、并為 Android 的 Linux 內核分支帶來 ARM64 上的“受保護的 KVM ”項目。
Android 解決內核碎片化問題迫在眉睫
MicroDroid 的誕生或許要追溯到更早之前。目前,整個 Android 系統的最新開發是通用內核映像( GKI ),其目的是減少 Android 內核的碎片化。
GKI 架構
在傳統上,每個手機都有自己的內核版本,但卻是無法擴展的,這一特性導致了碎片化。若是每次更新都要同時更新多個內核版本(不同設備)的話,就會存在困難程度上升和費用增加的問題,進而導致某些系統很難更新或無法更新。如果說某些設備的內核太老了,沒有最新版本所需要的功能,還會導致這些設備無法更新 Android 版本——在早期乃至近幾年的 Android 設備市場中,這種情況的確是常見的。
這種分裂的現狀還帶來了另一個問題:對上游內核的不利。相對來說,這個問題目前沒有得到足夠的關注。主線內核背后的思想是擁有正確的子系統和抽象,以便支持各式各樣的硬件,但這是不可能做到的。因為這些代碼都存儲在不同的內核中,就像你走進一片巨大的森林,目之所及的僅僅是你視線范圍的樹木,不可能看清楚森林里的每一棵樹上的每一片葉子,同理,除非開發人員能夠看到所有不同硬件下所有不同的問題和解決方案,否則對于內核開發人員來說,是無法想出一個適用于所有人的抽象。
Android 內核層次結構導致碎片化
GKI 用于解決 Android 內核碎片化問題,而 MicroDroid 則是谷歌在 Android 硬件上支持虛擬化道路上的重要一步。
Android 虛擬化管理混亂
如今 Android 上的管理程序情況還是很混亂的。如果你認為內核的碎片化問題已經“很糟糕了”,那現實的情況可能是已經“非常非常糟糕了”。
就目前而言,所有的 Android 設備都在運行的某些版本的 Linux ,但就管理程序而言,簡直分裂得就像狂野的西部世界。有些設備根本沒有管理程序,這算情況好的了,但對于有管理程序的設備而言,他們的管理程序需要用于管理不同的事情。
3.1 安全增強
目的是保護內核,但是其本身也存在問題,因為緩解措施很多時候也是攻擊的入口。并且重點在于,虛擬機監控程序使用更高的特權運行,所以其中的錯誤可能意味著這些假定的保護程序并不能真正地保護系統。
3.2 粗粒度內存分區
這個在 Android 中的粗粒度內存分區看起來有點像 IOMMU ,但實際上不是。它在引導時用于將物理內存劃分為多個區域,這些區域可以交給各種設備進行 DMA 或者其他用途。但在引導時間之后,Hypervisor(虛擬機監視器)還有很多工作要做,所以這類型的使用顯得有些浪費。
3.3 在Android以外運行代碼
Armv8 有多個特權級別,稱為異常級別,從特權級別最高的固件( EL3 )到管理程序( EL2 )和操作系統( EL1 ),再到特權級別最低的用戶( EL0 )。Hypervisor 異常級別不是 EL3 級別,因此設備制造商在更新那里的代碼時不必擔心設備的砌墻問題,同時它也不是 EL1 級別,運行在那里的代碼不需要與任何其他東西集成。而這意味著,EL2 成為了某種“游樂場”,似乎不適合其他地方的代碼會被卡在那里,因為 EL2 擁有的特權可能比需要的多得多,這是很糟糕的現象。
特權和例外級別
在大多數情況下,甚至沒有任何虛擬機,所以這些管理程序不會提供常見的服務。這種情況導致可信計算基礎( TCB )增加了,安全性和功能性因此而損失,安全性受到了阻礙。而且因為該級別的碎片化,更新設備變得更加困難。此外,由于無法從 Android 內部訪問硬件虛擬化特性,功能也相應變得很缺乏。
實際上,受信任級別比不安全級別擁有更多特權,因此,受信任的操作系統可以映射不受信任的管理程序內存,且可以提供訪問,這樣一來受信任的應用程序也可以訪問它。這在 Android 生態中是有問題的,其中一部分原因來自于運行在可信端的 DRM 的第三方代碼、各種不透明的二進制 blob 、加密代碼等等,這些代碼可能并不值得信任,而且它們也會受到碎片化問題的困擾。
內核的 Arm64 體系結構的維護者之一、同時也是 KVM 引入 Android 系統的負責人威爾·迪肯( Will Deacon )認為,“可信”一次在很大程度上是一個營銷術語,目的是讓人們覺得運行在那里的代碼是安全可靠的。但“信任”還有另一種定義,即“期待、希望或假設”,這同樣適用于當下。Android 系統必須希望在受信任端運行的軟件沒有惡意的,否則一旦惡意軟件運行在可信任端,Android 就束手無策了。
所以,Android 如今希望有一種方式來取消這個第三方代碼的特權,需要一個可移植的環境,能夠以一種與 Android 系統隔離的方式來承載這些服務,還能將這些第三方項目彼此隔離。基于這些愿景,KVM 和 MicroDroid 就應運而生了,MicroDroid 在 KVM 的基礎上能保證更安全、更快捷、更開放的方式去進行隔離、迭代和運行。
另外,也有業內人士猜測,MicroDroid 也可能和谷歌努力將 Crosvm 背后的想法擴展到 Android 應用程序有關。不過在官宣之前,我們也只能對現有的信息作出一些猜測,MicroDroid 背后真正的意圖是什么,或許也要等待進一步的消息。
責任編輯:xj
-
Android
+關注
關注
12文章
3939瀏覽量
127593 -
內核
+關注
關注
3文章
1377瀏覽量
40328 -
操作系統
+關注
關注
37文章
6856瀏覽量
123450
發布評論請先 登錄
相關推薦
評論