KeePass 的实用和安全使用

信息安全 守望先锋
2021-08-24 19:51:04

目前我使用 KeePass 作为我的敏感数据管理器。我只使用一个主密码来加密数据库,但它不是很安全:9 个字符,小写字母和数字混合没有任何意义。bwkvu5m8i这样的东西

我想在不牺牲可用性的情况下提高数据库的安全性。

KeePass 中唯一的附加选项是使用密钥文件,我可以将其存储在外部 USB 闪存驱动器上,并在我想解锁数据库时将其插入 PC。了解我自己,我可能会保持它 24/7 全天候插入,因此与将密钥文件存储在内部硬盘驱动器上没有太大区别。

那么是否还有其他选项不会使使用 KeePass 变得非常麻烦?

我主要担心的是键盘记录程序或特洛伊木马程序——我是一名高级用户,绝对不会打开任何未知文件,无论其来源如何,但我仍然害怕被泄露。这甚至可能吗?

4个回答

没有办法给这个糖衣。安装在您计算机上的恶意软件/键盘记录器意味着您的密码已泄露。就是这样,没有办法绕过它。

恶意软件/键盘记录器会记录您的主密码、拦截剪贴板、以某种方式访问​​内存中的解密数据库等。

有一些方法可以增加检索 KeePass 主密码的难度,例如将其设置为仅允许在安全桌面上输入。

为防止有人获取您的 KeePass 数据库文件并对其进行暴力破解,您还可以增加 KeePass 在主密码派生过程中执行的 AES 迭代次数,以便在您的数据库中增加暴力破解主密钥所需的工作量被渗出。

当 KeePass 为您输入用户名和密码时,还有一个选项可以在自动输入期间设置两个通道混淆。它应该防止粗略的键盘记录器检索您用于该站点的特定密码。

为了防止恶意访问 KeePass 数据库(以及您的解密密码,因为您需要以某种方式以纯文本形式键入它......如果您的计算机受到攻击,它可能会被拦截),首先要确保您的计算机安全。你知道这个练习:安装和更新你的 AV 软件,保持你的计算机操作系统和软件更新,有防火墙,定期查看日志等。

最后,增加所用主密码的熵和长度。而不是 9 个字符,那么 13+ 呢?不仅仅是小写字母,还包括大写字母甚至一两个特殊字符呢?您的密码越不可预测且越长,攻击者暴力破解数据库主密钥所需的时间就越长。

其中一个攻击是为 KeePass.exe 注册一个调试器,它将用其他东西完全替换 KeePass.exe,这可能是一个我不认识的非常好的副本。其他人是键盘记录器。

我做了以下事情来阻止访问主 KeePass 数据库:

  • 下载 KeePass 源
  • 删除移动版本(因为那个没有在我的电脑上编译)
  • 进行一些更改,例如更改背景颜色并添加图标,以便我可以将自己的版本与其他版本区分开来
  • 重命名可执行文件,使其不受通用调试器攻击的影响
  • 在代码中添加密码的一些字符,这样键盘记录器就永远不会得到完整的密码
  • 将文件扩展名从 .kdbx 更改,以便观看文件访问的人无法发现这是 KeePass 变体,并且扫描磁盘的人也不会发现它。
  • 替换代码中的所有“KeePass”字符串
  • 编译新版本
  • 请勿安装,仅使用便携式 USB 版本
  • 打开安全密码提示

虽然我不能再轻易更新 KeePass,但我仍然认为我有一个更安全的版本,不易受到攻击。有人需要为我自己的版本创建攻击,这不太可能。

您还可以:

  • 稍微改变文件格式,例如在开头写入额外的字节,这样文件就更难被签名扫描器检测到。

所以现在主要的 KeePass 数据库密码非常安全,仍然可以访问从 KeePass 复制到其他应用程序的密码。攻击者可以快速弹出一个不可见的窗口,然后再次激活 KeePass。然后 KeePass 将使用不可见的窗口将密码粘贴到其中。即使是双通道自动类型也很难阻止这种攻击,尤其是如果不可见窗口将数据传递到正确的窗口,所以你不会注意到它。

虽然我没有为此采取对策,但我想我会做以下事情:

  • 输出 KeePass 将用于粘贴密码的窗口的窗口标题
  • 检测 KeePass 进入后台的短时间。即使您非常快速地按 Alt-Tab 两次,在停用和激活 KeePass 之间也应该有大约 100 毫秒

一个可能需要管理员权限并且需要比我目前拥有的更多 Windows 内部知识的想法:

  • 暂停所有程序(或几乎所有程序,也许让一些 Windows 可执行文件运行),除了您修改过的 KeePass 和目标程序。粘贴密码后,取消暂停它们。应该绕过例如轮询剪贴板的攻击者。不确定其他通知类型,如键盘挂钩。

您可以尝试在您存储在 keepass 中的密码之外设置某种 OTP 解决方案或作为替代方案。

yubikey ( http://www.yubico.com/products/yubikey-hardware/yubikey/ )是一种相当实惠的产品

你可以做一些事情,比如用 yubico 交换 linux PAM 并使用 yubikey 登录到 linux 盒子等等......

这不是广告,而是一个负担得起的 otp 示例。也许不是每个keepass用例的解决方案,但如果您将系统凭据存储在keepass中,您可以为它们添加一层安全性......

编辑:也如上所述使用超过 9 位数字。使用一些长而复杂的东西,仍然可以很好地打字,比如一个长句子,里面有一些额外的特殊字符。不要做简单的事情,比如用 3 交换 e。这类事情有蛮力插件。只需在结尾/开头和/或中间添加随机歌曲...

Edit2:刚刚发现:http : //keepass.info/help/kb/yubikey.html看到最后的 otp 部分。我不能向您保证这是一个正确且安全的 otp 实现,并且该插件没有缺陷。然而,这个理论听起来不错,它是一个很好的起点,可以对其进行一些研究或寻找类似的替代方案。

Edit3: yubikey 的免费替代品是适用于 ios 或 android 的谷歌身份验证器应用程序,根据http://mx.thirdvisit.co.uk/2014/01/02/getting-the-otpkeyprov-应该可以与 keepass OtpKeyProv 插件一起正常工作hotp-plug-in-to-work-with-google-authenitcator/

(我再次不能保证 OtpKeyProv 的实现是完美无缺的......)