验证的启动
2016-02-25 16:42
351 查看
介绍
Android 4.4和后续版本通过可选的dm-verity内核特征来支持验证启动,其会提供透明的块设备的完整性检查.dm-verity能帮助阻止root组件,该组件能够获取root特权.该实验特征能够帮助在启动设备的时候检查是否和上次使用过的一样.带有root特权的聪明的恶意软件能够隐藏检测程序,因此能够隐藏他们自己.root软件可以这样做,因为他们比检测程序有更多特权,使得软件向检测程序"说谎".
dm-verity特征使你看到一个块设备,文件系统底层的存储层,并且决定是否匹配他的期望的配置.他们使用一个密码哈希树来实现.对于每一个块(通常是4K),都有一个SHA256的哈希.
由于哈希值被保存在一个页面树中,只有顶层的"root"哈希才能被信任来验证树的其他部分.修改块的能力应该和打破加密哈希是对等的.查看下面的图表来看一下结构的描述.
![](https://source.android.com/security/images/dm-verity-hash-table.png)
dm-verity哈希表
一个公钥被包含在boot分区中,该分区必须要被OEM在外部被验证.该密钥用于验证该散列的签名,并确认该设备的系统分区是受保护的,并且是不变的。
先决条件
确定一个验证的启动流
为了大大降低妥协的风险,使用一个烧录到设备中的密钥来验证内核.详细的细节,在后面的文章"验证启动"中介绍.
转向面向块的OTA
为了使能设备的dm-verity,必须要使用基于块的OTA更新来确保所有的设备都使用相同的系统分区.更多的细节,是文章"基于块的OTA"中介绍的.
配置dm-verity
在转向面向块的OTA之后,组合最新的Android内核或者是使用上升的内核,并且通过包含相关配置选项CONFIG_DM_VERITY来打开dm-verity支持.当使用Android内核的时候,dm-verity在内核被构建的时候打开.更多细节,将会在后续文章"实现dm-verity"中讲述.
相关文章推荐
- Yii使用find findAll查找出指定字段的实现方法
- Android TextView 单行文本的坑
- mui学习笔记
- Android的SimpleCursorAdapter出错
- PHP基础(命名错误)错误导致的500
- iOS本地搜索(谓词)
- 基于Saltstatck实现页面实时显示tomcat启动日志(17)
- MFC只修改字体的大小,无需重新设置字体类型
- com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
- PHP基础(命名错误)错误导致的500
- yii 数据库添加,修改,删除相关操作总结
- jQuery UI - draggable 中文API
- 彻底明白Android中AIDL及其使用
- Cannot create a session after the response has been committed 响应提交后无法创建会话
- Android状态栏的颜色XIUGAI
- Tomcat 调优
- ios 关于开源框架GPUImage的简单说明
- Error:Error converting bytecode to dex: Cause: java.lang.RuntimeException: Exception parsing classes
- highcharts 一个不容易注意到的细节问题
- Java GC系列(3):垃圾回收器种类