电子邮件以 .eml 格式下载时,GPG 给出错误签名

电子邮件以 .eml 格式下载时,GPG 给出错误签名

我正在尝试测试拥有我的公共 gpg 密钥副本的人是否可以验证他们从我这里收到的签名电子邮件。为此,我使用了两台计算机。在第一台计算机上,我生成了密钥并安装了 mutt。我在 mutt 中撰写电子邮件并使用正确的密钥对其进行签名。我还导出了公钥的 ASCII 保护副本并将其上传到网站。

在第二台计算机上:我下载了一份公钥副本。使用 导入gpg --import pub.key,正确的姓名和电子邮件地址出现在钥匙串中。登录网络邮件服务,将邮件下载为 .eml,将签名下载为 .asc。输入后,gpg --verify signature.asc message.eml我收到以下消息:

gpg: Signature made Tue 01 Dec 2015 14:00:17 GMT using RSA key ID 4C45311
gpg: BAD signature from "My Name <[email protected]>"``

于是我尝试在第一台电脑上使用 mutt 下载消息和签名,然后scp将它们下载到第二台电脑上。我从 收到相同的消息gpg --verify。但是,当我在 mutt 中打开消息时,它显示签名良好。

有谁知道为什么下载 .eml 和 .asc 文件与直接使用 gpg 验证并在 mutt 中查看签名消息之间存在差异?我希望其他拥有我的公钥副本但可能未必在其电子邮件客户端中内置 gpg 的人能够验证我的消息。

谢谢。

答案1

如果您无法在没有邮件客户端的情况下验证签名,但它在邮件客户端内运行良好,则将使用一些不合适的编码和/或封装组合。

一种可能的组合可能是纯文本签名(因此不是 PGP/MIME)与 MIME 邮件中的 quoted-printable 编码。虽然您的邮件客户端会将邮件转换回原始邮件,但 quoted-printable 编码邮件将无法验证(因为它确实是不同的邮件)。

您的问题可能没有标准解决方案,但您可以发送非常简单的纯文本邮件,不需要任何特殊编码(因此将自己限制在 7 位 ASCII 字符集,并确保您的邮件客户端不使用某些特殊编码),或者简单地将签名消息附加到邮件中(使用清晰的签名消息将签名和消息放在一个文件中)。后者可能会破坏使用邮件客户端的用户的集成尽管与 OpenPGP 集成。

无论如何,我猜假设任何人使用 OpenPGP 将拥有一个支持 OpenPGP 的邮件客户端应该是相当安全的。

相关内容