DNSSEC全称Domain Name System Security Extensions,即DNS安全扩展,是由IETF提供的一系列DNS安全认证的机制(可参考RFC2535)。它提供一种可以验证应答信息真实性和完整性的机制,利用密码技术,使得域名解析服务器可以验证它所收到的应答(包括域名不存在的应答)是否来自于真实的服务器,或者是否在传输过程中被篡改过。
通过DNSSEC的部署,可以增强对DNS域名服务器的身份认证,进而帮助防止DNS缓存污染等攻击。
DNSSEC给解析服务器提供了防止上当受骗的武器,是实现DNS安全的重要一步和必要组成部分。
原理
DNSSEC通过公钥密码技术对DNS中的信息创建密码签名,为DNS信息同时提供认证和信息完整性检查,它的实施步骤如下:
DNS服务器收到DNS查询请求后,用散列函数将要回复DNS报文的内容进行散列运算,得到“内容摘要”,使用私匙加密后再附加到DNS报文中;
DNS查询请求者接收到报文后,利用公匙解密收到的“内容摘要”,再利用散列函数计算一次DNS查询请求报文中的“内容摘要”,两者对比;
若相同,就可以确认接收到的DNS信息是正确的DNS响应;若验证失败,则表明这一报文可能是假冒的,或者在传输过程、缓存过程中被篡改了。
DNSSEC的缺点
标记和校验DNS数据显然会产生额外的开销,从而影响网络和服务器的性能。签名的数据量很大,这就加重了DNS对Internet骨干网以及一些非骨干连接的负担。产生和校验签名也占用了很多CPU的时间。有时候,不得不把单处理器的DNS服务器换成多处理器的DNSSEC服务器。签名和密钥占用的磁盘空间和RAM容量达到它们表示的数据所占容量的10倍。同时数据库和管理系统也不得不进行相应的升级和扩容。