一种ssl/tls算法套件的扩展方法

文档序号:9814217阅读:960来源:国知局
一种ssl/tls算法套件的扩展方法
【技术领域】
[0001 ]本发明涉及网络安全技术领域,特别涉及一种SSL/TLS算法套件的扩展方法。
【背景技术】
[0002]访问受SSL/TLS协议保护的站点时,服务器用自己支持的算法套件列表和客户端软件发送过来的算法套件列表匹配,确定密钥协商算法。现有的客户端浏览器软件固定了算法套件列表为TLSl.0、TLS1.1和TLSl.2中所列出来的算法。随着计算能力的不断进步和密码学的发展,新的密码算法套件需要增加进来,当服务器增加不在算法套件列表中的算法套件时,由于算法列表和实现都在硬编码程序中,扩展算法套件需要修改代码,重新编译发布程序来支持新的算法。
[0003]现有TLS客户端实现扩展算法套件具有以下缺点:
[0004]1、模块性不够清晰,TLS相关功能和其他应用功能混合实现在一起,当TLS功能需要更新的时候,即便是一点小改动,都需要对整个客户端程序进行重新发布升级,操作复杂成本高;
[0005]2、TLS功能实现手段单一,无法充分利用各种先进的加密库和硬件密码设备来加速整个密码运算过程;
[0006]3、包含的密码运算功能不能做动态删减以适应不同的应用场景,优化出不同的方案来充分利用资源。

【发明内容】

[0007]有鉴于此,本发明的主要目的在于,提供一种SSL/TLS算法套件的扩展方法,包括步骤:
[0008]A、客户端根据其SSL/TLS算法库形成算法套件列表;
[0009]B、服务器接收所述算法套件列表,从该算法套件列表中确定一算法,将确定的结果发送至客户端;
[0010]C、客户端通过算法库的不同接口接收所述算法套件的各个参数信息,并通过所述各个接口将所述算法套件各个参数信息传递给所述算法库进行对应的验证处理;
[0011 ] D、所述验证通过后访问受SSL/TLS保护的站点。
[0012]由上,本申请中扩展算法套件时不需要对客户端进行重新编辑,将算法的接口标准化,利用本申请中涉及各个接口的不同功能实现对于SSL/TLS算法套件的扩展,增加新的密码算法套件不需要开发单独的一套服务器端和客户端,只需要提供一个算法套件动态库,得到现有公开程序厂商的代码签名就能在使用现有程序实现新的独有的算法,降低成本。
[0013]可选的,步骤B后还包括:客户端依据所述服务器确定的结果,加载该算法套件的算法库,并通过待扩展算法的算法库的pushmessage接口将步骤A与步骤B中客户端与服务器的交互信息传入所述算法库,所述算法库使用杂凑算法对交互信息进行杂凑运算,保存杂凑结果。
[0014]可选的,步骤C包括:
[0015]Cl:服务器向客户端发送服务器密钥交换信息,客户端通过算法库的serverkeyexchange接口将服务器密钥协商信息传入算法库;
[0016]C2:服务器向客户端发送证书请求信息,客户端通过算法库的clientcertificate接口接收所述证书请求信息,调取预存的客户端证书数据,并将所述客户端证书数据与证书私钥进彳丁关联;
[0017]C3:客户端调用算法库的cl ientkeyexchange接口,算法库依据所述服务器密钥交换信息组装成客户端密钥交换信息包,发送给服务器;
[0018]C4:将步骤Cl?C3中的服务器密钥交换信息、证书请求信息和客户端密钥交换信息通过算法库的pushmessage接口,所述算法库使用杂凑算法对传入的信息进行杂凑运算,保存杂凑结果;
[0019]C5:客户端调用算法库的certif icateverify接口,采用算法库定义的签名算法,利用所述客户端证书对应的证书私钥对所有通过所述pushmessage接口得到杂凑结果进行签名;
[°02°] C6:客户端调用算法库的finishmac接口,将所有通过所述pushmessage接口得到杂凑结果作为输入,采用算法库支持的杂凑算法计算验证码;
[0021 ] C7:客户端调用算法库的encryptmessage接口,将所述验证码进行加密,传输至服务器。
【附图说明】
[0022]图1为本发明的流程图。
【具体实施方式】
[0023]为克服现有技术存在的缺陷,本发明提供一种SSL/TLS算法套件的扩展方法,客户端访问受SSL/TLS保护的站点时,获取算法套件,利用本申请中涉及各个接口来实现将该算法套件添加以及与站点的交互,实现算法套件的即插即用,从而避免对于整个客户端程序进行重新修改及编译。
[0024]本实施例中,以客户端与服务器端的通信为例,对于在客户端中进行算法套件的扩展进行详细描述。
[0025]如图1所示,本发明所述对算法套件的扩展包括以下步骤:
[0026]S10:客户端扫描算法库,发起与服务器的握手请求,确定出本次握手使用的算法套件。
[0027]客户端访问受SSL/TLS保护的站点时,程序枚举本机上的SSL/TLS算法库,得到支持的算法套件列表,包括算法套件名称以及握手协议版本号,组装成client hello握手信息,通过网络通道发送给服务器。例如,算法列表中包括A、B、C、D四组算法,其中算法A、B、C为原有算法,算法D为访问受SSL/TLS保护的站点时所需要扩展的算法。所述算法库是实现一个具体算法套件的动态库。
[0028]服务器接收到握手信息后进行算法的选择,本例中选择需要扩展的算法D,将其的选择作为server hello握手信息回转给客户端,以响应client hello握手信息。
[0029]客户端接收到server hello握手信息后,获知服务器确认出的本次通信握手使用的密钥协商算法采用的是算法D ο加载算法D的算法库,通过算法D算法库的pushmessage接口将client hello握手信息和server hello握手信息传入算法库,算法库使用本身固定的杂凑算法对传入的信息进行杂凑运算,保存杂凑结果以进行后续信息的杂凑运算。
[°03°] pushmessage接口的意义在于,通过该接口接收的信息进行统一的杂凑运算并存储,杂凑运算的中间结果在后续握手过程中组织客户端证书验证信息和握手结束验证信息时候需要用到。
[0031 ]本实施例中D算法的算法库对应实现该功能的接口为pushmessage接口,例如对于其他算法,并不限于pushmessage接口,只要可以实现该功能的接口均可。对于以下出现的D算法的算法库中的其他接口,同样如此。
[0032]S20:服务器向客户端发送证书信息,客户端验证所述证书信息。
[0033]服务器向客户端发送证书信息,客户端通过算法D算法库的servercertificate接口将服务器证书传入算法库。进一步的,还包括对于证书的验证,包括对于证书本身是否被破坏的验证,以及证书是否被信任。
[0034]具体的,算法库依据系统中已经安装的根证书链来验证服务器端证书是否可信任。对服务器端证书本身的签名进行检验来确认是否被破坏。算法库依据自身的特征来检验证书的公钥算法的强度,和证书策略是否满足要求,国密算法都要求SM2参数在256bits以上。
[0035]S30:服务器向客户端发送密钥交换信息,算法库依据算法套件指定的算法进行验证,解析其中的数据。
[0036]服务器向客户端发送服务器密钥交换信息,客户端通过算法D算法库的serverkeyexchange接口将服务器密钥交换信息传入算法库,算法库依据算法套件指定的算法进行验证,解析其中的数据,并返回结果成功或者失败给程序。
[0037]专门使用serverkeyexchange接口来处理服务器密钥交换信息,可以适应不同密钥套件服务器密钥交换信息的不同处理方式,例如,支持国密eOll算法库在这一步得到服务器的临时公钥,该临时公钥作为服务器密钥交换信息;支持国密e013算法库这一步得到服务器的对加密证书和握手信息的签名值,需验证所述签名是否通过,具体的,验证包括采用签名证书中的公钥对签名值进行验签。若通过则确定该签名为服务器密钥交换信息。由此减少程序复杂性,提高算法库的实现灵活性。
[0038]S40:服务器向客户端发送证书请求信息,客户端响应并回复。
[0039]服务器向客户端发送证书请求信息,客户端通过算法D算法库的clientcertificate接口传入证书请求信息,算法库解析证书请求信息,得到证书属性要求,调用算法库中预存的客户端证书数据,并将所述客户端证书数据与证书私钥进行关联,返回给客户端程序。最终将客户端证书数据发送给服务器端,向服务器端表明身份信息。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1