一种基于标识算法的国密SSL加密方法技术

技术编号:27491133 阅读:26 留言:0更新日期:2021-03-02 18:09
本发明专利技术公开了一种基于标识算法的国密SSL加密方法,包括如下步骤:步骤1:使用设计的EVP接口调用SM9密码算法;步骤2:使用SM9算法进行精简密钥协商;步骤3:基于SM9进行双证书认证;步骤4:基于SM9进行精简握手协议过程;步骤5:调用设计的建立链接口建立基于SM9的SSL链接。本发明专利技术签名等所基于的密钥和用户已有标识有关,和传统的基于PKI的加密方法相比,避免了PKI证书管理成本高,CA部署难等问题。同时,改进了国密SSL握手流程滞后的问题,提升了相同加密方法下国密SSL的握手效率。加密方法下国密SSL的握手效率。加密方法下国密SSL的握手效率。

【技术实现步骤摘要】
一种基于标识算法的国密SSL加密方法


[0001]本专利技术涉及电子政务与商务领域,特别是涉及一种基于标识算法的国密SSL加密方法。

技术介绍

[0002]随着信息时代的到来,电子政务与电子商务的崛起使人们的生活更加倾向于线上,作为三大核心密码协议之一的SSL/TLS协议为全世界大约80%的线上应用提供数据完整性保护、数据机密性保护和身份认证功能,其重要性不言而喻。历代不同版本的SSL/TLS协议都定义了上百个加密方法,由于算法本身的安全性以及计算效率,实际应用中主流的加密方法屈指可数,大多只有依赖PKI证书才能完成身份认证和密钥交换。然而面对当下变化性强,更新升级速度快以及拥有海量用户的移动互联网应用,PKI证书管理成本之高,CA部署之难等问题使得传统加密方法捉襟见肘。
[0003]国家密码管理局2014年发布的《GMT 0024-2014SSL VPN技术规范》标准,在TLS1.1的握手协议中增加了ECC、IBC的认证模式和密钥交换模式,目前江南天安公司的TaSSL以及北京大学的GmSSL开源库都已经实现了基于ECC算法的SSL握手协议,深圳奥联公司自主设计并实现了一款基于SM9标识算法的SSL VPN网关产品,换言之迄今基于国密标准的IBC认证模式和密钥交换模式在SSL协议中仍没有实现。

技术实现思路

[0004]为了克服上述现有技术的不足,本专利技术提供一种基于标识算法的国密SSL加密方法。此方法中公钥的产生依赖SM9标识算法而不是PKI证书,因此无需颁发和管理PKI证书,在成本和效率上比以往SSL加密方法得到了大大优化。本专利技术的方法主要包括:握手步骤、密钥协商步骤、建立SSL链接步骤、双证书认证等步骤。
[0005]本专利技术所采用的技术方案为:一种基于标识算法的国密SSL加密方法,包括如下步骤:
[0006]步骤1:使用设计的EVP接口调用SM9密码算法;
[0007]步骤2:使用SM9算法进行精简密钥协商;
[0008]步骤3:基于SM9进行双证书认证;
[0009]步骤4:基于SM9进行精简握手协议过程;
[0010]步骤5:调用设计的建链接口完成建立基于SM9的SSL链接。
[0011]有益效果:
[0012]本专利技术提供一种基于标识的SSL加密方法,也即SSL加密方法中的加解密,采用了IBC体系,简化了在具体安全应用中大量数字证书的管理和交换困难的问题,使安全应用更加易于部署和使用,同时,在具体密码算法方面,使用了基于国密SSL标准的IBC-SM4-SM3和IBSDH-SM4-SM3加密套件。首先,需要完成国密SM9算法的OPENSSL EVP接口封装,并在此基础上设计了基于SM9算法的国密SSL握手协议、双证书认证以及SSL链接建立接口。签名等所
基于的密钥和用户已有标识有关,和传统的基于PKI的加密方法相比,避免了PKI证书管理成本高,CA部署难等问题。同时,改进了国密SSL握手流程滞后的问题,提升了相同加密方法下国密SSL的握手效率。
附图说明
[0013]图1为SM9加密流程图;
[0014]图2为SM9解密流程图;
[0015]图3为SM9签名流程图;
[0016]图4为SM9验签流程图;
[0017]图5为本专利技术应用场景图。
具体实施方式
[0018]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅为本专利技术的一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术的保护范围。
[0019]历代不同版本的SSL/TLS协议都定义了上百个加密方法,而实际应用中大多只有依赖PKI证书才能完成身份认证和密钥交换。然而面对当下变化性强,更新升级速度快以及拥有海量用户的移动互联网应用,PKI证书管理成本之高,CA部署之难等问题使得传统加密方法捉襟见肘。而标识算法实现成本低、效率较高、运营管理方便、无需颁发和管理证书,还可增加时间或固定IP等方式解密信息的安全策略控制。因此,本专利技术提出一种基于标识的SSL加密方法,具体包括以下步骤:
[0020]步骤1:使用设计的EVP接口调用SM9密码算法;
[0021]步骤2:使用SM9算法进行精简密钥协商;
[0022]步骤3:基于SM9进行双证书认证;
[0023]步骤4:基于SM9进行精简握手协议过程;
[0024]步骤5:调用设计的建链接口完成建立基于SM9的SSL链接。
[0025]具体的,本专利技术的方法如下:
[0026]1.使用OPENSSL中的非对称算法EVP封装SM9密码算法
[0027]1.1SSL通信过程中各类密钥的生成方式与管理方法的设计。包括以下步骤:
[0028]步骤一:设计各类密钥的生成方式。首先要确定SM9中各密钥对象结构体,其次设计一个KGC功能接口,以完成系统参数组和主密钥对以及用户私钥的生成。
[0029]1)确定SM9中各密钥对象结构体,包括SM9主密钥、系统参数结构组、SM9私钥、SM9公钥的结构体。
[0030]SM9主密钥结构体:
[0031]struct SM9MasterSecret_st{
[0032]ASN1_OBJECT*pairing;
[0033]ASN1_OBJECT*scheme;
[0034]ASN1_OBJECT*hash1;
[0035]ASN1_OCTET_STRING*pointPpub;
[0036]BIGNUM*masterSecret;
[0037]};
[0038]系统参数组结构体:
[0039]struct SM9PublicParameters_st{
[0040]ASN1_OBJECT*pairing;
[0041]ASN1_OBJECT*scheme;
[0042]ASN1_OBJECT*hash1;
[0043]ASN1_OCTET_STRING*pointPpub;
[0044]};
[0045]SM9私钥结构体:
[0046]struct SM9PrivateKey_st{
[0047]ASN1_OBJECT*pairing;
[0048]ASN1_OBJECT*scheme;
[0049]ASN1_OBJECT*hash1;
[0050]ASN1_OCTET_STRING*pointPpub;
[0051]ASN1_OCTET_STRING*identity;
[0052]ASN1_OCTET_STRING*publicPoint;
[0053]ASN1_OCTET_STRING*privatePoint;
[0054]};
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于标识算法的国密SSL加密方法,其特征在于,包括如下步骤:步骤1:使用EVP接口调用SM9密码算法;步骤2:使用SM9算法进行精简密钥协商;步骤3:基于SM9进行双证书认证;步骤4:基于SM9进行精简握手协议过程;步骤5:调用设计的建立链接口建立基于SM9的SSL链接。2.根据权利要求1所述的一种基于标识算法的国密SSL加密方法,其特征在于,所述步骤1采用OpenSSL中的非对称算法EVP封装SM9算法,并实现EVP_PKEY的调用接口,包括以下步骤:步骤一:在evp目录下封装公钥算法,将具体实现的SM9算法“告知”给OpenSSL,包括OpenSSL源码crypto/evp目录下以“p_”开头的文件进行编辑操作,密钥封装过程调用公钥加解密接口,修改如下四个文件:1)编辑p_enc.c文件,以满足EVP公钥加密接口对SM9加密算法的支持,在p_enc.c文件中首先创建一个SM9的密钥结构体并利用该结构体初始化加密函数,其次定义加密曲线为SM9曲线;2)编辑p_dec.c文件,以完成EVP公钥解密接口对SM9解密算法的支持,在p_dec.c文件中首先创建SM9密钥结构体并初始化解密函数,其次定义解密曲线为SM9曲线;3)编辑p_sign.c文件,以满足EVP数字签名接口对SM9签名算法的支持,定义SM9曲线;4)编辑p_verify.c文件,以满足EVP验签接口对SM9验签算法的支持,定义验签所用的曲线为SM9曲线;步骤二:实现SM9算法的EVP_PKEY调用接口;此接口的实现,需要修改OpenSSL源码crypto/ec目录下的ec_pmeth.c文件;具体操作如下:1)在EC_PKEY_CTX结构体尾部添加非对称密钥的信息,以供后续EC_PKEY有关接口完成相应的功能,包括SM9曲线参数、签名者id、公钥加密参数、对方id、id长度以及系统参数;2)在pkey_ec_init函数、pkey_ec_copy函数和pkey_ec_cleanup函数中添加对上述变量的初始化、复制或清理操作;3)在pkey_ec_sign函数中添加签名回调功能,回调在OpenSSL密码算法库中实现的SM9签名算法;4)在pkey_ec_verify函数中添加验签回调功能,回调在OpenSSL密码算法库中实现的SM9验签算法;5)在pkey_ec_kdf_derive函数中增加对SM9密钥协商的支持;6)在ec_pkey_meth数组中添加SM9公钥加密和解密的接口,并在该数组之上静态实现。3.根据权利要求1所述的一种基于标识算法的国密SSL加密方法,其特征在于,所述步骤2使用SM9算法进行精简密钥协商,包括以下步骤:步骤一:定义复用函数SM9_generate_key_exchange()以计算公钥,该函数的功能为:在群G1上根据R、r、gr、peer_id和sk计算公钥;其中R为G1上的一对临时密钥,为密钥协商第一阶段的结果,后续彼此依照对方产生的R值进行共享密钥的计算;r为[1,N-1]的随机数;gr用来存放转换为比特串的g;peer_id为对方的标识;sk为调用方加密私钥;步骤二:定义发起方和响应方计算共享密钥的接口;此接口的功能为:依据对方产生的
R值计算共享密钥,并对比两者的哈希值,R为G1上的一对临时密钥;1)定义发起方计算共享密钥的接口,此接口的功能为:根据rA,RA,RB,g1,IDB,skA计算共享密钥SKA,并计算SKA的哈希值SA与接收到的SB对比;其中rA为[1,N-1]上的随机数;RA为第一阶段发起方A产生的临时密钥;RB为第一阶段响应方B产生的临时密钥;g1用来存放转换为比特串的g;IDB为响应方的标识;skA为发起方的加密私钥;SKA为发起方的计算结果;SA为SKA的哈希值;SB为从响应方B接收到的SKB的哈希值;2)定义响应方计算共享密钥的接口,此接口的功能为:根据rB,RA,RB,g2,IDA,skB计算共享密钥SKB,并计算SKB的哈希值SB与接收到的SA对比;其中rB为[1,N-1]上的随机数;RB为第一阶段响应方B产生的临时密钥;RA为第一阶段发起方A产生的临时密钥;g2用来存放转换为比特串的g;IDA为发起方的标识;skB为响应方的加密私钥;SKB为发起方的计算结果;SB为SKB的哈希值;SA为从发起方A接收到的SKA的哈希值。4.根据权利要求1所述的一种基于标识算法的国密SSL加密方法,其特征在于,所述步骤3使用基于SM9算法的双证书认证体系,在SSL_CTX数据结构和SSL数据结构这两个数据结构之上实现对加密私钥的设置,具体包括:步骤一:对于SSL数据结构,实现对加密私钥设置1)定义SSL1_3_use_enc_PrivateKey(SSL*ssl,EVP_PKEY*pkey)接口以调用OPENSSL的ssl_set_pkey()接口完成对SSL对象加密私钥的设置,其中参数ssl为SSL对象,pkey为待设置的加密私钥,PKEY为私钥类型;2)定义SSL1_3_use_enc_PrivateKey_ASN1(int type,SSL*ssl,const unsigned char*d,long len)接口以完成对编码后的加密私钥的设置;首先调用OPENSSL中的d2i_PrivateKey()函数,依据type类型解码得到加密私钥;然后调用OPENSSL中的SSL1_3_use_enc_PrivateKey()接口完成对SSL对象加密私钥的设置;其中参数type为加密私钥的类型;ssl为SSL对象;d为待解码的私钥;len为待解码私钥的长度;3)定义SSL1_3_use_enc_PrivateKey_file(SSL*ssl,const char*file,int type)接口以通过读取文件的方式完成对SSL对象加密私钥设置;首先调用BIO_r...

【专利技术属性】
技术研发人员:许盛伟封化民刘飚江继军
申请(专利权)人:北京电子科技学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1