本发明涉及后量子密码的实现安全领域,尤其涉及一种dilithium签名算法的侧信道攻击方法。
背景技术:
1、dilithium是一种基于格困难问题的数字签名方案,通过设置三组参数可实现三种安全级别:dilithium2、dilithium3、dilithium5,因在密钥大小、计算速度、通信开销与安全性等方面具有优良的性能而有广泛的应用场景。dilithium签名算法主要包括密钥生成、签名生成以及签名验证三个过程,如图1所示,密钥生成算法输出公钥pk和私钥sk;签名生成算法输入私钥和消息(sk,m),生成合法签名消息其中z、h和私钥sk的一部分s1都是含有l个多项式的向量,是一个256比特长的串,用于采样生成挑战多项式c,所有多项式都含有n个系数。dilithium方案基于模上带错误学习问题(module learningwith error,mlwe),涉及多项式运算,该方案属于fiat-shamir类签名,在签名过程中需要生成随机多项式向量y来掩盖挑战多项式c与秘密多项式向量s1的乘积得到签名。
2、侧信道分析(side-channel analysis,sca)是一种针对运行密码算法的密码设备进行非侵入式攻击从而分析出密钥的方法,主要通过利用密码设备在运行过程中泄露的功耗、电磁、时间、温度、声音等物理信息来恢复密码设备所运行的秘密信息(如密钥、随机数等)。对于dilithium签名算法而言,最终的攻击目标是伪造任意消息的签名,为了实现这一目标,至少需要恢复一部分签名密钥s1,因此,对dilithium方案的侧信道分析目标通常是恢复s1,或者说恢复s1中各个多项式的系数。
3、现有技术中存在一些通过先恢复随机多项式向量y的系数再计算得到s1的侧信道攻击方案,但现有方案要么成功率不高,要么需要大量的攻击曲线,效率比较低。
技术实现思路
1、鉴于上述的分析,本发明实施例旨在提供一种dilithium签名算法的侧信道攻击方法,用以解决现有方案成功率不高或者需要大量的攻击曲线,效率比较低的问题。
2、一方面,本发明实施例提供了一种dilithium签名算法的侧信道攻击方法,包括:
3、步骤s10:分别采集dilithium签名生成过程的建模曲线和攻击曲线;
4、步骤s20:确定建模曲线和攻击曲线的兴趣点区间;
5、步骤s30:将建模曲线和攻击曲线的兴趣点区间分别分成对应组的曲线段群;
6、步骤s40:将建模曲线中的各组曲线段群分组,并对各分组分别建立模板对;
7、步骤s50:计算攻击曲线段群的每个曲线段和相应建模曲线段群中若干分组模板对的相关性系数,并利用相关性系数绝对值最高的分组模板对匹配得到随机多项式向量y的系数的待恢复比特位的比特值;
8、步骤s60:根据随机多项式向量y的系数的待恢复比特位的比特值和多项式向量z的对应系数的待恢复比特位的比特值之间的关系,构建用以求解私钥s1的线性方程组并求解s1。基于上述方法的进一步改进,所述待恢复比特位通过以下方式确定:
9、设定概率阈值prmin;
10、寻找满足以下不等式的a最小值:pr[||c·s1||∞<2a-2]>prmin,其中,c为dilithium签名算法中的挑战多项式,||c·s1||∞为c·s1的无穷范数,a表示所述待恢复比特位。
11、基于上述方法的进一步改进,所述步骤s60中的线性方程组为:
12、
13、其中,表示对zi,j执行模2a-1的运算,i=0,1,2,...,l-1,j=0,1,2,...,n-1,zi,j表示随机多项式向量y对应的合法签名中的多项式向量z的系数;
14、其中,随机多项式向量y的系数的待恢复比特位的比特值记为yi,j[a],随机多项式向量y对应的合法签名中的多项式向量z的对应系数的待恢复比特位的比特值记为zi,j[a],若yi,j[a]和zi,j[a]相等,则d等于0;若yi,j[a]和zi,j[a]不相等,当zi,j[a]为进位所得结果时,d等于1,当zi,j[a]为借位所得结果时,d等于-1。
15、基于上述方法的进一步改进,所述步骤s50中每个攻击曲线段对应的若干分组模板对是通过以下方法确定的:
16、若所述曲线段对应的zi,j[a:a-1]=10或01,取yi,j[32:a+1]=zi,j[32:a+1],所述曲线段对应的若干分组模板对为hw(yi,j[32:a+1])、hw(yi,j[32:a+1])+1、hw(yi,j[32:a+1])+2、...、hw(yi,j[32:a+1])+a-1对应的分组模板对,hw(yi,j[32:a+1])表示yi,j[32:a+1]的汉明重量,yi,j[32:a+1]表示yi,j从第a+1比特到第32比特的连续比特串,hw(yi,j[32:a+1])+1表示yi,j[32:a+1]的汉明重量加1,hw(yi,j[32:a+1])+2表示yi,j[32:a+1]的汉明重量加2,...,hw(yi,j[32:a+1])+a-1表示yi,j[32:a+1]的汉明重量加a-1;
17、若所述曲线段对应的zi,j[a+1:a-1]=100或011,取yi,j[32:a+2]=zi,j[32:a+2],所述曲线段对应的若干分组模板对为hw(yi,j[32:a+2])、hw(yi,j[32:a+2])+1+0、hw(yi,j[32:a+2])+1+1、...、hw(yi,j[32:a+2])+1+a-1对应的分组模板对,hw(yi,j[32:a+2])表示yi,j[32:a+2]的汉明重量,yi,j[32:a+2]表示yi,j从第a+2比特到第32比特的连续比特串,hw(yi,j[32:a+2])+1+0表示yi,j[32:a+2]的汉明重量加1,hw(yi,j[32:a+2])+1+1表示yi,j[32:a+2]的汉明重量加2,...,hw(yi,j[32:a+2])+1+a-1表示yi,j[32:a+2]的汉明重量加a;
18、若所述曲线段对应的zi,j[a+2:a-1]=1000或0111,取yi,j[32:a+3]=zi,j[32:a+3],所述曲线段对应的若干分组模板对为hw(yi,j[32:a+3])、hw(yi,j[32:a+3])+0+1+0、hw(yi,j[32:a+3])+1+1+0、...、hw(yi,j[32:a+3])+1+1+a-1对应的分组模板对,hw(yi,j[32:a+3])表示yi,j[32:a+3]的汉明重量,yi,j[32:a+3]表示yi,j从第a+3比特到第32比特的连续比特串,hw(yi,j[32:a+3])+0+1+0表示yi,j[32:a+3]的汉明重量加1,hw(yi,j[32:a+3])+1+1+0表示yi,j[32:a+3]的汉明重量加2,...,hw(yi,j[32:a+3])+1+1+a-1表示yi,j[32:a+3]的汉明重量加a+1;
19、...;
20、依此类推,直至找到所述曲线段对应的模板对。
21、基于上述方法的进一步改进,所述步骤s20包括:
22、对每一条建模曲线k3,分别计算生成随机多项式向量y的系数yi,j过程中的中间值ti,j;
23、计算所述中间值ti,j的汉明重量hi,j;
24、计算所述汉明重量hi,j与所有建模曲线的样本点的皮尔逊相关系数;
25、从所有建模曲线的样本点中选取皮尔逊相关性系数绝对值排名靠前的若干样本点为yi,j的兴趣点区间。
26、基于上述方法的进一步改进,所述步骤s40中的将建模曲线中的各组曲线段群分组包括:对于建模曲线的各组曲线段群,根据随机多项式向量y的系数的除待恢复比特位外的所有其它比特位的汉明重量,将各组曲线段群分成32组;所述步骤s40中的模板对为第k2组的yi,j[a]等于0的模板和yi,j[a]等于1的模板,yi,j[a]表示随机多项式向量y的系数的待恢复比特位的比特值,k2=1,2,...,32,所述模板对的建立方法包括:
27、计算第k2组曲线段群中yi,j[a]等于0的所有曲线段的样本点的均值μk2_0和协方差ck2_0,作为第k2组的yi,j[a]等于0的模板;计算第k2组曲线段群中yi,j[a]等于1的所有曲线段的样本点的均值μk2_1和协方差ck2_1,作为第k2组的yi,j[a]等于1的模板。
28、基于上述方法的进一步改进,所述步骤s30中的建模曲线和攻击曲线的兴趣点区间分别被分成了四组曲线段群,所述步骤s50包括:
29、对于攻击曲线的第k1组曲线段群中的每个曲线段,计算所述攻击曲线段和相应建模曲线段群中对应的若干分组模板对的相关性系数,确定所述攻击曲线段要利用的模板对,k1=1,2,3,4;
30、计算所述攻击曲线段与所述攻击曲线段要利用的模板对的概率;
31、从所述攻击曲线段要利用的模板对中选取概率值最大的模板来匹配得到yi,j[a]。
32、基于上述方法的进一步改进,所述步骤s30中的代码段分组包括:
33、在生成随机多项式向量y中每个多项式的n/4次循环中,每次循环生成第一个系数、第二个系数、第三个系数、第四个系数的代表段。
34、基于上述方法的进一步改进,所述dilithium签名算法为dilithium2,所述待恢复比特位等于7。
35、基于上述方法的进一步改进,所述线性方程组的求解方法包括以下中的任一项:
36、最小二乘法、线性规划方法、失真有界距离译码方法。
37、与现有技术相比,本发明至少可实现如下有益效果之一:
38、相比于已有的类似侧信道攻击方案,能完全充分利用建模曲线和攻击曲线,来提高恢复y中系数单比特的成功率、且减少所需攻击曲线的数量。
39、本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
1.一种dilithium签名算法的侧信道攻击方法,其特征在于,包括:
2.根据权利要求1所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述待恢复比特位通过以下方式确定:
3.根据权利要求2所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述步骤s60中的线性方程组为:
4.根据权利要求3所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述步骤s50中每个攻击曲线段对应的若干分组模板对是通过以下方法确定的:
5.根据权利要求1所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述步骤s20包括:
6.根据权利要求1所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述步骤s40中的将建模曲线中的各组曲线段群分组包括:
7.根据权利要求6所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述步骤s30中的建模曲线和攻击曲线的兴趣点区间分别被分成了四组曲线段群,所述步骤s50包括:
8.根据权利要求7所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述步骤s30中的代码段分组包括:
9.根据权利要求1所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述dilithium签名算法为dilithium 2,所述待恢复比特位等于7。
10.根据权利要求3所述的dilithium签名算法的侧信道攻击方法,其特征在于,所述线性方程组的求解方法包括以下中的任一项: