加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

基于隐私保护技术的DNS通信协议

发布时间:2019-06-05 23:42:31 所属栏目:教程 来源:科技导报
导读:副标题#e# 域名系统(DNS)是互联网基础服务,是互联网访问的重要入口,域名隐私保护是 DNS安全的研究热点。本文提出了一种基于用户数据报协议的DNS传输中用户隐私保护的加密方法:DNSDEA。该方法采用PKI加密体系与DNS协议相融合,不仅解决了域名隐私保护问题

2)密钥格式。DNSDEA 采用非对称加密方法,在 DNS 终端和DNS 服务端分别独立生成通信密钥对(含公钥和私钥)。DNS 服务端的公钥通过现有的证书颁发架构(certificate authority infrastructure)发布,使用该 DNS 服务端的客户需手动配置该公钥。DNS客户端使用的密钥在查询过冲中临时生成。考虑到查询效率等因素,DNS客户端密钥在一段时间内可重复使用。

客户端的公钥由客户端在DNS 报文的附加段以EDNS0 格式添加,通过 DNS 查询发送给 DNS 服务端。具体格式如图1所示。

基于隐私保护技术的DNS通信协议

图1 EDNS0格式传输PKI公钥密钥

密钥的具体内容存放在上面的选项数据中,其中前两个字节为算法标记位,标识该密钥使用的加密算法,之后两个字节为预留的标识位,最后一部分为具体的公钥数据。具体格式如图2所示。

基于隐私保护技术的DNS通信协议

图2 密钥格式

3)密报文格式。加密的 DNS报文的头部与普通的 DNS报文保持一致,头部后一个字节为加密标记位。标记位后两个字节为加密数据的长度,最后一部分为的加密数据,具体格式如图3所示。

基于隐私保护技术的DNS通信协议

图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的应答内容。

基于隐私保护技术的DNS通信协议

图4 加密DNS查询流程

实验及分析

为测试 DNSDEA 的可行性,进行了相关实验,对DNSDEA 和基于 TLS、DTLS 加密方法的 DNS 查询进行对比,以验证DNSDEA 的可行性及相对于目前较流行加密方法的低延迟优势。

实验方法

由于 DNS 查询主要通过 UDP 传输,因此实验主要关注 DNSDEA 和基于 DTLS 加密方法下 DNS 查询包延迟。实验分别测试了两种加密方法使用RSA和ECC算法情况下不同大小数据包的性能表现,通过发起多次DNS查询取平均值,计算各方法下DNS查询时延,比较两种方法在DNS加密使用上的特点。

实验使用openssl-0.9.8 和crypto++5.6.5 加密库实现 RSA和 ECDSA加密,通过编程模拟了两种加密方法下DNS服务端和客户端的软件行为。客户端DNS查询均通过脚本定时循环调用实现,因此基于 DTLS加密的查询每次触发新的 DTLS连接,未使用历史会话。实验运行环境为CentOS 5.7,服务端和客户端分别部署在北京同城的不同节点。

实验结果与分析

1)固定通信字节时延对比。采用10 Bit的通信数据,利用不同强度的密钥进行测试,实验结果如图5所示。

基于隐私保护技术的DNS通信协议

图5 两种DNS加密方法时延比较

从实验结果来看,在密钥长度相等的情况下,基于DTLS 加密的 DNS 查询由于在建立连接的过程中密钥协商耗时较大,DNS 查询整体延时大于 DNSDEA 方法下DNS延时。在RSA加密算法下,加密强度越小,密钥越短,与 DTLS方法比较,DNSDEA性能是 DTLS方法的2.79倍(定义加速比为DTLS方法与DNSDEA时延之比,其比率越高则说明 DNSDEA 时延越低,速度越快);随着RSA密钥长度的增长到2048 Bit时,由于DNSDEA需要将客户端的密钥加密后,通过 DNS 报文传送给服务端,加密耗时明显增长,但总时延仍低于 DTLS 加密方法(图6(a))。

基于隐私保护技术的DNS通信协议

图6 ECDSA算法下两种DNS加密方法加速比

使用 ECDSA 加密算法情况下,密钥长度为 112、160、256 Bit时,DNSDEA对密钥加密的开销小于DTLS密钥协商的通信开销,因此总体网络延时优于 DTLS方法,但随着加密强度增加到521Bit时,DNSDEA对密钥本身加密的开销显著增长,明显大于 DTLS密钥协商的通信开销,造成加密后的 DNS 查询时延急剧增长,在ECDSA 512下,性能低于DTLS方法(图6(b))。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读