1.一种基于d+1阶掩码的抗功耗攻击方法,其特征在于:包括如下步骤:S1:将明文信息拆分为d+1份以及根据随机掩码生成算法生成n位随机值掩码,d为正整数;
S2:利用n位随机值掩码与明文信息拆分后的d+1份序列信息进行异或处理得到d+1份包含明文信息的随机掩码;
其中,所述d+1份包含明文信息的随机掩码的异或结果等于明文信息;
S3:基于轮密钥加、S盒替换、行位移操作以及列混淆操作对包含明文信息的随机掩码进行N次迭代处理得到加密密文;
其中,除第N次以及第N-1次之外的每次迭代处理过程均是依次执行轮密钥加、S盒替换、行位移操作以及列混淆操作,第N-1次迭代处理过程为依次执行轮密钥加、S盒替换、行位移操作,第N次迭代处理过程为执行轮密钥加操作,第1次迭代处理中轮密钥加操作的输入数据是d+1份包含明文信息的随机掩码,每个操作的输入数据是前一个操作的输出数据,第N次迭代处理中轮密钥加操作处理后的d+1份输出数据异或后得到加密密文;
其中,S盒替换操作过程如下:
S3.1.1:将d+1份输入数据Pi分别以n位为单位进行分组,每份输入数据Pi分为m+1组数据Pi-j(0≤i≤d,0≤j≤m),并将每份输入数据Pi中的m+1组数据Pi-j中同一组位置的数据分别构成一列数据PJ;
PJ={Pi-j|0≤i≤d,j=J}
S3.1.2:对每一列数据PJ均进行求逆运算;
所述求逆运算过程为:首先获取d+1个中间变量gi以及n个循环常量eτ,循环常量的取值为0或者1,每次循环匹配一个循环常量eτ,再基于d+1个中间变量以及n个循环常量按照如下规则循环执行n次,n为正整数,规则如下:a:每次循环过程分别计算每个中间变量gi的平方,并更新每个中间变量gi的值得到更新中间变量集合g, g={gi|0≤i≤d};
b:若当前循环过程对应循环常量eτ等于1,则将当前循环更新的中间变量集合g与列数据PJ进行安全乘法计算,并更新中间变量集合g,g=g×PJ;
对同一列数据PJ的n次循环结束后将中间变量集合g赋予所述列数据PJ;
S3.1.3:对求逆运算后的每一列数据PJ进行仿射变换,其中,若d为偶数,将仿射变换后的第一列数据P0与十六进制63进行异或,利用异或结果更新第一列数据P0;
步骤S1中根据随机掩码生成算法生成随机值掩码的过程如下:S1.1.1:获取三个随机值x、y、z,将随机值x依次执行三次循环移位与异或操作,其中,每次循环移位是基于前一次循环移位的随机值x进行;
式中,x<<16、x>>5、x>>4分别表示左移16位、右移5位、右移4位;
S1.1.2:依次将随机值x赋予随机值t,将随机值y赋予x,随机值z赋予y,随机值t、随机值x、随机值y的异或结果赋予z,并根据随机值z得到第一个随机值掩码;
其中,
t←x,x←y,y←z, r=zmod 256式中,r表示随机值掩码,mod代表取余运算;
S1.1.3:根据得到第一随机值掩码的随机值x,y,z返回S1.1.1循环计算下一个随机值掩码直至得到满足要求个数的随机值掩码;
若乘数PJ与乘数g的安全乘法的结果为C,
安全乘法的计算规则如下:
首先,i从0到d取值,分别计算出每个元素Ci的值:Ci=Pi-J·gi;
然后,i从0到d取值,i每次取值分别按照如下步骤迭代执行d-i次,其中,k从i+1至d依次取值,每个k值对应一次迭代,迭代过程如下:A:根据随机掩码生成算法生成随机值r;
B:计算出当前i值下元素Ci的值:
C:计算出k值对应的Ck:
其中,每执行一次迭代后,k值加1直至完成d-i次迭代,再i值加1,并执行对应迭代过程。
2.根据权利要求1所述的方法,其特征在于:步骤S1-S3中的n值为8,步骤S1中生成d个8位随机值掩码。
3.根据权利要求2所述的方法,其特征在于:中间变量gi的初始值以及循环常量ej取值分别为:g0=1
gi=0,1≤i≤d
eτ=1,1≤τ≤7
e1=0。
4.根据权利要求2所述的方法,其特征在于:步骤S2中按照如下公式进行异或计算得到d+1份包含明文信息的随机掩码:其中,r1、r2、rd分别表示第1个、第2个、第d个生成的随机值掩码;异或计算前,xi表示明文信息拆分后的d+1份中第i份信息;异或计算后,xi表示d+1份包含明文信息的随机掩码中第i个随机掩码。