如何破解(获取秘密)Android Keystore System

信息安全 加密 安卓 密钥管理
2021-08-30 15:15:46

我正在寻找保护 Android 设备中敏感数据(例如密钥或私钥)的最佳方法,并找到了Android Keystore System根据文档,可以将密钥材料绑定到 Android 设备的安全硬件(例如,可信执行环境 (TEE)、安全元件 (SE))。这意味着并非所有 Android 设备都支持此功能。一些文章将此方法命名为硬件支持的存储。如果设备不支持安全硬件,则将其存储在内部存储中,一些文章将此称为软件支持的存储。

根据这篇文章,软件支持的存储被放置在/data/misc/keystore/user_0其中,这意味着它暴露在有根设备中。是否有任何 PoC 对根设备不安全?具体来说,如何在这些软件支持的安全存储中提取秘密?

1个回答

强框、硬件支持的密钥库和软件支持的密钥库无法保护敏感数据免受 root 用户的破坏。Keystore 保存应用程序的加密 blob,用于加密、签名、证明和身份验证。任何具有 root 权限的应用程序都可以模拟其他应用程序,并通过代表其他应用程序和系统发出合法请求,将其敏感数据由密钥库解密或签名。

无论敏感数据的安全程度如何,都必须将其加载到内存中才能被应用程序使用。root 用户的代码注入可以转储内存中应该保护的任何内容。硬件支持的密钥库和强大的盒子可以做的是安全地验证设备完整性,例如信任链是否是自定义的、引导加载程序是否已解锁、OEM 公钥的散列、/vbmeta图像的散列等。然后他们可以使用他们的私有密钥来验证这些信息密钥并将其发送到 Web 服务。Root 无法在不知道其私钥或 Google 认证的公钥的情况下篡改 TEE 签名数据。

如果设备完整性被破坏,Web 服务可以拒绝为客户端提供服务。软件支持的密钥库无法验证设备完整性,因为其私钥在防篡改隔离存储中不受保护。软件支持的密钥库密钥可以在/data/misc/keystore/user_0/. 密钥使用屏幕锁定密码/图案/密码加密,但如果您删除此锁定,密钥将被解密。软件支持的密钥库已从 android 7+ 中弃用。