发明内容
本发明提供一种高性能密码卡及配置方法,采用虚拟技术以及多线程技术,提升密码卡的性能。
第一方面,本发明实施例提供了一种高性能密码卡,包括密码算法芯片、与密码算法芯片片内总线连接的随机数发生模块以及物理通道,密码算法芯片包括:处理器、内部存储单元和密码运算单元;
其中,处理器通过片内总线与内部存储单元连接;
物理通道包括PCI-E通道以及可信信道,可信信道用以连接处理器片内总线与服务器密码机,用以接收服务器密码机传输的控制指令和/或密码服务指令;
密码运算单元包括寄存器、第一RAM以及密码算法模块,密码算法模块通过片内总线分别与寄存器及第一RAM连接;
PCI-E通道通过BAR寄存器建立服务器密码机与寄存器、第一RAM以及第二RAM之间的映射,用以映射密码卡的虚拟空间至服务器密码机,划分密码卡为至少两个虚拟空间;
DMA单元,DMA单元通过片内总线分别与第一RAM以及第二RAM连接,通过PCI-E通道连接服务器密码机,用以传输控制指令至第二RAM和/或传输密码服务指令至寄存器和第一RAM。
可选地,还包括接口单元,接口单元分别与处理器片内总线以及智能密码钥匙连接,用以实现身份验证。
可选地,还包括温度监测模块、电源监测模块、安全MCU以及防拆电路;
其中温度监测模块、安全MCU以及防拆电路分别与密码算法芯片的片内总线连接。
可选地,服务器密码机所属应用程序预制密码卡安装包模块,用以多线程提供第一请求消息队列、第一响应消息队列、源数据缓冲区和目的数据缓冲区。
第二方面,本发明实施例提供了一种高性能密码卡配置方法,应用于第一方面所提供的高性能密码卡,包括:
通过PCI-E通道,建立密码运算单元与服务器密码机的映射,划分密码卡为至少两个虚拟空间,虚拟空间的数量由密码卡所属固件确定;
接收服务器密码机所属应用程序生成的控制指令和/或密码服务指令;
处理控制指令和/或密码服务指令,生成处理信息;
通过PCI-E通道,返回处理信息至应用程序。
可选地,还包括:通过可信信道连接密码卡与服务器密码机,用以实现对内部存储单元的访问控制。
可选地,通过PCI-E通道,建立密码运算单元与服务器密码机的映射之后,还包括:
设置多线程密码卡安装包模块于服务器密码机所属虚拟卡,用以多线程提供第一请求消息队列、第一响应消息队列、源数据缓冲区和目的数据缓冲区。
可选地,服务器密码机将控制指令以命令帧的格式和/或将密码服务指令以数据帧的格式存放于第一请求消息队列中;
将存储于源数据缓冲区的源数据存储于第一请求消息队列。
可选地,接收服务器密码机所属应用程序生成的控制指令和/或密码服务指令之后,还包括:
通过DMA单元传输控制指令至第二RAM;通过DMA单元传输密码服务指令至寄存器和第一RAM。
可选地,处理控制指令和/或密码服务指令,生成处理信息,具体包括:
根据虚拟空间与虚拟卡的对应关系,通过固件设置第二请求消息队列的数量;
存储控制指令和/或密码服务指令于第二请求消息队列;
生成处理信息,并根据处理信息存储至固件生成的第二响应消息队列。
本发明实施例提供的一种高性能密码卡及配置方法,通过PIC-E通道建立服务器密码机与寄存器、第一RAM以及第二RAM的映射,进而根据密码卡中虚拟空间数量划分服务器密码机为相同数量的虚拟卡,将虚拟卡中应用程序对应生成的控制指令和/或密码服务指令经PCI-E通道传输至密码卡,并经DMA单元传输至对应的虚拟空间,经密码卡处理后传送到信息响应队列中,经DMA单元通过PCI-E通道传输至服务器密码机对应虚拟卡中,实现了密码卡同时进行多路的数据处理,从而提升了密码卡的整体性能。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
现有密码卡多采用FPGA芯片+算法芯片的结构,FPGA芯片内置ARM内核,算法芯片支持SM2/SM3/SM4等国密以及国际算法,具备可信信道通道,对密码卡进行安全访问控制,密码算法芯片存储敏感安全参数。但上述密码卡功耗较高,且难以克服密码卡与服务器密码机之间的传输效率低下的不足,性能一般。
实施例一
本发明实施例针对上述不足,提出了一种高性能密码卡。图1为本发明实施例一提供的一种高性能密码卡的结构示意图。图2为本发明实施例一提供的一种高性能密码卡中密码算法芯片的结构示意图。上述高性能密码卡通过物理通道连接外部服务器密码机8,该高性能密码卡包括:密码算法芯片1、与密码算法芯片1片内总线连接的随机数发生模块2以及物理通道,密码算法芯片1包括:处理器3、内部存储单元4和密码运算单元5;
其中,处理器3通过片内总线与内部存储单元4连接;其中内部存储单元4用于存储敏感安全参数。
物理通道包括PCI-E通道6以及可信信道7,可信信道7用以连接处理器3片内总线与服务器密码机8,用以接收服务器密码机8传输的控制指令和/或密码服务指令;密码卡通过可信信道7接收服务器密码机8所传输的控制指令,完成对敏感安全参数的操作。这里需要补充的是,上述PCI-E通道6以及可信信道7均支持控制通道以及数据通道格式,从而实现控制指令以及数据指令(密码服务指令)的传输。同时,上述物理通道实现了控制通道以及数据通道的隔离,从而提升数据传输的安全性。
密码运算单元5包括寄存器9、第一RAM10以及密码算法模块11,密码算法模块11通过片内总线分别与寄存器9及第一RAM10连接;
PCI-E通道6通过BAR寄存器12建立服务器密码机8与寄存器9、第一RAM10以及第二RAM14之间的映射,用以映射密码卡的虚拟空间至服务器密码机8,划分密码卡为至少两个虚拟空间;
DMA单元13,DMA单元13通过片内总线分别与第一RAM10以及第二RAM14连接,通过PCI-E通道6连接服务器密码机8,用以传输控制指令至第二RAM14和/或传输密码服务指令至寄存器9和第一RAM10。
具体的,密码卡中的寄存器9、第一RAM10以及第二RAM14通过与服务器密码机8所建立的映射,将地址信息映射到服务器密码机8上,密码卡所属固件将寄存器9及第一RAM10的地址进行划分,从而在划分密码卡为多个虚拟空间,同时服务器密码机8一端虚拟化多个虚拟卡,虚拟空间与虚拟卡的数量相同且对应。例如,若需要在服务器密码机8创设32个虚拟卡(VF0-VF31),服务器密码机8开通SRIOV(Single Root I/O Virtualization,单引导I/O虚拟化)后,出现上述32个虚拟卡,每个虚拟卡与服务器密码机8中的虚拟机进行绑定,虚拟机中安装有应用程序,并由应用程序生成控制指令和/或密码服务指令。这里需要补充的是,上述服务器密码机8可采用容器技术和/或虚拟机技术。
服务器密码机8所属应用程序预制密码卡安装包模块,用以多线程提供第一请求消息队列、第一响应消息队列、源数据缓冲区和目的数据缓冲区。上述密码卡安装包模块可采用硬件和/或软件包实现,其中软件包包括但不限于采用密码卡SDK。密码卡SDK与应用程序采用多线程技术,其中第一请求消息队列用以存储控制指令和/或密码服务指令形成的帧数据,同时也存储源数据缓冲区的源数据;第一响应消息队列用以存储密码卡所反馈的、帧格式的处理信息。
应用程序在生成控制指令的过程中,以命令帧的形式将控制指令存储于第一请求消息队列中。第一请求消息队列采用FIFO(First Input First Output,先入先出) 机制将控制指令通过PCI-E通道传输至密码卡中。
这里需要说明的是,DMA单元13通过控制通道和/或数据通道与服务器密码机8连接,用以传输控制指令至第二RAM14和/或传输密码服务指令至寄存器9和第一RAM10。
具体来说,上述应用程序将控制指令通过控制通道传输至密码卡。密码卡根据BAR寄存器12中所映射的地址信息,通过DMA单元13将控制指令发送至第二RAM14中。密码卡中处理器3根据上述控制指令进行处理操作并得到处理信息后,将上述处理信息存储于第二响应消息队列。上述第二响应消息队列通过DMA单元13由控制通道返回给应用程序。
同理,上述应用程序将密码服务指令通过数据通道传输至密码卡。密码卡固件在划分虚拟空间的过程中,每个虚拟空间都设置有第二请求消息队列以及第二响应消息队列。根据虚拟空间与虚拟卡的对应关系,虚拟卡绑定的虚拟机中应用程序所产生的密码服务指令通过第一请求消息队列被传输至对应虚拟空间的第二请求消息队列中。密码运算单元5在根据上述密码服务指令进行处理操作并得到处理信息后,将上述结果以数据帧的格式存储于第二响应消息队列,并通过DMA单元13由数据通道返回给应用程序。
这里需要补充的是,密码卡内配置有电源***,由于采用现有密码卡供电技术,这里不再赘述。
本实施例的技术方案,通过PICE通道建立服务器密码机与寄存器、第一RAM以及第二RAM的映射,进而根据密码卡中虚拟空间数量划分服务器密码机为相同数量的虚拟卡,将虚拟卡中应用程序对应生成的控制指令和/或密码服务指令经PCI-E通道传输至密码卡,并经DMA单元传输至对应的虚拟空间,经密码卡处理后传送到信息响应队列中,经DMA单元通过PCI-E通道传输至服务器密码机对应虚拟卡中,实现了密码卡同时进行多路的数据处理,从而提升了密码卡的整体性能。
实施例二
进一步如图1及图2所示,本实施例在上述技术方案的基础上进一步细化。
上述高性能密码卡还包括接口单元15,接口单元15分别与处理器3片内总线以及智能密码钥匙19连接,用以实现身份验证。
一种优选的实施方式中,上述接口单元15可采用USB接口,同样可以采用UART接口接入转换芯片和/或通用MCU实现接口调整。
智能密码钥匙19是一种基于接口的智能存储身份认证设备,内置智能卡CPU、存储器、芯片操作***和安全文件***,从而实现对使用者的身份进行验证。当验证通过,允许访问存储于内部存储单元4的敏感安全参数。并且,在接口单元设置有LED灯,用于对密码卡的工作状态进行提示。
此外,还包括温度监测模块16、电源监测模块20、安全MCU17以及防拆电路18;
其中温度监测模块16、安全MCU17以及防拆电路18分别与处理器3片内总线连接。
上述温度监测模块16用以对密码算法芯片1进行温度监控,电源监测模块20用以对密码卡的电源***进行监测。同时安全MCU17用以保护上述内部存储单元4中的敏感安全信息以及完成密码算法的扩展。防拆电路18的作用在于防止密码卡不被恶意拆解。
上述密码卡所添加的智能密码钥匙以及温度监测模块16、电源监测模块20、安全MCU17以及防拆电路18用于在保证密码的安全正常使用。
实施例三
图3为本发明实施例三提供的一种高性能密码卡配置方法的流程图,本实施例应用于上述实施例一以及实施例二所涉及的高性能密码卡,其具体方法包括:
S10:通过PCI-E通道,建立密码运算单元与服务器密码机的映射,划分密码卡为至少两个虚拟空间,虚拟空间的数量由密码卡所属固件确定;并且服务器密码机一端根据上述虚拟空间,虚拟化相同数量的虚拟卡。具体的,服务器密码机通过开通SRIOV(SingleRoot I/O Virtualization,单引导 I/O虚拟化)后,出现最多32个虚拟卡(VF0-VF31)。这里需要补充的是,上述服务器密码机可采用容器技术和/或虚拟机技术。
PCI-E通道支持控制通道以及数据通道。固件通过将密码运算单元中的寄存器以及第一RAM的地址数据进行划分,并通过映射到服务器密码机上,从而实现虚拟空间的地址信息映射到虚拟卡上。
S20:接收服务器密码机所属应用程序生成的控制指令和/或密码服务指令;上述虚拟卡与虚拟机进行绑定,形成虚拟机与密码卡虚拟空间之间的对应关系,虚拟机中安装有应用程序,并由应用程序生成控制指令和/或密码服务指令。应用程序所生成的控制指令通过PCI-E通道所支持的控制通道以命令帧的形式传输至第二RAM中;密码服务指令通过PCI-E通道所支持的数据通道以数据帧的形式传输至寄存器以及第一RAM中。
S30:处理控制指令和/或密码服务指令,生成处理信息;具体地,由于虚拟机与密码卡虚拟空间之间存在的对应关系,虚拟机所对应生成的控制指令和/或密码服务指令将被传输至虚拟空间所对应的消息队列中,进而由密码卡处理生成对应的处理信息。
S40:通过PCI-E通道,返回处理信息至应用程序。其中,密码卡在根据上述控制指令进行处理操作并得到处理信息后,通过DMA单元由控制通道返回给应用程序。
同理,密码运算单元在根据上述密码服务指令进行处理操作并得到处理信息后,通过DMA单元由数据通道返回给应用程序。
本发明实施例所采用的高性能密码卡的配置方法,应用于实施例一及实施例二所提供的高性能密码卡,与上述高性能密码具有相同的技术效果,这里不再赘述。
实施例四
在实施例三的基础上,上述高性能密码卡进一步通过可信信道连接密码卡与服务器密码机,用以实现对内部存储单元的访问控制。
这里需要补充的是,上述可信信道支持控制通道与数据通道两种格式。密码卡中处理器通过控制信道接收控制控制指令和/或通过数据通道接收密码服务指令,对密码卡进行安全访问控制。
实施例五
在实施例三的基础上,上述高性能密码卡在通过PCI-E通道,建立密码运算单元与服务器密码机的映射之后,还包括:
设置多线程密码卡安装包模块于服务器密码机所属虚拟卡,上述虚拟卡多线程提供第一请求消息队列、第一响应消息队列、源数据缓冲区和目的数据缓冲区。
密码卡在上电之后,PCI-E通道通过上电枚举以形成总线编号以及虚拟空间。密码卡所属固件根据地址信息将寄存器以及第一RAM进行划分。服务器密码机根据上述虚拟空间的地址信息,生成相同数量的虚拟卡,并每个虚拟卡由操作***启动之后引导上述应用程序,实现多线程启动。
上述密码卡安装包模块包括但不限于采用密码卡SDK。密码卡SDK与应用程序采用多线程技术,其中第一请求消息队列用以存储控制指令的命令和/或密码服务指令形成的帧数据,同时也存储源数据缓冲区的源数据;第一响应消息队列用以存储密码卡所反馈的、帧格式的处理信息。
服务器密码机将控制指令以命令帧的格式和/或将密码服务指令以数据帧的格式存放于第一请求消息队列中;
将存储于源数据缓冲区的源数据存储于第一请求消息队列。服务器密码机根据FIFO机制,传输命令帧和/或数据帧至密码卡。
这里需要区分说明的是,接收服务器密码机所属应用程序生成的控制指令和/或密码服务指令之后,还包括:
通过DMA单元传输控制指令至第二RAM;通过DMA单元传输密码服务指令至寄存器和第一RAM。密码卡中处理器根据上述控制指令进行处理操作并得到处理信息后,将上述处理信息存储于第二响应消息队列。上述第二响应消息队列通过DMA单元由控制通道返回给应用程序。
同理,上述应用程序将密码服务指令通过数据通道传输至密码卡。密码卡固件在划分虚拟空间的过程中,每个虚拟空间都设置有第二请求消息队列以及第二响应消息队列。根据虚拟空间与虚拟卡的对应关系,虚拟卡绑定的虚拟机中应用程序所产生的密码服务指令通过第一请求消息队列被传输至对应虚拟空间的第二请求消息队列中。密码运算单元在根据上述密码服务指令进行处理操作并得到处理信息后,将上述结果以数据帧的格式存储于第二响应消息队列,并通过DMA单元由数据通道返回给应用程序。
进一步如图4所示,处理控制指令和/或密码服务指令,生成处理信息,具体包括:
S31:根据虚拟空间与虚拟卡的对应关系,通过固件设置第二请求消息队列的数量;第二请求消息队列的数量与虚拟空间的数量相同。
S32:存储控制指令和/或密码服务指令于第二请求消息队列;根据虚拟空间与虚拟卡之间的对应关系,产生于虚拟卡绑定的虚拟机中应用程序所产生的密码服务指令通过第一请求消息队列被传输至对应虚拟空间的第二请求消息队列中。
S33:生成处理信息,并根据处理信息存储至固件生成的第二响应消息队列。
本发明实施例在实施例三的基础上,进一步在服务器密码机所属虚拟卡多线程提供第一请求消息队列、第一响应消息队列、源数据缓冲区和目的数据缓冲区,并在密码卡所属的虚拟空间中提供第二请求消息队列以及第二响应消息队列,从而进一步提升了密码卡数据处理的,提升了密码卡的整体性能。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory, RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述事故数据分析装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
虽然,上文中已经用一般性说明、具体实施方式及试验,对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。