DKIM:我可以直接更改DKIM中使用的RSA密钥而无需更改DKIMselect器吗?

我可以只更改DKIM(DNS TXTlogging)中使用的RSA密钥,而不更改DKIMselect器,否则会导致任何问题?

如果不是,DKIMselect器的目的是什么?
顺便说一句: 20120113是我在20120113._domainkey.gmail.com谈论的select

正如你可以在这里阅读的“ …select器被添加到域名,用于查找DKIM公钥信息… ”。

此外,在维基百科条款:“ …接收SMTP服务器使用域名和select器来执行DNS查找select器是一个简单的方法,以允许签署者添加和删除任何他们想要的键。 。

换句话说,如果您要发送DKIM签名的电子邮件,则必须告诉外部邮件服务器如何检索您的RSA密钥以检查您的电子邮件的有效性。 RSA密钥发布到您的DNS,好的,但在哪里 ? 哪个DNS查询将检索它? 他们将如何知道哪个DNS查询/logging解决? 这是select器起作用的地方:如果从example.com域发送邮件,并在邮件中声明whateverselect器,则:

  • 在发送邮件头中,您需要引用您的域和相关select器,如:

DKIM-Signature […] d = example.com; […] s =无论如何

  • 在你的DNS中,你必须提供一个TXTlogging来发布你的RSA密钥whatever._domainkey.example.com ,如下所示:

any._domainkey.example.com IN TXT“k = rsa \; t = s \; p = MIGfMA […] AQAB”

正如你所看到的,DNS查询的forms是<selector> ._ domainkey。<your_domain>

基于此,我们可以这样说:

  1. RSA密钥可以被replace/更新而不会对select器产生任何影响。 显然,当你更新密钥的一面(公开的那一面,发布在DNS上)时,你也改变了另一面(用来“签名”你的外发邮件)。

  2. 如果在更新RSA密钥时不改变select器,那么副作用就是远程客户端(不是服务器;我正在谈论MUA ),无论出于什么原因都想检查包含在其中的DKIM签名旧的/存档的电子邮件将无法validation过程(因为已存档的电子邮件已经使用私人密钥进行了签名,而私人密钥的公开密码已经更新,现在已经不同了!)。

我想补充一点,根据我的经验,我习惯认为DKIM签名/validation是一个针对电子邮件传输的过程,而不是validation客户端。 所以我敢打赌,更新密钥并保持select不变是非常安全的。

我也认为,如果你要更新密钥,你必须改变你的签名代码(需要指向新的私钥)和DNS(发布新的公共密钥TXTlogging中的按键)。 那么,为什么不改变select器(再次,在两边?)。 你最终会在DNS上发布两个select器,一个指向旧密钥,另一个指向新的。 通过这种方式,SMTP传输过程中的一切都会好起来,并且,由于与旧select器关联的旧密钥仍旧可用,所以MUA将能够validation旧的/存档的电子邮件。

我可以只更改DKIM(DNS TXTlogging)中使用的RSA密钥,而不更改DKIMselect器,否则会导致任何问题?

是的,你可以 ,但没有一个很好的理由, 我强烈build议不要这样做

以下是为什么重复使用select器不是一个好主意的一些原因:

  • DNS更改可能需要一些时间来传播。 如果在密钥更改后重新使用select器,则可能导致密钥更改后不久发送的电子邮件validation失败。
  • 你不知道发送和validation之间会花费多less时间。 这可能导致旧密钥更改后的validation失败。 延迟的一些可能的原因:
    • 信息在运输过程中卡住了。
    • 虽然我觉得很不常见,但MUA内部也可以进行validation( Thunderbird有一个插件可以实现这个function )
  • 从RFC:“用新密钥重新使用select器(例如,更改与用户名称关联的密钥)使得不能区分由于密钥不再有效而未validation的消息与消息这实际上是伪造的,因此,签名者不宜将select器重新用于新密钥,更好的策略是将新密钥分配给新的select器。

DKIMselect器的目的是什么?

“为每个签名域支持多个并发公钥”。 以下是一些并发密钥的用例:

  • “除了pipe理方便之外,select器还可以定期replace公钥。”
  • 允许不同的实体签署您的电子邮件(使用不同的密钥和select器),而不需要共享私钥。 这对于:
    • 将签署委托给外部组织
    • 行政分布的组织
  • 使显式撤销密钥成为可能(将公钥数据(“p =”标签)留空)。

所有的引用都来自RFC 6376 。

可以做到这一点。 虽然不一定是BCP。

具有多个select器的原因是特定的,使得一个键在旋转后可以在一段时间内保持有效。

例如,如果更改了select器20120113中使用的RSA密钥,那么任何仍处于某个队列中并稍后传递的消息都会因为密钥已更改而导致DKIM失败。

理想情况下,如果你今天做了,你会发布一个新的密钥,20160106,并添加一个额外的select器。 这样,使用两个密钥的消息都可以被validation。 经过一段合理的时间后,说两周,你可以重新发布旧密钥。

(我假设你真的不是真正意义上的关键20120113._domainkey.gmail.com字面上?如果你真的在谈论一个Gmail密钥,停止和改变任何内容之前约翰·RG内部谈话。)