DNS DNSKEY 和 DS 记录

DNSKEY 和 DS 记录被 DNSSEC 解析器用来验证 DNS 记录的真实性。

学习目标

阅读本文后,您将能够:

  • 了解 DNSKEY 记录的用途
  • 了解 DS 记录在 DNSSEC 中的作用

复制文章链接

什么是 DNSKEY 和 DS 记录?

域名系统 (DNS) 是互联网的电话簿,但它在设计时没有考虑到安全性。出于此原因,创建了一个称为 DNSSEC 的可选安全协议,以便网络资产的所有者能够更好地保护他们的应用程序。DNSSEC 通过向 DNS 记录添加加密签名来提高安全性;可以检查这些签名,以确认记录来自正确的 DNS 服务器。

为了实施这些加密签名,创建了两个新的 DNS 记录类型:DNSKEY 和 DS。DNSKEY 记录包含一个公开的签名密钥,而 DS 记录包含一个 DNSKEY 记录的哈希*。

每个 DNSSEC 区域都被分配了一套区域签名密钥 (ZSK)。这组密钥包括一个私人和公共 ZSK。私人 ZSK 用于签署该区域的 DNS 记录,而公共 ZSK 用于验证私人 ZSK。

公共 ZSK 发布在 DNSSEC 记录中,这就是它提供给 DNSSEC 解析器的方式;解析器将使用公共 ZSK 来确保来自该区域的记录是真实的。作为附加的安全层,DNSSEC 区域包含第二个 DNSKEY 记录,其中包含一个密钥签名密钥 (KSK),用于验证公共 ZSK 的真实性。

DS 记录用于验证 DNSSEC 区域的**子区域的真实性。父区域上的 DS 密钥记录包含子区域中 KSK 的哈希。因此,DNSSEC 解析器可以通过散列其 KSK 记录并将其与父区域的 DS 记录中的内容进行比较来验证子区域的真实性。

*加密哈希是字母数字输入的单向加扰;哈希通常用于在服务器上存储敏感信息(如密码)。例如,输入“cantguessthis”的哈希是 18fe9934cf77a759eb2471f2b304708a。每次“cantguessthis”通过哈希函数时,它都会输出相同的哈希。但是没有办法只使用哈希来获取原始输入。哈希本身基本上是无用的。

**子区域是另一个区域的委派子域。例如,example.com 的 URL 可能具有包含 blog.example.com 和 mail.example.com 等域的子区域。