密封密钥保护 (SKP)
在支持数据保护的 Apple 设备上,密钥加密密钥 (KEK) 既受系统上软件测量值的保护(或密封),又与只能从安全隔区获得的 UID 绑定。在搭载 Apple 芯片的 Mac 上,对 KEK 的保护通过整合有关系统安全性策略的信息进一步得到了加强,因为 macOS 支持其他平台不支持的关键安全性策略更改(例如,停用安全启动或 SIP)。在搭载 Apple 芯片的 Mac 上,由于文件保险箱的实施使用数据保护(C 类),此保护涵盖文件保险箱密钥。
由用户密码与长期 SKP 密钥和硬件密钥 1(安全隔区的 UID)配合使用而生成的密钥称为密码派生密钥。此密钥用于保护用户密钥包(在所有支持的平台上)和 KEK(仅限在 macOS 中),然后启用生物识别解锁或使用其他设备(如 Apple Watch)自动解锁。
安全隔区启动监视器会捕获所加载的安全隔区操作系统的测量值。当应用程序处理器 Boot ROM 测量附于 LLB 的 Image4 清单时,该清单也包含所有其他已加载的系统配对固件的测量值。LocalPolicy 包含已加载 macOS 的核心安全性配置。还包含 nsih
字段,它是 macOS Image4 清单的哈希值。macOS Image4 清单包含所有与 macOS 配对的固件和 macOS 核心启动对象(如启动内核集或签名系统宗卷 (SSV) 根哈希值)的测量值。
如果攻击者能够意外地更改任何上述测量的固件、软件或安全性配置组件,则也会修改储存在硬件寄存器中的测量值。测量值的修改会导致从加密硬件派生的系统测量根密钥 (SMRK) 派生出不同的值,从而有效破坏密钥层级的封章。这将导致无法访问系统测量设备密钥 (SMDK),从而导致无法访问 KEK,因此也无法访问数据。
但是,系统在未受到攻击时,必须容纳合法的软件更新,这些更新会更改固件测量值和 LocalPolicy 中的 nsih
字段,以指向新的 macOS 测量值。在其他尝试整合固件测量值但没有已知真实来源的系统中,用户将被要求停用安全性,更新固件后重新启用安全性,以便捕获新的测量基线。这大大增加了攻击者在软件更新期间篡改固件的风险。Image4 清单包含所需的所有测量值,这对系统很有帮助。正常启动期间如果测量值匹配,使用 SMRK 解密 SMDK 的硬件也可以将 SMDK 加密为所建议的将来的 SMRK。通过指定软件更新后预期的测量值,硬件可以加密在当前操作系统中可访问的 SMDK,以便在将来的操作系统中仍可访问。同样地,当客户在 LocalPolicy 中合法更改其安全性设置时,必须根据 LLB 下次重新启动时计算的 LocalPolicy 测量值,将 SMDK 加密为将来的 SMRK。