网站404做多大,北京网站制作公司电话,安阳网站建设方案,兰州做网站的公司有哪些随着移动设备的普及和应用场景的多样化#xff0c;安全性和隐私保护成为了移动操作系统的重要课题。Google推出的Microdroid#xff0c;是一个专为虚拟化环境设计的精简版Android操作系统#xff0c;旨在提供一个安全、隔离的执行环境。本文将详细介绍Microdroid的架构、功能…随着移动设备的普及和应用场景的多样化安全性和隐私保护成为了移动操作系统的重要课题。Google推出的Microdroid是一个专为虚拟化环境设计的精简版Android操作系统旨在提供一个安全、隔离的执行环境。本文将详细介绍Microdroid的架构、功能、使用方法及其目标。
Microdroid项目介绍
Microdroid是一个极简版的Android操作系统专为在受保护的虚拟机pVM中运行而设计。它基于Android的源代码构建但去除了系统服务器、硬件抽象层HAL、图形用户界面GUI等组件仅保留了必要的核心功能。Microdroid的目标是为需要高安全性和隔离性的应用提供一个轻量级的运行环境。 在Android虚拟化框架AVF中pVMProtected Virtual Machine受保护的虚拟机是一个关键概念。pVM是一种虚拟机它在硬件和软件层面上提供了更高的安全性和隔离性确保在虚拟机中运行的应用程序和数据不会受到外部环境的干扰或攻击。 pVM即Protected Virtual Machine是一种受保护的虚拟机旨在提供一个高度隔离和安全的运行环境。与传统的虚拟机不同pVM通过硬件支持的虚拟化技术如ARM的TrustZone或Intel的SGX以及软件层面的安全措施确保虚拟机内的应用程序和数据的完整性和保密性。 功能特色 精简设计 Microdroid去除了大部分不必要的组件仅保留核心功能使其在资源消耗和启动时间上具有显著优势。 高安全性 通过在pVM中运行Microdroid提供了一个高度隔离的环境确保应用程序和数据的安全性和完整性。 支持NDK API Microdroid支持部分NDK API包括用于实现libc和Bionic的所有API方便开发者进行原生代码开发。 调试功能 提供了adb、logcat、tombstone和gdb等调试工具方便开发者进行调试和问题排查。 启动时验证和SELinux Microdroid在启动时进行验证并使用SELinux进行安全策略管理进一步提升系统安全性。 Binder RPC支持 通过vsock支持Binder RPC实现主机与pVM之间的高效通信。
不支持的功能
android.\* 文件包中的 Android Java APIjava.\* 文件包中的 Core Java API 属于支持的功能但需要在虚拟机中激活 ART APEX。SystemServer 和 Zygote图形/界面HAL
Microdroid架构
Microdroid的架构与Cuttlefish类似包含以下分区映像这些映像在一个复合磁盘映像中进行了分组
bootloader验证并启动内核。boot.img包含内核和init ramdisk。vendor_boot.img包含虚拟机专用的内核模块例如virtio。super.img包含系统和供应商逻辑分区。vbmeta.img包含经过验证的启动元数据。
这些分区映像整合在一个虚拟化APEX中并通过VirtualizationService打包成一个复合磁盘映像。此外VirtualizationService还负责创建以下分区
payload由Android的APEX和APK支持的分区。instance用于按实例持久保留启动时验证数据的加密分区。
启动序列
Microdroid 启动序列在设备启动后触发。关于设备启动的具体内容在架构文档的 pVM 固件部分中有详细的讨论。图 1 显示了 Microdroid 启动序列过程中的具体步骤
以下是对这些步骤的说明 crosvm 将引导加载程序加载到内存pvmfw 开始执行。在跳转到引导加载程序之前pvmfw 会执行两项任务 验证引导加载程序检查其是否来自可信来源Google 或 OEM。确保同一 pVM 在使用同一实例映像进行多次启动的过程中会始终如一地使用相同的引导加载程序。具体而言pVM 最初会使用空白的实例映像进行启动。pvmfw 会存储该实例映像中的引导加载程序的身份信息并对其进行加密。当 pVM 下次使用同一实例映像启动时pvmfw 会解密已保存的该实例映像的身份信息并验证当前的身份信息是否与先前保存的信息完全相同。如果身份信息不同pvmfw 将拒绝启动。 引导加载程序启动 Microdroid。 引导加载程序访问实例磁盘。与 pvmfw 类似引导加载程序会在一个实例磁盘中存储同一实例上次启动时使用的分区映像的相关信息包括公钥信息。 引导加载程序验证 vbmeta 和链式分区例如 boot 和 super。如果验证成功则会推导出下一阶段的 pVM Secret。然后Microdroid 会将控制权移交给内核。 由于引导加载程序已经在第 3 步验证了 super 分区所以内核会无条件地安装 super 分区。与完整版 Android 一样super 分区包含了多个通过 dm-verity 安装的逻辑分区。随后控制权将移交给 init 进程该进程会启动各种原生服务。init.rc 脚本也与完整版 Android 中的十分相似只不过针对 Microdroid 的需求进行了一些调整。 init 进程启动 Microdroid 管理器该管理器会访问实例映像。Microdroid 管理器服务使用前一阶段传递的密钥解密映像并读取该 pVM 信任的客户端 APK 和 APEX 的公钥及回滚计数器信息。这些信息稍后会在安装客户端 APK 和请求的 APEX 时分别用于 zipfuse 和 apexd。 Microdroid 管理器服务启动 apexd。 apexd 在 /apex/name 目录下安装 APEX。在 APEX 的安装方式上Android 与 Microdroid 只有一个差别在 Microdroid 中APEX 文件来自虚拟块设备例如 /dev/vdc1而非来自常规文件 (/system/apex/*.apex)。 zipfuse 是 Microdroid 的 FUSE 文件系统。zipfuse 会将客户端 APK基本上是一个 Zip 文件作为文件系统进行安装。在底层pVM 会将 APK 文件作为一个虚拟块设备通过 dm-verity 进行传递就像 APEX 一样。APK 中包含一个配置文件其中包括了应用开发者针对该 pVM 实例请求的 APEX 的列表。在激活 APEX 时该列表会被 apexd 使用。 启动流程返回到 Microdroid 管理器服务。然后管理器服务会使用 Binder RPC 与 Android 的 VirtualizationService 进行通信以便能够报告崩溃或关闭等重要事件并接受诸如终止 pVM 之类的请求。管理器服务还会从 APK 的配置文件中读取主二进制文件的位置并加以执行。
文件交换 (AuthFS)
Android 组件使用文件进行输入、输出和状态记录并将这些文件作为由 Android 内核控制访问的文件描述符AIDL 中的 ParcelFileDescriptor 类型进行传递是十分常见的。AuthFS 就提供了这样的功能以便能够跨 pVM 边界在互不信任的端点之间交换文件。
基本而言AuthFS 是一个远程文件系统它会对每次访问操作进行透明的完整性检查类似于 fs-verity。这些检查使前端例如 pVM 中运行的文件读取程序能够检测不受信任的后端通常为 Android是否包含经过篡改的文件内容。
要进行文件交换后端 (fd\_server) 会在通信开始时提供每个文件的配置以表明它是输入只读还是输出读写。如果是输入前端会强制要求相关内容与 Merkle 树顶层的已知哈希完全匹配以实现访问时验证。如果是输出AuthFS 会在内部将相关内容的哈希树保存为写入操作的观察结果并在回读数据时强制执行完整性检查。
目前底层传输是基于 Binder RPC 进行的。但是为了优化性能此机制今后可能会有所变化。
密钥管理
pVM 具有一个稳定的密封密钥和一个认证密钥前者非常适合用于受保护的持久性数据后者非常适合用于生成由 pVM 验证生成的签名。
Binder RPC
大多数 Android 接口都用 AIDL 表示而 AIDL 是基于 Binder Linux 内核驱动程序构建的。为了在 pVM 之间提供接口支持Binder 协议经过重写以便能够通过套接字使用对于 pVM该套接字为 vsock。通过这种方式Android 现有的 AIDL 接口就能在 pVM 这个新环境中使用。
要设置连接终端例如 pVM 载荷需要创建一个 RpcServer 对象、注册一个 root 对象并进入监听新连接的状态。要连接到该服务器客户端需要使用 RpcSession 对象并获取 Binder 对象然后像在 Binder 内核驱动程序中使用 Binder 对象一样使用该对象。
Microdroid的目标
Microdroid的主要目标是提供一个安全、隔离的运行环境以比常规Android环境更高的机密性和完整性运行应用的某一部分。
Microdroid的目标之一是支持在各种设备上运行类似于云游戏串流的方式用户可以在云端运行应用并将其串流到本地设备上使用。Microdroid利用Linux KVMKernel-based Virtual Machine虚拟化技术可以在虚拟机中运行提供高效的虚拟化支持使得Microdroid可以在不同的硬件平台上运行。
通过在pVM中运行Microdroid能够有效地隔离应用程序和数据防止数据泄露和未授权访问。
总结
Microdroid作为一个精简版的Android操作系统通过在受保护的虚拟机pVM中运行为需要高安全性和隔离性的应用提供了一个轻量级的运行环境。通过本文的介绍和示例代码希望能够帮助开发者更好地理解和使用Microdroid开发出更加安全和稳定的应用程序。