Android 设备中是否有与 Apple 加密芯片等效的产品?

信息安全 加密 安卓 蛮力 密码破解
2021-09-04 11:11:38

Apple 有一个加密芯片,除了管理加密密钥之外,它还提供隧道身份验证并提供对失败尝试的限制,以及在多次失败的身份验证尝试后触发设备擦除的能力。这允许使用 4 位 PIN 实现合理的安全性。

我没有找到任何关于在基于 Android 的设备中存在这种硬件机制的信息。最接近的可能是TEE(可信执行环境)

TEE 是智能手机(或任何连接的设备)中主处理器的安全区域。它确保敏感数据在隔离、可信的环境中存储、处理和保护

我的理解是,这本质上是一个TPM的实现,它只保护加密密钥,特别是不处理身份验证本身。

在这种情况下,Android 如何确保在离线攻击期间不会绕过对失败的身份验证尝试的限制?

具体来说:

  • 无法解密从设备中提取的裸盘(TEE 生成的密钥是健壮的)
  • 必须防止在 TEE 的帮助下解密设备中的磁盘 - 在给定次数的尝试后通过节流或擦除。

我正在寻找对后者实现的描述。

注意:我知道存在有助于绕过安全设置的安全漏洞。这发生在任何地方和每台设备上,并有望通过补丁修复。这不是我的问题的主题——我对旨在防止看似不安全的身份验证机制的硬件机制特别感兴趣(在没有这些系统的情况下,4 位 PIN 就是一个例子)。

编辑:另见关于 TEE 本身的答案(作为上述问题的补充)

2个回答

Android 如何确保在离线攻击期间不会绕过对失败的身份验证尝试的限制?

AndroidKeyStores可以是基于 android N 之前的硬件或软件,这使得硬件KeyStore成为CTS中的必备项。

编辑:在下面我使用术语在线攻击作为属性

在线实体可以执行额外的安全检查以使协议更安全。例如,在线实体可以调节登录尝试的次数和速度(来自另一个 SO q

...而不是通过远程网络进行。也许我没有以常见的方式使用它,但对我来说,关于在线攻击的有趣特性是攻击者和被攻击的数据之间存在一层不受攻击者控制的层。在这种情况下,该层是远程网络服务器还是某些本地硬件并没有太大区别,因为两者都可以执行速率限制,除非物理芯片受到攻击/检查,这将是完全不同的攻击类别。

这个SO 答案实际上有一个更接近我正在使用的定义

在线攻击尝试自动例程向合法系统提供输入。他们不是要在功能上创建漏洞,而是滥用预期的功能。

离线攻击试图模拟加密/散列并需要该过程的已知输出(即,您不攻击系统,您已经拥有散列/加密密码)

如果基于硬件,私钥应该可以在KeyStore没有复杂的物理攻击(可能是电子显微镜或 TEE/TPM 暴露的一些黑匣子漏洞)中提取。这是一种在线攻击。您希望 TEE/TPM 实现节流。

编辑我刚刚测试了 nexus 6p KeyStoreimpl 并且没有对一般Cipher操作进行限制(正在查看是否为 RSA 暴露了填充预言)。但是,我还没有测试KeyStore主解锁的速率限制。

如果基于 root 的软件,KeyStoreblob 可以被提升并可能被暴力破解。这是离线攻击,不会发生限制。

在回答您的问题时,就其本质而言,它无法确保限制离线攻击。

我所知道的最接近的是Google 的 project Vault这是一个在锁定的 SD 卡内有一个辅助 CPU 的系统,它执行所有敏感过程和密钥处理。谷歌希望将系统融入安卓 API,以便任何带有 SD 读卡器的安卓设备都可以使用该芯片。

有一些公司声称他们正在做同样的事情,但研究人员仍在这些系统中发现缺陷,这看起来是迄今为止为安卓提供强大安全性的最有希望的途径。