一种利用协处理器抗攻击的SM2签名方法技术

技术编号:17974090 阅读:22 留言:0更新日期:2018-05-16 13:45
本发明专利技术公开了一种利用协处理器抗攻击的SM2签名方法,涉及信息安全领域。所述方法包括:CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,根据第一随机结果和读取存储器所得的签名哈希值生成第三结果,由根据随机数生成器生成的第四随机数、读取存储器所得的用户签名私钥和第三结果生成的第十结果与根据随机数生成器生成的第一随机数和第四随机数生成第八结果生成第十一结果;由生成的第十一结果与根据读取存储器所得的第二常数、用户签名私钥和随机数生成器生成的第四随机数生成的第七结果生成十二结果,CPU输出以第三结果和第十二结果为坐标的签名值;达到防御SPA、DPA和FA等侧信道攻击的目的。

【技术实现步骤摘要】
一种利用协处理器抗攻击的SM2签名方法
本专利技术涉及信息安全领域,尤其涉及一种利用协处理器抗攻击的SM2签名方法。
技术介绍
SM2算法是国家密码管理局发布的椭圆曲线公钥密码算法,在我们国家商用密码体系中被用来替换RSA算法。SM2算法数字签名生成过程为:计算e=Hv(M),产生随机数k,计算椭圆曲线点(x1,y1)=[k]G,计算r=(e+x1)modn,计算s=((1+dA)-1·(k-r·dA))modn,输出消息M的签名为(r,s)。SM2算法中最基本的运算是点乘运算,点乘运算由点加运算和点倍运算组成,而执行一个点加运算和一个点倍运算所消耗的时间和能量是不一样的,这就很容易通过SPA、DPA、FA等侧信道攻击将敏感数据泄露出来;此外,当SM2运算涉及到私钥等敏感数据操作时,如果不对私钥等敏感数据进行保护,也很容易遭受DPA等侧信道攻击。SM2算法中,包含以下运算:点乘运算为计算k个P相加的过程记作kP,这一计算称为点乘或标量乘k是一个整数,P是定义在椭圆曲线上的一个点;点加运算为计算P+Q的过程称,其中P,Q是定义在椭圆曲线上的两个不同的点;点倍运算为计算P+P=2P的过程称,其中P是定义在椭圆曲线上的点;模乘运算为计算a*bmodn的过程称;模加运算为计算(a+b)modn的过程称;模减运算为计算(a-b)modn的过程称。SPA(SimplePowerAnalysis)攻击:简单能量分析攻击,直接观察数据输入到输出的能量信号获取一些算法相关信息的分析方法;DPA(DifferentialPowerAnalysis)攻击:差分能量分析攻击,比SPA攻击更有效,因为它不需要知道算法执行的具体细节,同时又具有一定的屏蔽噪声的功能,综合利用统计方法使它更容易从杂乱无章的能量信号中获得密钥相关的信息;FA(FaultAnalysis)攻击:错误分析攻击,密码芯片设备中通过在密码算法中引入错误,导致密码设备产生错误结果,对错误结果进行分析从而得到密钥。
技术实现思路
本专利技术的目的是为了克服现有技术的不足,提供一种利用协处理器抗攻击的SM2签名方法。本专利技术提供了一种利用协处理器抗攻击的SM2签名方法,包括以下步骤:步骤S1:CPU根据读取存储器所得的用户基本信息和读取所述存储器所得的待签名信息生成预处理结果;步骤S2:所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果;步骤S3:所述CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,根据随机数生成器生成的第四随机数、读取所述存储器所得的用户签名私钥和生成的所述第三结果生成第十结果,根据生成的所述第十结果和生成的所述第八结果生成第十一结果;步骤S4:所述CPU控制协处理器根据生成的所述第七结果和生成的所述第十一结果生成第十二结果,所述CPU判断生成的所述第十二结果是否为第一预设值,是则输出生成的所述第十二结果和生成的所述第三结果组成的签名值,否则返回步骤S2;所述方法中,所述步骤S4之前,还包括:所述CPU控制协处理器根据读取所述存储器所得的第二常数、读取所述存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果。本专利技术又提供了一种利用协处理器抗攻击的SM2签名装置,包括:CPU、协处理器、存储器和随机数生成器;所述CPU包括读取模块、控制模块、生成模块、第一判断模块和输出模块;所述存储器,用于存储用户基本信息和待签名信息;所述读取模块,用于读取所述存储器得到所述用户基本信息和所述待签名信息;所述生成模块,用于根据所述读取模块读取所述存储器所得的所述用户基本信息和所述读取模块读取所述存储器所得的所述待签名信息生成预处理结果;所述随机数生成器,用于生成第三随机数;所述控制模块,用于控制所述协处理器进行工作;所述协处理器,用于在所述控制模块的控制下根据椭圆曲线的基点和所述随机数生成器生成的所述第三随机数生成第一随机结果;所述协处理器,还用于在所述控制模块的控制下根据所述协处理器生成的所述第一随机结果和所述生成模块生成的所述预处理结果生成第三结果;所述随机数生成器,还用于生成第一随机数和第四随机数;所述协处理器,还用于在所述控制模块的控制下根据所述随机数生成器生成的所述第一随机数、所述随机数生成器生成的所述第四随机数生成第八结果;所述存储器,还用于存储用户签名私钥;所述读取模块,还用于读取所述存储器得到所述用户签名私钥;所述协处理器,还用于在所述控制模块的控制下根据所述随机数生成器生成的所述第四随机数、所述读取模块读取所述存储器所得的所述用户签名私钥和所述协处理器在所述控制模块的控制下生成的所述第三结果生成第十结果;所述协处理器,还用于在所述控制模块的控制下根据所述协处理器在所述控制模块的控制下生成的所述第十结果和所述协处理器在所述控制模块的控制下生成的所述第八结果生成第十一结果;所述存储器,还用于存储第二常数;所述读取模块,还用于读取所述存储器得到所述第二常数;所述协处理器,还用于在所述控制模块的控制下根据所述读取模块读取所述存储器所得的所述第二常数、所述读取模块读取所述存储器所得的所述用户签名私钥和所述随机数生成器生成的所述第四随机数生成第七结果;所述协处理器,还用于在所述控制模块的控制下根据在所述控制模块的控制下生成的所述第七结果和在所述控制模块的控制下所述协处理器生成的所述第十一结果生成第十二结果;所述第一判断模块,用于判断所述协处理器在所述控制模块的控制下生成的所述第十二结果是否为第一预设值;所述协处理器,还用于当所述第一判断模块判定所述协处理器在所述控制模块的控制下生成的所述第十二结果不为第一预设值时,在所述控制模块的控制下根据所述协处理器生成的所述第一随机结果和所述生成模块生成的所述预处理结果生成第三结果;所述输出模块,用于当所述第一判断模块判定所述协处理器在所述控制模块的控制下生成的所述第十二结果为第一预设值时,输出所述协处理器在所述控制模块的控制下生成的所述第三结果和所述协处理器在所述控制模块的控制下生成的所述第十二结果组成的签名值。本专利技术与现有技术相比,具有以下优点:本专利技术针对SM2签名方法中可能存在的侧信道攻击,提出了一种有效的防御SPA、DPA、FA等侧信道攻击的方法,其对涉及到的用户签名私钥等敏感信息使用随机数据进行掩码,提高了SM2签名方法的安全性,达到了防御SPA、DPA、FA等侧信道攻击的目的。附图说明图1为本专利技术实施例二提供的一种利用协处理器抗攻击的SM2签名方法流程图;图2为本专利技术实施例三提供的一种利用协处理器抗攻击的SM2签名装置方框图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。实施例一本专利技术实施例一提供一种利用协处理器抗攻击的SM2签名方法,包括以下步骤:步骤S1:CPU根据读取存储器所得的用户基本信息和读取存储器所得的待签名信息生成预处理结本文档来自技高网
...
一种利用协处理器抗攻击的SM2签名方法

【技术保护点】
一种利用协处理器抗攻击的SM2签名方法,其特征在于,包括以下步骤:步骤S1:CPU根据读取存储器所得的用户基本信息和读取所述存储器所得的待签名信息生成预处理结果;步骤S2:所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果;步骤S3:所述CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,根据随机数生成器生成的第四随机数、读取所述存储器所得的用户签名私钥和生成的所述第三结果生成第十结果,根据生成的所述第十结果和生成的所述第八结果生成第十一结果;步骤S4:所述CPU控制协处理器根据生成的所述第七结果和生成的所述第十一结果生成第十二结果,所述CPU判断生成的所述第十二结果是否为第一预设值,是则输出生成的所述第十二结果和生成的所述第三结果组成的签名值,否则返回步骤S2;所述方法中,所述步骤S4之前,还包括:所述CPU控制协处理器根据读取所述存储器所得的第二常数、读取所述存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果。

【技术特征摘要】
1.一种利用协处理器抗攻击的SM2签名方法,其特征在于,包括以下步骤:步骤S1:CPU根据读取存储器所得的用户基本信息和读取所述存储器所得的待签名信息生成预处理结果;步骤S2:所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果;步骤S3:所述CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,根据随机数生成器生成的第四随机数、读取所述存储器所得的用户签名私钥和生成的所述第三结果生成第十结果,根据生成的所述第十结果和生成的所述第八结果生成第十一结果;步骤S4:所述CPU控制协处理器根据生成的所述第七结果和生成的所述第十一结果生成第十二结果,所述CPU判断生成的所述第十二结果是否为第一预设值,是则输出生成的所述第十二结果和生成的所述第三结果组成的签名值,否则返回步骤S2;所述方法中,所述步骤S4之前,还包括:所述CPU控制协处理器根据读取所述存储器所得的第二常数、读取所述存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果。2.如权利要求1所述的方法,其特征在于,所述步骤S1中,所述CPU根据读取所述存储器所得的用户基本信息和读取所述存储器所得的待签名信息生成预处理结果,具体为:所述CPU根据读取所述存储器所得的用户基本信息和读取所述存储器所得的待签名信息进行拼接运算,生成所述预处理结果。3.如权利要求1所述的方法,其特征在于,所述步骤S2中,所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,具体为:所述CPU控制协处理器对椭圆曲线的基点和随机数生成器生成的第三随机数进行点乘运算,生成所述第一随机结果。4.如权利要求1所述的方法,其特征在于,所述步骤S2中,所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果之后,所述根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果之前,还包括:步骤A1:所述CPU判断CPU控制协处理器生成的所述第一随机结果是否与椭圆曲线的基点相等,是则执行所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤A2;步骤A2:所述CPU控制协处理器对椭圆曲线的基点进行逆运算生成逆元;步骤A3:所述CPU判断CPU控制协处理器生成的所述第一随机结果和生成的逆元是否相等,是则执行所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行所述根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果。5.如权利要求1所述的方法,其特征在于,所述步骤S2之后,所述步骤S3之前,还包括:所述CPU判断生成的所述第三结果是否等于第二预设值,是则执行所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤S3。6.如权利要求1所述的方法,其特征在于,所述步骤S2中,所述根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果,具体包括:步骤B1:所述CPU控制协处理器对椭圆曲线的基点和生成的所述第一随机结果进行点加运算,生成第二随机结果;对生成的所述第一随机结果进行逆运算,生成第三随机结果;步骤B2:所述CPU控制协处理器对随机数生成器生成的第二随机数和读取所述存储器所得的第一常数进行乘法运算,生成第一结果,对生成的所述第一结果和随机数生成器生成的所述第一随机数进行加法运算,生成第二结果,根据生成的所述第二结果对生成的所述第二随机结果进行更新运算,生成更新后的第二随机结果;步骤B3:所述CPU控制协处理器对生成的更新后的所述第二随机结果和生成的所述第三随机结果进行点加运算,生成第四随机结果,对生成的所述第四随机结果的横坐标和生成的所述预处理结果进行模加运算,生成所述第三结果。7.如权利要求6所述的方法,其特征在于,所述步骤B2中,所述根据生成的第二结果对生成的所述第二随机结果进行更新运算,生成更新后的第二随机结果,具体包括:步骤C1:所述CPU控制协处理器对椭圆曲线的基点和生成的所述第三随机结果进行点加运算,生成第五随机结果;步骤C2:所述CPU控制协处理器对生成的所述第二随机结果进行点倍运算,更新第二随机结果;步骤C3:所述CPU判断二进制表示的第二结果的第i比特位上的数据是否为1,是则执行步骤C4,否则执行步骤C5;步骤C4:所述CPU控制协处理器对生成的所述第二随机结果和生成的所述第五随机结果进行点加运算,更新第二随机结果,执行步骤C6;步骤C5:所述CPU控制协处理器对生成的所述第二随机结果和生成的所述第三随机结果进行点加运算,更新第二随机结果,执行步骤C6;步骤C6:所述CPU控制协处理器对变量i进行减1运算,更新i,CPU判断更新后的i是否大于或者等于0,是则返回步骤C2,否则执行步骤B3。8.如权利要求1所述的方法,其特征在于,在所述步骤S2之后,所述步骤S3之前,还包括:所述CPU控制协处理器对随机数生成器生成的第一随机数和生成的所述第三结果进行加法运算,生成第四结果,所述CPU判断生成的所述第四结果与读取所述存储器所得的第一常数是否相等,是则执行所述步骤S2中的所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤S3。9.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,具体为:所述CPU控制协处理器对随机数生成器生成的第一随机数和随机数生成器生成的所述第四随机数进行模乘运算,生成第八结果。10.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述根据随机数生成器生成的第四随机数、读取所述存储器所得的用户签名私钥和生成的所述第三结果生成第十结果,具体为:所述CPU控制协处理器对随机数生成器生成的所述第四随机数和读取所述存储器所得的用户签名私钥进行模乘运算,生成第九结果,对生成的第九结果和生成的所述第三结果进行模乘运算,生成所述第十结果。11.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述根据生成的所述第十结果和生成的所述第八结果生成第十一结果,具体为:所述CPU控制协处理器对生成的所述第十结果和生成的所述第八结果进行模减运算,生成所述第十一结果。12.如权利要求1所述的方法,其特征在于,所述步骤S4中,所述CPU控制协处理器根据生成的所述第七结果和生成的所述第十一结果生成第十二结果,具体为:所述CPU控制协处理器对生成的所述第七结果和生成的所述第十一结果进行模乘运算,生成所述第十二结果。13.如权利要求1所述的方法,其特征在于,所述步骤S4中,所述输出生成的所述第十二结果和生成的所述第三结果组成的签名值,具体为:所述CPU输出读取所述存储器所得的待签名信息和以生成的所述第三结果为横坐标,以生成的所述第十二结果为纵坐标的签名值。14.如权利要求1所述的方法,其特征在于,所述CPU控制协处理器根据读取所述存储器所得的第二常数、读取所述存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果,具体为:所述CPU控制协处理器对读取所述存储器所得的第二常数和读取所述存储器所得的用户签名私钥进行模加运算,对模加运算生成的所述第五结果和随机数生成器生成的所述第四随机数进行模乘运算,生成第六结果,对生成的所述第六结果进行逆运算,生成第七结果。15.一种利用协处理器抗攻击的SM2签名装置,其特征在于,所述装置包括:CPU、协处理器、存储器和随机数生成器;所述CPU包括读取模块、控制模块、生成模块、第一判断模块和输出模块;所述存储器,用于存储用户基本信息和待签名信息;所述读取模块,用于读取所述存储器得到所述用户基本信息和所述待签名信息;所述生成模块,用于根据所述读取模块读取所述存储器所得的所述用户基本信息和所述读取模块读取所述存储器所得的所述待签名信息生成预处理结果;所述随机数生成器,用于生成第三随机数;所述控制模块,用于控制所述协处理器进行工作;所述协处理器,用于在所述控制模块的控制下根据椭圆曲线的基点和所述随机数生成器生成的所述第三随机数生成第一随机结果;所述协处理器,还用于在所述控制模块的控制下根据所述协处理器生成的所述第一随机结果和所述生成模块生成的所述预处理结果生成第三结果;所述随机数生成器,还用于生成第一随机数和第四随机数;所述协处理器,还用于在所述控制模块的控制下根据所述随机数生成器生成的所述第一随机数、所述随机数生成器生成的所述第四随机数生成第八结果;所述存储器,还用于存储用户签名私钥;所述读取模块,还用于读取所述存储器得到所述用户签名私钥;所述协处理器,还用于在所述控制模块的控制下根据所述随机数生成器生成的所述第四随机数、所述读取模块读取所述存储器所得的所述用户签名私钥和所述协处理器在所述控制模块的控制下生成的所述第三结果生成第十结果;所述协处理器,还用于在所述控制模块的控制下根据所述协处理器在所述控制模块的控制下生成的所述第十结果和所述协处理器在所述控制模块的控制下生成的所述第八结果生成第十一结果;所述存储器,还用于存储第二常数;所述读取模块,还用于读取所述存储器得到所述第二常数;所述协处理器,还用于在所述控制模块的控制下根据所述读取模块读取所述存储器所得的所述第二常数、所述读取模块读取所述存储器所得的所述用户签名私钥和所述随机数生成器生成的所述第四随机数生成第七结果;所述协处理器,还用于在所述控制模块的控制下根据在所述控制模块的控制下生成的所述第七结果和在所述控制模块的控制下所述协处...

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:北京,11

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

1