我运行自己的邮件服务器,并希望在同一个域上使用不同的地址。如果我要从这些地址签署邮件,我必须为每个地址生成新的 PGP 密钥。这可能很快变得无法管理。
据我了解,DKIM 签名可以防止邮件被其他方篡改。利用 DKIM 进行邮件签名并仅加密邮件,跳过 PGP 签名是否可能/有意义?如果可能,必须做出哪些假设才能达到可比较的安全性?DNSSEC 安全域是否足够?
我运行自己的邮件服务器,并希望在同一个域上使用不同的地址。如果我要从这些地址签署邮件,我必须为每个地址生成新的 PGP 密钥。这可能很快变得无法管理。
据我了解,DKIM 签名可以防止邮件被其他方篡改。利用 DKIM 进行邮件签名并仅加密邮件,跳过 PGP 签名是否可能/有意义?如果可能,必须做出哪些假设才能达到可比较的安全性?DNSSEC 安全域是否足够?
首先,DKIM 仅向您保证:
DNS 管理员参与了签署此消息的过程。
该 DKIM 签名旨在通过“选择器”建立声誉。发出选择器(签名密钥):
该签名的粒度在 RFC 中并由 DNS 管理员定义。
如果您对这种灵活的、可能的任何人都可以签署的保证感到满意,那么您就可以了,但我不确定这会给您带来什么。
接下来,DKIM有三种模式:
后两者意味着可以用另一个有效负载完全替换加密内容。
除非您对 DKIM 进行了非常严格的实施,否则它不能替代对最终用户的身份验证(除非您只关心 DNS 名称)
我在 RFC 工作组工作了一段时间,但在草案后期离开了,所以我 99% 确信这些东西仍然是正确的。
PGP 提供端到端加密,您的电子邮件客户端对消息进行签名,然后接收者的电子邮件客户端对其进行验证。使用 DKIM,您的邮件服务器会对邮件进行签名。不同之处在于,当您的客户端将消息提交到服务器时,消息可能会在传输过程中被更改。您可以通过使用 SMTPS 或带有 STARTTLS 的 SMTP 提交邮件来消除这种风险。但是,接收者无法保证消息直接来自您,未更改,因为它不是端到端加密。
此外,使用 DKIM,验证签名的是接收服务器 (MTA),而不是接收客户端 (MUA)。客户端通常看到的只是一个附加的标头,声称接收服务器对签名感到满意。添加的标题并不能完全保证真实性。
简而言之,DKIM 被设计为一种验证消息是否通过合法服务器的手段。它主要是针对垃圾邮件的对策。它不保证该消息来自您。