当前位置: 首页 > article >正文

一文带你全面了解Android 虚拟化框架(AVF)

探索Android虚拟化框架(AVF):为移动设备打造坚不可摧的盾牌

在这个数字化时代,移动设备的安全性变得尤为重要。随着个人和企业数据越来越多地在移动设备上处理和存储,保护这些设备免受恶意软件和攻击者的威胁成为了一个重要议题。Android虚拟化框架(AVF)正是为了应对这一挑战而生。今天,我们将深入探讨AVF如何通过其先进的安全模型,为移动设备提供坚不可摧的保护。

AVF安全模型概览

AVF提供了一个安全且私密的执行环境,用于执行代码。它适用于需要比传统Android应用沙盒更高安全保障的场景,甚至可以提供经过正式验证的隔离保证。
AVF的架构包括多个组件,如apexd、zipfuse、authfs、binder、crosvm、通用内核映像(GKI)、Hypervisor、Java API、Microdroid、Microdroid 管理器、原生API、pKVM、pVM 固件(pvmfw)和受保护的虚拟机(pVM)。

  • apexd 和 zipfuse:安全地装载从主机导入的APEX和APK文件。
  • authfs:一个融合文件系统,用于在Android和pVM之间安全地共享文件。
  • binder:虚拟机间通信的主要方式。
  • crosvm:一个用Rust编写的虚拟机监视器,负责分配虚拟机内存、创建虚拟CPU线程和实现虚拟设备的后端。
  • 通用内核映像 (GKI):一个经过Google认证的启动映像,基于Android通用内核(ACK)构建。
  • Hypervisor:AVF使用的虚拟化技术,也称为pKVM,即使主机Android或任何其他pVM遭到入侵,也能保持代码的完整性和pVM资源的机密性。
  • Java API:VirtualizationService Java API,提供对AVF功能的访问。
  • Microdroid:在pVM中运行的迷你版Android OS,提供更丰富的环境。
  • Microdroid 管理器:管理pVM的生命周期和实例磁盘。
  • 原生API:Android原生开发者套件(NDK)的子集。
  • pKVM:基于内核的受保护虚拟机,由Hypervisor管理。
  • pVM 固件 (pvmfw):在pVM上运行的第一个代码,负责验证载荷并推导每个虚拟机的Secret。
  • 受保护的虚拟机 (pVM):一种与主Android操作系统并行运行的隔离执行环境,由pKVM管理。
    目前,AVF仅支持ARM64设备,Google提供了实现AVF所需的所有组件的参考实现。与现有的可信执行环境(TEE)相比,pVM提供了一个更丰富的环境,并且可以动态使用。它还提供了一组标准API,供所有支持它的设备使用。
    VirtualizationService是一个Android服务,负责管理pVM的生命周期。
    AVF的设计重点在于安全性,提供了隔离的执行环境,以防止潜在的安全威胁。
    综上所述,AVF是一个为Android设备提供的高级虚拟化框架,它通过创建隔离的执行环境来增强安全性和私密性,特别适合于需要高安全保障的应用场景。AVF的架构设计考虑了安全性、私密性和灵活性,使其成为Android平台上一个强大的工具。
    AVF 应用加载和通信

深入Android虚拟化框架(AVF)架构

Android虚拟化框架(AVF)的架构设计是其提供强大安全保障的核心。这一架构不仅确保了虚拟机的隔离性,还为管理这些虚拟机提供了一套完整的机制。让我们进一步探索AVF的架构细节,了解它是如何构建这个安全的虚拟化环境的。

  1. ARM架构和异常级别

    • ARM架构支持最多4个异常级别,EL0到EL3,其中EL0权限最小,EL3权限最大。
    • Android主要在EL0运行,而Linux内核在EL1运行。
    • Hypervisor运行在EL2,提供隔离环境。
      pKVM 启动过程
  2. Hypervisor

    • pKVM基于Linux KVM Hypervisor构建,扩展了对“受保护”客户机虚拟机的访问限制。
    • KVM/arm64支持不同执行模式,取决于CPU的虚拟化主机扩展(VHE)的可用性。
    • Hypervisor负责在多个EL1之间切换,并保护客户机的内存和资源。
  3. pKVM供应商模块

    • 包含特定硬件专用的功能,如IOMMU驱动程序。
    • 模块可移植到pKVM,需要EL2访问权限。

CPU 内存访问保护

  1. 启动过程

    • 引导加载程序以EL2启动通用内核,然后内核权限下调至EL1。
    • pKVM及其模块以EL2运行,并处理第2阶段页面表格。
  2. CPU内存访问保护

    • 使用两阶段MMU进行地址转换和访问权限控制。
    • Hypervisor使用第2阶段MMU控制内存访问。
  3. 直接内存访问(DMA)保护

    • 防止DMA设备访问客户机内存,需要IOMMU硬件支持。
    • IOMMU硬件提供页面粒度的访问权限控制。
      DMA 内存访问保护
  4. 内存所有权

    • Hypervisor跟踪内存页面的所有权和共享状态。
    • 客户机可以通过hypercall与主机共享或交还内存。
  5. 中断处理和计时器

    • KVM模型将所有虚拟中断管理委托给EL1的主机。
    • 提供GICv3模拟,处理计时器和IPI。
  6. 客户机接口

    • 使用hypercall和内存访问与受保护的客户机通信。
    • 提供了PSCI和TRNG等hypercall。
  7. 虚拟I/O设备(virtio)

    • 使用Virtio标准实现半虚拟化设备。
    • Virtio设备由VMM在主机用户空间中实现。
  8. 与TrustZone互动

    • 客户机无法直接与TrustZone互动,但主机可以向安全域发出SMC调用。
  9. 虚拟机监控器

    • crosvm作为VMM,通过KVM接口运行虚拟机,注重安全性。
  10. pVM固件(pvmfw)

    • pVM执行的第一个代码,负责引导安全启动并派生pVM的唯一密钥。
    • 存储在刷写分区中,并通过OTA更新。
  11. 设备启动和pVM启动

    • 添加了设备启动过程中的步骤,包括加载和验证pvmfw。
    • Hypervisor将控制权移交给pvmfw,然后分支到载荷的入口点。

Microdroid的安全特性

Microdroid 实例的安全启动流程

Microdroid是专为pVM设计的迷你版Android操作系统,它提供了一个精简而强大的环境,用于运行那些需要更高安全保障的应用程序。Microdroid的核心在于其安全性,它通过一系列精心设计的安全措施来保护运行在pVM中的应用程序。

Microdroid的安全性体现在以下几个方面:

  • 启动验证:Microdroid在启动时会进行严格的验证,确保只有经过验证的系统映像才能启动。这一过程涉及到对boot.imgsuper.imgvbmeta.img等关键分区的验证,确保它们没有被篡改。

  • 应用安全:Microdroid不会启动任何未经验证的APK。它通过检查APK的签名来确保应用的安全性,防止恶意软件的运行。

  • 数据完整性:Microdroid确保了系统数据的完整性。任何对instance.img的未授权修改都会导致系统无法启动,或者在启动时处于一个干净的初始状态。

  • 加密存储:Microdroid支持加密存储,保护写入到存储卷的数据不被未授权访问。虽然在加密块粒度级别不提供回滚保护,但任何对数据块的篡改都会导致数据对Microdroid不可读。

  • DICE证书链:Microdroid使用DICE证书链和复合设备标识符(CDI)来确保每个pVM实例的唯一性和安全性。这些证书和标识符只能由特定的实例衍生,为每个pVM提供了一个独特的安全身份。

Microdroid的设计哲学是“安全优先”,它通过简化的操作系统环境减少了潜在的攻击面,同时提供了必要的Android系统服务和API,使得开发者可以更容易地将应用迁移到这个安全的执行环境中。这种设计不仅提高了应用程序的安全性,也为整个Android生态系统的安全做出了贡献。随着移动设备在现代社会中扮演的角色越来越重要,Microdroid及其背后的安全机制将成为保护用户数据和隐私的关键。

VirtualizationService

它负责管理在Android系统上运行的多个客户机虚拟机(无论是否受保护)的crosvm实例。
提供了一个公开的AIDL API,允许系统服务或应用启动、监控和停止虚拟机。

虚拟机生命周期

  • 虚拟机的生命周期由IVirtualMachine对象的引用跟踪。
  • 如果所有IVirtualMachine对象的引用都被丢弃,VirtualizationService将自动停止虚拟机。
  • 每个虚拟机由自己的crosvm实例管理,VirtualizationService代表客户端管理这些实例。

虚拟机打包

  • crosvm支持通过提供内核和initrd或引导加载程序来启动虚拟机。
  • 支持添加任意数量的磁盘映像,可以是原始映像或分区组合。
  • VirtualizationService按需构建复合磁盘映像,以确保crosvm可以访问分区映像文件。

虚拟机套接字(vsock)

  • pVM之间的通信主要通过vsock进行,它是一个标准的Virtio套接字接口。
  • 每个虚拟机由一个唯一的32位上下文标识符(CID)标识。
  • CID在虚拟机运行时唯一,但可以在虚拟机终止后被回收。

调试界面

  • 提供了vm命令,允许开发者从shell启动、查看日志和终止虚拟机。
  • 虚拟机可以在可调试(FULL)或不可调试(NONE)模式下启动。
  • 可调试的虚拟机允许查看操作系统级日志、访问adb shell,以及捕获崩溃转储或应用载荷。

VirtualizationService的设计旨在为Android上的虚拟机提供全面的生命周期管理,同时为开发者提供灵活的调试选项。通过这个服务,应用和服务能够有效地与虚拟机交互,无论是在开发、测试还是生产环境中。

AVF安全要点

  1. 分层安全方法

    • AVF采用分层安全方法,每一层都提供额外的强制执行功能,以防止在pVM中运行任意载荷。
  2. 安全层

    • Android系统:确保只有具有pVM权限的应用才能创建或检查pVM。
    • 引导加载程序:确保只有由Google或设备供应商签名的pVM映像才能启动。
    • pVM:为运行在pVM中的载荷提供纵深防御,例如使用SELinux,防止数据映射为可执行文件,并确保W^X适用于所有类型的文件。
  3. 安全模型

    • 包括机密性、完整性和可用性(CIA),旨在提供信息安全政策指南。
  4. 机密性和完整性

    • 机密性源自pKVM Hypervisor强制执行的内存隔离属性。
    • 完整性适用于内存和计算中的数据,确保pVM无法未经同意修改彼此的内存或影响CPU状态。
  5. Hypervisor

    • pKVM基于KVM Hypervisor,用于将pVM和Android隔离到互不信任的执行环境中。
  6. 客户机OS

    • Microdroid作为在pVM中运行的OS示例,由引导加载程序、GKI、Android用户空间和载荷启动器组成。
  7. Android主机

    • 维护客户机pVM无法与其他pVM直接交互的属性,只有主机pVM中的VirtualizationService才能建立与另一pVM的通信通道。
  8. 可用性

    • 指主机为客户机分配足够的资源以执行其任务。pKVM将工作负载调度工作委托给主机内核。
  9. 安全启动

    • 确保对实例数据的访问可控制,通过随机生成秘密信息盐和提取加载映像中的详细信息来验证pVM实例的后续启动。
  10. 已解锁的设备

    • 使用fastboot oem unlock解锁设备时,会擦除用户数据和pVM的专用数据,使得已解锁设备上的pKVM不可信。

这些要点概述了AVF如何通过多层次的安全措施来保护虚拟机的机密性、完整性和可用性,以及如何通过安全启动和设备锁定状态管理来增强安全性。

AVF应用场景

Android虚拟化框架(AVF)的应用场景广泛,它可以为多种用例提供安全、隔离的执行环境。以下是一些主要的应用场景:

  1. 应用隔离

    • 在需要隔离敏感应用或多用户环境中,AVF可以用来隔离运行特定应用的实例,以保护用户数据和提高安全性。
  2. 多用户环境

    • 在共享设备或企业环境中,AVF可以为不同的用户或用户组创建隔离的虚拟环境,确保数据隔离和安全性。
  3. 安全支付处理

    • 对于需要处理敏感支付信息的应用,AVF可以提供一个安全的执行环境,减少恶意软件和攻击者窃取数据的风险。
  4. 企业安全

    • 企业可以使用AVF来隔离工作和个人数据,或者为特定的企业应用创建安全的执行环境。
  5. 开发和测试

    • 开发者可以利用AVF进行应用的测试和调试,无需担心影响设备上其他应用或系统的正常运行。
  6. 教育用途

    • 在教育领域,AVF可以为学生提供隔离的学习环境,同时允许教师监控和控制学生的学习进度。
  7. 安全研究和逆向工程

    • 安全研究人员可以使用AVF来隔离和分析恶意软件,避免对主系统造成损害。
  8. 游戏和多媒体内容

    • 对于需要高安全性的版权保护游戏和多媒体内容,AVF可以提供一个受控的执行环境,防止盗版和非法分发。
  9. 物联网(IoT)设备管理

    • 在IoT场景中,AVF可以用于隔离运行在设备上的不同服务和应用,提高设备的整体安全性。
  10. 车载系统(IVI)

    • 在车载信息娱乐系统中,AVF可以用于隔离不同的系统组件,如导航、娱乐和车辆控制,以确保关键系统的安全性。
  11. 远程桌面和虚拟工作站

    • AVF可以用于提供远程桌面服务或虚拟工作站,使用户能够安全地访问企业资源。
  12. 应急响应和数字取证

    • 在应急响应和数字取证中,AVF可以用于隔离可疑的文件和系统,进行安全分析。
  13. 合规性和审计

    • 对于需要满足特定合规性要求的应用,AVF可以提供一个受控的环境,以便于审计和合规性检查。
  14. 云服务和服务器虚拟化

    • 虽然AVF主要用于移动设备,但其核心虚拟化技术也可以应用于服务器和云服务,提供隔离的虚拟环境。

AVF通过提供一个灵活、安全的虚拟化解决方案,满足了现代移动设备对于安全性和隔离性的多样化需求。随着技术的发展,AVF的应用场景将继续扩展,为更多领域提供支持。

10. 结语

AVF的安全特性为移动设备提供了强大的保护。通过其分层安全方法、机密性、完整性和可用性的维护,以及Hypervisor和客户机OS的安全特性,AVF确保了移动设备在面对日益复杂的威胁时,能够保持安全和可靠。随着技术的不断进步,我们期待AVF能够继续为移动设备的安全性提供更多的创新和改进。


这篇文章是一个技术博客,旨在向读者介绍Android虚拟化框架(AVF)的安全特性。文章通过生动具体的语言,详细解释了AVF如何通过其分层安全方法保护移动设备免受攻击。希望这篇文章能够帮助读者更好地理解AVF的重要性和其在移动安全领域的作用。


http://www.kler.cn/a/373424.html

相关文章:

  • ARM base instruction -- bfc
  • 【更新】cyのLastDance - Chapter2(20241030~)
  • 瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了
  • k8s部署redis远程连接示例
  • 接口测试(八)jmeter——参数化(CSV Data Set Config)
  • CSP/信奥赛C++刷题训练:经典前缀和例题(4):洛谷P3662:Why Did the Cow Cross the Road II S
  • 理解 CSS 中的绝对定位与 Flex 布局混用
  • 电子电气架构 --- 车载芯片现状
  • 在Vue 3项目中集成normalize.scss
  • 通过Promise和async/await解决异步操作 - 2024最新版前端秋招面试短期突击面试题
  • Vue中Axios和VantUI的基础使用
  • Vue3+element-ui 实现可编辑表格,鼠标右键自定义菜单(复制行列,粘贴行列,插入删除等)
  • 我自己的资料整理导引(一):概论
  • webpack+react中问题解决
  • 大模型,多模态大模型面试问题记录【时序,Qformer,卷积,感受野,ControlNet,IP-adapter】
  • Redis-事务、锁
  • Upload-labs靶场Pass-20
  • mfc | mfc集成opencv,实现摄像头监控、拍照、视频图像处理(亮度、对比度、色调、饱和度)功能
  • android OpenGL ES详解——双缓冲区、默认缓冲区和帧缓冲区
  • BeaverTail恶意软件在针对开发人员的恶意npm包中重新出现!研究人员发现开源人工智能和人工智能模型的漏洞 | 安全周报1031
  • Python学习的自我理解和想法(22)
  • 使用ubuntu On windows安装docker
  • C语言基本概念----字节与对齐
  • 计数问题[NOIP2013]
  • traceroute或tracepath区别
  • SpringCloud笔记