【CSDN 編者按】MicroDroid 本質上還是一個 Android 系統,換句話說,甚至不能將 MicroDroid 作為一個單獨的系統來使用,谷歌如今為現有的Android 系統開發基于虛擬機技術的安全功能,MicroDroid 是為此而生的,
作者 | Carol 責編 | 張文
出品 | CSDN(ID:CSDNnews)
近日有訊息稱,谷歌正在研發一個新版本的 Android 系統,名為 MicroDroid ,這個新版本的 Android 首次官方露面是在谷歌提交的開發說明上,谷歌將其稱為“基于 Android 的最小 Linux 映像”,
谷歌開發說明:https://android-review.googlesource.com/c/platform/packages/modules/Virtualization/+/1557661
據 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 背后真正的意圖是什么,或許也要等待進一步的訊息,
關于 MicroDroid,你怎么看?歡迎評論區留言討論!
程式員如何避免陷入“內卷”、選擇什么技術最有前景,中國開發者現狀與技術趨勢究竟是什么樣?快來參與「2020 中國開發者大調查」,更有豐富獎品送不停!
?位元組跳動 CEO 張楠談遭微信封禁;傳螞蟻集團將重組 ;Apache ECharts 5發布| 極客頭條
?告別手敲 SQL ?GPT-3 自動幫你寫
?Linux 在 M1 上跑起來了
?300 多行代碼搞定微信 8.0 的「炸」「裂」特效!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255653.html
標籤:其他
