使用 keepass 最安全的方法是将密钥文件和数据库分开。
我的第一个想法是使用带有密钥文件的 USB/闪存卡,就像常规密钥(和 Dropbox 上的 DB)一样,但 Apple 不喜欢外部存储设备。
因此只能使用云或互联网解决方案。一旦通过 iOS 身份验证,一般任何人都可以访问 Dropbox、Google Drive 等,因为这些帐户由 iOS 处理(至少如果你想让你的移动体验至少轻松一点的话)
我现在的工作流程不安全,两个文件都在 Dropbox 上。使用本地网络上的 SFTP 服务器是可行的,但据我所知,从互联网访问它太麻烦了(没有固定 IP),我宁愿根本不将本地网络开放给互联网。
经过这么长的介绍,我的实际问题是,是否有人知道适用于我所有设备台式机和移动设备(iPhone / ipad)的 keepass2 DB 和密钥文件的良好安全工作流程?
一种解决方案,使我不需要大量密码即可登录服务来获取密码。
编辑:
我重新阅读了keepass的一些文档:http://keepass.info/help/base/security.html
为了生成分组密码的 256 位密钥,使用了安全哈希算法 SHA-256。此算法将用户提供的用户密钥(由密码和/或密钥文件组成)压缩为 256 位的固定大小密钥。此转换是单向的,即从计算上讲,不可能反转哈希函数或找到压缩为相同哈希的第二条消息。密钥派生:如果仅使用密码(即没有密钥文件),则使用 SHA-256 对密码加上 128 位随机盐进行哈希处理以形成最终密钥(但请注意,有一些预处理:防止字典攻击)。随机盐可防止基于预先计算的哈希的攻击。
当同时使用密码和密钥文件时,最终密钥的派生公式如下:SHA-256(SHA-256(密码),密钥文件内容),即将主密码的哈希值与密钥文件字节连接起来,然后再次使用 SHA-256 对得到的字节字符串进行哈希处理。如果密钥文件不完全包含 32 个字节(256 位),则也会使用 SHA-256 对它们进行哈希处理,以形成 256 位密钥。然后上面的公式变为:SHA-256(SHA-256(密码),SHA-256(密钥文件内容))。
如果我理解正确的话,这两种方式,仅密码和密码 + 密钥文件,都会产生一个 256 位的“密钥/哈希”。因此,只要您有一个好的密码,数据库的强度就是一样的。因此,额外的强度来自于攻击者需要您的密钥文件来完成 256 位。
此外,考虑到链接中提到的字典攻击对策,我是否可以得出结论:给定一个正确的密码,密钥文件的额外安全性并不能抵消这种特殊情况下的不便?