如何在一封电子邮件中结合“PGP 签名”和“S/MIME 签名”?

如何在一封电子邮件中结合“PGP 签名”和“S/MIME 签名”?

两个总比一个好!这可能吗?如果可以,你知道我应该使用什么应用程序和配置吗?

答案1

签名是验证某些数据的元素,因此没有什么可以阻止对同一数据有两个签名。但也有一些限制。

PGP 有两种形式:PGP/MIME 和内联 PGP。内联 PGP 表示包含 PGP 消息的简单文本邮件,并忽略未签名或加密且需要单独处理的附件。这与处理包括附件在内的整个邮件的 PGP/MIME 不同。

PGP/MIME 不能与 S/MIME 结合,但从技术上讲可以使用 S/MIME 加密和签名内联 PGP 消息。

结合这两个系统来加密一封邮件是多余的,更不用说您需要联系人的证书和公钥才能这样做。

添加内联 PGP 签名以及 S/MIME 签名意味着您的联系人可以选择要验证的签名。许多电子邮件客户端无需额外插件即可支持 S/MIME。

欲了解更多信息,请参阅帖子
使用 PGP 和 S/MIME 签署电子邮件是否可行且有意义?

我引用一个优秀的 rowing-ghoul 的回答

长话短说:是的,这会起作用并且也很有意义。

我将尝试解释这一点:

PGP 存储签名里面电子邮件正文。

PGP 签名邮件的正文通常以 开头-----BEGIN PGP SIGNED MESSAGE-----,后跟哈希算法和消息明文,后跟 -----BEGIN PGP SIGNATURE-----,后跟 ASCII 装甲签名,后跟-----END PGP SIGNATURE-----

S/MIME 则定义Content-Type: multipart/signed电子邮件中的标题并存储签名在(PKCS#7)附件中。标头告诉兼容 S/MIME 的客户端如何验证签名(参数boundary, protocol and micalg与此相关)。如果客户端认为自己能够验证签名,它将通过读取和比较附件来做到这一点。

因此,PGP 和 S/MIME 都不会改变消息文本。如果您先使用 PGP 签名,则所有 PGP 内容(例如-----BEGIN PGP SIGNATURE-----)都将成为 S/MIME 签名的一部分。如果您先使用 S/MIME 签名,则两个签名都是独立的。但是,无论哪种顺序都可以!

另请参阅文章 PGP/直连

答案2

我认为不可能同时使用 S/MIME 和 PGP/MIME 来签署电子邮件。原因如下:

签名的一个重要目的是证明消息未被修改。

但是,如果电子邮件已签名,则签名将包含在电子邮件中。如果您添加另一个签名并包含在电子邮件中,这将更改内容,因此使用第一个签名进行检查会导致出现警报,提示该邮件在签名后已被篡改 - 这绝对是真的。

唯一的办法就是制定一条官方规则,即多重签名必须按照固定顺序应用,并以相同的顺序进行验证,只是顺序相反。但这只是理论上的。

而且,第二个签名不太可能更安全。如果签名过程看起来不够安全,最好对其进行改进,而不是添加另一个签名。

将 PGP/Inline 签名与 S/MIME 结合使用也许可行,但我不知道有哪个客户端可以正确处理这种组合。除此之外,PGP/Inline 签名非常有限、不安全且容易被滥用,并且因此不应使用

相关内容