一种基于镜像流的SSL/TLS协议明文数据采集方法与流程

文档序号:11410895阅读:286来源:国知局
一种基于镜像流的SSL/TLS协议明文数据采集方法与流程

本发明属于网络安全通信技术领域,具体涉及到一种基于镜像流的ssl/tls协议明文数据采集方法。



背景技术:

ssl协议及其继任者tls协议,是为网络安全提供安全性及数据完整性的一种安全协议。ssl/tls协议位于tcp/ip协议和应用层协议之间,可为各种应用层协议提供安全性保证,例如ftp、telnet协议等,目前ssl/tls协议最广泛的应用是保护http协议安全。ssl/tls协议包括两层:记录层协议和握手协议。记录协议为高层握手协议提供基本的安全服务,保证数据完整性,具体包括压缩解压缩、加解密、计算和校验mac等。握手层协议包括握手协议、密码参数修改协议、告警协议和应用数据协议,用于通信双方认证、协商加密算法和生成秘钥等。

由ssl/tls协议保护的高层协议在客户端与服务器之间传输的为密文数据,并没有明文出现,这为数据审计带来了困难。需采取一些技术手段,将ssl/tls通信过程中密文数据解密为明文数据,再对相应明文数据进行解析审计。如图1所示,现有技术中,通常在客户端与服务器之间引入ssl/tls代理服务器,代理服务器串联在客户端与服务器之间,分别与客户端、服务器建立两条ssl/tls连接。由于ssl/tls代理服务器需获得数据后,进行解密获得明文数据,再将明文数据加密发送至客户端,额外的加密操作为系统带来了负担,导致系统响应时间变长、吞吐率降低。



技术实现要素:

本发明的目的在于克服目前ssl/tls通信过程中将密文数据解密为明文数据时存在的上述缺陷,提出了一种基于镜像流的ssl/tls协议明文数据采集方法,通过该方法可以不通过ssl/tls代理服务器,直接利用合法持有的服务器证书及私钥对ssl/tls协议的密文数据进行解析,从而直接获得明文数据,减少了中间环节,提高了明文数据的获取的效率。

为了实现上述目的,本发明提出了一种基于镜像流的ssl/tls协议明文数据采集方法,所述方法包括:

步骤1)接收镜像的ssl/tls数据包,对数据包中的记录进行提取,生成若干个完整记录,放入记录队列;

步骤2)从记录队列里的记录中提取若干个完整消息,放入消息队列;

步骤3)对消息队列中的消息进行解析,获取明文数据。

上述技术方案中,所述步骤1)具体包括:

步骤101)接收镜像的ssl/tls数据包;

步骤102)从数据包中提取出第一条记录,查看记录缓存区是否有缓存记录,若不存在缓存记录,则直接计算接收的第一条记录的长度;若记录缓存区中存在缓存记录,则将数据包拼接至缓存记录后,计算出当前缓存的第一条记录的长度;

步骤103)将第一条记录的长度和数据包长度进行比较,若第一条记录的长度加记录头长度等于数据包长度,转入步骤104);若第一条记录的长度加记录头长度小于数据包长度,转入步骤105);若第一条记录的长度加记录头长度大于数据包长度,转入步骤106);

步骤104)将该记录放入记录队列;

步骤105)对数据包进行拆分,循环提取单条完整的记录放入记录队列,并将最后不完整的记录放入记录缓存区;

步骤106)将该记录放入记录缓存区;转入步骤101);

放入记录缓存区的不完整记录等待后续的数据包进行拼接,然后再生成完整记录。

上述技术方案中,所述步骤2)具体包括:

步骤201)从记录队列里取出一个记录作为当前记录,

步骤202)查看当前记录的类型,若当前记录类型为应用数据协议、改变密码规范协议或告警消息,转入步骤203);若当前记录类型握手协议,转入步骤204);

步骤203)当前记录为单条完整的消息,放入消息队列;

步骤204)查看消息缓存区是否有缓存消息,若不存在缓存消息,则直接计算当前记录中第一条消息的长度;若缓存中存在缓存消息,则将当前记录拼接至缓存消息后,计算出当前缓存的第一条消息的长度;

步骤205)将计算的第一条消息的长度和当前记录长度进行比较,若第一条消息的长度加消息头长度等于当前记录长度,转入步骤206);若第一条消息的长度加消息头长度小于当前记录长度,转入步骤207);若第一条消息的长度加消息头长度大于当前记录长度,转入步骤208);

步骤206)当前记录为单条完整消息,放入消息队列;

步骤207)当前记录内含有多条消息,则对该记录进行拆分,循环提取若干条完整的消息放入消息队列;并将最后不完整的消息放入消息缓存区;

步骤208)当前记录为一条不完整的消息,放入消息缓存区,转入步骤201);

放入消息缓存区的不完整消息等待后续的记录进行拼接,然后再生成完整消息。

上述技术方案中,所述步骤3)的具体实现过程为:

从消息队列中取出一条消息,若消息类型为握手协议,则提取密码规范和秘钥信息;若消息类型为改变密码协议规范,则接下来的记录都会用新协商的密码规范和秘钥来保护;若消息类型为告警消息,则分析消息的严重性与告警描述;若消息类型为应用数据协议,则利用提取的密码规范和秘钥对传输数据进行解密,获取明文数据。

上述技术方案中,所述握手协议包括:clienthello、serverhello、severcertificate、serverhellodone、clientkeyexange、newsessionticket和finished,所述提取密码规范和秘钥信息的具体步骤为:

步骤301)若握手协议类型为clienthello,则记录客户端随机数、session_id和session_ticket;

步骤302)若握手协议类型为serverhello,则判断是否发生会话重用,若发生会话重用,则从缓存会话信息中提取主秘钥和加密算法规范,并生成密码参数;若没有发生会话重用,则记录协议版本、服务端随机数、sesseion_id、加密套件和压缩算法;

步骤303)若握手协议类型为severcertificate,则提取服务器公钥,查找匹配证书获取服务器私钥;

步骤304)若握手协议类型为serverhellodone,则此时服务端已经完成秘钥交换消息;

步骤305)若握手协议类型为clientkeyexange,则利用服务器解密预主秘钥,计算主秘钥,并生成安全参数;若该会话为新回话,则将会话信息进行缓存;

步骤306)若握手协议类型为newsessionticket,若此时没有发生会话重用,则填入缓存的会话信息中session_tiket项,若发生会话重用,则将缓存的会话信息中session_tieket项进行更新;

步骤307)若握手协议类型为finished,则验证相应方向的全部握手数据,待两方均验证通过后,即可开始应用数据传输。

上述技术方案中,所述步骤3)还包括:获取明文数据后,对明文数据进行解析,生成审计日志并进行存储。

与现有技术相比,本发明的优势在于:

1、本发明的方法根据ssl/tls协议的封装格式,将数据包拼接成完成记录、进一步提取完整的单个消息之后再处理,对服务器是否将多个消息合成一个记录或者将单个消息封装到多个记录之中没有要求,且可以灵活选择加入需要解析的新消息,可扩展性好;

2、本发明的方法对交换机镜像数据进行处理获取明文数据,与传统的引入代理服务器方式相比,不干涉系统原有业务,不影响系统性能。

附图说明

图1为现有的ssl/tls协议明文数据采集系统示意图;

图2为本发明的基于镜像流的ssl/tls协议明文数据采集方法的流程图;

图3为本发明一个实施例的基于镜像流的ssl/tls协议明文数据采集系统示意图。

具体实施方式

下面结合附图和优选实施例对本发明进行详细说明。

如图2所示,一种基于镜像流的ssl/tls协议明文数据采集方法,所述方法包括:

步骤1)接收镜像的ssl/tls数据包,对数据包中的记录进行提取,生成若干个完整记录,放入记录队列;具体包括:

步骤101)接收镜像的ssl/tls数据包;

步骤102)从数据包中提取出第一条记录,查看记录缓存区是否有缓存记录,若不存在缓存记录,则直接计算接收的第一条记录的长度;若记录缓存区中存在缓存记录,则将数据包拼接至缓存记录后,计算出当前缓存的第一条记录的长度;

ssl/tls协议记录封装格式如表1所示,其中记录头共5字节:

表1

步骤103)将第一条记录的长度和数据包长度进行比较,若第一条记录的长度加记录头长度等于数据包长度,转入步骤104);若第一条记录的长度加记录头长度小于数据包长度,转入步骤105);若第一条记录的长度加记录头长度大于数据包长度,转入步骤106);

步骤104)将该记录放入记录队列;

放入记录队列中的记录为完整记录。

步骤105)对数据包进行拆分,循环提取单条完整的记录放入记录队列,并将最后不完整的记录放入记录缓存区;

步骤106)将该记录放入记录缓存区;转入步骤101);

放入记录缓存区的不完整记录等待后续的数据包进行拼接,然后再生成完整记录。

步骤2)从记录队列里的记录中提取若干个完整消息,放入消息队列;

由于ssl/tls协议记录不作为消息的边界,因此在提取出完整记录后,需进一步提取完整消息,所述步骤2)具体包括:

步骤201)从记录队列里取出一个记录作为当前记录,

步骤202)查看当前记录的类型,若当前记录类型为应用数据协议、改变密码规范协议或告警消息,转入步骤203);若当前记录类型握手协议,转入步骤204);

ssl/tls记录握手消息格式如表2所示,其中消息头共4字节:

表2

步骤203)当前记录为单条完整的消息,放入消息队列;

步骤204)查看消息缓存区是否有缓存消息,若不存在缓存消息,则直接计算当前记录中第一条消息的长度;若缓存中存在缓存消息,则将当前记录拼接至缓存消息后,计算出当前缓存的第一条消息的长度;

步骤205)将计算的第一条消息的长度和当前记录长度进行比较,若第一条消息的长度加消息头长度等于当前记录长度,转入步骤206);若第一条消息的长度加消息头长度小于当前记录长度,转入步骤207);若第一条消息的长度加消息头长度大于当前记录长度,转入步骤208);

步骤206)当前记录为单条完整消息,放入消息队列;

步骤207)当前记录内含有多条消息,则对该记录进行拆分,循环提取若干条完整的消息放入消息队列;并将最后不完整的消息放入消息缓存区;

步骤208)当前记录为一条不完整的消息,放入消息缓存区,转入步骤201);

放入消息缓存区的不完整消息等待后续的记录进行拼接,然后再生成完整消息。

步骤3)对消息队列中的消息进行解析,获取明文数据;

从消息队列中取出一条消息,若消息类型为握手协议,则提取密码规范和秘钥 信息;若消息类型为改变密码协议规范,则接下来的记录都会用新协商的密码规范和秘钥来保护;若消息类型为告警消息,则分析消息的严重性与告警描述;若消息类型为应用数据协议,则利用提取的密码规范和秘钥对传输数据进行解密,获取明文数据。

所述握手协议包括:clienthello、serverhello、severcertificate、serverhellodone、clientkeyexange、newsessionticket和finished,所述提取密码规范和秘钥信息的具体步骤为:

步骤301)若握手协议类型为clienthello,则记录客户端随机数、session_id和session_ticket;

步骤302)若握手协议类型为serverhello,则判断是否发生会话重用,若发生会话重用,则从缓存会话信息中提取主秘钥和加密算法规范,并生成密码参数;若没有发生会话重用,则记录协议版本、服务端随机数、sesseion_id、加密套件和压缩算法;

步骤303)若握手协议类型为severcertificate,则提取服务器公钥,查找匹配证书获取服务器私钥;

步骤304)若握手协议类型为serverhellodone,则此时服务端已经完成秘钥交换消息;

步骤305)若握手协议类型为clientkeyexange,则利用服务器解密预主秘钥,计算主秘钥,并生成安全参数;若该会话为新回话,则将会话信息进行缓存;

步骤306)若握手协议类型为newsessionticket,若此时没有发生会话重用,则填入缓存的会话信息中session_tiket项,若发生会话重用,则将缓存的会话信息中session_tieket项进行更新;

步骤307)若握手协议类型为finished,则验证相应方向的全部握手数据,待两方均验证通过后,即可开始应用数据传输。

在该实施例中,所述明文数据为http数据,将明文数据进行解析,获取url等等字段生成审计日志并保存,以供审计人员后续进行审计。

如图3所示,通过本发明的方法,客户端与服务器建立ssl/tls连接,采集装置利用交换机镜像获取客户端与服务器之间交互数据,采集装置合法持有服务器证书与私钥。

最后所应该说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照实施例对本发明进行了详细说明,本领域的技术人员应当理解,可以对本发明的技术方案进行修改或同等替换,都不脱离本发明技术方案的精神和范围,其均 应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1