安卓设备加密

信息安全 加密 移动的 安卓
2021-08-14 06:25:48

我试图了解在 4.0.4 ICS (AES-CBC 128Bit) 中使用默认的 android 设备加密时,密钥派生函数如何工作?那就是如何将用户的解密密码转换为与解密一起使用的安全密钥?

解密密码是如何在设备上存储和散列的?

我正在尝试展示我们企业 Android 设备上的潜在漏洞点和缓解措施。

1个回答

Android Encryption Implementation Notes非常详细地描述了如何从 3.0 实现磁盘加密。当用户启用加密时,如果他们还没有设置密码,则需要设置密码。

主密钥是通过从 /dev/urandom 读取创建的 128 位数字。它使用 SSL 库中的 PBKDF2 函数创建的用户密码的哈希值进行加密。页脚还包含一个随机盐(也从 /dev/urandom 读取),用于将熵添加到来自 PBKDF2 的哈希中,并防止对密码的彩虹表攻击

然后将主密钥存储在加密分区的页脚中。大多数用于启动加密过程的代码都在 Android 的卷守护程序 Vold 中。如果您有完整的 AOSP 源代码,您可以查看 /system/core/vold/cryptfs.c,它实现了许多用于在 vold 中加密的命令以及用于验证和更改密码的命令。

这篇博文,Android Disk Encryption也对加密实施以及将主密钥的解密与用户输入的用于解锁设备的 pin/密码联系起来的含义有一些很好的见解。

希望这可以帮助。