域名系统安全扩展(DNSSEC)
域名系统安全扩展(DNSSEC)是一组为域名系统(DNS)提供安全认证的规范。它通过数字签名验证DNS响应的真实性,防止数据在传输过程中被篡改或伪造。
基础:DNS查询过程与安全风险
- DNS查询始于客户端向递归解析器(如ISP提供的DNS服务器)请求域名(如www.example.com)对应的IP地址。
- 递归解析器从根域名服务器开始,逐级查询顶级域(.com)、权威域名服务器(example.com),最终获得目标域名的IP地址。
- 传统DNS协议使用明文传输,易受中间人攻击。攻击者可篡改响应数据,将用户导向恶意网站(DNS欺骗)。
核心机制:数字签名验证
4. DNSSEC通过非对称加密技术为DNS记录生成数字签名。每个权威DNS服务器使用私钥对资源记录(如A记录、MX记录)进行签名,生成RRSIG(资源记录签名)记录。
5. 客户端或递归解析器通过查询DNSKEY记录获取对应的公钥,验证RRSIG签名的有效性。若验证失败,则拒绝该响应。
信任链构建:从根域到子域
6. DNSSEC采用层级信任模型:
- 根域名服务器使用私钥对顶级域(如.com)的DNSKEY记录签名,生成DS(委派签名者)记录。
- 顶级域服务器使用私钥对二级域(如example.com)的DNSKEY记录签名,生成DS记录。
- 递归解析器从根域开始,逐级验证DS记录与DNSKEY记录的匹配性,最终建立到目标域的完整信任链。
记录类型与验证流程
7. 关键DNSSEC记录类型:
- DNSKEY:存储域名的公钥
- RRSIG:资源记录的数字签名
- DS:子域公钥的哈希值(由父域签名)
- NSEC/NSEC3:用于否定响应认证(证明某记录不存在)
8. 完整验证流程:
- 递归解析器获取目标域名的RRSIG和DNSKEY记录
- 通过信任链验证DNSKEY的合法性
- 使用公钥验证RRSIG签名与资源记录是否匹配
部署挑战与局限性
9. 部署需自上而下实施:根域(已部署)→ 顶级域 → 二级域 → 子域,任一环节缺失会导致信任链断裂。
10. DNSSEC仅提供数据完整性和认证,不加密传输数据(需配合DoH/DoT协议),且无法防御DDoS攻击或服务器劫持。