1、算法基础
算法基础参照linux的全盘加密与文件系统加密在android中的应用的2、预备知识
android系统安全特性用到加密算法的如下表:
|
消息摘要算法
|
对称加密算法
|
非对称加密算法
|
常见算法 | MD5、sha.1 | DES,RC,AES | RSA、ECC |
特性 |
密文固定长度、稍有改变密文完全不同、无法数据还原 |
加密可逆,加密解密使用相同密钥 | 加密解密使用不同密钥,公钥与私钥特性衍生加密传输,证书,数据验证等众多用途。 |
用途 | 验证数据完整性 | 加密存储、加密传输 | 加密传输、数据验证 |
android中的应用
| OTA包传输 dm-verity、fs-verity、selinux重编译判断、bootconfig数据check 签名验签中的校验数据完整性 |
全盘加密 文件级加密
| secure boot、AVB、OTA包签名、apk签名、apex、ko签名 |
2、消息摘要算法应用
3、对称加密算法应用
参照linux的全盘加密与文件系统加密在android中的应用(限免章节)
4、非对称加密算法应用
如何进行联网签名?
vbmeta如何与其它镜像产生验证关系,vbmeta存储公钥即可,为什么hash分区与hashtree分区也要存储公钥?
vbmeta的验证链结构
如何确认vbmeta有效性,(主vbmeta的boot hash描述符与boot分区里面的hash描述符关系)
load_and_verify_hash_partition函数中,只对hash分区的hash计算对比,没有签名验签?
为什么bootloader要在无vbmeta分区情况要validate_public_key_for_partition确认整个分区?
为什么使用chain链式结构?结合架构解耦思想,如何给域定制密钥?
为什么AVB_DESCRIPTOR_TAG_PROPERTY无处理?
按官网说明,顶多两层vbmeta结构,为什么load_and_verify_vbmeta使用递归?
5、加密算法与andorid问题汇总
算法在android上的应用还有很多,我们这里列的是在系统安全部分也就是底层BSP部分的应用。
数据完整性、真实性确认发布版本、程序无修改,来源可信。
涉及linux的dm-verity、fs-verity、dm-crypto、fs-crypto以及各种算法模块。