关于DKIM认证

※以下关于DKIM的解释来自该网址:https://powerdmarc.com/zh/what-is-dkim-signature/

什么是DKIM签名?

DKIM是DomainKeys Identified Mail的缩写。它是一个电子邮件认证系统,通过使用加密签名提供完整性和不可抵赖性。它与 签署可以帮助为你的电子邮件建立一个强大的欺骗保护基础设施。
DKIM协议为发送给收件人的每封邮件创建一个加密签名,以及一个添加到邮件头的域名签名。
这个签名被接收者用来验证该信息确实是由域名所有者发送的,而不是其他人。它也验证了信息在从发送者到接收者的过程中没有被篡改。
如果不匹配,那么要么。
1.信息在传输过程中被篡改,或
2.该信息是代表其他人发送的,他可以访问发送服务器的私钥。
在这种签名不匹配的情况下,DKIM将阻止这些邮件被传递给他们的目标收件人,因为他们无法验证这些邮件是来自你的品牌的合法邮件。

DKIM签名是如何工作的?

DKIM签名的工作原理是在电子邮件的标题中插入一个数字签名。该签名可由接收服务器验证,并用于确定电子邮件在传输过程中是否被篡改。
DKIM使用公钥加密法,它依赖于一对密钥:一个是私钥,一个是公钥。公钥被分发给任何想要它的人,而私钥则是保密的(通常是由所有者)。
当你使用DKIM签署电子邮件时,你的私钥被用来创建邮件内容的哈希值,然后用接收者的公钥对该哈希值进行加密。这个加密的哈希值随后被插入到你的邮件的标题中,在那里它可以被接收者验证。

 

 DKIM签名的关键

DKIM签名是使用两个加密密钥生成的,一个是公钥,一个是私钥。公钥在DNS中公布,而私钥则是保密的。
当一封电子邮件被签署时,私钥被用来生成信息的哈希值。然后用公钥对这个哈希值进行加密,并与信息本身一起发送。
当收件人收到这些信息时,他们使用他们的私钥来解密哈希值,并验证它是否与信息的原始内容相符。

 

 DKIM签名的部分内容

一个DKIM签名由两部分组成:头和正文。头部包含关于发件人身份的信息,包括他们的电子邮件地址和公钥。主体包含所发送的实际信息。
1.要计算DKIM签名,你首先要对你的域名(例如,"example.com")进行MD5散列,这是你的公钥。
2.你将你的域名与SHA1哈希值相连接(例如,"sha1(example.com)"),并将其附加到所发送的原始信息中。
3.你对这个组合字符串采取另一个MD5哈希值(例如,"md5(sha1(example.com))"),并在发送前将其作为头文件附在信息的开头。

开始使用DKIM

第一步是创建一个私钥,用来签署信息。
第二步是创建一个公钥,在验证签名时使用。
第三步是生成两条DNS TXT记录:一条用于公钥,另一条用于选择器名称。
第四步是在你的DNS区域文件中发布这些记录。

签署DKIM所涉及的步骤

1.发件人生成一个带有唯一标识符的信息,称为加密哈希函数(通常是SHA-256)。这个唯一的标识符被称为DKIM-签名头字段,包含了关于谁签名以及何时签名的信息。
2.发件人在信息中添加额外的头字段,包含有关信息。
该信息应被视为多长时间内有效
应多长时间重新检查一次签名的有效性
签名是否应使用外部服务,如SPF(发件人政策框架)进行验证。
用什么钥匙来签署这个信息
3.最后,想要验证这些签名的收件人将使用他们的DNS记录或中间服务(如SenderID或Mailgun)中的发件人公钥副本,然后用它来验证任何附加有DKIM头的邮件。

了解DKIM签名中使用的标签

这是一个DKIM签名记录的例子,它可能是这样的。

 

DKIM-Signature: v=1;                            
a=rsa-sha256                            
s=jun2005.eng                           
c=宽松/放松                         
d=example.com                           
s=dkim                          
t=1526555738                            
bh=mhU6OJb5ldZf+z/pX9+0Nc4tj/lmyYHWbR8LgI2Q=                            
h=To:From:Subject:Date:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding                           
b=s1sdZCzdX9vxocsMSlT7cOrYixl1g8wfkdzrVe7BGN6ZdPV9xu2A                          

v= 这个标签告诉我们DKIM的版本。
a= 这指定了签名者用于生成其公钥的算法。它可以是RSA1_5、RSA-SHA1或RSASSA-PSS中的一种。如果缺少此标签,则假定为RSA-SHA1。
c= 它指定了用于根据 [BCP14] 的要求从头域生成哈希值的规范化算法。后面是一个用逗号分隔的1个或多个规范化算法的列表(例如,"c=relaxed")。如果省略了这个标签,那么就会假定放松的规范化。
d= 它指定了在为该服务器(或其他收件人)发出的邮件生成签名时应使用哪个域名。
s= "s "标签是选择器字符串,它被接收服务器用来确定应该用什么公钥来验证签名。
t= 时间戳标签用于记录签名的创建时间,通常表示为Unix的时间戳(自1970年1月1日起的秒数)。
bh= 这个标签代表正文哈希值,它是你的邮件内容(包括标题)的加密版本。这有助于防止邮件在被DKIM签名后,在到达预定收件人之前被篡改。
h= 头部哈希值包含所有头的全部内容(包括那些由发件人政策框架或DomainKeys Identified Mail签署的头),除了那些通过将其列入排除列表而明确排除的头。这个值必须使用SHA-1或MD5计算。
b= "b "标签是一个加密哈希函数的base64编码表示,在信息的规范化主体上(即,在MIME编码被移除后)。

 

posted @ 2024-02-18 15:07  mh菜鸟  阅读(119)  评论(0编辑  收藏  举报