Android L 加密与 iOS 8 加密

信息安全 安卓 IOS
2021-09-02 03:03:43

近日,苹果iOS 8操作系统全新全盘加密系统的消息不断传出在苹果发布后不久,谷歌宣布他们还将在即将推出的 Android 操作系统版本中默认启用加密。

我的问题是:从安全角度来看,这两个系统是相似还是不同(假设您使用相同的密码或 PIN 码)?Android 的加密到底是如何工作的?

更具体地说:如果我使用一个随机的 8 个小写字母密码,这大概需要大约 8 个小写字母。265 年来在 iOS 设备上的暴力破解,我在 Android 手机上使用类似的设置有多安全?


有关 Apple 在 iOS 8 中采用的方法的背景信息,请参阅此文档如果我理解正确,那么关键似乎是有一个特殊的防篡改硬件,其中包含特定于设备的秘密标识符。据推测,检索加密密钥的唯一方法是将您的 PIN 码输入该硬件,等待 80 毫秒,然后看看会发生什么。要强制执行此操作,您要么必须继续向这个唯一的硬件输入 PIN 码(每次尝试需要 80 毫秒,而且您无法并行化,因为世界上只有一个这样的芯片),或者您将还必须暴力破解标识符(很长)。

这与 Google(和 Android 手机制造商)在 Android 手机上所做的相比如何?

2个回答

目前,Android 的设备加密使用 dm-crypt并且确实似乎容易受到您提到的那种蛮力攻击,因为 PIN/密码或多或少直接用于派生解密存储在卷中的 AES 密钥的密钥标题。

为了防止这种暴力攻击,密码必须具有足够高的熵(就像在桌面加密系统上一样)。不幸的是,Android 不允许为磁盘解密和屏幕锁定设置不同的密码。不过,这只是一个 UI 限制:很容易使用强密码进行启动时磁盘解密,但这需要 root 访问权限。

然而,这可能会随着 Android L 而改变——目前还没有任何公开信息,但有人建议Android 将转向使用“受信任”硬件部分的方案,就像 iOS 所做的那样。

顺便说一句,您描述的 iOS 硬件密钥派生似乎已被使用 A7 SoC(或更新版本)的设备所取代。Apple 似乎在 Secure Enclave 内执行(和速率限制)PIN/密码验证,理论上这会更加安全。从您引用的文档中:

在配备 A7 或更高版本 A 系列处理器的设备上,密钥操作由 Secure Enclave 执行,它还会在重复的失败解锁请求之间强制执行 5 秒延迟。除了 iOS 强制执行的保护措施之外,这还提供了针对暴力攻击的调控器。

您必须等待整个 Android L 源代码发布才能确定(即使那样,这也可能必须由设备制造商实现),但截至目前,一些 Android 设备已经支持硬件非对称密钥的密钥库这种机制似乎是基于 ARM 的 TrustZone 执行环境,理论上可能会扩展到设备加密密钥,类似于 Apple 的 Secure Enclave 概念。

Android(块级加密)和 iOS(文件级加密)之间的不同加密架构在删除文件时会产生不同的行为:

  • 使用块级加密,当文件被删除时,文件系统将块与文件系统断开链接,但实际上并没有破坏数据。由于大多数 Android 设备使用包含“磨损均衡”的 NAND 闪存,因此通常不可能实际覆盖特定数据,因此可以取消删除敏感文件。
  • 使用文件级加密,当索引节点被取消链接时,每个文件的密钥都会被破坏,导致现在未引用的数据被有效地破坏,因此无法取消删除。