一种执行模幂运算的方法及装置、计算机可读存储介质制造方法及图纸

技术编号:17668763 阅读:42 留言:0更新日期:2018-04-11 07:27
本申请公开了一种执行模幂运算的方法及装置、计算机可读存储介质,包括获取底数g、指数d、模数q和窗口w;将指数d表示成m进制表示形式:

A method and device for executing modular exponentiation and a computer readable storage medium

The invention discloses a method and device, a modular exponentiation computer-readable storage medium, including access to the base g, index D, modulus Q and W index D window; expressed as m hexadecimal representation:

【技术实现步骤摘要】
一种执行模幂运算的方法及装置、计算机可读存储介质
本专利技术涉及但不限于信息安全
,尤其涉及一种执行模幂运算的方法及装置、计算机可读存储介质。
技术介绍
随着计算机技术的发展、社会信息化程度的不断提高,信息安全问题越来越受到人们的广泛重视。在嵌入式单芯片内实现RSA公钥密码算法、SM9标识密码算法或其它一些密码算法时,都会用到模幂运算,模幂运算就是做形如m=gd(modq)的运算,其中,g是底数,d是指数,q是模数,m是计算结果。在这些公钥密码体制中,总有部分模幂中的指数d需要严格保密,例如在RSA体制中,当d为私钥时,需要严格保密;在SM9签名算法中,若攻击者可获取模幂运算的指数,结合SM9签名结果,可推导出用户的私钥。侧信道攻击和故障攻击(FaultAttack)是近年提出的具有代表性且对芯片威胁性较强的两种攻击方法。简单功耗分析(SimplePowerAnalysis,SPA)攻击作为侧信道攻击的一种方法,是攻击者通过简单观察秘密数据操作的功耗曲线,直接推导出关于秘密数据保密信息的技术。功耗分析攻击的前提是功耗曲线与设备执行的指令相关,并与处理的操作数的值有关,这样检查功耗曲线能暴露正在执行的指令和寄存器中数据的信息。故障攻击的基本原理是通过错误注入(如添加时钟毛刺,激光照射,电磁脉冲等)的手段使芯片在密码算法执行的过程中产生瞬态的逻辑错误,攻击者通过分析正确的和错误的加密结果,得到芯片内部的秘密数据信息,例如在SM9/SM2加密算法过程中注入错误,若攻击者可获取随机数,然后结合SM9/SM2加密的计算结果,可推导出真正加密消息的密钥,进而获得真正的消息。目前,抗SPA攻击的模幂计算方法的主要思路是程序执行线路固定化或随机化,典型的方法有:二进制伪算法、蒙哥马利阶梯法、Joye的平方-乘阶梯法、Joye的改进二进制法。经分析发现,在二进制伪算法、蒙哥马利阶梯法和Joye的平方-乘阶梯法中,不管密钥比特为0或1,均需进行模乘和模平方运算,若在模乘运算时注入错误且该模乘运算为伪操作,则结果正确,对应的密钥比特值为0,否则为1,因此,现有的二进制伪算法、蒙哥马利阶梯法和Joye的平方-乘阶梯法均不能抗FA攻击;Joye的改进二进制法中预计算时,涉及到密钥最低1bit的信息,存在信息泄露的情形,也就是说,Joye的改进二进制法不能完全抗SPA攻击。此外,需要说明的是,这些模幂计算方法常常都是以牺牲效率为代价的,因此计算效率相对较低。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种执行模幂运算的方法及装置、计算机可读存储介质,能够使模幂运算可完全抗SPA攻击、抗FA攻击并提高算法的计算效率。为了达到本专利技术目的,本专利技术实施例的技术方案是这样实现的:本专利技术实施例提供了一种执行模幂运算的方法,包括:获取底数g、指数d、模数q和窗口w;将指数d表示成m进制表示形式:其中0≤di<m,m=2w,dl-1≠0;根据窗口w的值为预计算变量Ri分配空间,Ri=1,i=1,2,3,…,m;并将底数g赋值给结果变量A;从i=0到l-2,将预计算变量与结果变量A的乘积循环赋值给并将Am循环赋值给结果变量A;将赋值给结果变量A,其中,·为乘号,∏为乘积运算符;将结果变量A与底数g的乘积赋值给结果变量A。进一步地,所述将赋值给结果变量A,具体包括:将预计算变量Rm赋值给第一中间变量B;对i=m-1至2,将预计算变量Ri与Ri+1的乘积循环赋值给Ri,并将第一中间变量B与预计算变量Ri的乘积循环赋值给第一中间变量B;将预计算变量R1与R2的乘积赋值给R1;将赋值给结果变量A。进一步地,所述将赋值给结果变量A,具体包括:将结果变量A与预计算变量R1的乘积赋值给A;检测(dl-1-1)>>(w-1)的计算结果是否为真,如果为真,将结果变量A赋值给第二中间变量Q,其中,>>为向右移位运算符;如果为假,将预计算变量R1赋值给第二中间变量Q;对i=w-1至1,将第二中间变量Q2循环赋值给Q,并检测(dl-1-1)>>(i-1)的计算结果是否为真,如果为真,将第二中间变量Q与A的乘积赋值给第二中间变量Q;如果为假,将第二中间变量Q与预计算变量R1的乘积赋值给第二中间变量Q;将第一中间变量B与第二中间变量Q的乘积赋值给结果变量A。本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有执行模幂运算的程序,所述执行模幂运算的程序被处理器执行时实现以上任一项所述的执行模幂运算的方法的步骤。本专利技术实施例还提供了一种执行模幂运算的装置,包括获取单元、编码单元、计算单元,其中:获取单元,用于获取底数g、指数d、模数q和窗口w,将指数d和窗口w的值输出至编码单元,将底数g、模数q和窗口w输出至计算单元;编码单元,用于将指数d表示成m进制表示形式:其中0≤di<m,m=2w,dl-1≠0,将di、l与m的值输出至计算单元;计算单元,用于根据窗口w的值为预计算变量Ri分配空间,Ri=1,i=1,2,3,…,m;并将底数g赋值给结果变量A;从i=0到l-2,将预计算变量与结果变量A的乘积循环赋值给并将Am循环赋值给结果变量A;将赋值给结果变量A,其中,·为乘号,∏为乘积运算符;将结果变量A与底数g的乘积赋值给结果变量A。进一步地,所述计算单元的将赋值给结果变量A,包括:将预计算变量Rm赋值给第一中间变量B;对i=m-1至2,将预计算变量Ri与Ri+1的乘积循环赋值给Ri,并将第一中间变量B与预计算变量Ri的乘积循环赋值给第一中间变量B;将预计算变量R1与R2的乘积赋值给R1;将赋值给结果变量A。进一步地,所述计算单元的将赋值给结果变量A,包括:将结果变量A与预计算变量R1的乘积赋值给A;检测(dl-1-1)>>(w-1)的计算结果是否为真,如果为真,将结果变量A赋值给第二中间变量Q,其中,>>为向右移位运算符;如果为假,将预计算变量R1赋值给第二中间变量Q;对i=w-1至1,将第二中间变量Q2循环赋值给Q,并检测(dl-1-1)>>(i-1)的计算结果是否为真,如果为真,将第二中间变量Q与A的乘积赋值给第二中间变量Q;如果为假,将第二中间变量Q与预计算变量R1的乘积赋值给第二中间变量Q;将第一中间变量B与第二中间变量Q的乘积赋值给结果变量A。本专利技术的技术方案,具有如下有益效果:本专利技术提供的执行模幂运算的方法及装置、计算机可读存储介质,通过在每次计算过程中设置一次模平方和模乘运算,因此实现了完全抗SPA攻击;通过在模幂的整个运算过程中消除伪运算,实现了抗FA攻击,具有更高的安全性;通过设置窗口w,本专利技术具有更快的计算速度,不仅适用于软件实现,也适用于硬件实现。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术实施例的一种执行模幂运算的方法的流程示意图;图2为本专利技术实施例的一种执行模幂运算的装置的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下文中将结合附图对本专利技术的实施例进行详细说明。需要说明的是,在不冲突的本文档来自技高网
...
一种执行模幂运算的方法及装置、计算机可读存储介质

【技术保护点】
一种执行模幂运算的方法,其特征在于,包括:获取底数g、指数d、模数q和窗口w;将指数d表示成m进制表示形式:

【技术特征摘要】
1.一种执行模幂运算的方法,其特征在于,包括:获取底数g、指数d、模数q和窗口w;将指数d表示成m进制表示形式:其中0≤di<m,m=2w,dl-1≠0;根据窗口w的值为预计算变量Ri分配空间,Ri=1,i=1,2,3,…,m;并将底数g赋值给结果变量A;从i=0到l-2,将预计算变量与结果变量A的乘积循环赋值给并将Am循环赋值给结果变量A;将赋值给结果变量A,其中,·为乘号,∏为乘积运算符;将结果变量A与底数g的乘积赋值给结果变量A。2.根据权利要求1所述的执行模幂运算的方法,其特征在于,所述将赋值给结果变量A,具体包括:将预计算变量Rm赋值给第一中间变量B;对i=m-1至2,将预计算变量Ri与Ri+1的乘积循环赋值给Ri,并将第一中间变量B与预计算变量Ri的乘积循环赋值给第一中间变量B;将预计算变量R1与R2的乘积赋值给R1;将赋值给结果变量A。3.根据权利要求2所述的执行模幂运算的方法,其特征在于,所述将赋值给结果变量A,具体包括:将结果变量A与预计算变量R1的乘积赋值给A;检测(dl-1-1)>>(w-1)的计算结果是否为真,如果为真,将结果变量A赋值给第二中间变量Q,其中,>>为向右移位运算符;如果为假,将预计算变量R1赋值给第二中间变量Q;对i=w-1至1,将第二中间变量Q的平方Q2循环赋值给Q,并检测(dl-1-1)>>(i-1)的计算结果是否为真,如果为真,将第二中间变量Q与A的乘积赋值给第二中间变量Q;如果为假,将第二中间变量Q与预计算变量R1的乘积赋值给第二中间变量Q;将第一中间变量B与第二中间变量Q的乘积赋值给结果变量A。4.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有执行模幂运算的程序,所述执行模幂运算的程序被处理器执行时实现如权利要求1至3中任一项所述的执行模幂运算的方法的步骤。5.一...

【专利技术属性】
技术研发人员:雷翻翻李峰刘利飞雷黎丽倪洁
申请(专利权)人:大唐微电子技术有限公司
类型:发明
国别省市:北京,11

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

1