如何检查 GPG 加密文件是否使用特定公钥加密?

如何检查 GPG 加密文件是否使用特定公钥加密?

考虑文件是否使用命令加密

例如

gpg --output test.txt.gpg --encrypt --recipient [email protected] test.txt

现在,假设另一个人收到了test.txt.gpg公钥[email protected],如何进行检查以确保该文件确实是使用公钥加密的?

答案1

在较新版本的 中,某些行为已发生改变gpg(我正在 上测试gpg v2.2.4)。执行 时,它会提示您输入密码--list-packets。现在默认情况下,-k不再显示密钥 ID,只显示 40 个字符的指纹。

以下是一些将跳过提示并显示密钥 ID 的命令:

# show public key ID that it was encrypted with, skipping prompts
gpg --pinentry-mode cancel --list-packets file.gpg

# list keys with the key IDs
gpg -k --keyid-format long

然后,您可以将 16 个字符的密钥 ID--list-packets与 中的列表进行匹配-k

答案2

您甚至不需要有公钥(只要知道它的 ID 即可)。假设有人没有故意隐藏用于加密文件/消息的密钥,那么您可以使用该list-packets命令执行您要执行的操作。

gpg --list-packets test.txt.gpg

这将向您显示 PGP 消息/文件头中列出的每个解密数据包的列表。有多种方法可以加密密钥并将该密钥隐藏在此列表中,但使用常规命令(如示例中的命令)将导致列出所有解密密钥,如下所示。

gpg --list-packets crypto-text.pgp
# off=0 ctb=85 tag=1 hlen=3 plen=526
:pubkey enc packet: version 3, algo 16, keyid 2206D60BA555DCB0
        data: [2045 bits]
        data: [2047 bits]
# off=529 ctb=85 tag=1 hlen=3 plen=526
:pubkey enc packet: version 3, algo 16, keyid 0D6229B307ED0210
        data: [2043 bits]
        data: [2048 bits]
# off=1058 ctb=85 tag=1 hlen=3 plen=526
:pubkey enc packet: version 3, algo 16, keyid 0E9AFA6C61A4DC66
        data: [2048 bits]
        data: [2046 bits]

请注意列出的三个不同的密钥 ID。是的,您猜对了,每个密钥都可用于解密此特定消息。

如果你有公钥,则可以获得加分因为--list-packets命令还会告诉您消息头中每个数据包的友好名称。(并且您可以使用已经拥有的公钥)。

但,除非有人故意隐藏解密密钥,不将其列在邮件头中,您可以看到所有 PGP 密钥均可用于解密消息,而无需访问任何一个的公钥或私钥。

我实际上使用这个的次数比我想承认的要多得多,通常是在我公司的人交换 PGP 消息时,突然有人打不开。他们总是责怪软件实现。到目前为止,每次都是这样,一条消息被起草、加密,加密后,一个新的收件人被添加到收件人列表中。我可以将密文复制到 crypto-text.pgp 文件中(就像我的例子一样),并确切地看到消息被加密发送给了谁;向他们展示这一点往往会阻止“你的软件插件坏了”的游戏。

答案3

仅当您是收件人的所有者时才有可能私人的密钥。如果您无法使用私钥解密消息,则该消息未使用匹配的公钥加密(或已被修改)。

但能够逆转加密只是一个(虽然很强大)指示,而不是证明。作为对创造力(和正直)的真正考验,签署被雇用,参见这里。请注意,完全可以使用不同的密钥进行签名和加密。并且讨论如果作为发送者,应该先签名,然后加密,反之亦然。

答案4

如果文件加密,使用此命令将为您提供基本信息。

gpg --list-packets <文件绝对路径>

您可以在哪里找到keyid加密 pgp 密钥的一些基本信息。就我而言,一些 pgp 密钥已安装在系统中,因此我可以与它们进行比较。如果上述代码失败,则说明它未加密。

此外,要获取更多信息,请keyid将此代码全部使用(我尝试对加密和非加密文件都有效)

gpg --list-keys --keyid-format LONG <keyid>

您可以在其中找到keyid与 pgp 公钥相关的详细信息。

相关内容