【问题标题】:recover lost gpg password恢复丢失的 gpg 密码
【发布时间】:2021-03-09 05:45:08
【问题描述】:

我在备份中找到了旧的 .gnupg 目录并想再次使用它。不幸的是,我丢失了密码,但我知道密码是什么。我对 gpg 和 pgp 了解不多,但是我知道非对称密码学的基础知识。

我现在的挑战是恢复我可以通过我记得的某种结构猜到的密钥/密码。所以我需要使用一些排列引擎来组合该密码的各个部分并检查它是否正确。我可以编写一个脚本,但我也可以使用 john the ripper 和 gpg2john。试图弄清楚该走哪条路,我遇到了一些障碍:

我的 .gnupg 目录是 2005 年在当时的 Sun 系统上创建的。该目录包含pubring.gpg 和更新的格式pubring.gpx。一个子目录private-keys-v1.d 包含5 个.key 文件。

先尝试 john,我似乎提供了错误的输入。

gpg2john ~/.gnupg/pubring.kbx
File ~/.gnupg/pubring.kbx
can't find PGP armor boundary.


gpg2john ~/.gnupg/pubring.gpg\~
<lots of different messages like>
Hash material(5 bytes):
Sub: image attribute(sub 1)             Image encoding - JPEG(enc 1)
Reason - No reason specified
lots of other stuff
Error: No hash was generated for ~/.gnupg/pubring.gpg~, ensure that the input file contains a single private key only

如何生成 gpg2john 期望作为输入的文件?

我提取私钥的所有方法都失败了,因为我需要该过程的密钥,我想恢复它......


对于手动方法,我需要一种方法来测试我的密码是否正确。这里最简单的方法是什么?我有点困惑,因为我有 5 个 .key 文件。哪一个是我的私钥? gpg --list-keys | grep "My Name" 给了我 3 个与 private-keys-v1.d 中的键名不同的条目。密钥标记为 [ultimate]、[expired] 和 [revoked]。

每当我要求 gpg 做类似gpg --export-secret-keys ID &gt; exportedPrivateKey.asc 之类的事情时,我都会收到 2 个消息框,要求输入 2 个密钥的密码。这些 ID 位于 private-keys-v1.d

如何让 gpg 只询问我 [ultimate] 密钥的密码?


(在本文中,对我而言,证书是 gpg 使用的私钥-公钥三元组。对于真正理解该概念的人,我可能不清楚我所说的内容:)

Ps:我不确定我可能重新构建的密码是否属于被撤销的证书。如果是这样,我可以解锁被吊销证书的私钥吗?我可以根据已撤销的证书生成新的证书吗? (我猜不是因为否则撤销不会产生任何积极的安全效果)。通过取回已撤销证书的密码,我能赢得什么?

【问题讨论】:

    标签: certificate gnupg password-recovery


    【解决方案1】:

    我个人认为,gpg2john 需要 asc 文件,而您使用 gpg --export-secret-keys ID &gt; exportedPrivateKey.asc 导出它的方法是正确的。问题,你没有成功可能是在这个变化中:https://github.com/open-keychain/open-keychain/pull/1182/files

    他们“禁用”了在未输入给定密码的情况下使用密码导出私钥。这种操作不需要拍照,但在 issue https://github.com/open-keychain/open-keychain/issues/194 中进行了适当的讨论,它已经实现了。

    我建议您使用 gpg 的自定义编译版本导出给定的密钥,并还原给定的提交。

    【讨论】:

    • 对我来说不再需要恢复密钥。但是,我会尝试找时间考虑恢复这些提交并尝试根据您的输入使用 gpg2john。非常感谢您!
    • 或者只安装旧版本的gpg。这似乎是最简单的解决方案。我的理解是,gpg 目前还没有突破性的创新。
    【解决方案2】:

    我不确定我是否遗漏了什么,但您是否只是尝试备份密钥环(复制整个 .gnupg 文件夹以确保安全)然后从中删除密钥直到只剩下所需的密钥?我不能保证这会奏效,我总是使用john--armor-exported 密钥。

    顺便说一下,您在 private-keys-v1.d 子文件夹中看到的文件名是 keygrip,并且与您的密钥 ID 不匹配。

    您可以使用--with-keygrip 参数(例如gpg --with-keygrip --list-secret-keys)将键与它们的keygrip 匹配。

    PS:您可能会发现本教程很有帮助 - https://github.com/drduh/YubiKey-Guide - 虽然它是为 YubiKey 用户编写的,但它包含许多普遍相关的高级概念。

    【讨论】:

      猜你喜欢
      • 2011-06-11
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多