一种实现国密算法的方法技术

技术编号:14641782 阅读:71 留言:0更新日期:2017-02-15 16:10
本发明专利技术公开了一种实现国密算法的方法,涉及POS安全传输领域。所述方法:S1,判断POS机中是否安装国密芯片,如果是,则进入S2;如果否,则进入S4;S2,判断国密芯片和/或通信通道是否被攻击,如果是,则进入S4;如果否,则进入S3;S3,设置国密芯片可使用标识,使用国密芯片保护数据传输安全;S4,设置国密芯片不可使用标识,同时,调用国密软件程序保护数据传输安全;所述国密软件程序为SM2算法软件程序、SM3算法软件程序或SM4算法软件程序。本发明专利技术所述方法实现了在国密芯片无法使用时,保证能够POS机信息传输过程中正常使用国密算法。

【技术实现步骤摘要】

本专利技术涉及POS安全传输领域,尤其涉及一种实现国密算法的方法
技术介绍
在POS机上,如果需要支持国密算法,通常会使用一块支持国密算法的芯片(简称:国密芯片)。POS机的MCU通过SPI等通讯接口,把密钥或数据同时发送给国密芯片,国密码芯片计算完成后,再把计算结果返回POS机。两者交互的数据一般都是明文形式。基于传输过程的安全,现有利用MCU的安全机制,把国密芯片、MCU与国密芯片通讯通道保护起来。当国密芯片或通讯通道受到攻击时,MCU立即检测到攻击,停止数据交互,防止重要数据泄露,如:密钥。上述POS机上的国密算法,避免了重要数据的泄露,但是,当POS机上国密芯片宕机或坏掉,则会导致国密算法无法使用;或检测到国密芯片或通讯通道受到攻击时,为了保证重要数据安全,也不能使用国密芯片;或在旧版本的机器中,没有国密芯片,国密算法也无法使用。国密算法的无法应用直接导致POS机存在泄漏信息的风险,故,需要提供一种在国密芯片不能使用的条件下,依旧能够实现国密算法的软件方法。
技术实现思路
本专利技术的目的在于提供一种实现国密算法的方法,从而解决现有技术中存在的前述问题。为了实现上述目的,本专利技术所述实现国密算法的方法,所述方法包括:S1,判断POS机中是否安装国密芯片,如果是,则进入S2;如果否,则进入S4;S2,判断国密芯片和/或通信通道是否被攻击,如果是,则进入S4;如果否,则进入S3;S3,设置国密芯片可使用标识,使用国密芯片实现国密算法的使用;S4,设置国密芯片不可使用标识,同时,调用国密软件程序实现国密算法的使用;所述国密软件程序为SM2算法软件程序、SM3算法软件程序或SM4算法软件程序。优选地,步骤S1具体按照下述实现:通过ADC采集POS机MCU硬件引脚的ADC值,然后根据调用的module_is_exist函数,在预先设置的ADC值表中查询采集到的ADC值与ADC值表中的ADC值是否匹配,如果是,则POS机上已安装国密芯片;如果否,则POS机上未安装国密芯片。优选地,步骤S3中,使用国密芯片实现国密算法的使用过程中还包括以下步骤,具体按照下述实现:MCU发送数据包后,判断MCU是否在预定的超时时间内收到国密芯片返回的运算结果,如果是,则继续使用国密芯片保护数据传输安全;如果否,则所述国密芯片工作不正常,通讯失败,进入S4。优选地,所述国密软件程序为SM2算法软件程序,具体按照下述步骤实现:A1,初始化首先申请分配用于椭圆曲线算法的内存空间,并初始化为素域椭圆曲线的仿射坐标表示形式;使用在仿射坐标系下简化的椭圆曲线方程:y2=x3+ax+b;接着申请并初始化用于大数算法的内存空间;两个内存空间用于保存SM2算法的工作环境;两个内存空间的地址保存在全局变量中,不释放;然后,使用SM2算法推荐的椭圆曲线参数:域规模q、第一参数a、第二参数b、基点G的坐标及其点的阶n,进一步初始化SM2算法的工作环境,最后,预存乘法结果,所述乘法结果用于加速后续使用的点的乘法;A2,生成公私钥对首先,调用MCU的硬件随机函数,产生32字节随机数的私钥;利用A1中已初始化的椭圆曲线,计算与所述私钥对应的公钥;然后,检验公私钥是否有效,如果是,则清除缓存的公私钥,并返回公私钥生成成功的消息;如果否,则清除缓存的密钥对,并返回公私钥生成不成功;A3,计算用户与消息的杂凑值在用户信息ID、用户信息长度、初始化后的椭圆曲线的第一参数a、第二参数b、公钥与用户输入的消息的基础上,使用杂凑算法,计算并得到用户与消息的杂凑值;A4,对用户数据进行签名;A5,验证接收到的数据上的签名是否合法。更优选地,A4中,对用户数据进行签名,具体按照下述步骤实现:A41,依据用户信息与用于签名的消息,计算杂凑值e,A42,调用MCU的硬件随机函数,生成32字节的随机数k;判断k是否符合0≤k≤n;如果是,则返回A41;如果否,则进入A43;A43,利用A1中已初始化的椭圆曲线,计算椭圆曲线上获得随机数k与基点G的乘积结果所对应的点(x1,y1);A44,将所述杂凑值e和点的横坐标x1的数据类型均转换为整数,然后,将杂凑值e的整数与横坐标x1的坐标值的整数相加后得到的结果模上基点的阶n完成模n运算,得到64字节签名结果的前32字节结果,签名结果的前32字节结果作为r值;A45,判断是否存在r=0且r+k=n,如果是,则返回A42;如果否,则计算签名结果的后32字节s值;A46,所述r值乘以函数形参中的私钥,结果为t1;私钥加1后进行逆运算得到逆结果t2;t2×(k+t1)得到的结果模上基点的阶n完成模n运算,得到的结果为s值;A47,判断所述s值是否符合s=0,如果是,则返回A42;如果否,则输出64字节的签名结果M,所述M为r、s的组合。更优选地,A5中验证接收到的数据上的签名是否合法,具体为:A51,获取函数形参的签名结果,签名结果前32字节作为r′值,签名结果后32字节作为s′值,判断所述r′值是否在[0,n-1]范围内,如果是,则进入A52;如果否,则验签失败;A52,判断签名中携带的s′值是否在[0,n-1]范围内,如果是,使用杂凑算法计算接收到数据的杂凑值e′,计算r′+s′之和模上基点的阶n完成模n运算,得到的结果为t,判断所述t是否符合t=0,如果是,则验签失败;如果否,则进入S53;A53,在初始化后的椭圆曲线的基础上,计算椭圆曲线点(x1′,y1′),所述(x1′,y1′)的运算公式为:(x1′,y1′)=[s′]G+[t]PA,PA为与私钥w对应的公钥w,所述私钥w为输出被验证输入消息设备中的私钥;A54,将杂凑值e′与点横坐标x1′坐标值的数据类型均转换为整数后,计算R值,所述R值为杂凑值e′的整数与点横坐标x1′的坐标值整数之和模上基点的阶n完成模n运算后得到的结果;A55,判断所述R值与所述r′值是否相等,如果是,验证通过;如果否,则验签失败。优选地,所述SM3算法软件程序为SM3杂凑算法,具体为:B1,初始化与SM3杂凑算法相关的环境数据;B2,对输入消息按照64字节分组迭代压缩,并累加输入消息的长度,不足64字节的输入消息,则不参与压缩,先缓存在SM3的环境中,与下一条输入消息合并成64字节后,再进入B3;B3,将累加得到的消息总长度与缓存的消息依据填充规则填充数据;对填充后的数据进行迭代压缩,输出的压缩结果,所述压缩结果即为所述输入消息的杂凑值,所述杂凑值的长度为32字节。优选地,所述SM4算法软件程序为SM4加解密算法,具体为:C1,查S盒依据输入的字节数据,从S盒数据表中查找对应的元素值;C2,密钥扩展将输入的16字节的密钥,扩展为128字节字密钥,如果扩展口的密钥用于解密操作,则要再将密钥逆序存储,然后在进行32轮非线性迭代数据,在32轮非线性迭代数据时,每轮依次使用扩展后的4字节密钥,参与运算;C3,非线性迭代数据将输入的数据,按16字节分组,每组数据进行32轮非线性迭代,将迭代结果由小端模式转换大端模式,则为加密或解密结果。本专利技术的有益效果是:本专利技术所述方法使在无法增加国密芯片的旧版机器也可以使用国密算法。本专利技术所述方法实现了在国密芯片无法使用时,保证能够POS机信息传输过程中正常使用国密算法。其本文档来自技高网...
一种实现国密算法的方法

【技术保护点】
一种实现国密算法的方法,其特征在于,所述方法包括:S1,判断POS机中是否安装国密芯片,如果是,则进入S2;如果否,则进入S4;S2,判断国密芯片和/或通信通道是否被攻击,如果是,则进入S4;如果否,则进入S3;S3,设置国密芯片可使用标识,使用国密芯片实现国密算法的使用;S4,设置国密芯片不可使用标识,同时,调用国密软件程序实现国密算法的使用;所述国密软件程序为SM2算法软件程序、SM3算法软件程序或SM4算法软件程序。

【技术特征摘要】
1.一种实现国密算法的方法,其特征在于,所述方法包括:S1,判断POS机中是否安装国密芯片,如果是,则进入S2;如果否,则进入S4;S2,判断国密芯片和/或通信通道是否被攻击,如果是,则进入S4;如果否,则进入S3;S3,设置国密芯片可使用标识,使用国密芯片实现国密算法的使用;S4,设置国密芯片不可使用标识,同时,调用国密软件程序实现国密算法的使用;所述国密软件程序为SM2算法软件程序、SM3算法软件程序或SM4算法软件程序。2.根据权利要求1所述方法,其特征在于,步骤S1具体按照下述实现:通过ADC采集POS机MCU硬件引脚的ADC值,然后根据调用的module_is_exist函数,在预先设置的ADC值表中查询采集到的ADC值与ADC值表中的ADC值是否匹配,如果是,则POS机上已安装国密芯片;如果否,则POS机上未安装国密芯片。3.根据权利要求1所述方法,其特征在于,步骤S3中,使用国密芯片实现国密算法的使用过程中还包括以下步骤,具体按照下述实现:MCU发送数据包后,判断MCU是否在预定的超时时间内收到国密芯片返回的运算结果,如果是,则继续使用国密芯片保护数据传输安全;如果否,则所述国密芯片工作不正常,通讯失败,进入S4。4.根据权利要求1所述方法,其特征在于,所述国密软件程序为SM2算法软件程序,具体按照下述步骤实现:A1,初始化首先申请分配用于椭圆曲线算法的内存空间,并初始化为素域椭圆曲线的仿射坐标表示形式;使用在仿射坐标系下简化的椭圆曲线方程:y2=x3+ax+b;接着申请并初始化用于大数算法的内存空间;两个内存空间用于保存SM2算法的工作环境;两个内存空间的地址保存在全局变量中,不释放;然后,使用SM2算法推荐的椭圆曲线参数:域规模q、第一参数a、第二参数b、基点G的坐标及其点的阶n,进一步初始化SM2算法的工作环境,最后,预存乘法结果,所述乘法结果用于加速后续使用的点的乘法;A2,生成公私钥对首先,调用MCU的硬件随机函数,产生32字节随机数的私钥;利用A1中已初始化的椭圆曲线,计算与所述私钥对应的公钥;然后,检验公私钥是否有效,如果是,则清除缓存的公私钥,并返回公私钥生成成功的消息;如果否,则清除缓存的密钥对,并返回公私钥生成不成功;A3,计算用户与消息的杂凑值在用户信息ID、用户信息长度、初始化后的椭圆曲线的第一参数a、第二参数b、公钥与用户输入的消息的基础上,使用杂凑算法,计算并得到用户与消息的杂凑值;A4,对用户数据进行签名;A5,验证接收到的数据上的签名是否合法。5.根据权利要求4所述方法,其特征在于,A4中,对用户数据进行签名,具体按照下述步骤实现:A41,依据用户信息与用于签名的消息,计算杂凑值e,A42,调用MCU的硬件随机函数,生成32字节的随机数k;判断k是否符合0≤k≤n;如果是,则返回A41;如果否,则进入A43;A43,利用A1中已初始化的椭圆曲线,计算椭圆曲线上获得随机数k与基点G的乘积结果所对应的点(x1,y1);A44,将所述杂凑值e和点的...

【专利技术属性】
技术研发人员:廖泽才
申请(专利权)人:艾体威尔电子技术北京有限公司
类型:发明
国别省市:北京;11

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

1