Android安全之DM-verity中的Device Mapper机制分析

本文详细探讨了Android系统中的DM-verity机制,这是一种利用Device Mapper实现的存储区块设备的校验技术,确保数据在传输和存储过程中未被篡改。文章介绍了Device Mapper的基本概念、工作原理,包括Mapped Device、Mapping Table和Target Device等关键组件,并阐述了DM-verity如何在Linux内核中实现数据完整性检查。同时,文中还分析了Device Mapper的设备创建流程和IO处理流程,为理解Android系统的安全性提供了深入见解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 我们想法:
    1. 能不能将多个硬盘,映射成一个逻辑的硬盘,那样我们程序就不用关心复杂的地址问题了,也不用关系是哪个device了? DM-raid技术RAID全称为独立磁盘冗余阵列(Redundant Array of Independent Disks)
    2. 将某个地址段的数据进行加密,只有授权方式才可访问,比如FDE DM-crypt技术
    3. 访问存储介质上的数据时,校验下是否被篡改过。DM-verity技术。

 

总结一下:DM就是Device-Mapper的缩写,也就说上述的想法都可以基于Device Mapper实现,Device Mapper可不仅仅实现了这些,还包括LVM2DM-multipach等。

 

  • 什么是Device Mapper?
    1. Device Mapper Linux 2.6内核中提供的一种将物理块设备的映射虚拟(逻辑)块设备的框架机制,在该机制下,开发者可以很方便的根据自己的需要制定实现存储资源的管理策略,比如过滤、IO重定向、dm-verity这种hash tree的校验、raid多个磁盘管理等。
    2. Device Mapper在内核中是以一个块设备注册的。映射到Device Mapper框架上的物理设备,通过映射时所选择的方式进行IO处理。
    3. Device mapper本质功能就是根据映射关系和target driver描述的IO处理规则,将IO请求从逻辑设备mapped device转发相应的target device上。

 

举例:我将system分区以dm-verity target方式映射到devicemapper上,当用户程序访问system数据时,要通过device mapper的规则后才能转发到system分区上。

 Device Mapper处于LinuxStorage Stack位置:

 



 

简单点:

 

 


 

  • 理论部分:

Device Mapper在内核中的体系架构:


 

 

从上图就可以看出,Device Mapper有三部分组成,分别有Mapped DeviceMapping TableTarget Device,说此图的时候必须说一下内核设计的哲学,内核设计经常将一个框架实现,给用户态提供尽量少、简单接口来下发策略,内核根据用户态下发策略运行相应机制。Device Mapper机制也不例外:

Mapped Device:又称MD,注意不是DMMD是一个逻辑的抽象设备,用户态可以通过IOCTL访问操作,它通过Mapping Table描述的映射关系与Target Device建立映射关系。

Mapping Table:描述了Target DeviceMapped Device的映射关系,其中最核心的是其指定了这种映射关系使用了何种Target Driver

Target Driver:其实严格的说,这不是Device Mapper框架的一部分,因为Target Driver以插件的方式插入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值