时间:2022-08-04 21:42来源:财神爷站
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?中运行。
为了管理这些虚拟机,谷歌正在适配?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?背后真正的意图是什么,或许也要等待进一步的消息。