标准 DNS 没有内置的方法来验证响应是否真的来自域名的权威服务器。攻击者可能会返回伪造的答案,而解析器将无法检测到它。
DNSSEC ↗ 通过向 DNS 记录添加加密签名来解决此问题。域名所有者使用私钥签署其 DNS 记录,而 1.1.1.1 等解析器使用相应的公钥验证这些签名。这证明了响应是真实的,并且在传输过程中没有被修改。
DNSSEC 使用两种 DNS 记录类型来分发验证所需的公钥:
- DNSKEY 记录包含域名的公钥签名密钥。
- **DS(代表签名者,Delegation Signer)**记录将子区域的密钥链接到其父区域,从而建立信任链。
解析器使用这些密钥来验证存储在 RRSIG 记录 ↗ 中的签名。
1.1.1.1 支持以下 DNSSEC 签名算法:
- RSA/SHA-1
- RSA/SHA-256
- RSA/SHA-512
- RSASHA1-NSEC3-SHA1
- 采用 SHA-256 的 ECDSA P-256 曲线 (ECDSAP256SHA256)
- 采用 SHA-384 的 ECDSA P-384 曲线 (ECDSAP384SHA384)
- ED25519