签名加密签名电子邮件时使用了多少个证书?

How many certificates used when sign-encrypt-signing emails?

在签名-加密-签名(电子邮件)设置中使用同一个证书进行两个签名操作是否可以接受,还是应该选择两个单独的证书? 使用预期的收件人 public 证书执行加密操作。

此致, 布莱恩

首先,在直接回答你的问题之前,我需要先谈谈先签名后加密与先加密后签名,这是一个非常常见的密码学问题,并且这不是经常正确回答。我的意思是没有一个简单的答案,正确答案取决于你遇到的情况

首先,请注意,当双方之间存在实时交换时,加密然后签名可防止基于私钥和加密时间之间的相关性的攻击。这是因为在检查签名之前解密时,中间人攻击者可以让您解密他想让您解密的任何内容。然后,他可以测量你解密的延迟,因为你的响应会在你解密他修改的内容后立即出现(响应通常是“错误”,因为解密密文后,你会看到内容未正确签名)。因此,对于具有实时交换的两方之间的协议,一个主要规则是 在检查签名 之前永远不要解密某些东西。为了防止这种时序侧信道攻击,奥克兰大学的 P. Gutmann 在 2013 年底提出了 drafted RFC。这个 RFC 开始说: This document describes a means of negotiation of the use of encrypt-then-MAC 安全机制代替 TLS'/DTLS' 现有的 MAC-then-encrypt 机制,多年来一直是许多安全漏洞的主题.

现在,当您使用 PGP 或在 SMTP 之上 S/MIME 进行异步交换时,无法进行这种定时攻击。所以,你应该更喜欢 Sign-then-encrypt,因为 D.W. 在你在评论中谈到的线程中解释的其他原因:https://crypto.stackexchange.com/questions/5458/should-we-sign-then-encrypt-or-encrypt-then-sign(这主要是为了避免由发射器以外的其他人签名的密文)。

那么,让我们来回答你的问题:

Would it be acceptable in a sign-encrypt-sign (email) setup to use the same certificate for both sign operations or should one opt for two separate certificates? The encrypt operation is performed using the intended recipients public certificate.

你说这是一个电子邮件上下文。因此,定时侧信道攻击应该是不可能的。因此,您应该只签名然后加密。

但是既然你想要先签名然后加密然后签名,我想你想避免出于任何其他原因的边信道攻击。

因此,对两个签名操作使用相同的证书(和私钥)不会影响交易所的安全级别:正如您所理解的,最后一个签名操作用于确保没有人会解密修改后的内容并测量延迟,并且 crypt 之前的第一个签名在这里检查密文不能被无法解密的人签名。因此,这两个操作都没有链接,所以对两个操作使用或不同的证书都不会改变任何东西。