如果邮件是 PGP 加密的,但使用 DKIM 发送时未签名,邮件是否安全?

信息安全 电子邮件 电子签名
2021-08-16 18:26:25

我运行自己的邮件服务器,并希望在同一个域上使用不同的地址。如果我要从这些地址签署邮件,我必须为每个地址生成新的 PGP 密钥。这可能很快变得无法管理。

据我了解,DKIM 签名可以防止邮件被其他方篡改。利用 DKIM 进行邮件签名并仅加密邮件,跳过 PGP 签名是否可能/有意义?如果可能,必须做出哪些假设才能达到可比较的安全性?DNSSEC 安全域是否足够?

2个回答

首先,DKIM 仅向您保证:

DNS 管理员参与了签署此消息的过程。

该 DKIM 签名旨在通过“选择器”建立声誉。发出选择器(签名密钥):

  • 每个用户
  • 每组用户
  • 每个域。

该签名的粒度在 RFC 中并由 DNS 管理员定义。

如果您对这种灵活的、可能的任何人都可以签署的保证感到满意,那么您就可以了,但我不确定这会给您带来什么。

接下来,DKIM有三种模式:

  • 满的
  • 仅标题
  • 部分签名(使用 -L(长度)参数。)

后两者意味着可以用另一个有效负载完全替换加密内容。

除非您对 DKIM 进行了非常严格的实施,否则它不能替代对最终用户的身份验证(除非您只关心 DNS 名称)

我在 RFC 工作组工作了一段时间,但在草案后期离开了,所以我 99% 确信这些东西仍然是正确的。

PGP 提供端到端加密,您的电子邮件客户端对消息进行签名,然后接收者的电子邮件客户端对其进行验证。使用 DKIM,您的邮件服务器会对邮件进行签名。不同之处在于,当您的客户端将消息提交到服务器时,消息可能会在传输过程中被更改。您可以通过使用 SMTPS 或带有 STARTTLS 的 SMTP 提交邮件来消除这种风险。但是,接收者无法保证消息直接来自您,未更改,因为它不是端到端加密。

此外,使用 DKIM,验证签名的是接收服务器 (MTA),而不是接收客户端 (MUA)。客户端通常看到的只是一个附加的标头,声称接收服务器对签名感到满意。添加的标题并不能完全保证真实性。

简而言之,DKIM 被设计为一种验证消息是否通过合法服务器的手段。它主要是针对垃圾邮件的对策。它不保证该消息来自您。