我假设 GPG 非常难以破解、猜测等。由于我对 GPG 有信心,将我的 GPG 密钥用作密码管理器或生成器的主密钥是否合适?
GPG 是否适合作为密码管理器和生成器的一部分?
GPG 使用对称密钥加密您的数据,然后使用 / 为公钥/私钥对加密该对称密钥。该密钥对通常通过对称加密来保证安全。
您要的是一个可以这样绘制的程序:
Symmetric -> Asymmetric -> Symmetric
您应该使用的是执行以下步骤的密码管理器:
Symmetric
密码管理器的工作就是不将您的数据以明文形式放置,因为它很简单。GPG 的工作是允许通过清晰的渠道进行密钥交换通信。由于您将是唯一加密/解密密码的人,因此对称加密就可以了。从密码学上讲。无论如何,GPG 使用 OpenSSL 作为后端,因为大量免费提供的密码管理器很可能会这样做。
现在,综上所述,如果您的GnuPG 密钥保存在外部智能卡上,那么在您的计算机上执行此操作很有意义,并且如果有 NFC 版本的卡,它可以与手机一起使用。您可以使用 git 来同步各种密码文件。
我将从快速回答您的问题开始(分为两部分)。首先,是的,就具有强加密而言,GPG 适合作为密码管理器。使用非对称加密破解密码的可能性很小(大多数人会说不可能)。
答案的第二部分是,不,它可能不适合作为密码管理器。如果您使用多台机器,必须管理密钥可能会很烦人,而且如果您丢失了私钥,您很可能不得不重置很多很多密码——这是一个真正的痛苦。
密钥管理问题的快速解决方案是使用gpg -c
,它允许您使用密码短语来使用对称加密gpg
。这很好,但是现在我们进入了我实际推荐的替代解决方案的领域,因为您实际上不再使用 GPG 的主要好处(公钥/私钥)。
我不打算详细介绍我当前设置的全部细节,但我可以快速概述它:gpg
我使用openssl
. 这背后的原因很简单:几乎每个 Linux(我相信,还有 OS X)系统都预装了 openssl。它是通用的,如果我在闪存驱动器上随身携带我的加密文件(当然是它的副本),这使得便携性非常容易。无需管理密钥,我可以轻松选择要使用的加密方法。
我倾向于喜欢这样的东西:openssl aes-256-cbc -salt -in passwords.txt -out passwords.aes
加密我的密码数据库。不要忘记rm
明文!从那里,我可以轻松地运行openssl aes-256-cbc -d -in passwords.aes
并grep
获得我正在使用的信用。添加东西可能会有点棘手——我通常必须打印到标准输出,或者附加一个临时文件然后重新加密——但对于我来说,openssl 提供的可移植性对我来说是值得的。
是的,事实上有这样一个密码管理器,它使用 gpg 进行加密。它被称为pass
,可从http://www.passwordstore.org/获取 linux/Unix。
使用 pass,每个密码都存在于一个 gpg 加密文件中,其文件名是需要密码的网站或资源的标题。这些加密文件可以组织成有意义的文件夹层次结构,从计算机复制到计算机,并且通常使用标准命令行文件管理实用程序进行操作。
pass 使管理这些单独的密码文件变得非常容易。所有密码都存在于 ~/.password-store 中,pass 提供了一些不错的命令来添加、编辑、生成和检索密码。这是一个非常简短的 shell 脚本。它能够临时将密码放在剪贴板上并使用 git 跟踪密码更改。
您可以使用普通的 unix shell 命令和 pass 命令来编辑密码存储。无需学习时髦的文件格式或新的范例。有 bash 补全,因此您可以简单地点击 tab 来填写名称和命令,以及补全文件夹中可用的 zsh 和 fish 补全。社区甚至制作了一个 GUI 客户端、一个 Android 应用程序、一个 iOS 应用程序、一个 Firefox 插件、一个 dmenu 脚本,甚至是一个 emacs 包。
为了读取我的密码,我在我的主目录中使用了一个加密文件。要解密它,我只需使用 GnuPG 的解密命令,该命令包含在一个漂亮的 shell 脚本中rpw
(用于读取密码)——然后它会要求我输入密码并在终端中显示我的所有密码。可选的,我可以给出一个搜索词,比如 eg rpw ebay
。然后只有当我给出密码时出现“ebay”的那一行。/usr/local/bin/rpw
请从这里找到我的脚本:
gpg -d -o - /home/USER/pw.gpg | grep "$1"
为了编写/编辑密码文件,我解密它,编辑它,然后再次加密它,同时擦除解密的文件。这是这个脚本,它被调用wpw
(用于写入密码)。/usr/local/bin/wpw
:
gpg -d -o /home/USER/pw_unenc /home/USER/pw.gpg
vi /home/USER/pw_unenc
gpg -o /home/USER/pw.gpg -e /home/USER/pw_unenc
wipe -f -s /home/USER/pw_unenc
这一切都非常简单,并且依赖于 GnuPG 的安全性。