文章图片
点击 一键订阅《云荐大咖》专栏,获取官方推荐精品内容,学技术不迷路!
文章图片
大家好,我是吴洪声。
在2005年的时候,我做了一个和DNS有关的小产品,DNSPod。
当时做这样一个产品的背景很简单,那还是一个 「南电信北联通(网通)」的时代,相信很多人都会有印象:那个时候你打开一个网站,首先看到的并不是网站的首页,而是一个密密麻麻的「电信1」「电信2」「网通1」「网通2」…,运营商之间互设门槛,最后造成的互访速度下降的结果还是用户来买单。而DNSPod,就是用很优雅的方式解决这个问题,自动把用户分流到对应的服务器,也是因为这个方式让很多朋友们认识了DNSPod,认识了我。
对于很多人来说,哪怕是DNSPod的长期用户,对DNSPod的印象仍旧停留在那个最早期的阶段。而实际上,今天的DNSPod,早就已经不是一个单一的域名解析产品,它已经悄然的成长成为了一个日均解析量超过1.6万亿次的巨兽。这期间我们的技术方案经历了多次重大的升级迭代,包括底层解析技术做了长期和细致的剖析,不断的创新与试错,形成了基于F-Stack/DPDK基础框架的自研递归和权威服务器架构,不断探索着性能极限,力求为用户提供高速稳定的解析体验。
除了技术硬实力的突飞猛进,我一直也在思考探索更多的尚未得到满足的DNS使用需求。所以在过去的几年,除了大家熟知的权威套餐的全面升级之外,我们还上线了移动解析(HTTPDNS)、内网解析(Private DNS)、公共解析(Public DNS)智能流量调度(IGTM)、DoT、DoH等一系列DNS相关产品及服务,经过长达数年的底层模块灰度和打磨,完成了完整的全链路DNS方案的建设。
文章图片
新DNSPod的力量,揭秘国密DoH 【日均请求量1.6万亿次背后,DNSPod的秘密-国密DoH篇】这个焕然一新的DNSPod到底有哪些优势?今天主要和大家分享一下我们的国密DoH吧。
DoH全称DNS over HTTPs,它使用HTTPs来传输DNS协议。DoH的安全原理与DoT一样,使用TLS协议来传输DNS协议。TLS协议是目前互联网最常用的安全加密协议之一,我们访问HTTPs的安全基础是基于TLS协议的。相比于之前使用无连接无加密的UDP模式, TLS 本身已经实现了保密性与完整性。
那么 TLS 协议本身是如何实现完整性与保密性的呢?TLS协议的基本思路是证书+加密机制,双管齐下保证安全。证书相当于申请了一个合法的身份证,当客户端向服务器发起连接的时候,双方会相互校验一下身份,服务器把证书给客户端,客户端校验证书的内容和合法性。
握手协议则是用公钥加密法:首先,客户端会向服务器端索要并验证公钥,验证后双方会协商生成"对话密钥",类似于两个人独有的摩斯密码,在此之后, 双方就会采用对话密钥进行加密通信。通俗的理解就是:你要和你的笔友写信,握手协议是你和你的笔友之间商量出来一套加密通信的方式,而证书则是保证拿到你寄出去的信的人是你的笔友本人。
DoT在专用端口上通过TLS连接DNS服务器,而DoH是基于使用HTTP应用程序层协议,将查询发送到HTTPS端口上的特定HTTP端点,这里造成的外界感知就是端口号的不同,DoT的端口号是853,DoH端口号443。
然而因为增加了握手的过程,以及数据增加了加密的步骤,前期协商带来的时间损耗势必会带来传输速度变慢的问题。
但是!经过我们团队的努力,通过对客户端侧改造和优化,采用本地缓存,提前预取,连接复用等技术方案,积极优化了整体流程,实现了与原DNS协议相近的时延效果。实际上,这只是DNSPod硬实力的一个小小例证,我们并未止步于此。
文章图片
发展国密产品,当属时代所需 作为网络安全行业从业者,密码算法作为保障信息安全的核心技术,然而我们国家多个等核心领域却长期沿用3DES等国际通用的密码算法体系。密码技术能够直接作用于数据,是保护数据的核心手段,也是保障信息产业生态安全、得以正常运营的重要基础,在计算机和网络系统中发挥了不可替代的安全作用。推广国产密码技术、应用商用密码算法, 是建设我国网络空间安全基础设施的必要措施之一。基于上述原因,发展国密产品发展,不仅是企业所需,更是时代所需。
于是,我们对通信消息中的密钥协商部分进行国密化(SM2)适配,在节点握手过程里,采用SM2密码组件和SM2数字证书,于是DNSPod DoH摇身一变,成为了国密DoH。
基与SM2加密算法的tls流程分为这样几个步骤:
握手请求阶段:客户端向服务器发送hello报文,请求服务器证书;
服务器端认证阶段:服务器端向客户端发送服务器端证书;
客户端认证阶段:客户端验证服务器证书合法性,发起密钥交换流程;
完成握手阶段:密钥交换完成,后续数据传输基于协商的密钥加密。
可以看到,和传统的TLS握手流程的有主要的区别:
在服务器端认证阶段,所述服务器端采用的是SM2 证书,其中包含SM2公钥。
在客户端认证阶段,密钥交换消息中包含预主密钥,而预主密钥采用的服务器端的SM2公钥进行加密。
在客户端认证阶段,客户端曾收到客户端证书请求,首先向服务器端发送客户端 SM2证书,并且在发送完密钥交换消息后,还发送客户端SM2证书签名;服务器端利用收到的客户端SM2证书签名对客户端进行验证。
在发送客户端SM2证书签名时,在签名原文中加入由所述服务器端SM2证书中公钥计算得出的杂凑值。
DNSPod的国密DoH,是国内首个支持国产密码算法的DoH产品。实际上,这样的一个产品需要投入巨大的人力与精力,却难以短时间变现成为商业上的回报。在我看来,DNSPod作为国内首屈一指的DNS服务商,推出中国人自己的网络加密技术产品,保卫中国人自己的机密信息,隐私安全,填补了我国国产化自主可控安全产品的技术空白和产品空白,某种程度上,这是作为开拓者的一种使命感。
我也希望未来可以看到更多的企业和开发者,能投身于国密产品领域,一起把这个产业链建设起来。
文章图片
文章图片
> 一键订阅专栏,学技术不迷路
《云荐大咖》是腾讯云加社区精品内容专栏。云荐官特邀行业佼者,聚焦于前沿技术的落地及理论实践之上,持续为您解读云时代热点技术、探索行业发展新机。
点击一键订阅,我们将为你定期推送精品内容。
p.s.云荐官将随机抽取部分订阅小伙伴,送出腾讯行业大会、见面会门票、云加视频礼盒、腾讯公仔!
> 大咖常驻栏目,为您答疑解惑
有疑问?有感悟?想探讨?期望老师推出什么作品?欢迎在本文评论区提问、交流,老师将为您解答。
云荐官将抽取1位小伙伴送出云加视频礼盒一份!
推荐阅读
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- 接口|axios接口报错-参数类型错误解决
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- vue|Vue面试常用详细总结
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等
- css|我用css精灵图拼接了自己的英文名字,不会还有人不知道精灵图技术吧()
- css|css三角的做法及其案例