如何安全地备份 GPG 私钥?

Tal*_*Tal 33 password-management gnupg private-key

我发现了一个非常有趣的 CLI 密码管理器,叫做pass。要使用它,您需要生成一个 GPG2 密钥对,并使用该工具帮助您将密码存储在 gpg2 加密文件中。

为了加密文件(添加新密码),它使用公钥。

为了解密文件(检索存储的密码),它使用需要密码的私钥。

这很好用。

现在该工具存储了我所有的密码,我想备份所有这些数据,这样如果我的计算机崩溃,我就不会被锁定在我所有的在线帐户之外。

该工具与 git 很好地集成在一起,因此我能够轻松地将 .gpg 文件推送到我在另一台计算机上的私人 git 存储库。据我了解,如果没有私钥来解密这些文件,这些文件将毫无用处。

我的问题是:如何以安全的方式备份私钥和公钥,以便在需要时可以在另一台机器上恢复“数据库”?我可以将公钥和私钥都存储在我的 git 存储库中,然后稍后将它们导入到不同的机器上吗?或者将私钥存储在私有的本地 git 存储库中是否被认为是不安全的做法?git repo 需要密码才能访问。私钥是加密的,需要密码才能打开——这样存储起来安全吗?

use*_*ser 14

在版本控制系统中存储 PGP 私钥本身不会造成任何重大的安全问题。存储在私钥地方,个人(未出版)的Git仓库应具有与存储在同一台计算机,但是任何的Git仓库的外面的私钥没有显著的安全隐患。

我能想到的以版本控制方式存储私钥的唯一问题是,除非您能以某种方式破坏旧版本,否则密钥密码更改为您提供的保护远远少于其他方式。

可能会带来一系列安全隐患的是,以其他人可能能够访问密钥文件的方式存储私钥在这种情况下,攻击者和您的密钥之间的唯一障碍就是其密码短语的强度。

认识到存储安全并不完美,在人们经常备份云服务的现代环境中更是如此(字面意思是“其他人的计算机”),我们通常用密码保护我们的密钥。我相信,即使你正在运行 gpg-agent,你也在做同样的事情。

最重要的是,只要您的密码短语正确,即使将加密密钥文件的副本存储在其他人的计算机上也应该相对安全。

然而,这是一个相当大的假设:就破解它们的计算机化尝试而言,大多数人的密码或密码短语相当糟糕。GnuPG 花费了相当长的时间来尝试尽可能地使用你提供的东西,但是为了可靠的数据保护,你需要一个好的密码,并且需要将私钥导入 git 存储库之前设置它。导入密钥后,攻击者原则上可以攻击它的任何版本,如果他们有理由相信某个特定版本的密码质量较低,则很可能会攻击它。因此,请确保谨慎选择密码。我写了一篇关于如何处理密码的小入门书,包括关于如何选择您需要记住的密码或密码短语的建议,您可能会发现这些建议很有用。


Mat*_*vid 7

我最近一直在考虑类似的设置。在回答你的问题之前,让我指出是什么困扰着我。此处详细解释了这一点。简而言之,当 Pass 调用 GPG 时,它会在幕后执行不必要的非对称 (RSA/EC) 加密。不必要- 因为这里没有不受信任的一方。

这很烦人,因为非对称加密比对称加密更不具有前瞻性。例如,今天的非对称加密被足够大的量子计算机破解,但目前尚不存在。更一般地说,非对称加密依赖于我们不知道如何解决的“数学问题”,比对称加密更是如此。

为了减轻这个弱点,你至少可以做的是保持你的 GPG 公钥与 Pass 一起使用,因为例如(潜在的)量子攻击需要这个公钥:见这里

关于您的实际问题,目前尚不清楚您是打算公开还是私下存储 git repo(带有密码)。如果你想保持它的私密性,你几乎可以做你想做的事情,并将 GPG 私钥的安全性降低到你备份存储库的介质的安全性。然而,这可能会成为一个鸡和蛋的问题:如果回购是私有的,你如何在崩溃的情况下取回它?换句话说,在一个“坏撞车”的情况下,必须有您检索的东西第一。因此,您可能希望将 git repo 保密,但以一种您可以首先检索的方式备份 GPG 密钥,而与其他任何事情无关。

离线备份解决方案众多,律师、地下室等,请参见此处。但地下室并不适合所有人,所以让我建议一个在线解决方案:

  • 创建一个多年不打算输入的超级强密码。建议:对具有个人意义的短语或从一本不会用完的书中(如果您需要查找它)的短语进行长而难忘的拼写错误。

  • 使用您导出的 GPG 密钥和 SSH 凭据创建一个 tarball。

  • 使用您的密码对它进行对称加密:gpg --symmetric --armor.

  • 创建一个免费的 git 托管帐户。

  • 创建一个公共存储库,无需凭据即可克隆。

  • 把加密和装甲的焦油球放在那里。

在“严重崩溃”后检索它:

  • 启动实时 USB 记忆棒。

  • 克隆公共回购。

  • gpg --decrypt.

对称密码将是您抵御僵尸的主要保护措施。在选择密码短语时,人们有时不会给您或匿名读者带来怀疑的好处。但是有了一个好的密码短语,对称加密应该是可靠的。

当您导出 GPG 私钥时,它将使用自己的密码进行加密。最新版本的 GPG 不允许未加密的导出。您可以在此处使用“常规”GPG 密码。请记住,如果发生崩溃,您将需要两个密码才能访问您的 GPG 私钥。


Jos*_*ica 5

我使用的另一个选择是:在纸上打印您的密钥

详细信息在链接的答案中。最大的优点是:您可以轻松地将其存放在任何您想要的地方,并且只需查看它就可以检查它是否仍然处于良好状态。但最大的优势是:没有人能够在没有实际到达您存储备份的地方并获取它的情况下破解它。