标签:
Android 4.4和后续版本通过可选的dm-verity内核特征来支持验证启动,其会提供透明的块设备的完整性检查.dm-verity能帮助阻止root组件,该组件能够获取root特权.该实验特征能够帮助在启动设备的时候检查是否和上次使用过的一样.
带有root特权的聪明的恶意软件能够隐藏检测程序,因此能够隐藏他们自己.root软件可以这样做,因为他们比检测程序有更多特权,使得软件向检测程序"说谎".
dm-verity特征使你看到一个块设备,文件系统底层的存储层,并且决定是否匹配他的期望的配置.他们使用一个密码哈希树来实现.对于每一个块(通常是4K),都有一个SHA256的哈希.
由于哈希值被保存在一个页面树中,只有顶层的"root"哈希才能被信任来验证树的其他部分.修改块的能力应该和打破加密哈希是对等的.查看下面的图表来看一下结构的描述.
一个公钥被包含在boot分区中,该分区必须要被OEM在外部被验证.该密钥用于验证该散列的签名,并确认该设备的系统分区是受保护的,并且是不变的。
为了大大降低妥协的风险,使用一个烧录到设备中的密钥来验证内核.详细的细节,在后面的文章"验证启动"中介绍.
为了使能设备的dm-verity,必须要使用基于块的OTA更新来确保所有的设备都使用相同的系统分区.更多的细节,是文章"基于块的OTA"中介绍的.
在转向面向块的OTA之后,组合最新的Android内核或者是使用上升的内核,并且通过包含相关配置选项CONFIG_DM_VERITY来打开dm-verity支持.
当使用Android内核的时候,dm-verity在内核被构建的时候打开.更多细节,将会在后续文章"实现dm-verity"中讲述.
标签:
原文地址:http://blog.csdn.net/hongbochen1223/article/details/50738864