CN105939317B - Ssl握手报文的解析方法及装置 - Google Patents

Ssl握手报文的解析方法及装置 Download PDF

Info

Publication number
CN105939317B
CN105939317B CN201510807374.9A CN201510807374A CN105939317B CN 105939317 B CN105939317 B CN 105939317B CN 201510807374 A CN201510807374 A CN 201510807374A CN 105939317 B CN105939317 B CN 105939317B
Authority
CN
China
Prior art keywords
ssl
handshake message
message
session status
ssl handshake
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.)
Active
Application number
CN201510807374.9A
Other languages
English (en)
Other versions
CN105939317A (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.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech Technologies 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 Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN201510807374.9A priority Critical patent/CN105939317B/zh
Publication of CN105939317A publication Critical patent/CN105939317A/zh
Application granted granted Critical
Publication of CN105939317B publication Critical patent/CN105939317B/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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/168Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP] specially adapted for link layer protocols, e.g. asynchronous transfer mode [ATM], synchronous optical network [SONET] or point-to-point protocol [PPP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本申请提供一种安全套接层SSL握手报文的解析方法及装置,所述方法包括:接收对端发送的SSL握手报文;识别接收到的所述SSL握手报文的类型;基于识别出的所述SSL握手报文的类型解析所述SSL握手报文。应用本申请不需要多次切换当前的SSL会话状态、缓存报文等,因此网络设备在当前的SSL会话状态与接收到的SSL握手报文不匹配时,对所述SSL握手报文的解析效率高。

Description

SSL握手报文的解析方法及装置
技术领域
本申请涉及网络通信技术领域,尤其涉及SSL握手报文的解析方法及装置。
背景技术
为了提高网络数据传输的安全性,越来越多的应用、网站开始使用SSL (SecureSockets Layer,安全套接层)协议,广泛应用的有电子商务、网上银行等领域。SSL协议是一个安全协议,为基于TCP的应用层协议提供安全连接,如SSL协议可以为HTTP协议提供安全连接。在使用SSL协议进行信息交流之前,网络设备之间需要通过SSL握手协商完成对彼此的认证。
现有技术中,网络设备以当前的SSL会话状态为基础对SSL握手报文进行解析。当接收到SSL握手报文时,网络设备调用与当前的SSL会话状态对应的解析函数对该SSL握手报文进行解析。如果该SSL握手报文与当前的SSL 会话状态不匹配,则会出现解析错误,此时,网络设备不得不对该SSL握手报文进行缓存,并切换当前的SSL会话状态,然后对该SSL握手报文重新进行解析。由以上过程可知,当接收到的SSL握手报文与当前的SSL会话状态不匹配时,现有技术对该SSL握手报文的解析效率低。
发明内容
有鉴于此,本申请提供一种SSL握手报文的解析方法及装置,来解决现有技术中当网络设备当前的SSL会话状态与接收到的SSL握手报文不匹配时对该SSL握手报文的解析效率低的问题。
具体地,本申请是通过如下技术方案实现的:
根据本申请实施例的第一方面,提供一种SSL握手报文的解析方法,所述方法应用于网络设备上,所述方法包括:
接收对端发送的SSL握手报文;
识别接收到的所述SSL握手报文的类型;
基于识别出的所述SSL握手报文的类型解析所述SSL握手报文。
根据本申请实施例的第二方面,提供一种解析SSL握手报文的装置,所述装置应用于网络设备上,所述装置包括:
接收单元,用于接收对端发送的SSL握手报文;
识别单元,用于识别接收到的所述SSL握手报文的类型;
解析单元,用于基于识别出的所述SSL握手报文的类型解析所述SSL握手报文。
本申请提供SSL握手报文的解析方法及装置,当接收到SSL握手报文时,网络设备可以先判断所述SSL握手报文的类型,然后调用与所述SSL握手报文的类型对应的解析函数解析所述SSL握手报文。在本申请中,由于网络设备不再基于SSL会话状态来解析报文,而是基于SSL握手报文的类型来解析报文,因此可以提升对所述SSL握手报文的解析效率。
附图说明
图1是应用本申请实施例实现SSL握手报文解析的一个应用场景示意图;
图2是网络设备之间建立SSL连接的一个交互流程图;
图3是本申请SSL握手报文的解析方法的一个实施例流程图;
图4是本申请SSL握手报文的解析装置所在设备的一种硬件结构图;
图5是本申请SSL握手报文的解析装置的一个实施例框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
参见图1,为应用本申请实施例实现SSL握手报文解析的一个应用场景示意图。为了加强网络数据的安全性,客户端和服务器之间可以建立SSL连接。建立SSL连接的交互流程可以如图2所示(图2仅展示出部分交互流程),由图2可知,在进行SSL握手协商时,有些SSL握手报文是必不可少的(如图1中标识为Required的报文),如开始会话连接的ClientHello报文。但是,有些握手报文是可以根据网络设备的自身需要选择是否发送至与其进行SSL握手协商的对端的(如图1中标识为Optional的报文),如包含自身证书信息的Certificate报文。
以客户端为例,客户端的初始SSL会话状态为SSL_SEND_CLIENT_HELLO,此状态表示客户端可以向对端即服务器发送SSL握手报文。此时,客户端的 SSL状态机发现自己处于SSL_SEND_CLIENT_HELLO的状态,于是,执行向服务器发送Client Hello报文的操作。所述Client Hello报文发送成功后,客户端将当前的SSL会话状态切换至下一个SSL会话状态SSL_GET_SERVER_HELLO,此状态表示客户端在等待来自服务器的Server Hello报文。
服务器接收到来自客户端的Client Hello报文后,根据SSL协议的相关内容向客户端发送Server Hello报文,客户端接收并解析所述Server Hello 报文后,将当前的SSL会话状态切换至SSL_GET_SERVER_CERT,此状态表示客户端希望接收服务器发来的证书,因此,此时,客户端在等待服务器发送包含证书信息的报文。
服务器在发送Server Hello报文后,根据SSL协议的相关内容,服务器立刻发送包含自身证书信息的报文即Certificate报文。客户端接收并解析所述Certificate报文,然后将状态切换至SSL_GET_SERVER_HELLO_DONE,以等待服务器发送Server Hello Done报文。
但是,服务器发送Server Hello Done报文后,按照自身的配置,可能先向客户端发送Certificate Request报文,然后再发送Server Hello Done 报文,或者直接发送Server Hello Done报文。因为,客户端当前的SSL会话状态为SSL_GET_SERVER_HELLO_DONE,表示客户端想要接收Server Hello Done报文。所以,当客户端接收到来自服务器的Certificate Request报文时,因为客户端的SSL状态机发现自己处于SSL_GET_SERVER_HELLO_DONE状态,因此,客户端的SSL状态机会采用与此SSL会话状态对应的解析函数对接收到的Certificate Request报文进行解析。因为客户端采用的解析函数与报文的类型不对应,因此,解析的结果自然是错误的。解析错误之后,客户端发现此握手报文为Certificate Request报文,于是,客户端将此握手报文缓存,并把当前的SSL会话状态切换至SSL_GET_SERVER_CRET_REQ,然后采用与此SSL会话状态对应的解析函数对CertificateRequest报文进行解析,此解析过程可以成功。由上述过程可知,在现有技术中,通常是基于SSL会话状态来解析SSL握手报文的,因此,在调用与当前的SSL会话状态对应的解析函数对该SSL握手报文进行解析时,如果该SSL握手报文与当前的SSL会话状态不匹配,则会出现解析错误,此时,网络设备不得不对该握手报文进行缓存,并切换会话状态重新进行解析,因此当接收到的SSL握手报文与当前的SSL会话状态不匹配时,现有技术对该SSL握手报文的解析效率低。
有鉴于此,本申请提出一种SSL握手报文的解析方法,通过接收对端发送的SSL握手报文,识别出接收到的所述SSL握手报文的类型,并基于识别出的所述SSL握手报文的类型解析所述SSL握手报文。由于在本申请中不再基于SSL会话状态来解析报文,而是通过SSL握手报文的类型来解析SSL握手报文,因此,网络设备不需要多次切换SSL会话状态、缓存报文等。本申请在网络设备当前的SSL会话状态与接收到的SSL握手报文不匹配时,对所述SSL握手报文的解析效率高。
参见图3,为本申请SSL握手报文的解析方法的一个实施例流程图,该实施例应用在网络设备上,包括了以下步骤:
步骤301:接收对端发送的SSL握手报文。
在本申请中,所述网络设备可以包括建立SSL会话的本端主机或者对端服务器。因此,所述网络设备可以接收来自对端客户端或者对端服务器发送的SSL握手报文。
步骤302:识别接收到的所述SSL握手报文的类型。
接收到SSL握手报文后,网络设备可以根据所述SSL握手报文头部的字节特征,识别出所述SSL握手报文的类型。所述SSL握手报文的前9个字节有着特定的格式,所述字节特征可以包括所述SSL握手报文的特定格式。
在一个示例中,所述SSL握手报文的特定格式可以如表1所示(表1仅展示出部分所述SSL握手报文的信息):
Content Type Version Length Handshake Protocol
0x16 0x0301 253 Certificate Request
表1
表1中,0x16表示所述报文为握手报文,0x0301表示所述报文使用SSL 协议,253表示报文长度,Certificate Request表示报文类型。因此,由表 1可知,当所述SSL握手报文如表1所示时,所述SSL握手报文为Certificate Request报文。
步骤303:基于识别出的所述SSL握手报文的类型解析所述SSL握手报文。
在本申请中,可以不再基于SSL会话状态来解析SSL握手报文,而是基于SSL报文类型来解析SSL握手报文。
在识别出接收到的所述SSL握手报文的类型后,可以基于识别出的所述 SSL握手报文的类型对所述SSL握手报文进行解析。所述网络设备可以预先为每一种SSL握手报文分别设置与其报文类型对应的解析函数,当识别出接收到的所述SSL握手报文的类型后,所述网络设备可以调用预先设置的与SSL 握手报文的类型对应的解析函数对所述SSL握手报文进行解析。
在一个示例中,现有技术中,网络设备当前的SSL会话状态与其对应的解析函数的对应关系可以如下表2所示(表2中仅展示出部分对应关系):
表2
本申请中,因为可以预先为每一种SSL握手报文分别设置与其对应的解析函数,所以所述SSL握手报文的类型与预先设置的与其对应的解析函数的对应关系可以如下表3所示(表3中仅展示出部分对应关系):
SSL握手报文的类型 对应的解析函数
Client Hello ssl_send_client_hello
Server Hello ssl_get_server_hello
Certificate ssl_get_server_cert
Certificate Request ssl_get_server_cert_req
Server Hello Done ssl_get_server_hello_done
表3
由表2和表3可知,当接收到SSL握手报文时,现有技术是调用与当前的SSL会话状态对应的解析函数解析接收到的SSL握手报文,但本申请是调用与接收到的SSL握手报文的类型对应的解析函数来解析接收到的报文。
在一个示例中,以客户端为例,现有技术中,假设客户端当前的SSL会话状态为SSL_GET_SERVER_CERT_REQ,则当接收到服务器发送的SSL握手报文后,客户端会调用与当前的SSL会话状态对应的解析函数对接收到的SSL 握手报文进行解析。因为客户端当前的SSL会话状态为 SSL_GET_SERVER_CERT_REQ,所以,由表2可知,客户端会调用 ssl_get_server_cert_req函数对接收到的SSL握手报文进行解析。当客户端接收到的SSL握手报文是Certificate Request报文时,解析可以成功;当客户端接收到的SSL握手报文不是Certificate Request报文时,则解析失败。假设客户端在解析失败后,发现接收到的SSL握手报文为Server Hello Done报文,则客户端需要先将所述Server Hello Done报文缓存,并将当前的SSL会话状态切换为SSL_GET_SERVER_HELLO_DONE,然后调用与此SSL会话状态对应的解析函数对接收到的报文进行解析。由表2可知,所述解析函数为ssl_get_server_hello_done,当调用此函数对所述Server Hello Done 报文进行解析时,可以解析成功。
在本申请中,同样假设客户端当前的SSL会话状态为 SSL_GET_SERVER_CERT_REQ,则当接收到服务器发送的SSL握手报文后,客户端可以先根据所述SSL握手报文头部的字节特征识别出所述SSL握手报文的类型,假设识别出的所述SSL握手报文为CertificateRequest报文,由表 3可知,客户端可以调用与所述Certificate Request报文对应的解析函数 ssl_get_server_cert_req对所述SSL握手报文进行解析,解析可以成功;假设客户端识别出的所述SSL握手报文不为Certificate Request报文,如为Server Hello Done报文,由表3可知,客户端可以调用与Server Hello Done报文对应的解析函数ssl_get_server_hello_done对所述握手报文进行解析,解析可以成功。
由上述示例可见,当接收到与当前的SSL会话状态不匹配的SSL握手报文时,本申请不需要如现有技术一样多次切换SSL会话状态、缓存报文等。因此,本申请在网络设备当前的SSL会话状态与接收到的SSL握手报文不匹配时,可以解决现有技术对接收到的SSL握手报文的解析效率低的问题。
需要说明的是,在网络设备识别出接收到的SSL握手报文的类型之后,在根据所述SSL握手报文的类型解析所述SSL握手报文之前,可以根据当前的SSL会话状态判断所述SSL握手报文是否为合理报文。当所述SSL握手报文为合理报文时,网络设备可以根据识别出的所述SSL握手报文的类型解析所述SSL握手报文;当所述SSL握手报文为不合理报文时,网络设备可以断开与对端的SSL连接。其中,所述合理报文为符合SSL协议相关内容的报文。
以客户端为例,假设客户端当前的SSL会话状态为SSL_GET_SERVER_CERT,当接收到来自服务器发送的Server Hello报文时,则可以根据客户端当前的 SSL会话状态判断出所述SSL握手报文为不满足SSL协议相关内容的报文。因为按照SSL协议的相关内容,客户端只有在完成对Server Hello报文的解析之后,才有可能将SSL会话状态切换至SSL_GET_SERVER_CERT,因此,客户端收到Server Hello报文后,可以根据其会话状态判断所述SSL握手报文为不符合SSL协议相关内容的报文,即所述SSL握手报文为不合理报文。
同样假设客户端当前的SSL会话状态为SSL_GET_SERVER_CERT,当接收到来自服务器发送的Server Hello Done报文时,客户端可以根据当前的SSL 会话状态判断所述SSL握手报文是否为合理报文。客户端当前的SSL会话状态为SSL_GET_SERVER_CRET_REQ,表示客户端想要接收服务器发送的 Certificate Request报文。根据SSL协议的相关内容,服务器可以不发送 Certificate Request报文,而是直接发送Server Hello Done报文。因此,所述SSL握手报文为合理报文。
当接收到的SSL握手报文为合理报文时,网络设备可以对其进行解析。解析成功后,网络设备可以判断当前的SSL会话状态与所述SSL握手报文是否匹配,并可以根据判断结果来完成当前SSL会话状态的切换。其中,在进行SSL会话状态切换时,如果当前的SSL会话状态与所述SSL握手报文匹配,则可以将当前的SSL会话状态切换至下一个SSL会话状态;如果当前的SSL 会话状态与所述SSL握手报文不匹配,则可以将当前的SSL会话状态切换为与所述SSL握手报文匹配的SSL会话状态的下一个SSL会话状态。
本申请提供SSL握手报文的解析方法及装置,当接收到SSL握手报文时,网络设备可以先判断其报文类型,然后调用与所述SSL握手报文的类型对应的解析函数解析所述SSL握手报文。由于在本申请中不再基于SSL会话状态来解析报文,而是通过SSL握手报文的类型来解析SSL握手报文,因此,网络设备不需要多次切换SSL会话状态、缓存报文等。故本申请在网络设备当前的SSL会话状态与接收到的SSL握手报文不匹配时,对所述SSL握手报文的解析效率高。
下面通过具体实施例并结合应用场景图对以上实施例进行详细说明:
由图1和图2可知,客户端和服务器之间可以按照图2所示的SSL交互流程来建立SSL连接。以客户端为例,在与服务器建立SSL连接的过程中,可以有很多的SSL会话状态。例如,客户端想要向服务器发送报文以开始建立SSL连接时,客户端当前的SSL会话状态为SSL_SEND_CLIENT_HELLO,此会话状态为客户端的初始状态。当客户端当前的SSL会话状态为此状态时,表示客户端想要发送报文。于是,客户端向服务器发送Client Hello报文以开始与服务器建立SSL连接。Client Hello报文发送完成后,客户端会将SSL 会话状态切换成当前SSL会话状态的下一个SSL会话状态 SSL_GET_SERVER_HELLO,此状态表示客户端在等待服务器端发送Server Hello报文。服务器在接收到Client Hello报文后,可以向客户端发送Server Hello报文。
在一个示例中,现有技术中,当客户端接收到来自服务器发送的Server Hello报文时,调用与当前的SSL会话状态对应的解析函数对接收到的Server Hello报文进行解析。由表2可知,与SSL_GET_SERVER_HELLO对应的解析函数为ssl_get_server_hello。因此,客户端会调用ssl_get_server_hello 对接收到的Server Hello报文进行解析。因为解析函数 ssl_get_server_hello与Server Hello报文相对应,所以客户端可以解析成功。当客户端解析成功后,客户端可以按照自身的需求将SSL会话状态切换为SSL_GET_SERVER_CERT,此状态表示客户端想要接收服务器发送的包含证书信息的报文即Certificate报文。服务器在发送Server Hello报文后,根据SSL协议的相关内容,可以向客户端发送自身的Certificate报文。客户端接收到Certificate报文后,调用与当前状态SSL_GET_SERVER_CERT对应的解析函数ssl_get_server_cert对Certificate报文进行解析。因为解析函数ssl_get_server_cert与Certificate报文相对应。所以可以解析成功。然后,客户端可以将SSL会话状态切换至当前SSL会话状态的下一个SSL 会话状态SSL_GET_SERVER_CRET_REQ。此状态表示客户端想要接收来自服务器的Certificate Request报文。
服务器在发送Certificate报文之后,可以按照自身的配置,向客户端发送Certificate Request报文,然后再发送Server Hello Done报文,或者直接发送ServerHello Done报文。
假设,服务器发送Certificate报文之后,不发送Certificate Request 报文,而是直接发送Server Hello Done报文。此时,客户端当前的SSL会话状态可以为SSL_GET_SERVER_CRET_REQ。
现有技术中,接收到服务器发送的Server Hello Done报文后,客户端调用与当前的SSL会话状态SSL_GET_SERVER_CRET_REQ对应的解析函数 ssl_get_server_cert_req对Server Hello Done报文进行解析。因为解析函数ssl_get_server_cert_req与ServerHello Done报文不对应,因此,解析失败。此时,客户端可以发现接收到的SSL握手报文为Server Hello Done 报文。客户端将Server Hello Done报文进行缓存,然后,将SSL会话状态切换到与Server Hello Done报文对应的SSL会话状态 SSL_GET_SERVER_HELLO_DONE,并调用与会话状态 SSL_GET_SERVER_HELLO_DONE对应的解析函数ssl_get_server_hello_done 对Server Hello Done报文进行解析。因为解析函数 ssl_get_server_hello_done与Server Hello Done报文相对应,所以,可以解析成功。由上述现有技术可知,当接收到的SSL握手报文与当前的SSL 会话状态不匹配时,现有技术需要多次切换SSL会话状态、缓存报文等,因此,现有技术对所述SSL握手报文的解析效率低。
本申请中,接收到服务器发送的Server Hello Done报文后,客户端可以根据报文头部的字节特征如报文前9个字节的特定格式识别出接收到的 SSL握手报文为ServerHello Done报文。然后,客户端可以根据当前的SSL 会话状态判断所述SSL握手报文是否为合理报文。根据SSL协议的相关内容,由客户端当前的SSL会话状态为SSL_GET_SERVER_CRET_REQ可知,当接收到的SSL握手报文为Server Hello Done报文时,可以判断所述SSL握手报文为合理报文。然后客户端可以调用与Server Hello Done报文对应的解析函数ssl_get_server_hello_done对接收到的Server Hello Done报文进行解析。因为解析函数ssl_get_server_hello_done与Server Hello Done报文相对应,所以,可以解析成功。由以上过程可知,当接收到的SSL握手报文与当前的SSL会话状态不匹配时,本申请不需要多次切换SSL会话状态、缓存报文等,因此,本申请对所述SSL握手报文的解析效率高。
进一步地,本申请中,对接收到的SSL握手报文解析成功之后,还可以根据当前的SSL会话状态与所述SSL握手报文的匹配结果,对SSL会话状态进行切换。
同样地,以客户端为例,当接收到的SSL握手报文与当前的SSL会话状态匹配时,客户端可以在成功解析所述SSL握手报文之后,将SSL会话状态切换至当前SSL会话状态的下一个SSL会话状态。
在一个示例中,假设客户端当前的SSL会话状态为SSL_GET_SERVER_CERT。当接收到服务器发送的Certificate报文时,客户端可以调用与Certificate 报文对应的解析函数ssl_get_server_cert对Certificate报文进行解析。解析成功后,因为Certificate报文与客户端当前的SSL会话状态 SSL_GET_SERVER_CERT匹配。因此,客户端可以将SSL会话状态切换至当前 SSL会话状态的下一个SSL会话状态SSL_GET_SERVER_CRET_REQ。
当接收到的SSL握手报文与当前的SSL会话状态不匹配时,可以将当前的SSL会话状态切换为与所述SSL握手报文匹配的SSL会话状态将当前的SSL 会话状态切换为与所述SSL握手报文匹配的SSL会话状态的下一个SSL会话状态。
在一个示例中,假设客户端当前的SSL会话状态为 SSL_GET_SERVER_CRET_REQ,当接收到服务器发送的Server Hello Done报文时,客户端可以根据当前的SSL会话状态判断所述SSL握手报文是否为合理报文。客户端当前的SSL会话状态为SSL_GET_SERVER_CRET_REQ,表示客户端想要接收服务器发送的Certificate Request报文。根据SSL协议的相关内容,服务器可以不发送Certificate Request报文,而是直接发送Server Hello Done报文。因此,所述SSL握手报文为合理报文。然后客户端可以调用与Server Hello Done报文对应的函数对其进行解析。解析成功后,因为 Server Hello Done报文与客户端当前的SSL会话状态 SSL_GET_SERVER_CRET_REQ不匹配,因此,客户端可以将当前的SSL会话状态切换为与所述SSL握手报文匹配的SSL会话状态的下一个SSL会话状态。即,客户端可以在成功解析Server Hello Done报文之后,将当前的SSL会话状态切换至与Server Hello Done报文匹配的SSL会话状态 SSL_GET_SERVER_HELLO_DONE的下一个SSL会话状态。所述下一个SSL会话状态可以为SSL_SENT_CLIENT_CERT。
在一个示例中,假设客户端当前的SSL会话状态为 SSL_GET_SERVER_CRET_REQ,当接收到服务器发送的Server Hello报文时,客户端可以根据当前的SSL会话状态判断所述SSL握手报文是否为合理报文。客户端当前的SSL会话状态为SSL_GET_SERVER_CRET_REQ,表示客户端想要接收服务器发送的Certificate Request报文。根据SSL协议的相关内容,只有在客户端已经将Server Hello报文成功解析之后,SSL会话状态才有可能切换至SSL_GET_SERVER_CRET_REQ,因此,当客户端当前的SSL会话状态为SSL_GET_SERVER_CRET_REQ时,客户端不应该接收到服务器发送的Server Hello报文。因此,所述SSL握手报文为不合理报文。此时,客户端可以不再调用与Server Hello报文对应的函数对其进行解析,而是在判断出所述 SSL握手报文为不合理报文后,断开与服务器的SSL连接。
本申请提供SSL握手报文的解析方法及装置,当接收到SSL握手报文时,网络设备可以先判断其报文类型,然后调用与所述SSL握手报文的类型对应的解析函数解析所述SSL握手报文。由于在本申请中不再基于SSL会话状态来解析报文,而是通过SSL握手报文的类型来解析SSL握手报文,因此,网络设备不需要多次切换SSL会话状态、缓存报文等。故本申请在网络设备当前的SSL会话状态与接收到的SSL握手报文不匹配时,对所述SSL握手报文的解析效率高。
与前述SSL握手报文的解析方法的实施例相对应,本申请还提供了SSL 握手报文的解析装置的实施例。
本申请SSL握手报文的解析装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请SSL握手报文的解析装置所在设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。
请参考图5,为本申请SSL握手报文的解析装置的一个实施例框图:
该装置可以包括:接收单元510、识别单元520以及解析单元530。
接收单元510,用于接收对端发送的SSL握手报文;
识别单元520,用于识别接收到的所述SSL握手报文的类型;
解析单元530,用于基于识别出的所述SSL握手报文的类型解析所述SSL 握手报文。
在一个可选的实现方式中,所述识别单元520可以具体用于:
基于所述SSL握手报文头部的字节特征识别所述SSL握手报文的类型。
在一个可选的实现方式中,所述解析单元530可以具体用于:
根据当前的SSL会话状态判断所述SSL握手报文是否为合理报文;
当所述SSL握手报文为合理报文时,则基于识别出的所述SSL握手报文的类型解析所述SSL握手报文;当所述SSL握手报文为不合理报文时,则断开与对端的SSL连接。
在一个可选的实现方式中,所述解析单元530可以具体用于:
当所述SSL握手报文为合理报文时,调用与所述SSL握手报文的类型对应的解析函数解析所述SSL握手报文。
在一个可选的实现方式中,所述装置还可以包括(图5中未示出):
判断单元540,用于判断当前的SSL会话状态与所述SSL握手报文是否匹配;
第一切换单元550,用于如果当前的SSL会话状态匹配所述SSL握手报文时,则将当前的SSL会话状态切换至下一个SSL会话状态。
在另一个可选的实现方式中,所述装置还可以包括(图5中未示出):
第二切换单元560,用于如果当前的SSL会话状态不匹配所述SSL握手报文时,将当前的SSL会话状态切换为与所述SSL握手报文匹配的SSL会话状态的下一个SSL会话状态。
在一个可选的实现方式中,所述网络设备可以包括建立SSL会话的本端主机或者对端服务器。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在本申请实施例中,当接收到SSL握手报文时,网络设备可以先判断其报文类型,然后调用与所述SSL握手报文的类型对应的解析函数解析所述SSL 握手报文。由于在本申请中不再基于SSL会话状态来解析报文,而是通过SSL 握手报文的类型来解析SSL握手报文,因此,网络设备不需要多次切换SSL 会话状态、缓存报文等。故本申请在网络设备当前的SSL会话状态与接收到的SSL握手报文不匹配时,对所述SSL握手报文的解析效率高。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (10)

1.一种安全套接层SSL握手报文的解析方法,其特征在于,所述方法应用于网络设备上,所述方法包括:
接收对端发送的SSL握手报文;
识别接收到的所述SSL握手报文的类型;
基于识别出的所述SSL握手报文的类型解析所述SSL握手报文;
所述基于识别出的所述SSL握手报文的类型解析所述SSL握手报文,包括:
根据当前的SSL会话状态判断所述SSL握手报文是否为合理报文;
当所述SSL握手报文为合理报文时,调用与所述SSL握手报文的类型对应的解析函数解析所述SSL握手报文;当所述SSL握手报文为不合理报文时,则断开与对端的SSL连接。
2.根据权利要求1所述的方法,其特征在于,所述识别接收到的所述SSL握手报文的类型包括:
基于所述SSL握手报文头部的字节特征识别所述SSL握手报文的类型。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断当前的SSL会话状态与所述SSL握手报文对应的会话状态是否匹配;
如果当前的SSL会话状态匹配所述SSL握手报文对应的会话状态时,则将当前的SSL会话状态切换至下一个SSL会话状态。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果当前的SSL会话状态不匹配所述SSL握手报文对应的会话状态时,将当前的SSL会话状态切换为与所述SSL握手报文匹配的SSL会话状态的下一个SSL会话状态。
5.根据权利要求1所述的方法,其特征在于,所述网络设备包括建立SSL会话的本端主机或者对端服务器。
6.一种SSL握手报文的解析装置,其特征在于,所述装置应用于网络设备上,所述装置包括:
接收单元,用于接收对端发送的SSL握手报文;
识别单元,用于识别接收到的所述SSL握手报文的类型;
解析单元,用于基于识别出的所述SSL握手报文的类型调用对应的解析函数,以解析所述SSL握手报文;具体地,根据当前的SSL会话状态判断所述SSL握手报文是否为合理报文;当所述SSL握手报文为合理报文时,调用与所述SSL握手报文的类型对应的解析函数解析所述SSL握手报文;当所述SSL握手报文为不合理报文时,则断开与对端的SSL连接。
7.根据权利要求6所述的装置,其特征在于,所述识别单元具体用于:
基于所述SSL握手报文头部的字节特征识别所述SSL握手报文的类型。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
判断单元,用于判断当前的SSL会话状态与所述SSL握手报文对应的会话状态是否匹配;
第一切换单元,用于如果当前的SSL会话状态匹配所述SSL握手报文对应的会话状态时,则将当前的SSL会话状态切换至下一个SSL会话状态。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二切换单元,用于如果当前的SSL会话状态不匹配所述SSL握手报文对应的会话状态时,将当前的SSL会话状态切换为与所述SSL握手报文匹配的SSL会话状态的下一个SSL会话状态。
10.根据权利要求6所述的装置,其特征在于,所述网络设备包括建立SSL会话的本端主机或者对端服务器。
CN201510807374.9A 2015-11-19 2015-11-19 Ssl握手报文的解析方法及装置 Active CN105939317B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510807374.9A CN105939317B (zh) 2015-11-19 2015-11-19 Ssl握手报文的解析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510807374.9A CN105939317B (zh) 2015-11-19 2015-11-19 Ssl握手报文的解析方法及装置

Publications (2)

Publication Number Publication Date
CN105939317A CN105939317A (zh) 2016-09-14
CN105939317B true CN105939317B (zh) 2019-11-12

Family

ID=57153060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510807374.9A Active CN105939317B (zh) 2015-11-19 2015-11-19 Ssl握手报文的解析方法及装置

Country Status (1)

Country Link
CN (1) CN105939317B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108833541A (zh) * 2018-06-15 2018-11-16 北京奇安信科技有限公司 一种识别终端信息的方法及装置
CN111865877B (zh) * 2019-04-29 2023-03-24 深信服科技股份有限公司 一种上网行为控制方法、系统及电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101296238A (zh) * 2008-06-17 2008-10-29 杭州华三通信技术有限公司 一种保持安全套接层会话持续性的方法及设备
CN102217281A (zh) * 2011-06-13 2011-10-12 华为技术有限公司 协议解析方法及装置
CN102761449A (zh) * 2012-08-07 2012-10-31 北京鼎震科技有限责任公司 一种web服务性能分析系统及方法和装置
CN103685187A (zh) * 2012-09-14 2014-03-26 华耀(中国)科技有限公司 一种按需转换ssl认证方式以实现资源访问控制的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2379082A1 (en) * 2002-03-27 2003-09-27 Ibm Canada Limited-Ibm Canada Limitee Secure cache of web session information using web browser cookies

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101296238A (zh) * 2008-06-17 2008-10-29 杭州华三通信技术有限公司 一种保持安全套接层会话持续性的方法及设备
CN102217281A (zh) * 2011-06-13 2011-10-12 华为技术有限公司 协议解析方法及装置
CN102761449A (zh) * 2012-08-07 2012-10-31 北京鼎震科技有限责任公司 一种web服务性能分析系统及方法和装置
CN103685187A (zh) * 2012-09-14 2014-03-26 华耀(中国)科技有限公司 一种按需转换ssl认证方式以实现资源访问控制的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《OpenSSLotHeartBleed漏洞分析及检测技术研究》;强小辉,陈波等;《计算机工程与应用》;20150115;全文 *
《OpenSSL源码的记录层解析》;张艺博;《电脑编程技巧与维护》;20090518;全文 *

Also Published As

Publication number Publication date
CN105939317A (zh) 2016-09-14

Similar Documents

Publication Publication Date Title
KR102110698B1 (ko) 단말기 상호 연결 방법, 장치 및 저장 매체
CN102904959B (zh) 网络加速方法和网关
WO2014082577A1 (zh) 实现远程调试的方法及系统
CN109257254B (zh) 网络连通性检查方法、装置、计算机设备以及存储介质
CN109889521B (zh) 存储器、通信通道复用实现方法、装置和设备
CN104580376B (zh) 在局域网中建立终端之间连接的方法、装置和系统
WO2021164261A1 (zh) 云网络设备的测试方法、存储介质和计算机设备
CN105187440A (zh) 使用udp协议传输视频数据的方法及系统
CN110677432A (zh) 一种网络协议内部代理转发方法、装置、介质及终端设备
CN104079571A (zh) 一种识别Android模拟器的方法及装置
CN110971498B (zh) 通信方法、通信装置、电子设备及存储介质
CN110417632B (zh) 一种网络通信方法、系统及服务器
CN108173810B (zh) 一种传输网络数据的方法及装置
CN105939317B (zh) Ssl握手报文的解析方法及装置
CN111385068B (zh) 数据传输方法、装置、电子设备及通信系统
CN103997437A (zh) 一种测试云服务器注册功能的方法
CN108989157B (zh) 用于智能设备控制的方法、装置
CN108512889B (zh) 一种基于http的应用响应推送方法及代理服务器
CN104202432B (zh) 一种远程web管理系统及管理方法
CN109286665B (zh) 实时移动游戏长链接处理方法及装置
CN104518988A (zh) 一种报文优先处理的方法及系统
CN106303577A (zh) 下载流媒体的方法及装置
CN111800518A (zh) 客户端ip地址插入方法及装置
CN109218436A (zh) 一种基于双端口备份技术的局域网设备发现方法
EP1575236A1 (en) Connectivity confirmation method for network storage device and host computer

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: Binjiang District and Hangzhou city in Zhejiang Province Road 310051 No. 68 in the 6 storey building

Applicant after: Hangzhou Dipu Polytron Technologies Inc

Address before: Binjiang District and Hangzhou city in Zhejiang Province Road 310051 No. 68 in the 6 storey building

Applicant before: Hangzhou Dipu Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant