一种高性能密码卡及其工作方法与流程

文档序号:19879935发布日期:2020-02-08 06:54阅读:2916来源:国知局
一种高性能密码卡及其工作方法与流程

本发明涉及密码卡技术领域,具体涉及一种高性能密码卡及其工作方法。



背景技术:

信息安全是一个综合性的交叉科学领域,广泛涉及数学、密码学、计算机、通信、控制、人工智能、安全工程、人文科学等诸多学科,是近几年迅速发展的一个热点学科领域。随着信息技术的发展,人们在享受信息资源所带来的巨大的利益时,也要面临着信息安全的严峻考验。信息的安全问题日益突出,基于密码学原理的各种安全应用越来越广泛,数据加密已经深入到信息应用的各个角落。至今,密码技术是取得信息安全性最有效的一种方法,是信息安全的核心技术。通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。

目前现有普通的密码卡功能不完善,缺乏毁钥机制,密钥存储也不安全。比如中国专利公开了一种基于pcie接口的密码卡及该密码卡的数据加密方法,申请号为201610509715.9,其采用zynq主处理器作为板上核心,fpga模块和arm处理器采用高速片内总线连接方式进行互连,提高了数据交互性能,降低了系统间延迟,提高了系统性能,降低了系统成本;同时由于采用内部高速总线互连和pcie接口,提升了数据传输性能,采用fpga模块实现算法运算,提高了算法性能,系统整体性能也获得了极大的提升,存储模块可以提供海量的密钥存储,存储空间可以提升数万。但是向用户提供的功能有限,而且也缺乏毁钥机制,密钥存储的安全性有待提高。



技术实现要素:

本发明的目的在于克服以上存在的技术问题,提供一种高性能密码卡。

为实现上述目的,本发明采用如下的技术方案:

一种高性能密码卡,包括硬件平台和软件系统;所述硬件平台包括zynq主处理器、存储单元、密码钥匙单元、pcie接口、两片数字物理噪声源、第一密码算法芯片、第二密码算法芯片和第三密码算法芯片;所述zynq主处理器包括一个双核arm处理器和一个fpga,所述arm处理器和fpga通过高速片内总线进行互连,所述arm处理器主要用于用户身份鉴别、密钥管理、密码运算和文件管理;所述fpga用来辅助所述arm处理器操作各个密码算法芯片以有效降低所述arm处理器负载并提高所述密码算法芯片的并行运算能力;所述密码钥匙单元通过usb接口与所述arm处理器电性连接,用于识别身份认证和密钥管理;所述pcie接口与所述fpga电性连接,所述高性能密码卡通过所述pcie接口连接外部服务器设备;所述两片数字物理噪声源与所述fpga电性连接,用于产生密钥、初始向量和随机数,所述随机数由所述两片数字物理噪声源产生的结果异或后得到;所述存储单元包括ddr、spiflash和emmc;所述ddr与所述arm处理器电性连接,用于做os的运行环境;所述spiflash与所述arm处理器电性连接,用于存储程序;所述emmc与所述arm处理器电性连接,用于存储密钥;所述第一密码算法芯片与所述fpga电性连接,用于实现sm2、sm3、sm4密码算法;所述第二密码算法芯片与所述fpga电性连接,用于实现sm1密码算法;所述第三密码算法芯片通过uart与所述arm处理器电性连接,用于安全存储密钥;

所述软件系统包括linux系统和主控程序,所述linux系统运行于所述arm处理器的一个核内,所述主控程序运行于所述arm处理器的另外一个核内,所述主控程序,所述主控程序包括初始化模块,用于初始化arm处理器、初始化pl侧fpga,鉴别固件和密码卡数据的完整性,验证各个密码算法芯片是否正常工作,实现密码卡初始化功能;密钥管理模块,用于实现三级密钥体系管理、备份恢复管理;权限控制模块,用于实现身份鉴别,实现管理权限,操作权限和审计权限分离,确保密码卡使用安全;密码算法芯片控制模块,用于实现各个密码算法芯片的访问控制;文件管理模块,用于实现密码卡上的文件管理;备份恢复模块,用于实现密码卡的备份恢复机制。

进一步地,所述第三密码算法芯片的一个管脚外接毁钥按键,其余管脚被所述密码卡的保护罩压住,当有外力强行破坏所述保护罩时,会及时销毁第三密码算法芯片内部的密钥。

进一步地,还包括主机,所述密码卡通过所述pcie接口与主机通信连接,所述主机内包括api接口和驱动程序,在实际应用时,应用层通过调用所述api接口以获取各种密码服务,所述api接口根据所述应用层的业务请求对数据进行格式封装,并通过所述驱动程序将封装后的数据传送给所述密码卡,所述密码卡通过调用主控程序的对应模块进行处理,再通过所述驱动程序获取所述密码卡传送回来的结果并返回给所述应用层。

一种高性能密码卡的工作方法,包括随机数生成方法、sm2密钥对生成方法、基于sm2数字签名的产生和验证方法、基于sm2的密钥协商方法、sm3数据摘要方法和基于sm1/sm4的对称算法加解密方法。

进一步地,所述随机数生成方法的具体实现步骤为:api接口被调用后,api接口首先将数据进行格式封装,然后通过驱动程序发送给密码卡,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话则调用fpga操作数字物理噪声源各产生用户要求的同样长度的随机数,然后将获取到的随机数异或后返给arm处理器,之后由arm处理器封装应答报文,将要求长度的随机数通过驱动程序和api接口返回给调用者。

进一步地,所述sm2密钥对生成方法的具体实现步骤为:api接口被调用后,api接口首先将数据进行格式封装,然后通过驱动程序发送给密码卡;然后,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话在检测是否满足用户员权限,如果满足则通过数字物理噪声源产生256位的随机数作为私钥;再然后,调用fpga操作第一密码算法芯片做kp运算以得到公钥值;最后,封装应答报文,将密钥通过驱动程序和api接口返回给调用者,并清除密码卡内的密钥对,如果以上有一项不满足则直接将错误码通过驱动程序和api接口返回给调用者。

进一步地,所述基于sm2数字签名的产生和验证方法的具体实现步骤为:api接口被调用后,api接口首先将数据进行格式封装,然后打包通过驱动程序发送给密码卡;其次,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话进行下一步处理:如果是产生sm2数字签名,则需要验证用户会话是否已经获取了私钥的访问权限,如果已经获取权限则解密私钥,再调用fpga操作第一密码算法芯片对数据进行数字签名,签名完成后立即将私钥置0;如果是对sm2数字签名进行验证,则调用fpga操作第一密码算法芯片对数字签名进行验证,最后将结果通过驱动程序和api接口返回给调用者;如果以上有一项不满足则直接将错误码通过驱动程序和api接口返回给调用者。

进一步地,所述基于sm2的密钥协商方法的具体实现步骤为:api接口被调用后,api接口首先将数据进行格式封装,然后打包通过驱动程序发送给密码卡;然后,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话进行下一步处理:如果需要使用私钥,则验证用户会话是否已经获取了私钥的访问权限,如果已经获取权限则解密私钥,再调用fpga操作第一密码算法芯片对数据进行密钥协商,操作完成后立即将私钥置0;最后,将结果通过驱动程序和api接口返回给调用者,如果以上有一项不满足则直接将错误码通过驱动程序和api接口返回给调用者。

进一步地,所述sm3数据摘要方法的具体实现步骤为:api接口被调用后,api接口首先将数据进行格式封装,然后打包通过驱动程序发送给密码卡;其次,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话调用fpga操作第一密码算法芯片对数据进行杂凑生成;最后,将结果通过驱动程序和api接口返回给调用者,如果以上有一项不满足,则直接将错误码通过驱动程序和api接口返回给调用者。

进一步地,所述基于sm1/sm4的对称算法加解密方法的具体实现步骤为:api接口被调用后,api接口首先将数据进行格式封装,然后打包通过驱动程序发送给密码卡,密码卡上的arm处理器首先检测是否具备操作员权限,如果具备则解密对应的对称密钥,然后封装数据给fpga并启动状态机,fpga通过状态机和第一密码算法芯片或第二密码算法芯片交互后,将结果返回给arm处理器。

本发明的有益效果:

1、本发明具备密钥生成、密钥管理、数据加解密、数字签名、身份认证、密钥协商等功能,功能齐全,极大地满足了用户地需求,解决了目前市面上密码卡功能欠缺的技术问题。

2、采用带自毁输入的密码算法芯片存储保护密钥分量,有效提高抗攻击能力。

3、采用密码钥匙单元作为用户双因子认证之一,安全可靠。

4、本发明在初始化时将保护密钥一分为2,将两个分量分别保存,分量1存于密码钥匙单元中,受用户pin码保护;分量2存于密码卡上安全芯片ssx1616中,降低了泄露的风险,提高保护了密钥的安全性。

附图说明

图1:本发明一种高性能密码卡的硬件平台的逻辑框图。

图2:本发明主控程序与主机程序的逻辑框图。

图3:本发明随机数生成方法的流程示意图。

图4:本发明sm2密钥对生成方法的流程示意图。

图5:本发明基于sm2数字签名方法的流程示意图。

图6:本发明基于sm2数字验签方法的流程示意图。

图7:本发明基于sm2的密钥协商方法的流程示意图。

图8:本发明sm3数据摘要方法的流程示意图。

图9:本发明基于sm1/sm4的对称算法加解密方法的流程示意图。

图10:本发明一种高性能密码卡的启动流程示意图。

具体实施方式

下面结合附图及实施例对本发明进行详细说明。

实施例一:

一种高性能密码卡,包括硬件平台和软件系统;如图1所示,所述硬件平台包括zynq主处理器、存储单元、密码钥匙单元、pcie接口、两片数字物理噪声源、第一密码算法芯片、第二密码算法芯片和第三密码算法芯片;

所述zynq主处理器为xilinx公司的7z015芯片,芯片内部集成了一个双核arm处理器(ps)和一个fpga(pl),所述arm处理器和fpga通过高速片内总线进行互连,所述arm处理器主要用于用户身份鉴别、密钥管理、密码运算和文件管理;所述fpga用来辅助所述arm处理器操作各个密码算法芯片以有效降低所述arm处理器负载并提高所述密码算法芯片的并行运算能力。

所述存储单元包括ddr、spiflash和emmc;

所述ddr为mt41k128m16芯片,与所述arm处理器电性连接,用来支撑soc系统和主控程序的运行;

所述spiflash为s25fl128芯片,与所述arm处理器电性连接,用于存储启动所需的固件;

所述emmc为sdin7dp2-4g芯片,与所述arm处理器电性连接,用于存储密码卡的数据、用户密钥、用户文件。用户密钥等信息以密文型式存储以确保安全性;

两片数字物理噪声源采用北京宏思电子技术有限责任公司的wng-9芯片,wng-9芯片具有一个时钟线和一个地址线,接在zynq主处理器的pl侧(即fpga),两个wng-9芯片的数据和时钟线均独立,由fpga状态机控制,用于产生密钥、初始向量和随机数,所述随机数由所述两片数字物理噪声源产生的结果异或后得到;

所述密码钥匙单元为sjk1915器件,用于识别身份认证和密钥管理,采用usb接口连接接在zynq主处理器的ps侧(即arm处理器),由arm处理器直接访问控制;

所述第一密码算法芯片为ssx1510芯片,ssx1510芯片接在zynq主处理器的pl侧,由fpga状态机控制,用于实现sm2运算、sm3摘要生产和sm4加解密算法;

所述第二密码算法芯片为ssx30-d芯片,ssx30-d芯片接在zynq主处理器的pl侧,由fpga状态机控制,用于实现sm1加解密算法;

ssx1510芯片和ssx30-d芯片的所有信号线均独立。

所述第二密码算法芯片为ssx1616芯片,用于实现密钥的安全存储,ssx1616芯片通过uart接在zynq主处理器的ps侧,由arm处理器直接访问控制。

ssx1616芯片具备多个检测管脚,当发现检测管脚有电平变化后则销毁存于芯片内部的密钥。硬件设计中,一个管脚外接毁钥按键,提供用户快速销毁密钥的机制;通过密码卡保护罩压住其余管脚,当有外力强行破坏密码卡保护罩时,会及时销毁ssx1616芯片内部的密钥。这样采用带自毁输入的密码算法芯片存储保护密钥分量,有效提高了抗攻击能力。

所述pcie接口与所述fpga电性连接,所述高性能密码卡通过所述pcie接口连接外设进行数据交互。

所述软件系统包括linux系统和主控程序,所述linux系统运行于所述arm处理器的一个核内,所述主控程序运行于所述arm处理器的另外一个核内。如图2所示,所述主控程序包括初始化模块,用于初始化arm处理器、初始化pl侧fpga,鉴别固件和密码卡数据的完整性,验证各个密码算法芯片是否正常工作,实现密码卡初始化功能;密钥管理模块,用于实现三级密钥体系管理、备份恢复管理;权限控制模块,用于实现身份鉴别,实现管理权限,操作权限和审计权限分离,确保密码卡使用安全;密码算法芯片控制模块,用于实现各个密码算法芯片的访问控制;文件管理模块,用于实现密码卡上的文件管理;备份恢复模块,用于实现密码卡的备份恢复机制。

实施例二:

与上述实施例一的区别仅在于还包括主机,所述密码卡通过所述pcie接口与主机通信连接,所述主机内包括api接口和驱动程序,在实际应用时,应用层通过调用所述api接口以获取各种密码服务,所述api接口根据所述应用层的业务请求对数据进行格式封装,并通过所述驱动程序将封装后的数据传送给所述密码卡,所述密码卡通过调用主控程序的对应模块进行处理,再通过所述驱动程序获取所述密码卡传送回来的结果并返回给所述应用层。

下面简要介绍下本实施例的工作原理:

密码卡上电启动后,arm处理器首先将存于s25fl128芯片的fsbl(firststagebootloader)读入7z015芯片片内ram内并执行,fsbl进行arm处理器和fpga的初始化,初始化完成后,fsbl读取s25fl128芯片的系统和主控程序到mt41k128m16芯片并执行,主控程序会对各个密码算法芯片和噪声源发生器进行自检,自检成功后对存于s25fl128芯片的fsbl进行摘要计算,并和保存的摘要值进行比对,比对成功后会对存于sdin7dp2-4g芯片的密码卡数据信息进行摘要计算,并和保存的摘要值进行比对,比对成功后则初始化完成,等待应用请求服务。

用户通过api接口调用请求后,api接口将用户请求进行格式封装交给驱动程序,驱动程序启动dma请求,7z015芯片收到dma请求后,通过fpga的dma状态机将数据搬运到密码卡的fpga的ram中并通知7z015芯片的arm处理器,主控程序收到后首先解析报文,并转到相应的处理模块,具体如下:

1)随机数处理模块

主控程序调用7z015芯片的fpga状态机操作,fpga状态机同时读取密码卡上的两片wng-9噪声源发生器并进行异或处理,处理完成后通知arm的主控程序。

2)sm1处理模块

主控程序首先使用保护密钥解密用户密钥对私钥或密钥加密密钥,在使用用户密钥对私钥或密钥加密密钥解密会话密钥,然后将芯片所需数据交由主控芯片的fpga状态机,fpga状态机操作ssx30-d芯片的控制信号,完成加解密操作,处理完成后通知arm处理器的主控程序,主控程序收到通知后对用到的明文密钥做清0操作。

3)sm2处理模块

主控程序首先判断是否需要使用私钥,如果需要使用私钥,则判断用户是否获取私钥的使用权,如果已获取私钥的使用权则使用保护密钥解密用户密钥对私钥,然后将ssx1510所需数据交由主控芯片的fpga状态机,fpga状态机操作ssx1510芯片的控制信号,完成处理请求,处理完成后通知arm处理器的主控程序,主控程序收到通知后对用到的明文私钥密钥做清0操作后,使用dma将加解密后的数据搬移到主机,在通过驱动程序和api接口返回给用户;如果不需要使用私钥则处理模块将ssx1510芯片所需数据交由主控芯片的fpga状态机,fpga状态机操作ssx1510芯片的控制信号,完成加处理请求,处理完成后通知arm处理器的主控程序。

4)sm3处理模块

主控程序调用7z015的fpga状态机操作,fpga状态机操作ssx1510芯片,处理完成后通知arm处理器的主控程序。

5)sm4处理模块

sm4处理模块类似sm1处理模块,首先使用保护密钥解密用户密钥对私钥或密钥加密密钥,在使用用户密钥对私钥或密钥加密密钥解密会话密钥,然后将芯片所需数据交由7z015的fpga状态机,fpga状态机操作ssx1510芯片的控制信号,完成加解密操作,处理完成后通知arm处理器的主控程序,主控程序收到通知后对用到的明文密钥做清0操作。

各处理模块处理完成后,使用dma将结果和处理完成的数据通过dma搬运到主机内存,并发送中断。驱动程序相应中断将数据从内核层搬运到用户层,最终通过api接口将结果和数据返回给用户。

实施例三:

如图3所示,一种高性能密码卡的随机数生成方法,具体步骤为:用户调用对应接口后,api接口将数据进行格式封装然后通过驱动程序发送给密码卡,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话则调用fpga操作wng-9芯片各产生用户要求的同样长度的随机数,然后将获取到的随机数异或后返给arm处理器,之后由arm处理器封装应答报文,将用户要求长度的随机数通过驱动和api返回给用户。

实施例四:

如图4所示,一种高性能密码卡的sm2密钥对生成方法,具体步骤为:用户调用对应接口后,api接口将数据进行格式封装然后通过驱动程序发送给密码卡,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话在检测是否满足用户员权限,如果满足则通过wng-9产生256位的随机数作为私钥,在调用fpga操作ssx1510芯片做kp运算以得到公钥值。最后封装应答报文,将密钥通过驱动程序和api接口返回给用户,并清除密码卡内的密钥对。如果以上有一项不满足则直接将错误码通过驱动程序和api接口返回给用户。

实施例五:

如图5-6所示,一种高性能密码卡的基于sm2数字签名的产生和验证方法,具体步骤为:用户调用对应接口后,api接口将数据进行格式封装然后打包通过驱动程序发送给密码卡,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话进行下一步处理:如果是产生sm2数字签名,则需要验证用户会话是否已经获取了私钥的访问权限,如果已经获取权限则解密私钥,在调用fpga操作ssx1510芯片对数据进行数字签名,签名完成后立即将私钥置0;如果是对sm2数字签名进行验证,则调用fpga操作ssx1510芯片对数字签名进行验证,最后将结果通过驱动程序和api接口返回给用户。如果以上有一项不满足则直接将错误码通过驱动程序和api接口返回给用户。

实施例六:

如图7所示,一种高性能密码卡的基于sm2的密钥协商方法,具体步骤为:用户调用对应接口后,api接口将数据进行格式封装然后打包通过驱动程序发送给密码卡,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话进行下一步处理:如果需要使用私钥,则需要验证用户会话是否已经获取了私钥的访问权限,如果已经获取权限则解密私钥,在调用fpga操作ssx1510芯片对数据进行密钥协商,操作完成后立即将私钥置0,最后将结果通过驱动程序和api接口返回给用户。如果以上有一项不满足则直接将错误码通过驱动程序和api接口返回给用户。

实施例七:

如图8所示,一种高性能密码卡的sm3数据摘要方法,具体步骤为:用户调用对应接口后,api接口将数据进行格式封装然后打包通过驱动程序发送给密码卡,密码卡上的arm处理器首先解析数据格式、参数是否正确,正确的话调用fpga操作ssx1510芯片对数据进行杂凑生成,最后将结果通过驱动程序和api接口返回给用户。如果以上有一项不满足则直接将错误码通过驱动程序和api接口返回给用户

实施例八:

如图9所示,一种高性能密码卡的基于sm1/sm4的对称算法加解密方法,具体步骤为:用户调用对应接口后,api接口将数据进行格式封装然后打包通过驱动程序发送给密码卡,密码卡上的arm处理器首先检测是否具备操作员权限,如果具备则解密对应的对称密钥,然后封装数据给fpga并启动状态机,fpga通过状态机和ssx30-d或ssx1510芯片交互后,将结果返回给arm处理器。

下面再介绍下本发明的工作流程:

(1)启动

7z015分为pl侧和ps侧,pl侧主要为fpga,ps侧为双核arm处理器。如图10所示,密码卡第一次上电或复位后,存于s25fl128flash中的fsbl(firststagebootloader)会被7z015的ps侧加载到内部ram执行,fsbl会初始化arm处理器的各个外设,初始化完成后fsbl会读取存于s25fl128flash中的pl到pl侧运行,最后会读取存于s25fl128flash中的系统到mt41k128m16中并跳转启动,系统启动后主控程序会自动运行。

(2)自检

启动流程结束后,主控程序会对所有密码算法芯片、启动固件完整性和密码卡数据的完整性进行自检,所有自检均成功后,密码卡标记检测成功并可响应用户的请求。任一自检失败则密码卡标记检测失败并对用户请求不予执行。

1)ssx30-d芯片自检

使用预置的数据对ssx30-d芯片进行自检以测试sm1密码算法的正确性。使用的数据为:

密钥:0x40,0xbb,0x12,0xdd,0x6a,0x82,0x73,0x86,0x7f,0x35,0x29,0xd3,0x54,0xb4,0xa0,0x26

初始向量:0xe8,0x3d,0x17,0x15,0xac,0xf3,0x48,0x63,0xac,0xeb,0x93,0xe0,0xe5,0xab,0x8b,0x90

明文数据:0xff,0xee,0xdd,0xcc,0xbb,0xaa,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00

cbc模式下密文数据:0x3a,0x70,0xb5,0xd4,0x9a,0x78,0x2c,0x07,0x2d,0xe1,0x13,0x43,0x81,0x9e,0xc6,0x59

2)ssx1510芯片自检

使用预置的数据对ssx1510芯片进行自检以测试密码算法的正确性。

测试sm4算法使用如下数据:

密钥:0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10

初始向量:0xeb,0xee,0xc5,0x68,0x58,0xe6,0x04,0xd8,0x32,0x7b,0x9b,0x3c,0x10,0xc9,0x0c,0xa7

明文数据:0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10

cbc模式下密文数据:0x3f,0x1e,0x73,0xc3,0xdf,0xd5,0xa1,0x32,0x88,0x2f,0xe6,0x9d,0x99,0x6c,0xde,0x93

测试sm3算法使用如下数据:

数据:0x61,0x62,0x63

运算结果:0x66,0xc7,0xf0,0xf4,0x62,0xee,0xed,0xd9,0xd1,0xf2,0xd4,0x6b,0xdc,0x10,0xe4,0xe2,0x41,0x67,0xc4,0x87,0x5c,0xf2,0xf7,0xa2,0x29,0x7d,0xa0,0x2b,0x8f,0x4b,0xa8,0xe0

测试sm2签名使用如下数据:

px=0x32c4ae2c1f1981195f9904466a39c9948fe30bbff2660be1715a4589334c74c7;

py=0xbc3736a2f4f6779c59bdcee36b692153d0a9877cc62a474002df32e52139f0a0;

n=0xfffffffeffffffffffffffffffffffff7203df6b21c6052b53bbf40939d54123;

运算结果:

result1=0xf9913b5accec12d4de8ccd92a3a0a25cc14e35b8d8933c8db7c470ec230035ae;

result2=0x8427d860f80e1b87d0364d38ad1a64aa78c2f619d89ec158d6cf2db0e4b5d15b;

测试sm2验签使用如下数据:

px=0x32c4ae2c1f1981195f9904466a39c9948fe30bbff2660be1715a4589334c74c7;

py=0xbc3736a2f4f6779c59bdcee36b692153d0a9877cc62a474002df32e52139f0a0;

n=0xfffffffeffffffffffffffffffffffff7203df6b21c6052b53bbf40939d54123;

par3=0xf9913b5accec12d4de8ccd92a3a0a25cc14e35b8d8933c8db7c470ec230035ae;

par4=0x8427d860f80e1b87d0364d38ad1a64aa78c2f619d89ec158d6cf2db0e4b5d15b;

运算结果,成功。

3)wng-9自检

密码卡集成两片wng-9数字物理噪声源芯片,fpga将两片wng-9芯片生成的结果异或后送给arm处理器作为随机数,测试随机数的随机性,以确保随机源芯片功能正常。测试内容包括《gm/t0005-2012随机性检测规范》中规定的15项检测(单比特频数检测、块内频数检测、扑克检测、重叠子序列检测、游程总数检测、游程分布检测、块内最大“1”游程检测、二元推导检测、自相关检测、矩阵秩检测、累加和检测、近似熵检测、线性复杂度检测、marurer通用统计检测、离散傅立叶检测),满足所有测试项后方认可数字物理噪声源芯片有效。

4)固件完整性校验

读取存于s25fl128的固件并进行sm3杂凑计算,将结果和存储的杂凑值做对比,比对一致则校验成功。

5)密码卡数据完整性校验

读取存于sdin7dp2-4g的密码卡数据并进行sm3杂凑计算,将结果和存储的杂凑值做对比,比对一致则校验成功。

(3)密码卡初始化

密码卡初始化是一个新密码卡使用前的必须流程,通过密码卡初始化流程,可以产生设备密钥,建立三级密钥管理机制。

密码卡初始化只能通过管理工具完成,同时需要7个智能密码钥匙。

初始化流程如下:

a)擦除密码卡数据区域,标记密码卡状态为初始状态。

b)主控程序调用密码算法芯片控制模块产生两组128位密钥分量,并将其中一组分量存入ssx1616芯片内。

c)主控程序调用密码算法芯片控制模块生成设备加密和签名密钥对。

d)提示用户插入智能密码钥匙并提示用户输入新用户口令。

e)对智能密码钥匙进行设备认证并使用新用户口令修改默认用户口令。

f)主控程序操作智能密码钥匙产生签名密钥对并将公钥导出,同时将b)产生的两组密钥分量中的另外一组存入智能密码钥匙中。

g)重复d)-f)6次,对应5位管理员用户,1位审计管理员用户和1位操作员用户。

h)主控程序对b)产生的2组128位密钥进行异或运算,并将结果作为保护密钥,然后调用密码算法芯片控制模块使用保护密钥加密设备密钥,并将密文保存到flash,设置密码卡模式为就绪状,保存智能密码钥匙公钥和序列号、密码卡模式到flash,重新计算密码卡数据区摘要值并保存到flash。

i)对产生的设备密钥和保护密钥清0。

至此密码初始化工作完成,密码卡进入就绪状态。

(4)身份认证

密码卡支持管理员、审计管理员和用户,所有角色登录均需满足口令和智能密码钥匙的双因子认证。口令通过管理工具,经由api接口和驱动程序发送给密码卡的主控程序后,主控程序调用权限控制模块对用户输入的pin码和智能密码钥匙进行验证,检查用户的合法身份,认证通过后标记用户登录,同时可以从智能密码钥匙中读取保护密钥分量,恢复保护密钥。

(5)密码卡内部用户密钥对产生流程

产生密码卡内部用户密钥对需要通过管理工具,并满足管理权限才能产生。

流程如下:

a)插入第一个管理员智能密码钥匙,输入口令。

b)成功则重复执行a),确保满足半数管理员登录。

c)从智能密码钥匙中读取保护密钥分量1,从ssx1616芯片中读取保护密钥2,进行异或运算获得保护密钥。

d)调用随机数发生器操作模块产生256位随机数作为私钥,调用ssx1510操作模块进行kp操作获得公钥。

e)使用保护密钥对私钥加密后保存到flash。

f)将保护密钥和用户私钥明文清0。

(6)修改私钥访问码流程

修改私钥访问码需要通过管理工具,并满足管理权限才能产生。

流程如下:

a)插入第一个管理员智能密码钥匙,输入口令。

b)成功则重复执行a),确保满足半数管理员登录。

c)提供用户输入私钥位置和私钥访问码。

d)从智能密码钥匙中读取保护密钥分量1,从ssx1616芯片中读取保护密钥2,进行异或运算获得保护密钥。

e)使用保护密钥对私钥访问码加密后保存到flash。

f)将保护密钥和私钥访问码明文清0。

(7)密钥加密密钥更新流程

产生密钥加密密钥需要通过管理工具,并满足管理权限才能产生。

流程如下:

a)插入第一个管理员智能密码钥匙,输入口令。

b)成功则重复执行a),确保满足半数管理员登录。

c)提供用户输入密钥加密密钥位置。

d)从智能密码钥匙中读取保护密钥分量1,从ssx1616芯片中读取保护密钥2,进行异或运算获得保护密钥。

e)调用随机数发生器操作模块产生128位密钥加密密钥。

f)使用保护密钥对密钥加密密钥加密后保存到flash。

g)将保护密钥和密钥加密密钥明文清0。

(8)密码卡密钥运算流程

a)检查设备是否满足操作权限,若不满足需要插入用户智能密码钥匙,输入口令。

b)成功后即可根据用户请求,调用密码算法芯片控制模块操作密码算法芯片。

c)将运算后的数据和执行结果返回给用户。

(9)sm2签名流程

a)主控程序检查设备是否满足操作权限,若不满足需要插入用户智能密码钥匙,输入口令。

b)检查会话是否具备对应私钥的访问权限。

c)具备访问权限则使用保护密钥解密私钥。

d)将私钥和用户数据打包后通知fpga状态机。

e)fpga状态机操作ssx1510芯片进行签名运算,获取结果后通知主控程序。

f)主控程序清除私钥明文并将结果返回给用户。

(10)密码卡备份流程

密码卡备份需要通过管理工具,并满足管理权限才能产生。

a)检查是否满足管理员权限。

b)使用噪声源发生器产生128位备份恢复密钥。

c)使用秘密共享机制把备份恢复密钥分成5个密钥分量。

d)插入第一个管理员智能密码钥匙,将一个密钥分量写入智能密码钥匙。

e)重复d),直到5个密钥分量均写入智能密码钥匙。

f)使用备份恢复密钥将密码卡内数据信息再次加密后输出。

g)清除备份恢复密钥、各密钥分量,清除密码卡所有数据,设置密码卡为初始状态。

(11)密码卡恢复流程

密码卡备份需要通过管理工具,并需要在初始状态的密码卡上恢复。

a)依次插入存有备份恢复密钥分量的智能密码钥匙,验证用户口令,验证成功后读取密钥分量,读取成功后即删除智能密码钥匙的密钥分量。

b)重复a)直到3个密钥分量读取到密码卡。

c)在密码卡内恢复备份恢复密钥。

d)使用备份恢复密钥解密备份的密码卡数据。

e)将数据写入密码卡的存储区域。

f)清除备份恢复密钥信息。

需要说明的是,所述智能密码钥匙就是sjk1915器件。

最后应说明的是:以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围中。

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