iPhone 上的 Secure Enclave 是什么?
iPhone 里一台独立的小电脑,它的工作就是保管那些从不外交的密钥。
简要回答
Secure Enclave(安全隔区)是从 iPhone 5s 起内置于 iPhone 芯片中的专用安全子系统,与主处理器相互隔离。它保护面容 ID 和触控 ID 数据以及 iPhone 加密背后的密钥,其设计目标是即使主操作系统遭到入侵,也能保证这些数据安全。App 可以请求它创建和使用密钥,但永远无法把这些密钥读出来。
要点
- 它有自己的处理器、受保护的内存和安全启动。
- 它帮助执行密码尝试次数的限制。
- App 可以使用其中的密钥,但无法把密钥取出。
电脑里的一台电脑
iPhone 的主处理器运行 iOS 和所有 App。Secure Enclave 则独立于这一切:它是一颗专用处理器,运行自己的小型操作系统,内存经过加密和认证,芯片的其他部分无法读取或篡改。Apple 称,它的设计目标是即使 iOS 内核遭到入侵,也能保证敏感数据的安全。
从 iPhone 5s 起的每一部 iPhone 都配备了它,iPad、搭载 Apple 芯片的 Mac、Apple Watch 和其他 Apple 设备中也有。
它保护什么
- 面容 ID 和触控 ID 数据,它们在 Secure Enclave 内部处理和保护,并与你的设备绑定。
- 数据保护背后的密钥。iPhone 文件加密背后的密钥层级中,包括一把在制造时熔刻进芯片的唯一密钥,Apple 表示,Apple 及其供应商都无法获取这把密钥。
- 你的密码。解锁尝试都要经过 Secure Enclave;在较新的设备上,一个专用的安全存储组件会对尝试次数计数,一旦超过上限(例如 iPhone 上为 10 次),就会抹掉受保护的数据。
能用却看不见的密钥
核心思路很简单。Secure Enclave 有自己的加密引擎,其硬件密钥始终留在内部,连 Secure Enclave 自己的软件都碰不到。系统的其余部分可以请它加密或解密,并拿回结果,但永远无法索要密钥本身。
App 能用它做什么
App 可以请 Secure Enclave 创建一把私钥并保管它。App 从不以明文形式持有这把密钥:它把数据送进去,再接收输出结果,比如一个签名,或用于加密的密钥交换结果。App 还可以要求在使用密钥之前先通过面容 ID、触控 ID 或密码验证。Apple 的开发者文档列出了其中的取舍:
- 只有一种密钥:256 位椭圆曲线密钥(NIST P-256),用于签名和密钥协商,并借此用于加密。
- 不能导入:密钥必须在 Secure Enclave 内部创建。没有任何办法把明文密钥移进或移出。
- 仅限一台设备:只有创建密钥的那个 Secure Enclave 才能使用它。
它做不到什么
Secure Enclave 保护的是密钥,而不是屏幕上显示的内容。iPhone 一旦解锁,App 就会正常读取数据,任何拿着这部已解锁手机的人,都能看到这些 App 显示的内容。而且,由于它的密钥从不离开设备,仅靠这些密钥保护的数据无法跟着你迁移到新 iPhone:依赖 Secure Enclave 的 App,需要另一种安全的恢复方式。
Latent 如何使用它
Latent 用保存在 Secure Enclave 中的一把密钥来保护每个保险箱密钥,并由你的图案或密码解锁。把 App 的文件从手机上复制出来,得到的只是加密数据,别无其他。由于这把密钥无法离开你的 iPhone,在新 iPhone 上恢复保险箱时,使用的是你的九个单词的恢复短语。