一种基于SSL/TLS协议的安全参数协商方法和系统与流程

文档序号:15497727发布日期:2018-09-21 22:02阅读:302来源:国知局

本发明属于信息安全技术领域和互联网通信领域,更具体地,涉及一种基于ssl/tls协议的安全参数协商方法和系统。



背景技术:

随着信息化程度的不断提高,各政府部门或企事业单位都已经在互联网上部署了大量的业务系统,并通过互联网与其他各地的分支机构或者合作伙伴进行业务数据往来,这些业务数据是政府部门或企事业单位的重要数字资产,信息化建设过程中需要保证其机密性、真实性、完整性和不可否认性。

在这些业务数据的传输过程中,出于安全上的考虑,往往不能将这些业务数据直接发送给远程服务器,而需要与远程服务端建立ssl/tls连接,以接收、处理和响应这些业务数据。在ssl/tls连接的握手过程中,ssl/tls客户端需要将其所支持的所有安全参数发送给ssl/tls服务端,ssl/tls服务端从ssl/tls客户端的安全参数信息中选择一种协商算法,约定为双方在后续通讯过程中所使用。

然而,现有的ssl/tls安全参数协商机制存在如下几个方面的技术问题:第一、ssl/tls客户端被动的接受ssl/tls服务器选择的安全参数,当ssl/tls客户端处在低安全级别的应用环境中,ssl/tls服务端可能会选择高强度的安全参数,从而导致传输效率低下,而当ssl/tls客户端处在高安全级别的应用环境中,ssl/tls服务端可能会选择低强度的安全参数,导致用户数据得不到高强度的加密保护;第二、如果ssl/tls服务端不支持ssl/tls客户端发送的安全参数时,会导致ssl/tls握手失败,从而降低了ssl/tls通信的效率,此外,如果要确定ssl/tls握手失败的原因,则需要在ssl/tls服务端查看配置文件或者日志文件,并且通过将该文件与和ssl/tls服务端通信的每个ssl/tls客户端进行比对,这样会产生浪费运维人员的大量时间,费时费力,效率低下,不利于快速排查的技术问题。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于ssl/tls协议的安全参数协商方法和系统,其目的在于,根据用户所处的不同应用场景,使用不同强度的安全参数,从而提高客户端接收到的用户数据的安全性和传输效率,此外,本发明还能够避免因安全参数不被服务端支持而产生握手错误,从而提高通信的效率。

为实现上述目的,按照本发明的一个方面,提供了一种基于ssl/tls协议的安全参数协商方法,包括以下步骤:

(1)客户端接收用户发送的网络协议数据包,并根据网络协议数据包中的关键字段确定用户所处应用场景的安全级别;

(2)客户端发送第一握手协议数据包到服务端;

(3)服务端判断来自客户端的第一握手协议数据包是否是用于安全参数协商的握手协议数据包,如果是则转入步骤(4),否则丢弃该第一握手协议数据包,过程结束;

(4)服务端生成第二握手协议数据包,在该第二握手协议数据包的安全参数字段中填入该服务端对应的安全参数,并将该第二握手数据包发送到客户端;

(5)客户端根据其自身支持的安全参数和步骤(1)确定的用户所处应用场景的安全级别从第二握手协议数据包中的安全参数字段中选择对应的值,并将该值填入ssl/tls协议的clienthello字段中。

优选地,第一握手协议数据包和第二握手协议数据包中均包括至少一个安全参数字段,第一握手协议数据包的安全参数字段是客户端支持的密码套件列表字段、第二握手协议数据包的安全参数字段是服务端支持的密码套件列表字段。

优选地,第一握手协议数据包的安全参数字段进一步包括客户端ssl/tls协议版本字段、以及客户端支持的压缩算法列表字段;第二握手协议数据包的安全参数字段进一步包括服务端ssl/tls协议版本字段、以及服务端支持的压缩算法列表字段。

优选地,步骤(3)具体为,首先判断握手协议数据包中的握手类型字段的值是否等于客户端与服务端预先协商的值,如果等于,则表示该握手协议数据包就是用于安全参数协商的握手协议数据包,否则则表示其不是用于安全参数协商的握手协议数据包。

优选地,在第二握手协议数据包的密码套件列表字段中,所有加密套件被按照加密强度从高到低进行了排序,其中最前面的一部分加密套件用作高加密强度的加密套件,对应于高安全级别,中间的一部分加密套件用于中加密强度的加密套件,对应于中安全级别,剩余的加密套件用于低加密强度的加密套件,对应于低安全级别。

按照本发明的另一方面,提供了一种基于ssl/tls协议的安全参数协商系统,包括:

第一模块,其设置于客户端中,用于接收用户发送的网络协议数据包,并根据网络协议数据包中的关键字段确定用户所处应用场景的安全级别;

第二模块,其设置在客户端中,用于发送第一握手协议数据包到服务端;

第三模块,其设置于服务端中,用于判断来自客户端的第一握手协议数据包是否是用于安全参数协商的握手协议数据包,如果是则转入第四模块,否则丢弃该第一握手协议数据包,过程结束;

第四模块,其设置于服务端中,用于生成第二握手协议数据包,在该第二握手协议数据包的安全参数字段中填入该服务端对应的安全参数,并将该第二握手数据包发送到客户端;

第五模块,其设置于客户端中,用于根据其自身支持的安全参数和第一模块确定的用户所处应用场景的安全级别从第二握手协议数据包中的安全参数字段中选择对应的值,并将该值填入ssl/tls协议的clienthello字段中。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,上述方法和系统具有以下的有益效果:

(1)本发明通过针对用户所处的不同用户场景,使用不同强度的安全参数字段,从而提高了客户端接收到的用户数据的安全性和传输效率;

(2)本发明的客户端能够从服务端发送的加密套件列表字段中选择其自身支持的一个或多个加密套件,从而能够避免因安全参数不被服务端支持而产生握手错误,并进而提高通信的效率。

按照本发明的另一方面,提供了一种基于ssl/tls协议的安全参数协商方法,包括以下步骤:

(1)客户端接收用户发送的网络协议数据包,并根据网络协议数据包中的关键字段确定用户所处应用场景的安全级别。

(2)客户端扫描服务端提供ssl/tls服务的地址和端口,以获取服务端支持的所有参数信息;

(3)客户端根据其自身支持的参数信息和步骤(1)确定的用户所处应用场景的安全级别从安全参数规划库中选择对应的值,并将该值填入ssl/tls协议的clienthello字段中。

优选地,步骤(2)具体为:首先客户端通过应用程序或者工具与服务端建立一次成功完整的ssl/tls连接,以获取到一组服务端支持的参数信息。然后客户端将该参数信息录入安全参数规则库,其后客户端删除该参数信息,并再次与服务端建立成功完整的ssl/tls连接,以获得下一组服务端支持的参数信息,依次类推,直到获取到服务端支持的所有参数信息并将其录入客户端的安全参数数据库为止。

优选地,参数信息是服务端支持的加密套件列表。

按照本发明的另一方面,提供了一种基于ssl/tls协议的安全参数协商系统,其设置于客户端中,包括:

第一模块,用于接收用户发送的网络协议数据包,并根据网络协议数据包中的关键字段确定用户所处应用场景的安全级别。

第二模块,用于扫描服务端提供ssl/tls服务的地址和端口,以获取服务端支持的所有参数信息;

第三模块,用于根据客户端自身支持的参数信息和步骤(1)确定的用户所处应用场景的安全级别从安全参数规则库中选择对应的值,并将该值填入ssl/tls协议的clienthello字段中。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,上述方法和系统具有以下的有益效果:

(1)本发明通过针对用户所处的不同用户场景,使用不同强度的参数信息,从而提高了客户端接收到的用户数据的安全性和传输效率;

(2)当本发明在客户端和服务端不具备相同的参数信息时,会出现握手错误,此时通过查看客户端的扫描结果,既可以快速定位握手错误的问题,提高解决问题的效率。

附图说明

图1是根据本发明第一实施方式的基于ssl/tls协议的安全参数协商方法的流程图。

图2是根据本发明第二实施方式的基于ssl/tls协议的安全参数协商方法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1所示,根据本发明第一实施方式的基于安全套接层/传输层安全(securesocketslayer/transportlayersecurity,简称ssl/tls)协议的安全参数协商方法包括以下步骤:

(1)客户端接收用户发送的网络协议数据包,并根据网络协议数据包中的关键字段确定用户所处应用场景的安全级别。

具体而言,网络协议数据包是建立在tcp协议之上的一种应用层数据包。

在本实施方式中,客户端是设置在网关中,其具体是能够发送和接收用于安全参数协商的ssl/tls握手协议数据包的ssl/tls应用程序或业务系统。

用户是能够发送tcp协议之上的一种应用层数据包的应用程序和业务系统。

本发明中的方法发生在发送ssl/tls握手协议数据包clienthello之前,应该理解的是,本发明中的ssl/tls协议包括,但不局限于国际标准ssl/tls协议、国家密码ssl/tls协议等。

本步骤确定应用场景的安全级别是通过查看网络协议数据包中的关键字来实现;举例而言,如果网络协议数据包中存在有关键字“内容安全等级:查看”,则说明用户所处应用场景的安全级别为低,如果网络协议数据包中存在关键字“内容安全等级:查询”,则说明用户所处应用场景的安全级别为中,如果网络协议数据包中存在关关键字“内容安全等级:交易”,则说明用户所处应用场景的安全级别为高。

在本发明中判断用户所处应用场景的关键字,并不是固定不变的,该关键字可以在通信过程中,由客户端和服务端双方进行约定。另外,在本实施方式中,关键字是自定义的类型,其也可以是标准应用层协议中规定的关键字类型,例如,可以使用“post”作为为高安全级别,“get”为低安全级别。

(2)客户端发送第一握手协议数据包到服务端;

在本实施方式中,服务端是设置在网关中,其具体是能够发送和接收用于安全参数协商的ssl/tls握手协议数据包的ssl/tls应用程序或业务系统。

应该注意的是,本步骤发送的第一握手协议数据包中包括至少一个安全参数字段,在本实施方式中,该安全参数字段为客户端支持的密码套件列表字段。作为进一步优选的,该安全参数字段还可以包括客户端ssl/tls协议版本字段、以及客户端支持的压缩算法列表字段等,应该理解的是,本发明并不局限于以上列举的三个字段,其他任何可用于协商ssl/tls协议的安全参数字段也在本发明的保护范围内。密码套件列表中包括有多个密码套件,例如tls_ecdhe_rsa_with_aes_256_cbc_sha、ecc_sm4_sm3等。

(3)服务端判断来自客户端的第一握手协议数据包是否是用于安全参数协商的握手协议数据包,如果是则转入步骤(4),否则丢弃该第一握手协议数据包,过程结束;

应该注意的是,本步骤接收的第一握手协议数据包在到达ssl/tls服务端之前,经过了0个到多个中间设备,如交换机、集线器等;

本步骤具体为,首先判断第一握手协议数据包中的握手类型字段(例如,在tls1.2版本的标准文档rfc5246中规定是“握手类型”)的值是否等于客户端与服务端预先协商的值(例如241),如果等于,则表示该第一握手协议数据包就是用于安全参数协商的握手协议数据包,否则则表示其不是用于安全参数协商的握手协议数据包。

(4)服务端生成第二握手协议数据包,在该第二握手协议数据包的安全参数字段中填入该服务端对应的安全参数,并将该第二握手数据包发送到客户端;

具体而言,本步骤中安全参数字段的数量和类型,与上述步骤(2)中描述的第一握手协议数据包中的安全参数字段是完全对应的。例如,如果第一握手协议数据包中仅仅包括客户端支持的密码套件列表字段,则本步骤中的第二握手协议数据包中仅仅包括服务端支持的密码套件列表字段,在填充安全参数时,所填入的就是服务端自身所支持的密码套件列表。

作为进一步优选的,第二握手协议数据包中的安全参数字段还可以包括服务端ssl/tls协议版本字段、以及服务端支持的压缩算法列表字段等,应该理解的是,本发明并不局限于以上列举的三个字段,其他任何可用于协商ssl/tls协议的安全参数字段都在本发明的保护范围内。

(5)客户端根据其自身支持的安全参数和步骤(1)确定的用户所处应用场景的安全级别从第二握手协议数据包中的安全参数字段中选择对应的值,并将该值填入ssl/tls协议的clienthello字段中。

具体而言,在第二握手协议数据包的密码套件列表字段中,已经对所有加密套件按照加密强度从高到低进行了排序,其中最前面的一部分(例如1/3或)加密套件用作高加密强度的加密套件,对应于高安全级别,中间的一部分加密套件用于中加密强度的加密套件,对应于中安全级别,剩余的加密套件用于低加密强度的加密套件,对应于低安全级别。

本步骤具体为,如果应用场景是低安全级别,则客户端从加密套件列表字段中选择其自身支持的一个或多个低加密强度的加密套件;如果应用场景是中安全级别,则客户端从加密套件列表字段中选择其自身支持的一个或多个中加密强度的加密套件;如果应用场景是高安全级别,则客户端从加密套件列表字段中选择其自身支持的一个或多个高加密强度的加密套件。

需要注意的是,在上述步骤(2)和步骤(4)中,安全参数字段所涉及的协议版本可以为ssl3.0、tls1.0、tls1.1、tls1.2、tls1.3、国家密码ssl等,但应该理解的是,本发明绝不局限于上述的协议版本,任何本领域公知的ssl/tls协议版本都可以被使用。

在上述步骤(2)、步骤(4)中,加密套件中的密钥交换算法可以为ecdhe算法、ecc算法、rsa算法等,身份认证算法可以为sm2算法、rsa算法等,数据加密算法可以为aes算法、des算法、3des算法、sm1算法、sm4算法等,mac算法可以为sha-1算法、sm3算法等。

但应该理解的是,本发明绝不局限于上述的密钥交换算法,任何本领域公知的密钥交换算法都可以被使用。本发明绝不局限于上述的身份认证算法,任何本领域公知的非对称加密算法都可以被使用。本发明绝不局限于上述的数据加密算法,任何本领域公知的对称加密算法都可以被使用。本发明绝不局限于上述的mac算法,任何本领域公知的散列算法(摘要算法)都可以被使用。

如图2所示,根据本发明第二实施方式的基于ssl/tls协议的安全参数协商方法包括以下步骤:

(1)客户端接收用户发送的网络协议数据包,并根据网络协议数据包中的关键字段确定用户所处应用场景的安全级别。

具体而言,网络协议数据包是建立在tcp协议之上的一种应用层数据包。

在本实施方式中,客户端是设置在网关中,其具体是能够发送和接收用于安全参数协商的安全套接层/传输层安全协议(securesocketslayer/transportlayersecurity,简称ssl/tls)握手协议数据包的ssl/tls应用程序或业务系统。

用户为能够发送tcp协议之上的一种应用层数据包的应用程序和业务系统。

本发明中的方法发生在发送ssl/tls握手协议数据包clienthello之前,应该理解的是,本发明中的ssl/tls协议包括但不局限于国际标准ssl/tls协议、国家密码ssl/tls协议等。

本步骤确定应用场景的安全级别是通过查看网络协议数据包中的关键字来实现;举例而言,如果网络协议数据包中存在有关键字“内容安全等级:查看”,则说明用户所处应用场景的安全级别为低,如果网络协议数据包中存在关键字“内容安全等级:查询”,则说明用户所处应用场景的安全级别为中,如果网络协议数据包中存在关关键字“内容安全等级:交易”,则说明用户所处应用场景的安全级别为高。

在本发明中判断用户所处应用场景的关键字,并不是固定不变的,该关键字可以在通信过程中,由客户端和服务端双方进行约定。另外,在本实施方式中,关键字是自定义的类型,其也可以是标准应用层协议中规定的关键字类型,例如,可以使用“post”作为为高安全级别,“get”为低安全级别。

(2)客户端扫描服务端提供ssl/tls服务的地址和端口,以获取服务端支持的所有参数信息;

本步骤具体为,首先客户端通过应用程序或者工具与服务端建立一次成功完整的ssl/tls连接,以获取到一组服务端支持的参数信息。然后客户端将该参数信息录入安全参数规则库,然后客户端删除该参数信息,并再次与服务端建立成功完整的ssl/tls连接,以获得下一组服务端支持的参数信息,依次类推,直到获取到服务端支持的所有参数信息并将其录入客户端的安全参数数据库为止。

在本实施方式中,客户端使用的应用程序可以是多种形式(比如设置在客户端中的应用程序,或者远端第三方程序),只要应用程序能够写入安全参数规则库,并使得客户端有权限访问该安全参数数据库即可。工具也可以是多种形式,如sslscan等开源工具等等。应该理解的是,本发明并不局限于此,使用其它工具或者应用程序获取到服务端参数信息等也在本发明的保护范围内。

具体而言,参数信息是服务端支持的加密套件列表。优选地,参数信息也可以包括当前ssl/tls协议版本、以及服务端支持的压缩算法。

应该注意的是,本步骤ssl/tls客户端和ssl/tls服务端之间的通信,经过了0个到多个中间设备,如交换机、集线器等。

(3)客户端根据其自身支持的参数信息和步骤(1)确定的用户所处应用场景的安全级别从安全参数规则库中选择对应的值,并将该值填入ssl/tls协议的clienthello字段中。

具体而言,在安全参数规则库中,已经对所有加密套件按照加密强度从高到低进行了排序,其中最前面的一部分(例如1/3)加密套件用作高加密强度的加密套件,对应于高安全级别,中间的一部分加密套件用于中加密强度的加密套件,对应于中安全级别,剩余的加密套件用于低加密强度的加密套件,对应于低安全级别。

如果应用场景是低安全级别,则客户端可以选择一个或多个低加密强度的加密套件;如果应用场景是中安全级别,则客户端可以选择一个或多个中加密强度的加密套件;如果应用场景是高安全级别,则客户端可以选择一个或多个高加密强度的加密套件。

需要注意的是,在上述步骤(1)、步骤(2)、步骤(3)中,安全参数中涉及的协议版本可以为ssl3.0、tls1.0、tls1.1、tls1.2、tls1.3、国家密码ssl等,但应该理解的是,本发明绝不局限于上述的协议版本,任何本领域公知的协议版本都可以被使用。

在上述步骤(1)、步骤(2)、步骤(3)中,加密套件中的密钥交换算法可以为ecdhe算法、ecc算法、rsa算法等,身份认证算法可以为sm2算法、rsa算法等,加密算法可以为aes算法、des算法、3des算法、sm1算法、sm4算法等,mac算法可以为sha-1算法、sm3算法等。

但应该理解的是,本发明绝不局限于上述的密钥交换算法,任何本领域公知的密钥交换算法都可以被使用。本发明绝不局限于上述的身份认证算法,任何本领域公知的非对称加密算法都可以被使用。本发明绝不局限于上述的数据加密算法,任何本领域公知的对称加密算法都可以被使用。本发明绝不局限于上述的mac算法,任何本领域公知的散列算法(摘要算法)都可以被使用。

总而言之,本发明能够根据不同的应用场景,使用不同强度的安全参数,提高了用户数据的安全性和传输效率。可以避免因安全参数不支持而产生错误,能够提高通信的效率。可以查看含有双方安全参数信息的消息包,快速定位问题,提高解决问题的效率。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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