本发明涉及信息安全技术领域中可以抵抗量子计算攻击的McEliece非对称密码技术。特别涉及一种考虑侧信道安全的基于Quasi-Dyadic MDPC码McEliece公钥掩码加密算法实现技术,采用该方法能够抵抗功耗分析。
背景技术:
量子计算机的迅猛发展,对基于数论难题的密码算法构成严重的威胁,尤其是Shor量子算法的提出,使研究者更加相信RSA,ECC等基于数论困难问题的常用密码算法将不再安全。
基于纠错码的密码方案可以实现抗量子计算攻击,然而,最初的基于Goppa码的McEliece密码算法密钥体积较大,不适用于资源有限的嵌入式系统中。因此,出现基于不同纠错码的McEliece型公钥密码算法,以减少密钥体积。研究者相继提出基于LDPC,MDPC,QC-MDPC等纠错码的McEliece算法,但是密码算法应用时存在侧信道攻击的挑战,特别是功耗分析的威胁。
功耗分析利用密码设备执行加解密操作过程中所处理的数据与能量消耗间的关联进行攻击。随着侧信道攻击技术的研究不断深入,国内外关于防御方面的研究也从没有间断过,其中主流的防御方法包括掩码技术和隐藏技术,掩码防护由于其成本相对低廉,且易于实现,而受到研究者的广泛关注。
,Ishai等人首先提出抗高阶差分功耗分析的掩码方案—Ishai-Sahai-Wagner可证明安全框架。但是它存在安全问题而难以在实际环境中应用,即核心算法之一生成随机数方法产生的功耗信息容易同一时间泄漏敏感数据a和b的两个份额。
技术实现要素:
本发明的目的在于,提供一种安全轻量的McEliece公钥掩码加密方法,以解决McEliece算法存在密钥体较大、不能抵抗功耗分析的问题。
为了实现上述目的,本发明采用如下的技术解决方案:一种安全轻量的McEliece公钥掩码加密方法,包括密钥体积小的Quasi-Dyadic MDPC码McEliece密码算法的构造和抗功耗分析的掩码防护方案的设计两大部分:
一、所述密钥体积小的Quasi-Dyadic MDPC码McEliece密码算法的构造过程包括如下步骤:
步骤1,构造Quasi-Dyadic MDPC码:在有限域上,设计中密度校验矩阵的形式:
其中Hn是并矢矩阵,设n=0,1,…,n0-1,并矢矩阵Hn表达形式:
存储器只需要存储并矢矩阵Hn的首行,即种子随机矢量hn即可。
步骤2,利用步骤1生成的校验矩阵H,生成公钥/私钥对:由通信的一方生成密钥,Quasi-Dyadic MDPC纠错码参数[n,k,t],n表示码字长度,k表示线性分组码的每组信息组长度,即是维度,t表示码能纠错的位数,将公钥设计为准并矢矩阵的方法如下:
1)生成随机n阶准并矢矩阵计算n行k列矩阵使得XHP=T,H表示校验矩阵,P表示随机生成的置换矩阵;
2)随机生成X的K阶可逆子矩阵S;
3)计算公钥G′=SHP,G′即是T的准并矢子矩阵,只需存储G′首行元素,主要是结合表达式(2)并矢矩阵的生成方法,得到一个完整的公钥矩阵G′。
设计的公钥矩阵在实际使用时只需要存储所有并矢矩阵的首行,即种子随机矢量hn即可。
私钥定义为:n阶置换矩阵P,k阶可逆矩阵S,r行n列校验矩阵H。
步骤3,设计加密、解密部分:通信的另一方要发送消息给对方,设m为k比特明文,随机生成满足w(e)≤t的n比特纠错矢量e,w(*)表示*的汉明重量,计算密文c=mG′+e,将密文c发送给对方。
对方收到密文c后,进行解密,首先在密文c的右边乘以私钥转置矩阵PT,即c′=cPT,将c′作为快速译码算法的输入,然后通过Quasi-Dyadic MDPC码的快速译码算法得m*S的结果,最后右乘以私钥S的逆矩阵S-1恢复明文。
二、所述抗功耗分析的掩码防护方案的设计过程包括如下步骤:
McEliece型公钥密码算法分为线性运算和非线性运算。异或线性运算硬件实现时消耗能量比较均匀,但是域相乘非线性运算硬件实现能量消耗比较大,容易产生侧信道信息的泄漏。本发明改进Ishai-Sahai-Wagner可证明安全框架,解决其核心算法之一生成随机数的公式:产生的功耗信息容易同一时间泄漏a和b两个份额的安全问题,进一步设计域相乘非线性运算的掩码方案。包括如下步骤:
步骤1,域相乘非线性运算的掩码方案初始化:
(1)假设a和b是两个敏感数据,令a=g(k),b=h(k),g(*)和h(*)为域F2的线性关系,k为域的随机数;
(2)ai=g(ki),bi=h(ki),i∈[0:d],其中ai,bi和ki分别是a,b和k随机拆分成的d+1个份额子。例如:
步骤2,根据定义1和定义2,引入随机数变量k和v′i,j,推导出公式(3):
定义1(f映射:),x、y表示敏感数据a、b。
定义2
vi,j表示随机数。
步骤3,由定义3和定义4推导公式(3)得到本发明掩码方案随机数生成表达式,即(4):
定义3w(x)=h(x)·g(x)(w映射:)
定义4
步骤4,用表1所示的原理生成的d+1个随机数,保护a和b两个敏感数据d+1个份额的域相乘运算。
表1掩码方案伪代码实现
表1所示的原理具体为:随机数组v的下标为i和j,vi,j(ij)是由设计的生成随机数公式产生;利用d+1个随机数vi,j分别进行异或运算保护a和b的d+1个份额域相乘;本发明使用的随机数都是相互独立。
本发明的有益效果:
1、本发明所述安全轻量的基于Quasi-Dyadic MDPC码McEliece型公钥密码方案,可以抵御量子计算攻击,通过将公钥设计成准并矢码以减少密钥体积,适用于资源有限的嵌入式设备。
2、本发明所述安全轻量的基于Quasi-Dyadic MDPC码McEliece型公钥密码方案,通过设计掩码方案改进无保护的McEliece算法,使其应用在嵌入式设备中可以抵抗功耗分析。
附图说明
图1是本发明方法实施的McEliece算法加密处理流程示意图。
具体实施方式
以下是本发明的具体实施例,并结合附图对本发明的技术方案作进一步清楚、完整地描述。准并矢纠错码C的码长n=128,维度k=64,余维r=64,码的纠错能力t=49。
一种安全轻量基于Quasi-Dyadic MDPC码的McEliece型公钥密码方法,包括密钥体积小的Quasi-Dyadic MDPC码McEliece密码算法的构造和抗能量分析攻击的掩码防护方法的设计两大部分:
一、所述密钥体积小的Quasi-Dyadic MDPC码McEliece密码算法的构造过程包括如下步骤:
步骤1,构造Quasi-Dyadic MDPC码:在有限域上,设计中密度校验矩阵的形式,本实施例中n0=2:
H=[H0|H1] (1)
其中H0和H1是并矢矩阵,设并矢矩阵H0和H1表达形式:
H0和H1的元素是h0和h1的元素,按照发明内容所述并矢矩阵的构造规则运算。
步骤2,利用步骤1生成的校验矩阵H,生成公钥/私钥对:由通信的一方生成密钥、Quasi-Dyadic MDPC纠错码参数[n,k,t]=[128,64,49],n表示码字长度,k表示线性分组码的每组信息组长度,即是维度,t表示码能纠错的位数,将公钥设计为准并矢矩阵的方法如下:
1)生成随机n=128阶的准并矢矩阵计算128行64列的矩阵使得XHP=T,H表示校验矩阵,P表示随机生成的置换矩阵;
2)随机生成X的64阶可逆子矩阵S;
3)计算G′=SHP,G′即是T的准并矢子矩阵,只需存储G′首行元素,结合表达式(2)并矢矩阵的生成方法,得到一个完整的公钥矩阵G′。
设计的公钥矩阵在实际使用时只需要存储所有并矢矩阵的首行,即种子随机矢量h0和h1即可。
表1基于准并矢码的McEliece型公钥密码方案密钥体积分析
由表1得出,本发明所设计的QD-MDPC码与现有的QC-LDPC码和QC-GRS码相比,进一步缩小了公钥体积。
私钥定义为:n=128阶置换矩阵P,k=64阶可逆矩阵S,64行128列校验矩阵H。
步骤3,设计加密、解密部分:通信的另一方要发送消息给对方,设m为k=64比特的明文,随机生成满足w(e)≤49的n=128比特纠错矢量e,w(*)表示*的汉明重量,计算c=mG′+e,将密文c发送给对方。
对方收到密文c后,进行解密,首先在密文c的右边乘以私钥转置矩阵PT,即c′=cPT,将c′作为快速译码算法的输入,然后通过Quasi-Dyadic MDPC码的快速译码算法得m*S的结果,最后右乘以私钥S的逆矩阵S-1恢复明文。
二、所述抗功耗分析的掩码防护方案的设计过程包括如下步骤:
McEliece型公钥密码算法可以分为线性运算和非线性运算。异或线性运算硬件实现时消耗能量比较均匀,但是域相乘非线性运算硬件实现能量消耗比较大,容易产生侧信道信息的泄漏。本发明改进Ishai-Sahai-Wagner可证明安全框架,解决其核心算法之一生成随机数的公式:产生的功耗信息容易同一时间泄漏a和b两个份额的安全问题,进一步设计域相乘非线性运算的掩码方案。包括如下步骤:
步骤1,域相乘非线性运算的掩码方案初始化:
(1)假设a=87和b=13是两个敏感数据,k=21,令87=g(21),13=h(21),g(*)和h(*)为域F2的线性关系,k为域的随机数。
(2)ai=g(ki),bi=h(ki),i∈[0:2],其中ai,bi和ki分别是a,b和k随机拆分成3个份额。例如:
步骤2,根据定义1和定义2,引入随机数变量k和v′i,j,推导出公式(3):
定义1(f映射:),x、y表示敏感数据a、b。
定义2
vi,j表示随机数。
步骤3,由定义3和定义4推导公式(3)得到本发明掩码方案随机数生成表达式,即(4):
定义3w(x)=h(x)·g(x)(w映射:)
定义4
步骤4,用表2所示的原理生成的3个随机数,保护a和b两个敏感数据3个份额的域相乘运算。
表2掩码方案伪代码实现
表2所示的原理具体为:随机数组v的下标为i和j,vi,j(ij)是由设计的生成随机数公式产生;利用d+1个随机数vi,j分别进行异或运算保护a和b的d+1个份额域相乘;本发明使用的随机数都是相互独立。本发明设计的McEliece掩码加密方案的加密过程如图1所示。
上面所述的实施例仅仅是对本发明的实施方式进行描述,并非对本发明的构思和范围进行限定,在不脱离本发明设计构思的前提下,本领域中普通工程技术人员对本发明的技术方案做出的各种变型和改进,均应落入本发明的保护范围。