【发布时间】: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 > exportedPrivateKey.asc 之类的事情时,我都会收到 2 个消息框,要求输入 2 个密钥的密码。这些 ID 位于 private-keys-v1.d。
如何让 gpg 只询问我 [ultimate] 密钥的密码?
(在本文中,对我而言,证书是 gpg 使用的私钥-公钥三元组。对于真正理解该概念的人,我可能不清楚我所说的内容:)
Ps:我不确定我可能重新构建的密码是否属于被撤销的证书。如果是这样,我可以解锁被吊销证书的私钥吗?我可以根据已撤销的证书生成新的证书吗? (我猜不是因为否则撤销不会产生任何积极的安全效果)。通过取回已撤销证书的密码,我能赢得什么?
【问题讨论】:
标签: certificate gnupg password-recovery