我目前将我的密码存储在一个使用GPG -e
(指定我自己的公钥)加密的文本文件中。当我想查找密码时,我会做类似的事情
gpg -d passwords.gpg | grep <sitename> | less
当我想添加新密码时,我将解密文件,编辑文件,然后再次加密。
该策略的潜在风险是什么?与使用Password Safe之类的东西相比,这样做是否存在任何安全问题?
我目前将我的密码存储在一个使用GPG -e
(指定我自己的公钥)加密的文本文件中。当我想查找密码时,我会做类似的事情
gpg -d passwords.gpg | grep <sitename> | less
当我想添加新密码时,我将解密文件,编辑文件,然后再次加密。
该策略的潜在风险是什么?与使用Password Safe之类的东西相比,这样做是否存在任何安全问题?
你最大的问题是系统妥协。如果您将密钥加密存储在强密码下,那么这相当于使用密码管理器的风险(事实上,如果有任何迹象,许多密码管理器不会正确地从主密码中获取加密密钥,所以你使用 gpg 可能会更好)。因此,如果有人根您的系统,然后您解锁您的密钥,他们就会拥有您的所有密码。这与在您的系统上运行的任何密码管理器相同。
但是,如果您不加密您的 gpg 密钥,任何可以访问您系统的人,即使它关闭(例如窃取它)也可以读取您的密钥、解密您的文件并获取您的密码。这比一个好的密码管理器(例如 LastPass、KeePass 甚至 OSX 钥匙串)还要糟糕。
您的第二大风险是该 shell 命令将 tmp 文件写入您的系统,即使它删除了它们(因为删除文件不会覆盖数据并且可以使用软件恢复)。GPG 可能会写临时文件,grep
可能会写临时文件,可能会写临时文件less
。就像你的外壳一样。此外,由于最后三个并不意味着安全,因此他们没有理由不决定在未来的某个时候这样做。另一方面,一个体面的密码管理器会采取措施确保它永远不会将您的明文写入磁盘。它甚至只能将您的数据存储在不会交换到磁盘的锁定页面中。
在纯加密方面,gpg 中的最大密钥大小可能是 2048 位。这为您提供了最多 112 位的安全性。要获得与 AES256 等效的东西,您需要一个15360 位密钥。这是你最不关心的问题,但它仍然是一个。密码管理器通常使用对称加密,因此他们可以使用 AES128 或 AES256。
除了其他答案中的警告之外,解密-编辑-加密循环可能会在您完成编辑后留下纯文本痕迹。专门的密码安全软件和其他人尝试安全地编辑文件注意到许多潜在风险:
毫无疑问,还有许多其他潜在的问题。我仍在权衡它们与通常笨重的密码安全软件。从不将纯文本文件写入磁盘的 gpg-vim 组合似乎很有希望。或者,在编辑时使用纯文本文件下方的加密文件系统层也可能就足够了。
我多年来一直使用这种精确的技术。一大风险是,如果您在解密 > 编辑 > 加密后忘记删除明文文件。使用 GPG,加密会保留明文文件。更糟糕的是,如果您在自动备份期间将该明文文件留在那里。然后你必须去找到备份的文件并删除它/它们。