zoukankan      html  css  js  c++  java
  • 日均请求量1.6万亿次背后,DNSPod的秘密国密DoH篇

     从单一的域名解析产品到如今日均解析量超过1.6万亿次的巨兽,DNSpod经历了海量的升级与迭代,创新与试错,而国密DoH便是其最新的秘诀所在。本文将会由DNSpod创始人吴洪声亲自讲述,那些DNS相关产品及服务,是如何被时代所选中的。

    大家好,我是吴洪声。

    在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

    这个焕然一新的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服务商,推出中国人自己的网络加密技术产品,保卫中国人自己的机密信息,隐私安全,填补了我国国产化自主可控安全产品的技术空白和产品空白,某种程度上,这是作为开拓者的一种使命感。

    我也希望未来可以看到更多的企业和开发者,能投身于国密产品领域,一起把这个产业链建设起来。

     

     

     

     
    海量技术实践经验,尽在云加社区! https://cloud.tencent.com/developer
  • 相关阅读:
    我的博客园的博客开通啦
    设置cookie
    JavaScript自动提示
    补码
    vim快捷键
    JavaScript获取URL参数
    Linux根目录下子目录的功能
    JavaScript分页栏链接转变算法
    可输可选可自动提示,还可增加一个!
    VS2008启动调试,出现“ 已经找到网站 正在等待回应”
  • 原文地址:https://www.cnblogs.com/qcloud1001/p/15593066.html
Copyright © 2011-2022 走看看