本页使用了标题或全文手工转换

DNSCrypt

维基百科,自由的百科全书
跳转至: 导航搜索

DNSCrypt是由Frank Denis及付业成(Yecheng Fu)设计的网络协议,用于用户计算机与递归域名服务器之间的域名系统(DNS)通信的身份验证。

尽管已有数个客户端及服务器实现,这一协议从未以征求意见稿(RFC)形式提交到互联网工程任务组(IETF)。

DNSCrypt将未修改的DNS查询与响应以密码学结构打包来检测是否被伪造。它也缓解了基于UDP的请求查询至少与回应一样大的放大攻击。DNSCrypt也可以用于访问控制

部署[编辑]

除了私有部署,DNSCrypt协议已经被数个公共DNS解析服务器接纳,现存最大的成员是OpenNIC网络,它同时提供虚拟专用网(VPN)服务。

2016年3月29日,Yandex宣布在其公共DNS服务器及网络浏览器上支持DNSCrypt协议。

协议[编辑]

DNSCrypt可以使用UDP端口或TCP端口。尽管与HTTPS完全不同,但两种情况下的默认端口号均为443。

DNSCrypt客户端必须明确信任所选提供者的公钥,而不依赖于常规浏览器中使用的证书颁发机构

公钥将用于验证一整套以传统DNS查询接收的证书。这些证书包含用于密钥交换的短期公钥,以及即将使用的密码本标识符。客户端被鼓励为每次查询新建密钥,而服务器被鼓励为每24小时更换短期密钥对。

查询与回应都使用同一算法加密,并使用64字节的倍数填充来防止泄漏封包大小。当使用UDP端口且回应多于查询产生的数据量时,服务器可以使用标记TC(英语:truncated,截短)位元的短封包回应。客户端此时应使用TCP端口重试,并增加后续查询的填充量。

该协议的第一、第二版采用X25519算法进行密钥交换,EdDSA算法进行签名,以及使用XSalsa20-Poly1305或XChaCha20-Poly1305算法认证加密。

基于公钥的客户端认证[编辑]

DNSCrypt协议也可以用于访问控制与审计,方法是仅接受一组预先定义的公钥。这可在商用DNS服务中辨识客户而不必依赖于其IP地址

参见[编辑]

参考资料[编辑]

外部链接[编辑]