HeadlinesBriefing favicon HeadlinesBriefing.com

Secure Enclave 阻止 macOS Tahoe 钥匙串复制

Hacker News •
×

我最近在 macOS 上遇到了登录钥匙串的问题。登录钥匙串会为每个用户账户自动创建,其密码与登录密码相同。它以加密数据库文件的形式存储,并在用户登录时自动解锁。自 macOS Tahoe 起,登录钥匙串是一个名为 login.keychain-db 的 SQLite 数据库文件,存储在 `/Users/username_goes_here/Library/Keychains` 中。过去,你可以将登录钥匙串文件从一台 Mac 复制到另一台 Mac,并通过提供密码在目标 Mac 上打开它。自 macOS Tahoe 起,对于使用 Secure Enclave 的 Mac,这种方法不再有效。对于这些 Mac,仅拥有密码已不再足够。根据 Apple 的平台安全文档,钥匙串项目使用两个 AES-256-GCM 密钥进行加密:一个元数据密钥和一个逐行密钥。元数据密钥受 Secure Enclave 保护,但缓存在应用处理器中。密钥始终需要通过 Secure Enclave 进行一次往返。因此,解锁登录钥匙串需要的不仅仅是密码,因为这些密钥与创建钥匙串的那台 Mac 的 Secure Enclave 绑定。我通过将一个 login.keychain-db 文件从一台 Apple Silicon Mac 复制到一台 macOS 虚拟机(该虚拟机没有 Secure Enclave)来测试这一点。在替换虚拟机的 login.keychain-db 并重启后,当我登录时,系统自动创建了一个新的登录钥匙串文件,而不是解锁复制过来的那个。