CN109413076A - 域名解析方法及装置 - Google Patents

域名解析方法及装置 Download PDF

Info

Publication number
CN109413076A
CN109413076A CN201811315179.4A CN201811315179A CN109413076A CN 109413076 A CN109413076 A CN 109413076A CN 201811315179 A CN201811315179 A CN 201811315179A CN 109413076 A CN109413076 A CN 109413076A
Authority
CN
China
Prior art keywords
server
random number
domain name
communication
certpubkey
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811315179.4A
Other languages
English (en)
Other versions
CN109413076B (zh
Inventor
李鹤仙
曹阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201811315179.4A priority Critical patent/CN109413076B/zh
Publication of CN109413076A publication Critical patent/CN109413076A/zh
Application granted granted Critical
Publication of CN109413076B publication Critical patent/CN109413076B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种域名解析方法及装置。其中,该方法包括:根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求;接收并获取与所述加密通信请求相对应的加密通信响应中包含的服务器证书公钥;根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证;当验证通过时,与所述返回所述加密通信响应的服务器建立加密通信连接,通过所述加密通信连接获取域名解析结果。该方式在通信过程中利用加密通信连接进行通信,从而显著提升了安全性,有效规避了域名劫持的风险。

Description

域名解析方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种域名解析方法及装置。
背景技术
域名解析是把域名指向网站空间IP,让用户通过注册的域名能够方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。通常情况下,域名的解析工作由DNS(Domain Name System,域名***)服务器,也叫域名解析服务器负责完成。在现有技术中,终端设备将域名解析请求发送给运营商分配的域名解析服务器,以便获取域名解析结果。并且,终端设备与域名解析服务器之间直接通过明文进行信息传输。
但是,发明人在实现本发明的过程中发现,现有技术中的上述方式至少存在如下缺陷:由于终端设备与域名解析服务器之间直接通过明文进行信息传输,因此,容易发生域名劫持问题,由此导致域名访问失败或因访问错误域名而遭受攻击。具体地,攻击者可以监听终端发出的域名解析请求,修改请求从而转到攻击者伪造的DNS服务器,进而返回错误的IP;或者在DNS服务器返回正确结果之前将伪造的DNS解析响应传递给终端用户,进而控制终端用户的域名访问行为。例如,攻击者在终端设备与域名解析服务器之间发起攻击,进而将域名A所对应的DNS解析结果IP1恶意替换为IP2,导致用户针对域名A的访问失败,甚至访问到不安全的站点。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的域名解析方法及装置。
根据本发明的一个方面,提供了域名解析方法,包括:
根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求;
接收并获取与所述加密通信请求相对应的加密通信响应中包含的服务器证书公钥;
根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证;
当验证通过时,与所述返回所述加密通信响应的服务器建立加密通信连接,通过所述加密通信连接获取域名解析结果。
根据本发明另一个方面,提供了域名解析装置,包括:
发送模块,适于根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求;
接收模块,适于接收并获取与所述加密通信请求相对应的加密通信响应中包含的服务器证书公钥;
验证模块,适于根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证;
获取模块,适于当验证通过时,与所述返回所述加密通信响应的服务器建立加密通信连接,通过所述加密通信连接获取域名解析结果。
根据本发明的又一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述域名解析方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述域名解析方法对应的操作。
在本发明公开的域名解析方法及装置中,首先,根据预先存储的本地证书公钥信息确定与本地证书公钥信息相对应的预设的域名解析服务器;然后,根据本地证书公钥信息向预设的域名解析服务器发送加密通信请求,接收并获取与加密通信请求相对应的加密通信响应中包含的服务器证书公钥;最后,根据服务器证书公钥以及本地证书公钥信息,与返回加密通信响应的服务器进行握手验证;当验证通过时,与返回加密通信响应的服务器建立加密通信连接,通过加密通信连接获取域名解析结果。由此可见,本发明中的方式能够基于预先存储的本地证书公钥信息与域名解析服务器进行握手验证,并仅在验证通过时进行后续通信,且在通信过程中利用加密通信连接进行通信,从而显著提升了安全性,有效规避了域名劫持的风险。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明一个实施例的域名解析方法的流程示意图;
图2示出了本发明另一个实施例的域名解析方法的流程示意图;
图3示出了本发明又一实施例的一种域名解析装置的装置结构图;
图4示出了根据本发明实施例的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了本发明一个实施例的域名解析方法的流程示意图。如图1所示,该方法包括:
步骤S110:根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求。
在本实施例中,为了便于验证域名解析服务器的合法性,预先存储与合法的域名解析服务器(也叫防劫持DNS服务器)相对应的服务器证书的公钥信息,由于该服务器证书的公钥信息预先存储在终端设备本地,因此,称作本地证书公钥信息。
其中,根据本地证书公钥信息向预设的域名解析服务器发送加密通信请求时,可以根据本地证书公钥信息对该加密通信请求中包含的信息内容进行加密处理,以提升安全性。
步骤S120:接收并获取与加密通信请求相对应的加密通信响应中包含的服务器证书公钥。
具体地,服务器接收到该加密通信请求后,返回与加密通信请求相对应的加密通信响应,在该加密通信响应中,包含用于验证服务器合法性的服务器证书公钥。
步骤S130:根据服务器证书公钥以及本地证书公钥信息,与返回加密通信响应的服务器进行握手验证。
实施握手验证的主要目的在于验证通信双方的身份是否合法。在本实施例中,为了防止域名劫持,主要用于验证域名解析服务器的合法性。具体验证时,可以直接提取出加密通信响应中包含的服务器证书公钥,并将该服务器证书公钥与预先存储的本地证书公钥信息进行匹配,若匹配成功,则握手验证通过;反之,则握手验证不通过。
除了直接匹配服务器证书公钥与本地证书公钥信息的验证方式之外,还可以通过其他方式来间接验证二者是否匹配。例如,可以分别利用服务器证书公钥以及本地证书公钥信息对同一个加密对象(例如随机数)进行加密运算,得到与服务器证书公钥相对应的第一加密结果以及与本地证书公钥信息相对应的第二加密结果。然后,分别基于第一加密结果和第二加密结果生成第一密钥以及第二密钥。其中,第一密钥和第二密钥中的一个密钥对应于终端设备,另一个密钥对应于服务器,终端设备和服务器分别基于各自的密钥对传输内容进行加密传输。只有当服务器证书公钥以及本地证书公钥信息匹配时,第一密钥和第二密钥才相等,通信双方才能够基于相同的密钥正确解密对方的内容。该方式能够间接验证服务器的合法性。
具体实施时,本领域技术人员可以灵活设置握手验证的具体实现方式,只要能够基于本地证书公钥信息验证返回的加密通信响应中的服务器证书公钥是否合法即可,本发明对具体的验证方式不做限定。
步骤S140:当验证通过时,与返回加密通信响应的服务器建立加密通信连接,通过该加密通信连接获取域名解析结果。
当验证通过时,即可确定返回加密通信响应的服务器与步骤S120中的预设的域名解析服务器为同一个服务器,且该服务器未受到劫持,因此,通过与该返回加密通信响应的服务器建立加密通信连接,能够确保后续的域名解析结果的安全性。
其中,加密通信连接可以通过加密通信链路、加密通信通道等各种方式实现,本发明对加密通信连接的具体实现方式不做限定。另外,通过该加密通信连接获取域名解析结果时,可以通过发送域名解析请求的方式进行获取,本发明对此不做限定。
由此可见,本发明中的方式能够基于预先存储的本地证书公钥信息与域名解析服务器进行握手验证,并仅在验证通过时进行后续通信,且在通信过程中利用加密通信连接进行通信,从而显著提升了安全性,有效规避了域名劫持的风险。
图2示出了本发明另一个实施例的域名解析方法的流程示意图。如图2所示,该方法包括:
步骤S200:终端设备接收用户发起的域名查询请求,查询本地缓存服务器中是否存储有与该域名查询请求中包含的域名相对应的域名解析结果。
具体地,为了实现快速查询的目的,在终端设备侧维护有一个本地缓存服务器,也叫本地DNS服务器,用于存储来自域名解析服务器的域名解析结果。若本地缓存服务器中存储有与该域名查询请求中包含的域名相对应的域名解析结果,则直接根据本地缓存服务器中的存储内容获取域名解析结果,无需向域名解析服务器发起请求,从而显著节约了查询时间。
另外,考虑到域名更新等因素,本地缓存服务器中的各条数据记录所存储的域名解析结果具有对应的TTL(Time To Live,生存时间值)信息,以防止出现过期的数据记录。相应地,当查询到本地缓存服务器中存储有与该域名查询请求中包含的域名相对应的域名解析结果时,还需要进一步根据该域名解析结果所对应的数据记录的TTL信息判断该条数据记录是否已过期,若否,则直接根据本地缓存服务器中的存储内容获取域名解析结果。若根据该域名解析结果所对应的数据记录的TTL信息判断该条数据记录已过期,则需要通过域名解析服务器进行查询。
步骤S210:当查询结果为否时,根据预先存储的本地证书公钥信息,确定与本地证书公钥信息相对应的预设的域名解析服务器。
在本实施例中,为了便于验证域名解析服务器的合法性,预先存储与合法的域名解析服务器(也叫防劫持DNS服务器)相对应的服务器证书的公钥信息,由于该服务器证书的公钥信息预先存储在终端设备本地,因此,称作本地证书公钥信息。另外,除了预先存储与预设的域名解析服务器相对应的本地证书公钥信息之外,本实施例中进一步存储与本地证书公钥信息相对应的域名解析服务器的IP地址,相应地,在本步骤中,根据预先存储的本地证书公钥信息,确定与本地证书公钥信息相对应的域名解析服务器的IP地址,根据该域名解析服务器的IP地址确定预设的域名解析服务器。
其中,与预设的域名解析服务器相对应的本地证书公钥信息和/或与本地证书公钥信息相对应的域名解析服务器的IP地址可以通过硬编码方式进行存储。其中,硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发方式,与从外部获取数据或在运行时生成数据的方式不同,硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,因此,通过硬编码方式存储的信息具有不易篡改、安全性高的优势。另外,在本实施例中,本地证书公钥信息为预设的域名解析服务器的服务器证书公钥的哈希值信息。其中,发明人在实现本发明的过程中发现:服务器证书一般为站点证书,站点证书一般最多3年就要更新一次,更新之后的证书哈希值就会改变,因此,如果在终端设备内预置服务器的证书哈希值,会导致终端内置的证书哈希值需要经常改变。但是,证书更新前后,其公钥一般不会改变,所以公钥的哈希值也不会变,因此,本实施例通过预置证书公钥的哈希值,能够保证当服务器证书更新之后,终端不需要重新内置哈希值。由此可见,一方面,内置证书公钥的哈希值(而非证书的哈希值)能够确保在服务器证书更新后依然可用;另一方面,正是由于证书公钥的哈希值无需随证书更新而更新,因此,才能够通过硬编码存储的方式来达到防止篡改的目的,进而提升安全性。
其中,本实施例中的预设的域名解析服务器的数量可以为一个或多个,当预设的域名解析服务器的数量为多个时,终端可通过各种策略从多个域名解析服务器中选择一个用于实现本次DNS查询的服务器。
步骤S220:产生第一随机数,根据本地证书公钥信息对第一随机数进行加密运算,得到第一加密随机数,将包含第一加密随机数的加密通信请求发送给预设的域名解析服务器。
具体地,终端设备产生第一随机数,根据本地证书公钥信息对第一随机数进行加密运算,得到第一加密随机数,并将包含第一加密随机数的加密通信请求发送给预设的域名解析服务器,以供服务器在后续步骤中根据该第一加密随机数生成通信密钥。在本实施例中,加密通信请求为HTTPS请求,相应地,由于采用了HTTPS协议进行通信,所以通信双方会先基于SSL(SecureSockets Layer安全套接层)协议进行握手协商,在SSL握手协商阶段,为了防止中间人伪冒防劫持DNS服务器进行攻击,本实施例借助本地证书公钥信息对服务器身份进行验证。其中,SSL安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性。相应地,本申请中提到的证书主要是SSL证书,其属于数字证书的一种,因为配置在服务器上,也称为SSL服务器证书。SSL服务器证书遵守SSL协议,由受信任的数字证书颁发机构(简称CA)在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。SSL服务器证书通过在客户端和服务器之间建立一条SSL安全通道,即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露,保证了双方传递信息的安全性。
步骤S230:接收并获取与加密通信请求相对应的加密通信响应中包含的服务器证书公钥以及由服务器产生的第二随机数。
具体地,服务器返回的加密通信响应中包含的服务器证书,如SSL证书。该证书中进一步包含证书公钥。终端设备,即客户端接收到该证书后,首先检验证书的合法性:比如证书的完整性、要解析的域名是否在证书中等等,如果合法性验证不通过,则返回SSL握手协商失败错误码;如果通过,还可以进一步验证证书的可信性(例如是否由可信CA签发),当验证证书无误之后,提取证书中包含的公钥,并计算哈希值。
步骤S240:产生第三随机数;根据服务器证书公钥对第一随机数进行加密运算,得到第一校验随机数;根据第一校验随机数、第二随机数以及第三随机数产生第一通信密钥。
具体地,终端设备根据提取出的服务器证书公钥的哈希值对第一随机数进行加密运算,得到第一校验随机数;并根据第一校验随机数、第二随机数以及第三随机数产生第一通信密钥。具体实施时,为了提升安全性,终端设备可以先根据服务器证书公钥对第三随机数进行加密,得到第三加密随机数,相应地,根据第一校验随机数、第二随机数以及第三加密随机数产生该第一通信密钥。
另外,可选地,在本实施例中,当预先针对该终端配置了多台域名解析服务器时,本实施例中的本地证书公钥信息包括多个服务器对应的证书公钥,即:第一加密随机数通过多个服务器证书公钥联合加密而得。相应地,终端设备提取出的服务器证书公钥则仅为当前通信的一台服务器的证书公钥,因此,根据提取出的服务器证书公钥的哈希值,并结合本地证书公钥信息中包含的其他服务器证书公钥的哈希值,对第一随机数进行联合加密运算,得到第一校验随机数。
步骤S250:将第一通信密钥以及第三随机数发送给返回加密通信响应的服务器,以供返回加密通信响应的服务器根据第一加密随机数、第二随机数以及第三随机数产生第二通信密钥。
相应地,为了提升安全性,终端设备可以将第一通信密钥以及第三加密随机数发送给返回加密通信响应的服务器;则返回加密通信响应的服务器先根据服务器证书私钥对第三加密随机数进行解密,得到第三解密随机数,然后根据第一加密随机数、第二随机数以及第三解密随机数产生第二通信密钥。
由此可见,当提取出的服务器证书公钥的哈希值与预先存储的本地证书公钥信息一致时,第一校验随机数等于第一加密随机数,且第三解密随机数等于第三随机数,相应地,第一通信密钥等于第二通信密钥。
步骤S260:当第二通信密钥与第一通信密钥相同时,握手验证通过,与返回加密通信响应的服务器建立加密通信连接,通过该加密通信连接获取域名解析结果。
当第二通信密钥与第一通信密钥相同时,说明服务器返回的证书与终端设备预置的证书公钥相同,从而说明服务器是合法的,因此能够与该服务器建立加密通信连接。
具体地,在与返回加密通信响应的服务器建立加密通信连接,并通过该加密通信连接获取域名解析结果时,可以由终端设备和服务器分别采用第一通信密钥和第二通信密钥对传输内容进行加密,以使传输内容能够以密文形式传输,且能够被对方的密钥解密。
步骤S270:将域名解析结果存储到本地缓存服务器中,以便下次查询。
具体地,如果防劫持DNS服务器能查询到所请求域名的IP,则通过加密通信连接返回给终端该域名的IP地址和TTL信息,终端更新本地缓存服务器,把该域名和对应IP以及TTL信息记录在本地缓存服务器中,最后返回给用户该域名的IP。
另外,在本实施例中,为了让防劫持DNS服务器能够返回所有正确域名对应的IP,防止单个DNS服务器无法存储全部域名的解析结果的问题,本实施例中的防劫持DNS服务器可以配置成一个或多个DNS服务器,相应地,与预设的域名解析服务器相对应的本地证书公钥信息以及与本地证书公钥信息相对应的域名解析服务器的IP地址为多个,分别对应于不同的域名解析服务器。
另外,在上述过程中,一旦发生异常情况,服务器则返回查询失败错误码,终端侧的应用根据返回的错误码进行如下处理:如果错误码为SSL握手协商失败,则认为受到了攻击,终止此次查询并通知用户,通知方式不限,比如以弹窗的形式;如果防劫持DNS服务器查询不到对应的域名解析结果,即握手协商成功但查询失败,则返回给用户查询失败。
为了便于理解本发明的优势,下面给出两个具体的示例,用于描述步骤S220至步骤S260中的客户端与服务器之间的SSL握手流程的实现细节:
示例一、
在该示例中,客户端与服务器之间主要基于双方产生的随机数实现握手验证,客户端仅针对服务器返回的证书的完整性以及合法性进行判断,并不验证服务器的证书公钥是否正确,具体包括如下步骤:
步骤一:客户端产生第一随机数,即随机数R1,并通过加密通信请求将随机数R1发送给服务器。
步骤二:服务器根据接收到的加密通信请求获取到R1,对R1进行保存以备后续使用;并产生第二随机数,即随机数R2,将R2和服务器证书(证书里包含公钥)通过加密通信响应发给客户端。
步骤三:客户端收到加密通信响应后,对其中包含的服务器证书进行检验,这里的检验主要用于检查证书的合规性(比如是否是证书的格式)以及可信性(是否由可信CA签发)。其中,合规性属性必须检查的内容,可信性则为可选的检查内容。
步骤四:客户端检查证书无误之后,产生第三随机数,即随机数R3,并利用R1,R2,R3产生第一通信密钥,即密钥S。在本实施例中,S=SHA256(R1||R2||R3)。然后,利用加密通信响应中包含的服务器证书的公钥对R3进行加密,得到R3对应的密文C3(即第三加密随机数)。同时,客户端利用第一通信密钥S对客户端的传输内容进行加密,得到客户端内容密文Cc。其中,客户端的传输内容可以包括客户端之前发送和/或接收的内容,还可以包括其他需要传输的内容,本发明对传输内容的具体来源和存储形式不做限定。最后,客户端将客户端内容密文Cc和第三加密随机数C3发送给服务器。
步骤五:服务器接收客户端内容密文Cc和第三加密随机数C3,由于C3是通过服务器公钥加密而得,所以服务器直接利用服务器私钥解密C3得到R3’(即第三解密随机数),同样服务器利用R1,R2,R3’产生第二通信密钥。在本实施例中,第二通信密钥S’=SHA256(R1||R2||R3’)。由此可见,在正常情况下,R3’=R3,所以S’=S,因此服务器可以通过第二通信密钥S’正确解密客户端内容密文Cc,并通知客户端此密钥正确,可以使用。然后,服务器利用第二通信密钥S’对服务器的传输内容进行加密,得到服务器内容密文Cs。其中,服务器的传输内容可以包括服务器之前发送和/或接收的内容,还可以包括其他需要传输的内容,本发明对传输内容的具体来源和存储形式不做限定。最后,服务器将服务器内容密文Cs发送给客户端。
步骤六:客户端收到Cs,利用第一通信密钥S进行解密,解密成功,则握手完成。
当握手成功之后,客户端与服务器之间建立加密通信连接(例如加密通道),该加密通信连接基于客户端使用的第一通信密钥S以及服务器使用的第二通信密钥S’实现。
发明人在实现本发明的过程中发现,在示例一所示的方式中,握手成功的关键在于第一通信密钥S与第二通信密钥S’必须相等,而两个密钥均只与R1,R2,R3有关,因此,只要通信双方的R1,R2,R3相等即可。但是,在该方式中,并未对服务器返回的证书公钥的正确性进行检验,因此,在示例一所示的方式中,容易受到中间人攻击,具体攻击方式如下:攻击者监听客户端与防劫持DNS服务器之间的SSL握手请求,一旦发现客户端发起SSL握手请求,则进行拦截,并伪装成防劫持DNS服务器,与客户端之间建立起安全通信,同时攻击者在防劫持DNS服务器前伪装成客户端,与防劫持DNS服务器之间也建立起安全通信,当收到客户端发起的域名解析请求时,攻击者可以将此请求直接转发给防劫持DNS服务器,待防劫持服务器返回正确结果给攻击者时,攻击者可以对其中的IP进行篡改,并将修改后的结果加密返回给客户端,从而进行域名劫持攻击。以上攻击能够建立起来的前提条件是:在示例一所示的SSL握手阶段,客户端不会对服务器返回的证书公钥的正确性进行校验,仅仅在验证证书的格式合规之后即通过随机数生成密钥进行通信。因此,能够给攻击者提供可乘之机,使攻击者能够通过伪造假证书的方式实现握手通信。
为了解决上述问题,杜绝中间人攻击的可能性,本发明提出了示例二中的握手流程:
示例二、
在该示例中,客户端预先将防劫持DNS服务器的服务器证书公钥的哈希值(Hash值)Hp(即上文提到的本地证书公钥信息)以硬编码的方式存储在应用程序中。相应地,客户端与服务器之间不仅基于双方产生的随机数实现握手验证,还会进一步根据本地预存的证书公钥对服务器的身份进行验证,具体包括如下步骤:
步骤一:客户端产生第一随机数,即随机数R1,然后,利用通过硬编码方式存储的服务器证书公钥的Hash值Hp进行加密,得到R1对应的密文R1’(即第一加密随机数)。在本实施例中,R1’=SHA256(R1||Hp),并通过加密通信请求将第一加密随机数R1’发送给服务器。
可选地,在本示例的一种替代方式中,预先针对该客户端配置了多台域名解析服务器,相应地,本地证书公钥信息包括多个服务器对应的证书公钥,因此,第一加密随机数通过多个服务器证书公钥联合加密而得。例如,假设本地证书公钥信息中除包含第一服务器的第一证书哈希值Hp外,还包含第二服务器的第二证书哈希值Hp’以及第三服务器的第三证书哈希值Hp”,相应地,R1’=SHA256(R1||Hp,Hp’,Hp”)。
步骤二:服务器根据接收到的加密通信请求获取到R1’,对R1’进行保存以备后续使用;并产生第二随机数,即随机数R2,将R2和服务器证书(证书里包含公钥)通过加密通信响应发给客户端。
步骤三:客户端收到加密通信响应后,对其中包含的服务器证书进行检验,这里的检验主要用于检查证书的合规性(比如是否是证书的格式)以及可信性(是否由可信CA签发)。其中,合规性属于必须检查的内容,可信性则为可选的检查内容。
步骤四:客户端检查证书无误之后,提取加密通信响应中包含的服务器证书公钥的Hash值Hs,利用Hs对R1进行加密,得到R1对应的密文R1”(即第一校验随机数)。在本实施例中,R1”=SHA256(R1||Hs)。然后,客户端产生第三随机数,即随机数R3,并利用R1”,R2,R3产生第一通信密钥,即密钥S。在本实施例中,S=SHA256(R1”||R2||R3)。然后,利用加密通信响应中包含的服务器证书的公钥对R3进行加密,得到R3对应的密文C3(即第三加密随机数)。同时,客户端利用第一通信密钥S对客户端的传输内容进行加密,得到客户端内容密文Cc。其中,客户端的传输内容可以包括客户端之前发送和/或接收的内容,还可以包括其他需要传输的内容,本发明对传输内容的具体来源和存储形式不做限定。最后,客户端将客户端内容密文Cc和第三加密随机数C3发送给服务器。
可选地,在本示例的一种替代方式中,当预先针对该客户端配置了多台域名解析服务器时,客户端根据加密通信响应中包含的服务器证书公钥的Hash值Hs以及本地证书公钥信息中包含的其他服务器的证书公钥哈希值对R1进行加密,得到第一校验随机数。例如,先将Hs与第一证书哈希值Hp进行匹配,若匹配成功,则根据Hs、Hp’以及Hp”对R1进行加密;若不匹配,再将Hs与第二证书哈希值Hp’进行匹配,若匹配成功,则根据Hs、Hp以及Hp”对R1进行加密;若不匹配,则根据Hs以及Hp以及Hp’对R1进行加密。
步骤五:服务器接收客户端内容密文Cc和第三加密随机数C3,由于C3是通过服务器公钥加密而得,所以服务器直接利用服务器私钥解密C3得到R3’(即第三解密随机数),同样服务器利用R1’,R2,R3’产生第二通信密钥。在本实施例中,第二通信密钥S’=SHA256(R1’||R2||R3’)。由此可见,在正常情况下,Hp=Hs,相应地,R1’=R1”,R3’=R3,所以S’=S,因此服务器可以通过第二通信密钥S’正确解密客户端内容密文Cc,并通知客户端此密钥正确,可以使用。然后,服务器利用第二通信密钥S’对服务器的传输内容进行加密,得到服务器内容密文Cs。其中,服务器的传输内容可以包括服务器之前发送和/或接收的内容,还可以包括其他需要传输的内容,本发明对传输内容的具体来源和存储形式不做限定。最后,服务器将服务器内容密文Cs发送给客户端。
步骤六:客户端收到Cs,利用第一通信密钥S进行解密,解密成功,则握手完成。
当握手成功之后,客户端与服务器之间建立加密通信连接(例如加密通道),该加密通信连接基于客户端使用的第一通信密钥S以及服务器使用的第二通信密钥S’实现。
由此可见,在示例二所示的方式中,只有在Hp=Hs的情况下,握手才能完成。一旦受到了中间人攻击,返回了伪造证书,则会导致Hp!=Hs,握手会终止,进而有效扼杀中间人攻击。本发明通过预置服务器证书公钥的哈希值,使服务器证书公钥能够参与SSL握手流程的运算,进而保证客户端只能与预设的合法的防劫持DNS服务器进行通信。并且,示例二的流程相较于示例一,并未改变服务器侧的处理流程,因此,能够在无需改动服务器侧业务逻辑的前提下,仅通过在客户端内预置服务器的证书公钥而实现防劫持的目的,具有实现方式简单,便于扩展的优势。正是由于不需要对服务器侧的业务逻辑进行改动,因此,本实施例可以便捷地将防劫持服务器从一个扩展为多个,从而扩宽域名查询范围,确保客户端能够查询到全部的域名信息,防止漏查情况发生。
综上可知,本实施例中的方式至少具备如下优势:
首先,通过在终端内置防劫持DNS服务器的IP,从而与防劫持DNS服务器进行通信,而不是直接与运营商分配的默认的DNS服务器进行通信,可以有效地防止运营商DNS劫持。并且,通过在终端内置防劫持DNS服务器证书公钥的Hash值,可以有效地防止攻击者伪冒防劫持DNS服务器进行攻击。当攻击者试图用自己建立的DNS服务器与终端建立SSL连接时,由于攻击者建立的DNS服务器的证书公钥与正确的防劫持DNS服务器证书的公钥不一致,所以在终端校验公钥阶段就会不通过,从而不会建立SSL连接,保证了终端与正确的防劫持DNS服务器之间建立起安全加密通道。
其次,在防劫持DNS服务器中可以进一步内置多个DNS服务器,保证了能查询到所有正确的域名所对应的IP。并且,通过在终端与防劫持DNS服务器之间建立安全加密通道,可以有效地防止攻击者对终端发出的请求和防劫持DNS服务器返回的数据进行监听和篡改,从而有效地防止了域名劫持,保障了终端能获取正确的IP。在SSL协商失败时,直接终止通信,并通知用户,从而让用户知道受到了攻击,以便进行防范。
另外,本实施例中的方法的执行主体可以为各类能够实现客户端功能的终端设备,例如,可以为用户所使用的终端设备,也可以为路由器设备。为了防止中间人在终端设备与路由器之间发起攻击,优选地,本实施例中的执行主体为用户所使用的终端设备,即:将预设的防劫持DNS服务器的证书公钥内置在终端用户所使用的终端设备中(而非路由器中),从而确保整个通信链路的安全性。
图3示出了本发明又一实施例提供的一种域名解析装置的装置结构图。如图3所示,本装置包括:
发送模块31,适于根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求;
接收模块32,适于接收并获取与所述加密通信请求相对应的加密通信响应中包含的服务器证书公钥;
验证模块33,适于根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证;
获取模块34,适于当验证通过时,与所述返回所述加密通信响应的服务器建立加密通信连接,通过所述加密通信连接获取域名解析结果。
可选地,所述发送模块31进一步适于:预先存储与所述预设的域名解析服务器相对应的本地证书公钥信息,以及与所述本地证书公钥信息相对应的域名解析服务器的IP地址;根据预先存储的本地证书公钥信息,确定与所述本地证书公钥信息相对应的域名解析服务器的IP地址,根据所述域名解析服务器的IP地址确定所述预设的域名解析服务器。
可选地,所述与所述预设的域名解析服务器相对应的本地证书公钥信息以及所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址为多个,分别对应于不同的域名解析服务器;和/或,
所述与所述预设的域名解析服务器相对应的本地证书公钥信息和/或所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址通过硬编码方式进行存储。
可选地,所述接收模块32具体适于:
产生第一随机数,根据所述本地证书公钥信息对所述第一随机数进行加密运算,得到第一加密随机数,将包含所述第一加密随机数的加密通信请求发送给所述预设的域名解析服务器;并且,所述加密通信响应中进一步包含由服务器产生的第二随机数;
则所述验证模块33具体适于:产生第三随机数;根据所述服务器证书公钥对所述第一随机数进行加密运算,得到第一校验随机数;根据所述第一校验随机数、所述第二随机数以及所述第三随机数产生第一通信密钥;将所述第一通信密钥以及所述第三随机数发送给所述返回所述加密通信响应的服务器,以供所述返回所述加密通信响应的服务器根据所述第一加密随机数、所述第二随机数以及所述第三随机数产生第二通信密钥;其中,当所述第二通信密钥与第一通信密钥相同时,握手验证通过;并且,所述加密通信连接根据所述第二通信密钥和/或所述第一通信密钥建立。
可选地,所述验证模块33具体适于:根据所述服务器证书公钥对所述第三随机数进行加密,得到第三加密随机数,根据所述第一校验随机数、所述第二随机数以及所述第三加密随机数产生所述第一通信密钥;将所述第一通信密钥以及所述第三加密随机数发送给所述返回所述加密通信响应的服务器;
则所述返回所述加密通信响应的服务器具体适于:根据服务器证书私钥对所述第三加密随机数进行解密,得到第三解密随机数,根据所述第一加密随机数、所述第二随机数以及所述第三解密随机数产生所述第二通信密钥。
可选地,所述本地证书公钥信息为所述预设的域名解析服务器的服务器证书公钥的哈希值信息;
则所述根据所述服务器证书公钥对所述第一随机数进行加密运算具体包括:根据所述服务器证书公钥计算所述服务器证书公钥的哈希值信息,根据所述服务器证书公钥的哈希值信息对所述第一随机数进行加密运算。
可选地,所述加密通信请求为HTTPS请求,所述握手验证为基于SSL协议的握手验证,且所述加密通信连接为SSL连接。
可选地,所述装置应用于终端设备,且所述获取模块34进一步适于:将所述域名解析结果存储到本地缓存服务器中,以便下次查询。
上述各个模块的具体结构和工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。
本申请实施例提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的域名解析方法。
图4示出了根据本发明实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图4所示,该电子设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:
处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述域名解析方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行上述方法实施例中的各项操作。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的域名解析装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明还公开A1.一种域名解析方法,包括:
根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求;
接收并获取与所述加密通信请求相对应的加密通信响应中包含的服务器证书公钥;
根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证;
当验证通过时,与所述返回所述加密通信响应的服务器建立加密通信连接,通过所述加密通信连接获取域名解析结果。
A2.根据A1所述的方法,其中,所述方法执行之前,进一步包括:
预先存储与所述预设的域名解析服务器相对应的本地证书公钥信息,以及与所述本地证书公钥信息相对应的域名解析服务器的IP地址;
则所述根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求包括:
根据所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址,向预设的域名解析服务器发送加密通信请求,并通过所述本地证书公钥信息对所述加密通信请求进行加密。
A3.根据A2所述的方法,其中,所述与所述预设的域名解析服务器相对应的本地证书公钥信息以及所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址为多个,分别对应于不同的域名解析服务器;和/或,
所述与所述预设的域名解析服务器相对应的本地证书公钥信息和/或所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址通过硬编码方式进行存储。
A4.根据A1-3任一所述的方法,其中,所述根据所述本地证书公钥信息向所述预设的域名解析服务器发送加密通信请求具体包括:
产生第一随机数,根据所述本地证书公钥信息对所述第一随机数进行加密运算,得到第一加密随机数,将包含所述第一加密随机数的加密通信请求发送给所述预设的域名解析服务器;并且,所述加密通信响应中进一步包含由服务器产生的第二随机数;
则所述根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证具体包括:
产生第三随机数;
根据所述服务器证书公钥对所述第一随机数进行加密运算,得到第一校验随机数;
根据所述第一校验随机数、所述第二随机数以及所述第三随机数产生第一通信密钥;
将所述第一通信密钥以及所述第三随机数发送给所述返回所述加密通信响应的服务器,以供所述返回所述加密通信响应的服务器根据所述第一加密随机数、所述第二随机数以及所述第三随机数产生第二通信密钥;其中,当所述第二通信密钥与第一通信密钥相同时,握手验证通过;并且,所述加密通信连接根据所述第二通信密钥和/或所述第一通信密钥建立。
A5.根据A4所述的方法,其中,所述根据所述第一校验随机数、所述第二随机数以及所述第三随机数产生第一通信密钥具体包括:根据所述服务器证书公钥对所述第三随机数进行加密,得到第三加密随机数,根据所述第一校验随机数、所述第二随机数以及所述第三加密随机数产生所述第一通信密钥;
所述将所述第一通信密钥以及所述第三随机数发送给所述返回所述加密通信响应的服务器具体包括:将所述第一通信密钥以及所述第三加密随机数发送给所述返回所述加密通信响应的服务器;
则所述返回所述加密通信响应的服务器根据所述第一加密随机数、所述第二随机数以及所述第三随机数产生第二通信密钥具体包括:根据服务器证书私钥对所述第三加密随机数进行解密,得到第三解密随机数,根据所述第一加密随机数、所述第二随机数以及所述第三解密随机数产生所述第二通信密钥。
A6.根据A4-5任一所述的方法,其中,所述本地证书公钥信息为所述预设的域名解析服务器的服务器证书公钥的哈希值信息;
则所述根据所述服务器证书公钥对所述第一随机数进行加密运算具体包括:根据所述服务器证书公钥计算所述服务器证书公钥的哈希值信息,根据所述服务器证书公钥的哈希值信息对所述第一随机数进行加密运算。
A7.根据A1-6任一所述的方法,其中,所述加密通信请求为HTTPS请求,所述握手验证为基于SSL协议的握手验证,且所述加密通信连接为SSL连接。
A8.根据A1-7任一所述的方法,其中,所述方法应用于终端设备,且所述通过所述加密通信连接获取域名解析结果之后,进一步包括:将所述域名解析结果存储到本地缓存服务器中,以便下次查询。
B9.一种域名解析装置,包括:
发送模块,适于根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求;
接收模块,适于接收并获取与所述加密通信请求相对应的加密通信响应中包含的服务器证书公钥;
验证模块,适于根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证;
获取模块,适于当验证通过时,与所述返回所述加密通信响应的服务器建立加密通信连接,通过所述加密通信连接获取域名解析结果。
B10.根据B9所述的装置,其中,所述发送模块进一步适于:预先存储与所述预设的域名解析服务器相对应的本地证书公钥信息,以及与所述本地证书公钥信息相对应的域名解析服务器的IP地址;根据所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址,向预设的域名解析服务器发送加密通信请求,并通过所述本地证书公钥信息对所述加密通信请求进行加密。
B11.根据B10所述的装置,其中,所述与所述预设的域名解析服务器相对应的本地证书公钥信息以及所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址为多个,分别对应于不同的域名解析服务器;和/或,
所述与所述预设的域名解析服务器相对应的本地证书公钥信息和/或所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址通过硬编码方式进行存储。
B12.根据B9-11任一所述的装置,其中,所述接收模块具体适于:
产生第一随机数,根据所述本地证书公钥信息对所述第一随机数进行加密运算,得到第一加密随机数,将包含所述第一加密随机数的加密通信请求发送给所述预设的域名解析服务器;并且,所述加密通信响应中进一步包含由服务器产生的第二随机数;
则所述验证模块具体适于:产生第三随机数;根据所述服务器证书公钥对所述第一随机数进行加密运算,得到第一校验随机数;根据所述第一校验随机数、所述第二随机数以及所述第三随机数产生第一通信密钥;将所述第一通信密钥以及所述第三随机数发送给所述返回所述加密通信响应的服务器,以供所述返回所述加密通信响应的服务器根据所述第一加密随机数、所述第二随机数以及所述第三随机数产生第二通信密钥;其中,当所述第二通信密钥与第一通信密钥相同时,握手验证通过;并且,所述加密通信连接根据所述第二通信密钥和/或所述第一通信密钥建立。
B13.根据B12所述的装置,其中,所述验证模块具体适于:根据所述服务器证书公钥对所述第三随机数进行加密,得到第三加密随机数,根据所述第一校验随机数、所述第二随机数以及所述第三加密随机数产生所述第一通信密钥;将所述第一通信密钥以及所述第三加密随机数发送给所述返回所述加密通信响应的服务器;
则所述返回所述加密通信响应的服务器具体适于:根据服务器证书私钥对所述第三加密随机数进行解密,得到第三解密随机数,根据所述第一加密随机数、所述第二随机数以及所述第三解密随机数产生所述第二通信密钥。
B14.根据B9-13任一所述的装置,其中,所述本地证书公钥信息为所述预设的域名解析服务器的服务器证书公钥的哈希值信息;
则所述根据所述服务器证书公钥对所述第一随机数进行加密运算具体包括:根据所述服务器证书公钥计算所述服务器证书公钥的哈希值信息,根据所述服务器证书公钥的哈希值信息对所述第一随机数进行加密运算。
B15.根据B9-14任一所述的装置,其中,所述加密通信请求为HTTPS请求,所述握手验证为基于SSL协议的握手验证,且所述加密通信连接为SSL连接。
B16.根据B9-15任一所述的装置,其中,所述装置应用于终端设备,且所述获取模块进一步适于:将所述域名解析结果存储到本地缓存服务器中,以便下次查询。
C17.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如A1-8中任一项所述的域名解析方法对应的操作。
D18.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如A1-8中任一项所述的域名解析方法对应的操作。

Claims (10)

1.一种域名解析方法,包括:
根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求;
接收并获取与所述加密通信请求相对应的加密通信响应中包含的服务器证书公钥;
根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证;
当验证通过时,与所述返回所述加密通信响应的服务器建立加密通信连接,通过所述加密通信连接获取域名解析结果。
2.根据权利要求1所述的方法,其中,所述方法执行之前,进一步包括:
预先存储与所述预设的域名解析服务器相对应的本地证书公钥信息,以及与所述本地证书公钥信息相对应的域名解析服务器的IP地址;
则所述根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求包括:
根据所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址,向预设的域名解析服务器发送加密通信请求,并通过所述本地证书公钥信息对所述加密通信请求进行加密。
3.根据权利要求2所述的方法,其中,所述与所述预设的域名解析服务器相对应的本地证书公钥信息以及所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址为多个,分别对应于不同的域名解析服务器;和/或,
所述与所述预设的域名解析服务器相对应的本地证书公钥信息和/或所述与所述本地证书公钥信息相对应的域名解析服务器的IP地址通过硬编码方式进行存储。
4.根据权利要求1-3任一所述的方法,其中,所述根据所述本地证书公钥信息向所述预设的域名解析服务器发送加密通信请求具体包括:
产生第一随机数,根据所述本地证书公钥信息对所述第一随机数进行加密运算,得到第一加密随机数,将包含所述第一加密随机数的加密通信请求发送给所述预设的域名解析服务器;并且,所述加密通信响应中进一步包含由服务器产生的第二随机数;
则所述根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证具体包括:
产生第三随机数;
根据所述服务器证书公钥对所述第一随机数进行加密运算,得到第一校验随机数;
根据所述第一校验随机数、所述第二随机数以及所述第三随机数产生第一通信密钥;
将所述第一通信密钥以及所述第三随机数发送给所述返回所述加密通信响应的服务器,以供所述返回所述加密通信响应的服务器根据所述第一加密随机数、所述第二随机数以及所述第三随机数产生第二通信密钥;其中,当所述第二通信密钥与第一通信密钥相同时,握手验证通过;并且,所述加密通信连接根据所述第二通信密钥和/或所述第一通信密钥建立。
5.根据权利要求4所述的方法,其中,所述根据所述第一校验随机数、所述第二随机数以及所述第三随机数产生第一通信密钥具体包括:根据所述服务器证书公钥对所述第三随机数进行加密,得到第三加密随机数,根据所述第一校验随机数、所述第二随机数以及所述第三加密随机数产生所述第一通信密钥;
所述将所述第一通信密钥以及所述第三随机数发送给所述返回所述加密通信响应的服务器具体包括:将所述第一通信密钥以及所述第三加密随机数发送给所述返回所述加密通信响应的服务器;
则所述返回所述加密通信响应的服务器根据所述第一加密随机数、所述第二随机数以及所述第三随机数产生第二通信密钥具体包括:根据服务器证书私钥对所述第三加密随机数进行解密,得到第三解密随机数,根据所述第一加密随机数、所述第二随机数以及所述第三解密随机数产生所述第二通信密钥。
6.根据权利要求4-5任一所述的方法,其中,所述本地证书公钥信息为所述预设的域名解析服务器的服务器证书公钥的哈希值信息;
则所述根据所述服务器证书公钥对所述第一随机数进行加密运算具体包括:根据所述服务器证书公钥计算所述服务器证书公钥的哈希值信息,根据所述服务器证书公钥的哈希值信息对所述第一随机数进行加密运算。
7.根据权利要求1-6任一所述的方法,其中,所述加密通信请求为HTTPS请求,所述握手验证为基于SSL协议的握手验证,且所述加密通信连接为SSL连接。
8.一种域名解析装置,包括:
发送模块,适于根据预先存储的本地证书公钥信息,向预设的域名解析服务器发送加密通信请求;
接收模块,适于接收并获取与所述加密通信请求相对应的加密通信响应中包含的服务器证书公钥;
验证模块,适于根据所述服务器证书公钥以及所述本地证书公钥信息,与返回所述加密通信响应的服务器进行握手验证;
获取模块,适于当验证通过时,与所述返回所述加密通信响应的服务器建立加密通信连接,通过所述加密通信连接获取域名解析结果。
9.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的域名解析方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的域名解析方法对应的操作。
CN201811315179.4A 2018-11-06 2018-11-06 域名解析方法及装置 Active CN109413076B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811315179.4A CN109413076B (zh) 2018-11-06 2018-11-06 域名解析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811315179.4A CN109413076B (zh) 2018-11-06 2018-11-06 域名解析方法及装置

Publications (2)

Publication Number Publication Date
CN109413076A true CN109413076A (zh) 2019-03-01
CN109413076B CN109413076B (zh) 2022-11-29

Family

ID=65471869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811315179.4A Active CN109413076B (zh) 2018-11-06 2018-11-06 域名解析方法及装置

Country Status (1)

Country Link
CN (1) CN109413076B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109769043A (zh) * 2019-03-14 2019-05-17 中国工商银行股份有限公司 域名解析方法、装置及***
CN109819068A (zh) * 2019-03-19 2019-05-28 全链通有限公司 用户终端及其区块链域名解析方法
CN110049007A (zh) * 2019-03-08 2019-07-23 视联动力信息技术股份有限公司 视联网传输方法和装置
CN110266832A (zh) * 2019-07-08 2019-09-20 新华三信息安全技术有限公司 一种域名解析方法及装置
CN110289969A (zh) * 2019-07-02 2019-09-27 浪潮云信息技术有限公司 一种采用加密签名和加速解析防止dns被劫持的方法
CN110784560A (zh) * 2019-09-19 2020-02-11 平安壹钱包电子商务有限公司 网络连接方法、装置、计算机设备及计算机可读存储介质
CN111092878A (zh) * 2019-12-13 2020-05-01 北京小米移动软件有限公司 中间人劫持的测试方法、装置、设备及可读存储介质
CN111917756A (zh) * 2020-07-27 2020-11-10 杭州叙简科技股份有限公司 一种执法记录仪基于公钥路由的加密***及加密方法
CN113221146A (zh) * 2021-05-26 2021-08-06 中国人民银行数字货币研究所 区块链节点间数据传输的方法和装置
CN116886319A (zh) * 2023-09-08 2023-10-13 海马云(天津)信息技术有限公司 证书校验方法及装置、通信设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104468865A (zh) * 2014-12-25 2015-03-25 北京奇虎科技有限公司 域名解析控制、响应方法及相应的装置
CN105141612A (zh) * 2015-09-01 2015-12-09 中国互联网络信息中心 一种dns数据包隐私保护方法
CN105337977A (zh) * 2015-11-16 2016-02-17 苏州通付盾信息技术有限公司 一种动态双向认证的安全移动通讯架构及其实现方法
US20170026174A1 (en) * 2014-04-03 2017-01-26 Huawei Device Co., Ltd. Method, device, and system for establishing secure connection
US20170171147A1 (en) * 2015-12-10 2017-06-15 Le Holdings (Beijing) Co., Ltd. Method and electronic device for implementing domain name system
CN107018156A (zh) * 2017-06-01 2017-08-04 北京云端智度科技有限公司 域名劫持的防御保障方法
CN107404461A (zh) * 2016-05-19 2017-11-28 阿里巴巴集团控股有限公司 数据安全传输方法、客户端及服务端方法、装置及***
CN108696536A (zh) * 2018-07-03 2018-10-23 北京科东电力控制***有限责任公司 一种安全认证方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170026174A1 (en) * 2014-04-03 2017-01-26 Huawei Device Co., Ltd. Method, device, and system for establishing secure connection
CN104468865A (zh) * 2014-12-25 2015-03-25 北京奇虎科技有限公司 域名解析控制、响应方法及相应的装置
CN105141612A (zh) * 2015-09-01 2015-12-09 中国互联网络信息中心 一种dns数据包隐私保护方法
CN105337977A (zh) * 2015-11-16 2016-02-17 苏州通付盾信息技术有限公司 一种动态双向认证的安全移动通讯架构及其实现方法
US20170171147A1 (en) * 2015-12-10 2017-06-15 Le Holdings (Beijing) Co., Ltd. Method and electronic device for implementing domain name system
CN107404461A (zh) * 2016-05-19 2017-11-28 阿里巴巴集团控股有限公司 数据安全传输方法、客户端及服务端方法、装置及***
CN107018156A (zh) * 2017-06-01 2017-08-04 北京云端智度科技有限公司 域名劫持的防御保障方法
CN108696536A (zh) * 2018-07-03 2018-10-23 北京科东电力控制***有限责任公司 一种安全认证方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110049007B (zh) * 2019-03-08 2021-09-10 视联动力信息技术股份有限公司 视联网传输方法和装置
CN110049007A (zh) * 2019-03-08 2019-07-23 视联动力信息技术股份有限公司 视联网传输方法和装置
CN109769043A (zh) * 2019-03-14 2019-05-17 中国工商银行股份有限公司 域名解析方法、装置及***
CN109819068A (zh) * 2019-03-19 2019-05-28 全链通有限公司 用户终端及其区块链域名解析方法
CN110289969A (zh) * 2019-07-02 2019-09-27 浪潮云信息技术有限公司 一种采用加密签名和加速解析防止dns被劫持的方法
CN110289969B (zh) * 2019-07-02 2022-03-22 浪潮云信息技术股份公司 一种采用加密签名和加速解析防止dns被劫持的方法
CN110266832A (zh) * 2019-07-08 2019-09-20 新华三信息安全技术有限公司 一种域名解析方法及装置
CN110784560A (zh) * 2019-09-19 2020-02-11 平安壹钱包电子商务有限公司 网络连接方法、装置、计算机设备及计算机可读存储介质
CN111092878A (zh) * 2019-12-13 2020-05-01 北京小米移动软件有限公司 中间人劫持的测试方法、装置、设备及可读存储介质
CN111092878B (zh) * 2019-12-13 2022-03-01 北京小米移动软件有限公司 中间人劫持的测试方法、装置、设备及可读存储介质
CN111917756A (zh) * 2020-07-27 2020-11-10 杭州叙简科技股份有限公司 一种执法记录仪基于公钥路由的加密***及加密方法
CN111917756B (zh) * 2020-07-27 2022-05-27 杭州叙简科技股份有限公司 一种执法记录仪基于公钥路由的加密***及加密方法
CN113221146A (zh) * 2021-05-26 2021-08-06 中国人民银行数字货币研究所 区块链节点间数据传输的方法和装置
CN113221146B (zh) * 2021-05-26 2023-11-03 中国人民银行数字货币研究所 区块链节点间数据传输的方法和装置
CN116886319A (zh) * 2023-09-08 2023-10-13 海马云(天津)信息技术有限公司 证书校验方法及装置、通信设备

Also Published As

Publication number Publication date
CN109413076B (zh) 2022-11-29

Similar Documents

Publication Publication Date Title
CN109413076A (zh) 域名解析方法及装置
Clark et al. SoK: SSL and HTTPS: Revisiting past challenges and evaluating certificate trust model enhancements
US9106695B2 (en) Method and system for user authentication using DNSSEC
CN106372941A (zh) 基于区块链的ca认证管理方法、装置及***
CN108476246A (zh) 计算机网络中的安全域名解析
CN101394399A (zh) 使用严格约束网络访问控制协议的网络访问控制信息交换
CN110326267A (zh) 具有替代数字证书的网络安全
Parsovs Practical issues with TLS client certificate authentication
US9661002B2 (en) Method for user authentication using DNSSEC
Chothia et al. Why banker Bob (still) can’t get TLS right: A Security Analysis of TLS in Leading UK Banking Apps
CN105516169A (zh) 检测网站安全的方法及装置
Chatzoglou et al. Revisiting QUIC attacks: A comprehensive review on QUIC security and a hands-on study
Wazan et al. TLS connection validation by web browsers: Why do web browsers still not agree?
Wazan et al. On the Validation of Web X. 509 Certificates by TLS interception products
Berbecaru et al. An evaluation of X. 509 certificate revocation and related privacy issues in the web PKI ecosystem
Ernstberger et al. Origo: Proving provenance of sensitive data with constant communication
Khoury et al. Implementation of blockchain domain control verification (B-DCV)
CN114666056B (zh) 提供第一数字证书和dns响应
Wouters et al. Building and Integrating Virtual Private Networks with Openswan
JP5175541B2 (ja) ネットワークを介した動作をセキュリティ保護する方法および関連装置
CN112671538B (zh) 密钥更新方法、装置、***、存储介质及计算设备
Alashwali et al. DSTC: DNS-based strict TLS configurations
Radholm et al. Ethical Hacking of an IoT-device: Threat Assessment and Penetration Testing: A Survey on Security of a Smart Refrigerator
Myre PKI and IoT Security: How to choose the most secure implementation?
Kirsch Improved kernel-based port-knocking in linux

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant