声明
- 最近工作上涉及到对Android系统安全性的改造,在改造之前先分析整理下目前Android系统自身的安全性;
- 参考了一些文章及书籍,在这里大部分是对别人描述的提炼,我挑出一些对我有用的内容整理;
1 系统启动各阶段的验证
系统启动过程中有一条信任链,从ROM到Boot Loader,再到内核和root文件系统(也就是boot分区)。
Android通过使用device-mapper-verity (dm-verity)提供了启动验证,它提供透明的设备完整性检查dm-verity帮助阻止那些拥有 Root 特权的 Rootkit。此项机制确保 Android 设备完全启动的时候,呈现在Android用户面前的是一个安全可用的系统。
用户恶意程序都知道存在此检查机制,所以一些拥有了 Root 权限的恶意程序会隐藏自身防止被检查到。
所以,dm-verity 特性就是让你在浏览到设备模块的同时也能够看到是否存在一些文件或程序,并确定它是否符合其预期的配置。它使用的是加密哈希树,每一块(通常是 4KB),有一个SHA256 哈希。
2 磁盘加密(加密/data分区)
Android系统目前采用的加密机制为dm-crypt机制&#