27、Android 设备磁盘加密全解析

Android 设备磁盘加密全解析

1. 密钥推导

在 Android 系统中,磁盘加密密钥(在 Android 源代码中称为“主密钥”)会使用另一个 128 位的 AES 密钥(KEK)进行加密,而这个 KEK 是从用户提供的密码推导而来的。
- PBKDF2 算法(Android 3.0 - 4.3) :在 Android 3.0 到 4.3 版本中,使用的密钥推导函数是 PBKDF2,迭代次数为 2000 次,并且使用 128 位的随机盐值。推导得到的加密主密钥和盐值会与其他元数据(如解密失败尝试次数)一起存储在加密分区最后 16KB 的页脚结构中,这个结构被称为加密页脚。将加密密钥存储在磁盘上,而不是直接使用从用户提供的密码推导的密钥,这样可以快速更改解密密码,因为只需要使用从新密码推导的密钥对主密钥(16 字节)进行重新加密。然而,按照如今的标准,PBKDF2 使用的 2000 次迭代次数并不足够多。而且,PBKDF2 是一种迭代算法,基于标准且相对容易实现的哈希函数,这使得 PBKDF2 密钥推导可以并行化,充分利用多核设备(如 GPU)的处理能力,即使是相当复杂的字母数字密码短语,也可能在几天甚至几小时内被暴力破解。
- scrypt 算法(Android 4.4 及以后) :为了增加暴力破解磁盘加密密码的难度,Android 4.4 引入了对新的密钥推导函数 scrypt 的支持。scrypt 采用的密钥推导算法专门设计为需要大量内存以及多次迭代(这种算法被称为内存密集型),这使得在专用硬件(如 ASIC 或 GPU)上进行暴力攻击变得更加困难,因为这些硬件通常内存有限。scrypt 可以通过指定可变参数 N

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值