我正在考虑放弃托管解决方案(例如:1Password、BitWarden),并且有兴趣使用 KeePass 数据库来存储我的秘密。
以前我并没有太关注 KeePass,因为该应用程序看起来并不那么吸引人,但我现在知道 KeePass 本身具有一种可以用于各种应用程序的数据库格式。
这些不同的应用程序之间有多大差异?数据库本身的安全性如何?使用这些类型的应用程序时我应该注意哪些风险?
我正在寻找类似的解决方案保险柜或者凯帕西姆因为我几乎只在 Apple 生态系统中工作,所以它们似乎非常值得推荐。它们似乎还支持云存储同步,如果可能的话,我希望拥有它。
我希望使用强主密码和一组 YubiKey 来保护我的数据库,但我不清楚 YubiKey 是否与特定应用程序绑定,或者它实际上是 KeePass 数据库格式的一个功能,可以用类似KeePassXC如果 Strongbox 因任何原因突然停业并停止工作。
假设我有一个设置了安全主密码和 YubiKeys 的数据库,即使有人访问我的数据库文件和如果我的主密码是公开的,YubiKey 会保护它吗?无论他们使用什么应用程序,这显然是令人担忧的,因为一旦文件公开,它就公开了。与 1Password 不同,你可以在一定程度上撤销访问权限。
使用 Strongbox 或 KeePassium 之类的程序的最大风险是不是可能由开发人员推出恶意更新来窃取您的凭据?
如果是这样,因为它们都在 App Store 上,这让我感觉好一点,因为我知道至少有一些检查该平台(尽管我知道它并不完美)。
如果有人能为我指点迷津那就太好了!我确实做了大量研究,但由于各种不同的变化,对我来说似乎没有什么特别直接的,我有点偏执。
答案1
KeePassium 作者在这里。
这些不同的应用程序之间有多少差异
这些是不同开发人员开发的独立应用,因此设计、支持和附加功能数量各不相同。但它们的共同点是数据库格式,因此每个应用都支持主要功能。(就像任何电子表格应用都可以打开和编辑 Excel 文件一样,即使没有花哨的格式。)
数据库本身的安全性如何?
尽可能安全:它经过良好加密,防范字典攻击,您可以控制保护级别。数据库文件始终是加密的,数据仅解密到设备内存 (RAM)。理论上,人们甚至可以在线发布他们的数据库供所有人查看。如果没有主密钥,它只是一个加密的二进制 blob。
我应该注意使用此类应用程序存在哪些风险?
首先,请确保您使用的是正版应用程序。有几个网站使用假冒的“KeePass”。曾经有一款名为“KeePass”的 iOS 应用程序只是滥用了这个名字,与真正的应用程序毫无关系。
然后,谷歌搜索应用程序历史/声誉。有些应用程序应该开放,但它们不发布源代码(KeePass Touch)。有一个应用程序看起来不错,但开始表现可疑,其开发人员干脆关闭了该项目,没有做太多解释(IOSKeePass/KeePassMini,不要与 MiniKeePass 混淆)。
我希望使用强主密码和一组 YubiKeys 来保护我的数据库,但我不清楚 YubiKeys 是否与特定应用程序绑定,或者它是否实际上是 KeePass 数据库格式的一个功能,并且如果 Strongbox 突然停业并因某种原因停止工作,是否可以使用 KeePassXC 之类的东西打开。
YubiKeys 不与特定应用程序绑定。因此,你可以在 KeePassXC、KeePassium、Strongbox、Keepass2Android 以及其他一些应用程序中打开受 YubiKey 保护的数据库。(值得注意的是,KeePass 中没有:它唯一的 YubiKey 相关插件 KeeChallenge 使用自己的加密方案,应该避免。
然而,YubiKey 也不是数据库格式的功能。它更像是算法的售后扩展,该算法根据其组件计算加密密钥。数据库文件不包含任何有关使用哪些密钥组件的指示。它只是获取用户提供的任何主密钥,并尝试使用这些数据解密数据库。
原来的方法是:
masterKey = hash(hash(passwordBytes) + hash(keyFileBytes))
使用 YubiKey,它就变成:
masterKey = hash(hash(passwordBytes) + hash(keyFileBytes) + hash(yubikeyResponse))
yubikeyResponse
返回的数据在哪里YubiKey 的 HMAC-SHA1 质询-响应 (CR) 功能。在那里,YubiKey 充当一个黑匣子,接收一些数据(挑战) 以某种预定义的方式对其进行转换(基于秘密您在配置期间YubiKey CR 设置),并返回转换后的结果(回复)。此计算不会在 YubiKey 上留下任何痕迹。挑战只是以纯文本形式存储在数据库头中的一串随机字节,每次保存数据库时都会重新随机化。
副作用是,如果你存储相同的秘密在两个 YubiKey 上,它们在 CR 模式下的行为完全相同,并且可以互换使用。如果您的主密钥丢失或损坏,这可以作为备份。
请注意,质询-响应模式仅限于 YubiKeys,廉价 FIDO 密钥(包括 YubiKey FIDO 密钥)不提供该模式。
假设我有一个带有安全主密码和 YubiKeys 的数据库设置,即使有人访问我的数据库文件并知道我的主密码,无论他们使用什么应用程序,YubiKey 都能保护它吗?
是的。攻击者需要你的数据库、主密码和 YubiKey。此外,它还必须同样的物理按键:CR 密钥是只写属性,无法从密钥中提取,因此密钥无法被克隆。(与可以克隆的密钥文件不同。)这使得任何类型的远程攻击都难以实施。即使您忘记将 YubiKey 插入 USB 端口,密钥也不会响应任何软件请求,除非您身体上触摸 YubiKey 上的按钮。没有物理确认 — YubiKey 没有响应。
使用 Strongbox 或 KeePassium 之类的程序的最大风险是不是在于,某个开发人员可能会推出恶意更新来窃取您的凭证?
风险取决于您的具体情况。对于许多用户来说,最大的风险是忘记主密码,其次是没有备份数据库。
但是,确实存在恶意更新的风险。请注意,这不是故意的,因为 KeePassium 和 Strongbox 都面临很大的风险(不是匿名的,在法律严格的欧洲国家,这是作者的生计)。但是错误总会发生,其中一些可能会破坏您的数据库,因此您应该保留备份。
答案2
据我所知,此功能仅使用 Yubikey 作为存储加密密钥的便捷方式(类似于密钥文件);通常使用许多 FIDO 密钥都具有的 HMAC 功能(即很可能不使用 Yubikey 特定的传统功能)。与密钥文件非常相似,它既不能被绕过也不能被暴力破解。
(但是,它可以从 Yubikey 中提取,因为它本质上是一个静态密钥;与 Yubikeys 和/或 FIDO 密钥的最常见用法非常不同。)
不同的程序可以以相同的方式使用同一个 Yubikey,只要它们同意如何使用它,例如 FIDO HMAC 与 Yubikey 插槽,为 HMAC 提供什么输入等等。