验证的启动

介绍


Android 4.4和兴许版本号通过可选的dm-verity内核特征来支持验证启动,其会提供透明的块设备的完整性检查.dm-verity能帮助阻止root组件,该组件可以获取root特权.该实验特征可以帮助在启动设备的时候检查是否和上次使用过的一样.

带有root特权的聪明的恶意软件可以隐藏检測程序,因此可以隐藏他们自己.root软件可以这样做,由于他们比检測程序有很多其它特权,使得软件向检測程序"说谎".

dm-verity特征使你看到一个块设备,文件系统底层的存储层,而且决定是否匹配他的期望的配置.他们使用一个password哈希树来实现.对于每个块(一般是4K),都有一个SHA256的哈希.

由于哈希值被保存在一个页面树中,仅仅有顶层的"root"哈希才干被信任来验证树的其它部分.改动块的能力应该和打破加密哈希是对等的.查看以下的图表来看一下结构的描写叙述.


验证的启动

                                                       dm-verity哈希表

一个公钥被包括在boot分区中,该分区必需要被OEM在外部被验证.该密钥用于验证该散列的签名。并确认该设备的系统分区是受保护的,而且是不变的。

先决条件


确定一个验证的启动流

为了大大减少妥协的风险,使用一个烧录到设备中的密钥来验证内核.具体的细节,在后面的文章"验证启动"中介绍.

转向面向块的OTA

为了使能设备的dm-verity,必需要使用基于块的OTA更新来确保全部的设备都使用同样的系统分区.很多其它的细节,是文章"基于块的OTA"中介绍的.

配置dm-verity

在转向面向块的OTA之后,组合最新的Android内核或者是使用上升的内核,而且通过包括相关配置选项CONFIG_DM_VERITY来打开dm-verity支持.

当使用Android内核的时候,dm-verity在内核被构建的时候打开.很多其它细节,将会在兴许文章"实现dm-verity"中讲述.