使用SDF、SKF实现国密SSL协议的方法及系统与流程

文档序号:21886179发布日期:2020-08-18 17:18阅读:4172来源:国知局
使用SDF、SKF实现国密SSL协议的方法及系统与流程

本申请涉及信息安全技术领域,具体涉及一种使用sdf、skf实现国密ssl协议的方法及系统。



背景技术:

信息安全是一个多层次、多因素、综合的动态过程,信息安全要求对信息系统和组织体系进行综合思考和统一规划,信息安全同时要注意监控系统内外环境的变化,信息安全很可能某一环节上的安全缺陷就会对整个系统组织构成威胁。因而信息安全作为一个多层面、多因素、综合的动态过程.是信息安全一个需要系统体系来保证的持续发展过程。

openssl是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。openssl囊括主要的密码算法、常用的密钥和证书封装管理功能及ssl/tls协议。这个包广泛被应用在互联网的网页服务器上。

随着国密ssl协议应用越来越广泛,openssl中sm2、sm3、sm4国产算法通过软件实现的方式,已经不满足安全性需求和中国密码管理局的管理要求。



技术实现要素:

本申请为了解决上述技术问题,提出了如下技术方案:

第一方面,本申请实施例提供了一种使用sdf、skf实现国密ssl协议的方法,所述方法包括:在openssl中分别添加sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议,并使得openssl库支持所述sm2、sm3和sm4密码算法;通过所述sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议对密码设备应用接口规范sdf接口和智能密码钥匙密码应用接口规范skf接口进行调用。

采用上述实现方式,通过openssl中添加sm2密码算法、sm3密码算法和sm4密码算法对sdf接口和skf接口进行调用,通过sdf接口和skf接口替换国密openssl中的sm2、sm3、sm4中国商用密码算法。将关键的密钥管理和密码运算通过硬件完成,充分满足高安全性需求。

结合第一方面,在第一方面第一种可能的实现方式中,在openssl中分别添加sm2密码算法,使得openssl库支持所述sm2密码算法,包括:采用vp_pkey系列函数完善openssl对sm2密码算法调用;完善了sm2密码算法签名时的z值的计算;设置sm2密码算法密码算法密钥协商所需对方的可辨识id及长度;设置sm2密码算法密钥协商所需己方的可辨识id及长度;设置sm2密码算法密钥协商所需的发起方或者客户端标识;设置sm2密码算法密钥协商所需的对方sm2临时公钥;生成并获取己方sm2密码算法临时密钥对;设置evp_pkey调用sm2加、解密的密文格式;采用ecdsa系列函数完善对sm2密码算法签名、验签算法的调用;计算sm2签名算法中的z值;完善对sm2密钥协商的调用。

结合第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,所述设置evp_pkey调用sm2加、解密的密文格式,包括:如果format为0为der编码格式,即国密标准sm2密文格式;或者,非0为c1c3c2二进制串。

结合第一方面,在第一方面第三种可能的实现方式中,在openssl中分别添加sm3密码算法,使得openssl库支持所述sm3密码算法,包括:取摘要算法sm3密码算法的evp调用函数指针。

结合第一方面,在第一方面第四种可能的实现方式中,在openssl中分别添加sm4密码算法,使得openssl库支持所述sm4密码算法,包括:获取sm4密码算法对称加密算法cbc模式的evp调用的函数指针;获取sm4密码算法对称加密算法cfb模式的evp调用的函数指针;获取sm4密码算法对称加密算法ecb模式的evp调用的函数指针;获取sm4密码算法对称加密算法ofb模式的evp调用的函数指针。

结合第一方面,在第一方面第五种可能的实现方式中,获取双证书体系国密tlsv1.1协议的相关ssl/tls相关方法,以使用客户端使用标准的tlsv1.1协议进行握手、通讯。

第二方面,本申请实施例提供了一种使用sdf、skf实现国密ssl协议的系统,所述系统包括:密码算法添加模块,用于在openssl中分别添加sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议,并使得openssl库支持所述sm2、sm3和sm4密码算法;接口调用模块,用于通过所述sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议对密码设备应用接口规范sdf接口和智能密码钥匙密码应用接口规范skf接口进行调用。

结合第二方面,在第二方面第一种可能的实现方式中,所述密码算法添加模块包括:第一调用处理单元,用于采用vp_pkey系列函数完善openssl对sm2密码算法调用;计算处理单元,用于完善了sm2密码算法签名时的z值的计算;第一设置单元,用于设置sm2密码算法密码算法密钥协商所需对方的可辨识id及长度;第二设置单元,用于设置sm2密码算法密钥协商所需己方的可辨识id及长度;第三设置单元,用于设置sm2密码算法密钥协商所需的发起方或者客户端标识;第四设置单元,用于设置sm2密码算法密钥协商所需的对方sm2临时公钥;获取单元,用于生成并获取己方sm2密码算法临时密钥对;第五设置单元,用于设置evp_pkey调用sm2加、解密的密文格式;第二调用处理单元,用于采用ecdsa系列函数完善对sm2密码算法签名、验签算法的调用;计算单元,用于计算sm2签名算法中的z值;第三调用处理单元,完善对sm2密钥协商的调用。

结合第二方面,在第二方面第二种可能的实现方式中,所述密码算法添加模块还包括:第一获取单元,用于获取sm4密码算法对称加密算法cbc模式的evp调用的函数指针;第二获取单元,用于获取sm4密码算法对称加密算法cfb模式的evp调用的函数指针;第三获取单元,用于获取sm4密码算法对称加密算法ecb模式的evp调用的函数指针;第四获取单元,用于获取sm4密码算法对称加密算法ofb模式的evp调用的函数指针。

第三方面,本申请实施例提供了一种终端,包括:处理器;用于存储所述处理器处理可执行指令的存储器;所述处理器执行第一方面或第一方面所述的使用sdf、skf实现国密ssl协议的方法,实现通过openssl中添加sm2密码算法、sm3密码算法和sm4密码算法对sdf接口和skf接口进行调用。

附图说明

图1为本申请实施例提供的一种使用sdf、skf实现国密ssl协议的方法流程示意图;

图2为本申请实施例提供的一种使用sdf、skf实现国密ssl协议的系统示意图;

图3为本申请实施例提供的一种终端的结构示意图。

具体实施方式

下面结合附图与具体实施方式对本方案进行阐述。

图1为本申请实施例提供的一种使用sdf、skf实现国密ssl协议的方法流程示意图,参见图1,所述方法包括:

s101,在openssl中分别添加sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议,并使得openssl库支持所述sm2、sm3和sm4密码算法。

在openssl中分别添加sm2密码算法,使得openssl库支持所述sm2密码算法,包括:采用vp_pkey系列函数完善openssl对sm2密码算法调用,完善了sm2密码算法签名时的z值的计算evp_digestsigninit()、evp_digestverifyinit()。设置sm2密码算法密码算法密钥协商所需对方的可辨识id及长度evp_pkey_ctx_set_sm2_peer_id()。设置sm2密码算法密钥协商所需己方的可辨识id及长度evp_pkey_ctx_set_sm2_self_id()。设置sm2密码算法密钥协商所需的发起方或者客户端标识evp_pkey_ctx_set_sm2_server_tag()。设置sm2密码算法密钥协商所需的对方sm2临时公钥evp_pkey_ctx_set_sm2_peer_ecdhe()。生成并获取己方sm2密码算法临时密钥对evp_pkey_ctx_gen_sm2_ecdhe_key()。设置evp_pkey调用sm2加、解密的密文格式evp_pkey_ctx_set_sm2_encdata_format(),如果format为0为der编码格式,即国密标准sm2密文格式;或者,非0为c1c3c2二进制串。采用ecdsa系列函数完善对sm2密码算法签名、验签算法的调用;计算sm2签名算法中的z值ecdsa_sm2_get_z()。完善对sm2密钥协商的调用ecdh_compute_key()。

在openssl中分别添加sm3密码算法,使得openssl库支持所述sm3密码算法,包括:取摘要算法sm3密码算法的evp调用函数指针evp_sm3(),摘要算法系列函数:sm3()、sm3_init()、sm3_transform()、sm3_update()、sm3_final()。

在openssl中分别添加sm4密码算法,使得openssl库支持所述sm4密码算法,包括:获取sm4密码算法对称加密算法cbc模式的evp调用的函数指针evp_sm4()、evp_sm4_cbc().获取sm4密码算法对称加密算法cfb模式的evp调用的函数指针evp_sm4_cfb().获取sm4密码算法对称加密算法ecb模式的evp调用的函数指针evp_sm4_ecb().获取sm4密码算法对称加密算法ofb模式的evp调用的函数指针evp_sm4_ofb()。

sm4对称算法系列函数:sm4_set_key()、sm4_encrypt()、sm4_decrypt()、sm4_ecb_encrypt()、sm4_cbc_encrypt()、sm4_cfb_encrypt()、sm4_ofb_encrypt()。

本实施例还包括:获取双证书体系国密tlsv1.1协议的相关ssl/tls相关方法,以使用客户端使用标准的tlsv1.1协议进行握手、通讯cntls_client_method()。

为支持国密双证书体系添加函数:

*ssl_ctx_check_enc_private_key()、

ssl_check_enc_private_key()、

ssl_use_enc_privatekey()、

ssl_use_enc_privatekey_asn1()、

ssl_ctx_use_enc_privatekey()、

ssl_ctx_use_enc_privatekey_asn1()、

ssl_use_enc_privatekey_file()、

ssl_ctx_use_enc_privatekey_file()*

s102,通过所述sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议对密码设备应用接口规范sdf接口和智能密码钥匙密码应用接口规范skf接口进行调用。

由上述实施例可知,本实施例提供的一种使用sdf、skf实现国密ssl协议的方法,通过openssl中添加sm2密码算法、sm3密码算法和sm4密码算法对sdf接口和skf接口进行调用,通过sdf接口和skf接口替换国密openssl中的sm2、sm3、sm4中国商用密码算法。将关键的密钥管理和密码运算通过硬件完成,充分满足高安全性需求。

与上述实施例提供的一种使用sdf、skf实现国密ssl协议的方法相对应,本申请还提供了一种使用sdf、skf实现国密ssl协议的系统的实施例,参见图2,使用sdf、skf实现国密ssl协议的系统20包括:密码算法添加模块201和接口调用模块202。

所述密码算法添加模块201,用于在openssl中分别添加sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议,并使得openssl库支持所述sm2、sm3和sm4密码算法。所述接口调用模块202,用于通过所述sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议对密码设备应用接口规范sdf接口和智能密码钥匙密码应用接口规范skf接口进行调用。

一个示意性实施例,所述密码算法添加模块201包括:第一调用处理单元、计算处理单元、第一设置单元、第二设置单元、第三设置单元、第四设置单元、第一获取单元、第五设置单元、第二调用处理单元、计算单元和第三调用处理单元。

第一调用处理单元,用于采用vp_pkey系列函数完善openssl对sm2密码算法调用。计算处理单元,用于完善了sm2密码算法签名时的z值的计算。第一设置单元,用于设置sm2密码算法密码算法密钥协商所需对方的可辨识id及长度。第二设置单元,用于设置sm2密码算法密钥协商所需己方的可辨识id及长度。第三设置单元,用于设置sm2密码算法密钥协商所需的发起方或者客户端标识。第四设置单元,用于设置sm2密码算法密钥协商所需的对方sm2临时公钥。第一获取单元,用于生成并获取己方sm2密码算法临时密钥对。第五设置单元,用于设置evp_pkey调用sm2加、解密的密文格式。第二调用处理单元,用于采用ecdsa系列函数完善对sm2密码算法签名、验签算法的调用。计算单元,用于计算sm2签名算法中的z值。第三调用处理单元,完善对sm2密钥协商的调用。

进一步地,所述密码算法添加模块201还包括:第二获取单元、第三获取单元、第四获取单元和第五获取单元。

所述第二获取单元,用于获取sm4密码算法对称加密算法cbc模式的evp调用的函数指针。所述第三获取单元,用于获取sm4密码算法对称加密算法cfb模式的evp调用的函数指针。所述第四获取单元,用于获取sm4密码算法对称加密算法ecb模式的evp调用的函数指针。所述第五获取单元,用于获取sm4密码算法对称加密算法ofb模式的evp调用的函数指针。

本申请实施例还提供了一种终端,参见图3,终端30包括:处理器301、存储器302和通信接口303。

在图3中,处理器301、存储器302和通信接口303可以通过总线相互连接;总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

处理器301通常是控制终端30的整体功能,例如终端30的启动、以及终端启动后在openssl中分别添加sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议,并使得openssl库支持所述sm2、sm3和sm4密码算法。通过所述sm2密码算法、sm3密码算法、sm4密码算法和双证书体系国密tlsv1.1协议对密码设备应用接口规范sdf接口和智能密码钥匙密码应用接口规范skf接口进行调用。

处理器301可以是通用处理器,例如,中央处理器(英文:centralprocessingunit,缩写:cpu),网络处理器(英文:networkprocessor,缩写:np)或者cpu和np的组合。处理器也可以是微处理器(mcu)。处理器还可以包括硬件芯片。上述硬件芯片可以是专用集成电路(asic),可编程逻辑器件(pld)或其组合。上述pld可以是复杂可编程逻辑器件(cpld),现场可编程逻辑门阵列(fpga)等。

存储器302被配置为存储计算机可执行指令以支持终端30数据的操作。存储器301可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

启动终端30后,处理器301和存储器302上电,处理器301读取并执行存储在存储器302内的计算机可执行指令,以完成上述的使用sdf、skf实现国密ssl协议的方法实施例中的全部或部分步骤。

通信接口303用于终端30传输数据,例如实现与客户端和服务端之间的通信等。通信接口303包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口包括usb接口、microusb接口,还可以包括以太网接口。无线通信接口可以为wlan接口,蜂窝网络通信接口或其组合等。

在一个示意性实施例中,本申请实施例提供的终端30还包括电源组件,电源组件为终端30的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为终端30生成、管理和分配电力相关联的组件。

通信组件,通信组件被配置为便于终端30和其他设备之间有线或无线方式的通信。终端30可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。通信组件还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

在一个示意性实施例中,终端30可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)或其他电子元件实现。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当然,上述说明也并不仅限于上述举例,本申请未经描述的技术特征可以通过或采用现有技术实现,在此不再赘述;以上实施例及附图仅用于说明本申请的技术方案并非是对本申请的限制,如来替代,本申请仅结合并参照优选的实施方式进行了详细说明,本领域的普通技术人员应当理解,本技术领域的普通技术人员在本申请的实质范围内所做出的变化、改型、添加或替换都不脱离本申请的宗旨,也应属于本申请的权利要求保护范围。

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