基于隐私保护技术的DNS通信协议
2)密钥格式。DNSDEA 采用非对称加密方法,在 DNS 终端和DNS 服务端分别独立生成通信密钥对(含公钥和私钥)。DNS 服务端的公钥通过现有的证书颁发架构(certificate authority infrastructure)发布,使用该 DNS 服务端的客户需手动配置该公钥。DNS客户端使用的密钥在查询过冲中临时生成。考虑到查询效率等因素,DNS客户端密钥在一段时间内可重复使用。 客户端的公钥由客户端在DNS 报文的附加段以EDNS0 格式添加,通过 DNS 查询发送给 DNS 服务端。具体格式如图1所示。 ![]() 图1 EDNS0格式传输PKI公钥密钥 密钥的具体内容存放在上面的选项数据中,其中前两个字节为算法标记位,标识该密钥使用的加密算法,之后两个字节为预留的标识位,最后一部分为具体的公钥数据。具体格式如图2所示。 ![]() 图2 密钥格式 3)密报文格式。加密的 DNS报文的头部与普通的 DNS报文保持一致,头部后一个字节为加密标记位。标记位后两个字节为加密数据的长度,最后一部分为的加密数据,具体格式如图3所示。 图3 加密后的DNS报文格式 加密查询方法 使用 DNSDEA 方法时,DNS 终端需要手动配置DNS服务端的公钥。服务端的公钥可通过 PKI体系进行验证。在 DNS终端向 DNS服务端发送查询请求时,使用 DNS 服务端的公钥对请求资源记录(RRset)进行加密,将DNS终端的公钥制作成RRset并使用DNS服务端的公钥将其加密,生成 DNS 报文格式数据,传输给DNS服务端。 DNS 终端将按照 DNS 协议要求,将生成的 DNS 查询报文发送给 DNS 服务端,DNS服务端使用自身私钥进行解密还原待查询的域名记录和 DNS终端的公钥信息,按照 DNS查询逻辑寻找查询结果,使用还原出来的DNS终端公钥对查询结果进行加密,发送给DNS终端。 DNS 终端接收到应答报文后,使用其私钥信息将应答报文的应答资源记录(RRset)进行解密,并按照DNS协议进行处理。 具体流程如图 4所示。以 www.example.com查询为例,实现加密查询方法,主要分以下步骤:(1)服务端通过 PKI发布公钥,客户端手动配置服务端公钥;(2)客户端生成密钥对;(3)客户端构造 www.example.com 的查询包,将客户端的公钥添加在查询包的附加段,并用服务端公钥加密后,将查询包发送给服务端;(4)服务端收到加密的查询包,使用服务端私钥解密,获取 DNS查询内容和客户端公钥;(5)服务端构造www.example.com的应答包,并用客户端的公钥加密后,将应答包发送给客户端;(6)客户端收到加密的应答包,使用客户端私钥解密,获得www.example.com的应答内容。 ![]() 图4 加密DNS查询流程 实验及分析 为测试 DNSDEA 的可行性,进行了相关实验,对DNSDEA 和基于 TLS、DTLS 加密方法的 DNS 查询进行对比,以验证DNSDEA 的可行性及相对于目前较流行加密方法的低延迟优势。 实验方法 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |