一种实现国密算法的方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201611206829.2
(22)申请日 2016.12.23
(71)申请人 艾体威尔电子技术(北京)有限公司
地址 100142 北京市海淀区杏石口路甲18
号2号楼3层
(72)发明人 廖泽才 
(74)专利代理机构 北京市盛峰律师事务所
11337
代理人 于国富
(51)Int.Cl.
H04L  9/00(2006.01)
H04L  9/08(2006.01)
H04L  9/28(2006.01)
H04L  9/32(2006.01)
(54)发明名称
一种实现国密算法的方法
(57)摘要
本发明公开了一种实现国密算法的方法,涉
及POS安全传输领域。所述方法:S1,判断POS机中
是否安装国密芯片,如果是,则进入S2;如果否,
则进入S4;S2,判断国密芯片和/或通信通道是否
被攻击,如果是,则进入S4;如果否,则进入S3;
S3,设置国密芯片可使用标识,使用国密芯片保
护数据传输安全;S4,设置国密芯片不可使用标
识,同时,调用国密软件程序保护数据传输安全;
所述国密软件程序为SM2算法软件程序、SM3算法
软件程序或SM4算法软件程序。本发明所述方法
实现了在国密芯片无法使用时,保证能够POS机
信息传输过程中正常使用国密算法。权利要求书3页  说明书10页  附图14页CN 106411498 A 2017.02.15
C N  106411498
A
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和点的横坐标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的组合。
6.根据权利要求4所述方法,其特征在于,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]P A,P A为与私钥w对应的公钥w,所述私钥w为输出被验证输入消息设备中的私钥;
A54,将杂凑值e′与点横坐标x1′坐标值的数据类型均转换为整数后,计算R值,所述R值为杂凑值e′的整数与点横坐标x1′的坐标值整数之和模上基点的阶n完成模n运算后得到的结果;
A55,判断所述R值与所述r′值是否相等,如果是,验证通过;如果否,则验签失败。
7.根据权利要求1所述方法,其特征在于,所述SM3算法软件程序为SM3杂凑算法,具体为:
B1,初始化与SM3杂凑算法相关的环境数据;
B2,对输入消息按照64字节分组迭代压缩,并累加输入消息的长度,不足64字节的输入消息,则不参与压缩,先缓存在SM3的环境中,与下一条输入消息合并成64字节后,再进入B3;
B3,将累加得到的消息总长度与缓存的消息依据填充规则填充数据;对填充后的数据进行迭代压缩,输出的压缩结果,所述压缩结果即为所述输入消息的杂凑值,所述杂凑值的长度为32字节。
8.根据权利要求1所述方法,其特征在于,所述SM4算法软件程序为SM4加解密算法,具体为:
C1,查S盒
依据输入的字节数据,从S盒数据表中查对应的元素值;
C2,密钥扩展
将输入的16字节的密钥,扩展为128字节字密钥,如果扩展口的密钥用于解密操作,则要再将密钥逆序存储,然后在进行32轮非线性迭代数据,在32轮非线性迭代数据时,每轮依次使用扩展后的4字节密钥,参与运算;
C3,非线性迭代数据
将输入的数据,按16字节分组,每组数据进行32轮非线性迭代,将迭代结果由小端模式转换大端模式,则为加密或解密结果。
一种实现国密算法的方法技术领域
[0001]本发明涉及POS安全传输领域,尤其涉及一种实现国密算法的方法。
背景技术
[0002]在POS机上,如果需要支持国密算法,通常会使用一块支持国密算法的芯片(简称:国密芯片)。POS机的MCU通过SPI等通讯接口,把密钥或数据同时发送给国密芯片,国密码芯片计算完成后,再把计算结果返回POS机。两者交互的数据一般都是明文形式。基于传输过程的安全,现有利用MCU的安全机制,把国密芯片、MCU与国密芯片通讯通道保护起来。当国密芯片或通讯通道受到攻击时,MCU立即检测到攻击,停止数据交互,防止重要数据泄露,如:密钥。
[0003]上述POS机上的国密算法,避免了重要数据的泄露,但是,当POS机上国密芯片宕机或坏掉,则会导致国密算法无法使用;或检测到国密芯片或通讯通道受到攻击时,为了保证重要数据安全,也不能使用国密芯片;或在旧版本的机器中,没有国密芯片,国密算法也无法使用。国密算法的无法应用直接导致POS机存在泄漏信息的风险,故,需要提供一种在国密芯片不能使用的条件下,依旧能够实现国密算法的软件方法。
发明内容
[0004]本发明的目的在于提供一种实现国密算法的方法,从而解决现有技术中存在的前述问题。
[0005]为了实现上述目的,本发明所述实现国密算法的方法,所述方法包括:
[0006]S1,判断POS机中是否安装国密芯片,如果是,则进入S2;如果否,则进入S4;
[0007]S2,判断国密芯片和/或通信通道是否被攻击,如果是,则进入S4;如果否,则进入S3;
[0008]S3,设置国密芯片可使用标识,使用国密芯片实现国密算法的使用;
[0009]S4,设置国密芯片不可使用标识,同时,调用国密软件程序实现国密算法的使用;所述国密软件程序为SM2算法软件程序、SM3算法软件程序或SM4算法软件程序。
[0010]优选地,步骤S1具体按照下述实现:通过ADC采集POS机MCU硬件引脚的ADC值,然后根据调用的module_is_exist函数,在预先设置的ADC值表中查询采集到的ADC值与ADC值表中的ADC值是否匹配,如果是,则POS机上已安装国密芯片;如果否,则POS机上未安装国密芯片。
[0011]优选地,步骤S3中,使用国密芯片实现国密算法的使用过程中还包括以下步骤,具体按照下述实现:MCU发送数据包后,判断MCU是否在预定的超时时间内收到国密芯片返回的运算结果,如果是,则继续使用国密芯片保护数据传输安全;如果否,则所述国密芯片工作不正常,通讯失败,进入S4。
[0012]优选地,所述国密软件程序为SM2算法软件程序,具体按照下述步骤实现:
[0013]A1,初始化
说 明 书
1/10页CN 106411498 A

本文发布于:2024-09-22 09:39:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/398421.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:国密   芯片   算法   使用   结果   实现   字节
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议