正如现在的任何人一样,我拥有大量密码,并且记住它们真的很麻烦,特别是当您还必须记住数据库和服务器密码时。
我正在考虑使用 OSX 自带的钥匙串应用程序来存储这些内容,这是一个好主意吗?它安全吗?
我知道,如果 A)有权访问机器并且 B)您输入机器的用户登录密码,它才会以纯文本形式显示密码 - 因此从前端来看似乎没问题,但在后端是否安全?
答案1
我知道,只有当 A)有权访问机器且 B)输入机器用户登录密码时,它才会以纯文本形式显示密码
B 适用于 Keychain Access,但并不适用于一般的安全系统。如果登录钥匙串已解锁(就像您登录时默认解锁一样),您可以使用它security
查看登录钥匙串中的所有密码,而无需输入任何密码:
security dump-keychain -d ~/Library/Keychains/login.keychain
security find-internet-password -s accounts.google.com -w
您只需按下允许按钮,密码就会以纯文本显示。实际上,当您尝试显示密码时,Keychain Access 和 Safari 确实需要输入钥匙串的密码,这很奇怪(而且具有误导性)。
有至少有三种方法可以重置登录密码在单用户模式或从恢复分区。但是,它们都没有重置登录钥匙串的密码。如果您在重置登录密码后尝试登录,您将无法在登录钥匙串中看到任何密码,无法在 Safari 中使用自动填充功能,也无法在 Mail 中自动登录。但是,如果您使用 Gmail 地址作为 Apple ID,您已在 Gmail 的 Web 界面中启用自动登录,并且您没有对 Apple ID 使用两步验证,那么攻击者可以使用 Gmail 帐户重置 Apple ID 密码。如果在“用户和组”偏好设置窗格中启用了“允许用户使用 Apple ID 重置密码”选项,那么攻击者就可以使用 Apple ID 重置登录钥匙串的密码。
登录密码的哈希值存储/var/db/dslocal/nodes/Default/users/username.plist
在 10.7 和 10.8 中。如果你的登录密码(通常也是登录钥匙串的密码)足够简单,那么哈希值可以在很短的时间内被破解,戴夫·格罗尔:
$ sudo dave -u $USER
-- Loaded PBKDF2 (Salted SHA512) hash...
-- Starting attack
-- Found password : 'y8d'
-- (incremental attack)
Finished in 879.274 seconds / 31,385 guesses...
35 guesses per second.
10.7 使用了较弱的密钥派生函数,这使得即使是相对复杂的密码也很容易被破解。10.8 切换到 PBKDF2,这将破解工具限制为每个核心每秒约 10 次猜测。
如果你开启了自动登录,登录钥匙串的密码是以易于解密的形式存储在 /etc/kcpassword 中截至10.8。
如果您想允许某人使用您的帐户但不查看密码security
,您可以从钥匙串访问或使用锁定登录钥匙串security lock-keychain
。
当您离开计算机时,您可以通过例如在“安全”偏好设置窗格中选中“睡眠或屏幕保护程序开始后立即要求输入密码”并按下 Control-Shift-Eject 关闭显示器来锁定计算机。
您还可以从键链访问中自动锁定登录键链。
如果您想阻止有权物理访问您计算机的人以单用户模式启动(并重置登录密码或查看登录密码的哈希值),请启用 FileVault 2。
答案2
任何允许您获取密码纯文本表示形式的数据存储都是易受攻击的。如果它是可逆的,则意味着它也可以被暴力逆向。
也就是说,Apple Keychain 使用三重 DES,不太可能被暴力破解。请注意只有密码和安全说明是加密的。