PGP问题从2天前解密我自己的消息

信息安全 pgp
2021-08-17 19:40:07

我最近开始使用 pgp 并且还处于知识的初级阶段。我使用 pgp4usb 向朋友发送了一条加密消息。几天后,他们回复了相关信息,能够阅读和解密我的信息。至此,我实际上已经记不清 id 对他们说了什么,所以我想查看我的原始信息。我将信息放入 pgp4usb 并尝试解密。我收到一条错误消息,说“没有密钥”,因为这条消息是我的,并且是几天前从我的计算机发送的,我认为查看它很容易。从那以后,我尝试在 pgp 中玩写消息并使用我的密钥解密,它很好,我尝试导入我的备份私钥,它说存在一个相同的,所以我没有打扰

我可以假设问题是什么?我将备份私钥从一个文件夹移动到另一个文件夹,但除此之外没有任何变化

2个回答

我注意到直到 gpg4usb 的 0.4 版才包含“加密到自我”:

新的 alpha 版本 0.4

  • 为自身添加了加密功能,因此每条消息都针对所选密钥进行了加密

Encrypt to self 通常不是命令行 PGP/GPG 客户端的默认设置 - 命令行 PGP/GPG 系统通常将发件人的密钥包含在 encrypt-to 列表中,这使您无法读取您发送的内容。

注意:默认情况下,PGP 命令行不会加密到默认密钥。如果您想对自己进行加密,则需要将您的密钥指定为收件人。

为此,PGP 有 --encrypt-to-self ;GPG 使用--encrypt-to your_key_ID代替。

这不起作用的原因是 PGP 没有使用您的密钥加密消息。相反,它使用收件人的钥匙。它使用 RSA,这是一种非对称算法(实际上,它使用对称密码和随机密钥对消息进行加密,并使用接收者的公钥加密对称密钥,但随后丢弃了对称密钥的副本,因此相当于同样的事情-用于加密消息的密钥仅对收件人可用)。非对称方案很好,因为它使密钥交换变得非常容易——您必须验证您朋友的公钥确实是他的密钥,但您不必保密该密钥(这就是它是公钥的原因)。您无法解密消息,除非您还使用 PGP 支持的您自己的公钥之一对其进行了加密(您可以拥有任意数量的收件人,并且他们中的任何一个都可以解密消息)。

现在,PGP(和 GPG)还可以使用您自己的公钥加密已发送消息的副本;这对旧消息没有帮助,但您可以将其设置为默认情况下与未来的新消息一起使用。但是你自己两天前的消息只用收件人的公钥加密,这意味着只有他可以解密它。如果您想要该消息的副本,则必须询问您的朋友,他大概有副本。如果您不信任他们并想验证他们发送给您的内容是否真的是您发送给他们的内容,您可以要求他们向您发送整个解密的消息(他们可以使用您的密钥对其进行加密),包括签名,然后您可以验证签名是你的。