本发明涉及互联网技术领域,特别涉及一种使用国密加密卡的方法、装置、设备及存储介质。
背景技术:
目前,商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护;比如:商用密码可用于企业门禁管理、企业内部的各类敏感信息的传输加密和存储加密,以防止非法第三方获取信息内容,商用密码也可用于各种安全认证、网上银行、数字签名等。国密加密卡作为基础密码设备,提供国密算法的硬件实现,可充分满足用户各种数据加密保护的需求。然而,国内生产国密加密卡的厂商众多,同家厂商也会提供不同型号的国密加密卡;不同型号的国密加密卡在调用接口实现上都会存在差异,用户在使用国密加密卡时需要根据厂商提供的接口规范具体来适配使用,导致用户使用不同国密加密卡时需要重复适配,用户体验度不佳。
技术实现要素:
本发明的目的在于提供一种使用国密加密卡的方法、装置、设备及存储介质,通过openssl实现对国密加密卡的使用,并可以屏蔽各种厂商的国密加密卡的接口差异,便于用户使用。
根据本发明的一个方面,提供了一种使用国密加密卡的方法,所述方法包括:
当检测到目标国密加密卡接入目标设备时,获取所述目标国密加密卡的识别信息;
从预设数据库中查找与所述识别信息对应的加密卡配置信息;其中,所述加密卡配置信息包括:接口库文件的路径信息;
根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件,并解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址;
将所述api接口函数地址注册到openssl的crypto中,以供所述目标设备通过调用所述crypto中的所述api接口函数地址以使用所述目标国密加密卡。
可选的,当所述识别信息为pcie信息时,所述获取所述目标国密加密卡的识别信息的步骤,具体包括:
确定出所有连接到pci总线的外部设备信息;其中,所述外部设备信息包括:各种类型的外部设备的pcie信息;
从所述外部设备信息中筛选出所述目标国密加密卡的pcie信息。
可选的,所述加密卡配置信息还包括:驱动文件的路径信息;
在所述根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件的步骤之前,所述方法还包括:
根据所述驱动文件的路径信息获取所述目标国密加密卡的驱动文件,并安装所述驱动文件以完成所述目标设备与所述目标国密加密卡之间的初始化操作。
可选的,所述解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址的步骤,具体包括:
将所述接口库文件动态加载到需要使用所述目标国密加密卡的进程中;
在与所述进程对应的资源空间中获取所述接口库文件中的各个api接口函数的api接口函数地址;其中,所述资源空间是所述目标设备的操作系统为所述进程分配的。
可选的,在所述将所述api接口函数地址注册到openssl的crypto中的步骤之后,所述方法还包括:
获取与所述目标国密加密卡对应的调用函数;其中,所述调用函数用于接收调用所述目标国密加密卡的第一调用指令,并向crypto发送调用所述国密加密卡的api接口函数地址的第二调用指令;
将所述调用函数添加到openssl的evp中,并重新对所述evp进行封装操作。
根据本发明的另一个方面,提供了一种使用国密加密卡的装置,所述装置包括:
获取模块,用于当检测到目标国密加密卡接入目标设备时,获取所述目标国密加密卡的识别信息;
查找模块,用于从预设数据库中查找与所述识别信息对应的加密卡配置信息;其中,所述加密卡配置信息包括:接口库文件的路径信息;
解析模块,用于根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件,并解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址;
注册模块,用于将所述api接口函数地址注册到openssl的crypto中,以供所述目标设备通过调用所述crypto中的所述api接口函数地址以使用所述目标国密加密卡。
可选的,所述加密卡配置信息还包括:驱动文件的路径信息;
所述装置还包括:
驱动模块,用于根据所述驱动文件的路径信息获取所述目标国密加密卡的驱动文件,并安装所述驱动文件以完成所述目标设备与所述目标国密加密卡之间的初始化操作。
可选的,所述装置还包括:
封装模块,用于获取与所述目标国密加密卡对应的调用函数;其中,所述调用函数用于接收调用所述目标国密加密卡的第一调用指令,并向crypto发送调用所述国密加密卡的api接口函数地址的第二调用指令;将所述调用函数添加到openssl的evp中,并重新对所述evp进行封装操作。
根据本发明的另一个方面,提供了一种计算机设备,该计算机设备具体包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述介绍的使用国密加密卡的方法的步骤。
根据本发明的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述介绍的使用国密加密卡的方法的步骤。
本发明提供的使用国密加密卡的方法、装置、设备及存储介质,能够支持国密加密卡的即插即用,当国密加密卡连接设备时,首先自动识别出国密加密卡的识别信息,并自动加载对应的驱动文件,以完成初始化操作;其次,可以将国密加密卡的api接口函数地址自动添加到openssl的crypto模块中,以供设备通过调用crypto模块中的api接口函数地址以使用国密加密卡;本发明通过openssl实现对国密加密卡的使用,并可以屏蔽各种厂商的国密加密卡的接口差异,便于用户使用。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为实施例一提供的使用国密加密卡的方法的一种可选的流程示意图;
图2为实施例二提供的使用国密加密卡的装置的一种可选的组成结构示意图;
图3为实施例三提供的计算机设备的一种可选的硬件架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种使用国密加密卡的方法,如图1所示,所述方法具体包括以下步骤:
步骤s101:当检测到目标国密加密卡接入目标设备时,获取所述目标国密加密卡的识别信息。
具体的,当所述识别信息为pcie(peripheralcomponentinterconnectexpress,高速串行计算机扩展总线标准)信息时,所述获取所述目标国密加密卡的识别信息的步骤,包括:
步骤a1:确定出所有连接到pci(peripheralcomponentinterconnect,外设部件互连标准)总线的外部设备信息;其中,所述外部设备信息包括:各种类型的外部设备的pcie信息;
步骤a2:从所述外部设备信息中筛选出所述目标国密加密卡的pcie信息。
需要说明的是,在实际应用中,当目标设备为linux系统时,通过使用lspci命令列出所有连接到pci总线的外部设备信息,例如:显卡、网卡、usb接口及sata控制器等设备;通过使用grep命令从包含在各个外部设备信息的pcie信息中筛选出所述目标国密加密卡的pcie信息。在pcie信息中包含设备的厂商号(venderid)、设备号(devid)和class号等,通过读取这些硬件厂商预置的信息,能够分辨出是目标国密加密卡的型号。
步骤s102:从预设数据库中查找与所述识别信息对应的加密卡配置信息;其中,所述加密卡配置信息包括:接口库文件的路径信息。
具体的,在步骤s102之前,所述方法还包括:
步骤b1:获取所述目标国密加密卡的pcie信息、接口规范文件、驱动文件和接口库文件,并分别将所述驱动文件和接口库文件存储到指定路径下;
步骤b2:基于所述接口规范文件、驱动文件的路径信息、接口库文件的路径信息生成所述加密卡配置信息;
其中,所述加密卡配置信息包括:驱动文件的路径信息、接口库文件的路径信息、api(applicationprogramminginterface,应用程序接口)接口信息和api参数描述信息;
步骤b3:将所述pcie信息与所述加密卡配置信息关联的存储到所述预设数据库中。
在本实施例中,分别为不同厂商、不同型号的国密加密卡设置对应的加密卡配置信息,并将所有国密加密卡的pcie信息和加密卡配置信息关联的存储到所述预设数据库中。
步骤s103:根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件,并解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址。
具体的,在步骤s103之前,所述方法还包括:
根据所述驱动文件的路径信息获取所述目标国密加密卡的驱动文件,并安装所述驱动文件以完成所述目标设备与所述目标国密加密卡之间的初始化操作。
需要说明的是,在实际应用中,当目标设备为linux系统时,通过使用insmod命令安装所述驱动文件,并通过ismod命令和dmesg命令查看驱动是否安装成功。
进一步的,所述解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址的步骤,具体包括:
步骤c1:将所述接口库文件动态加载到需要使用所述目标国密加密卡的进程中;
步骤c2:在与所述进程对应的资源空间中获取所述接口库文件中的各个api接口函数的api接口函数地址;其中,所述资源空间是所述目标设备的操作系统为所述进程分配的。
需要说明的是,在实际应用中,当目标设备为linux系统时,通过使用dlopen命令打开所述接口库文件,并将包含在所述接口库文件中的各个api接口函数加载到与需要调用所述目标国密加密卡的进程对应的资源空间中,再通过使用dlsym命令确定出各个api接口函数在所述资源空间中的api接口函数地址。此外,在进程启动时,所述目标设备的操作系统会为该进程分配资源空间,当该进程通过动态库加载方式加载所述接口库文件时,操作系统会在所述资源空间中为每个api接口函数分配对应的函数地址。
此外,api接口函数地址是当所述接口库文件加载到进程中后,通过dlsym命令获取到的函数地址;进程需要调用api接口函数地址以使用所述目标国密加密卡所提供的加解密功能。
步骤s104:将所述api接口函数地址注册到openssl的crypto中,以供所述目标设备通过调用所述crypto中的所述api接口函数地址以使用所述目标国密加密卡。
在本实施例中,通过openssl开放式安全套接层协议实现对国密加密卡的使用;其中,openssl是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份;这个包广泛被应用在互联网的网页服务器上。crypto是openssl库的一个模块,提供了各种加密算法的具体实现,包括对称加解密,非对称加解密等,国密算法(sm1、sm2、sm3、sm4等)。只有当所述目标国密加密卡的api接口函数地址存储到crypto模块中,所述进程才能通过crypto模块获取到所述目标国密加密卡的api接口函数地址,以通过所述目标国密加密卡的api接口函数地址使用所述国密加密卡。
具体的,在所述将所述api接口函数地址注册到openssl的crypto中的步骤之后,所述方法还包括:
步骤d1:获取与所述目标国密加密卡对应的调用函数;其中,所述调用函数用于接收调用所述目标国密加密卡的第一调用指令,并向crypto发送调用所述国密加密卡的api接口函数地址的第二调用指令;
步骤d2:将所述调用函数添加到openssl的evp中,并重新对所述evp进行封装操作。
其中,evp封装了openssl中常用的加解密算法,并提供一个通用的加解密接口;evp提供了所有的加密和解密实现,不但封装了已有的著名算法,而且其简单易用的接口可以让目标设备轻松实现一个算法。通过重新对所述evp进行封装,使得只需要在初始化参数的时候做很少的改变,就可以实现使用所述目标国密加密卡中的加密算法进行数据的加密和解密。
实施例二
本发明实施例提供了一种使用国密加密卡的装置,如图2所示,该装置具体包括以下组成部分:
获取模块201,用于当检测到目标国密加密卡接入目标设备时,获取所述目标国密加密卡的识别信息;
查找模块202,用于从预设数据库中查找与所述识别信息对应的加密卡配置信息;其中,所述加密卡配置信息包括:接口库文件的路径信息;
解析模块203,用于根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件,并解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址;
注册模块204,用于将所述api接口函数地址注册到openssl的crypto中,以供所述目标设备通过调用所述crypto中的所述api接口函数地址以使用所述目标国密加密卡。
具体的,当所述识别信息为pcie信息时,获取模块201,用于:
确定出所有连接到pci总线的外部设备信息;其中,所述外部设备信息包括:各种类型的外部设备的pcie信息;从所述外部设备信息中筛选出所述目标国密加密卡的pcie信息。
解析模块203,用于:
将所述接口库文件动态加载到需要使用所述目标国密加密卡的进程中;在与所述进程对应的资源空间中获取所述接口库文件中的各个api接口函数的api接口函数地址;其中,所述资源空间是所述目标设备的操作系统为所述进程分配的。
进一步的,所述加密卡配置信息还包括:驱动文件的路径信息;
所述装置还包括:
驱动模块,用于根据所述驱动文件的路径信息获取所述目标国密加密卡的驱动文件,并安装所述驱动文件以完成所述目标设备与所述目标国密加密卡之间的初始化操作。
所述装置还包括:
生成模块,用于获取所述目标国密加密卡的pcie信息、接口规范文件、驱动文件和接口库文件,并分别将所述驱动文件和接口库文件存储到指定路径下;基于所述接口规范文件、驱动文件的路径信息、接口库文件的路径信息生成所述加密卡配置信息;其中,所述加密卡配置信息包括:驱动文件的路径信息、接口库文件的路径信息、api接口信息和api参数描述信息;将所述pcie信息与所述加密卡配置信息关联的存储到所述预设数据库中。
更进一步的,所述装置还包括:
封装模块,用于获取与所述目标国密加密卡对应的调用函数;其中,所述调用函数用于接收调用所述目标国密加密卡的第一调用指令,并向crypto发送调用所述国密加密卡的api接口函数地址的第二调用指令;将所述调用函数添加到openssl的evp中,并重新对所述evp进行封装操作。
实施例三
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图3所示,本实施例的计算机设备30至少包括但不限于:可通过系统总线相互通信连接的存储器301、处理器302。需要指出的是,图3仅示出了具有组件301-302的计算机设备30,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器301(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器301可以是计算机设备30的内部存储单元,例如该计算机设备30的硬盘或内存。在另一些实施例中,存储器301也可以是计算机设备30的外部存储设备,例如该计算机设备30上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,存储器301还可以既包括计算机设备30的内部存储单元也包括其外部存储设备。在本实施例中,存储器301通常用于存储安装于计算机设备30的操作系统和各类应用软件。此外,存储器301还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器302在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器302通常用于控制计算机设备30的总体操作。
具体的,在本实施例中,处理器302用于执行处理器302中存储的使用国密加密卡的方法的程序,所述使用国密加密卡的方法的程序被执行时实现如下步骤:
当检测到目标国密加密卡接入目标设备时,获取所述目标国密加密卡的识别信息;
从预设数据库中查找与所述识别信息对应的加密卡配置信息;其中,所述加密卡配置信息包括:接口库文件的路径信息;
根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件,并解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址;
将所述api接口函数地址注册到openssl的crypto中,以供所述目标设备通过调用所述crypto中的所述api接口函数地址以使用所述目标国密加密卡。
上述方法步骤的具体实施例过程可参见第一实施例,本实施例在此不再重复赘述。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
当检测到目标国密加密卡接入目标设备时,获取所述目标国密加密卡的识别信息;
从预设数据库中查找与所述识别信息对应的加密卡配置信息;其中,所述加密卡配置信息包括:接口库文件的路径信息;
根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件,并解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址;
将所述api接口函数地址注册到openssl的crypto中,以供所述目标设备通过调用所述crypto中的所述api接口函数地址以使用所述目标国密加密卡。
上述方法步骤的具体实施例过程可参见第一实施例,本实施例在此不再重复赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
1.一种使用国密加密卡的方法,其特征在于,所述方法包括:
当检测到目标国密加密卡接入目标设备时,获取所述目标国密加密卡的识别信息;
从预设数据库中查找与所述识别信息对应的加密卡配置信息;其中,所述加密卡配置信息包括:接口库文件的路径信息;
根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件,并解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址;
将所述api接口函数地址注册到openssl的crypto中,以供所述目标设备通过调用所述crypto中的所述api接口函数地址以使用所述目标国密加密卡。
2.根据权利要求1所述的使用国密加密卡的方法,其特征在于,当所述识别信息为pcie信息时,所述获取所述目标国密加密卡的识别信息的步骤,具体包括:
确定出所有连接到pci总线的外部设备信息;其中,所述外部设备信息包括:各种类型的外部设备的pcie信息;
从所述外部设备信息中筛选出所述目标国密加密卡的pcie信息。
3.根据权利要求1所述的使用国密加密卡的方法,其特征在于,所述加密卡配置信息还包括:驱动文件的路径信息;
在所述根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件的步骤之前,所述方法还包括:
根据所述驱动文件的路径信息获取所述目标国密加密卡的驱动文件,并安装所述驱动文件以完成所述目标设备与所述目标国密加密卡之间的初始化操作。
4.根据权利要求1所述的使用国密加密卡的方法,其特征在于,所述解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址的步骤,具体包括:
将所述接口库文件动态加载到需要使用所述目标国密加密卡的进程中;
在与所述进程对应的资源空间中获取所述接口库文件中的各个api接口函数的api接口函数地址;其中,所述资源空间是所述目标设备的操作系统为所述进程分配的。
5.根据权利要求1所述的使用国密加密卡的方法,其特征在于,在所述将所述api接口函数地址注册到openssl的crypto中的步骤之后,所述方法还包括:
获取与所述目标国密加密卡对应的调用函数;其中,所述调用函数用于接收调用所述目标国密加密卡的第一调用指令,并向crypto发送调用所述国密加密卡的api接口函数地址的第二调用指令;
将所述调用函数添加到openssl的evp中,并重新对所述evp进行封装操作。
6.一种使用国密加密卡的装置,其特征在于,所述装置包括:
获取模块,用于当检测到目标国密加密卡接入目标设备时,获取所述目标国密加密卡的识别信息;
查找模块,用于从预设数据库中查找与所述识别信息对应的加密卡配置信息;其中,所述加密卡配置信息包括:接口库文件的路径信息;
解析模块,用于根据所述接口库文件的路径信息获取所述目标国密加密卡的接口库文件,并解析所述接口库文件以得到所述目标国密加密卡的api接口函数地址;
注册模块,用于将所述api接口函数地址注册到openssl的crypto中,以供所述目标设备通过调用所述crypto中的所述api接口函数地址以使用所述目标国密加密卡。
7.根据权利要求6所述的使用国密加密卡的装置,其特征在于,所述加密卡配置信息还包括:驱动文件的路径信息;
所述装置还包括:
驱动模块,用于根据所述驱动文件的路径信息获取所述目标国密加密卡的驱动文件,并安装所述驱动文件以完成所述目标设备与所述目标国密加密卡之间的初始化操作。
8.根据权利要求6所述的使用国密加密卡的装置,其特征在于,所述装置还包括:
封装模块,用于获取与所述目标国密加密卡对应的调用函数;其中,所述调用函数用于接收调用所述目标国密加密卡的第一调用指令,并向crypto发送调用所述国密加密卡的api接口函数地址的第二调用指令;将所述调用函数添加到openssl的evp中,并重新对所述evp进行封装操作。
9.一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述方法的步骤。
技术总结