一种用于NTRU抗侧信道攻击的随机旋转密钥RKR的方法与流程

文档序号:11709953阅读:411来源:国知局
一种用于NTRU抗侧信道攻击的随机旋转密钥RKR的方法与流程

本发明涉及一种随机旋转密钥(rkr)的方法,具体涉及一种用于ntru抗侧信道攻击的随机旋转密钥rkr的方法,属于计算机数据安全加解密技术领域。



背景技术:

在当今社会,如rfid卡和其他的一些基于无线通讯的设备被广泛运用在人们的生活中,这些设备包含着很多敏感数据,所以这些设备的安全问题是非常重要的,针对这些设备的加解密系统也应该被很好的设计出来,那么选择什么算法也就是重中之重了。然而,在一些特殊的应用之中,设计者需要考虑很多较为严格的要求,比如说计算代价,或者说是存储空间等问题。ntru密码体系就是一种有着很高效率的公钥加密体系,适用于无线加密的场景。

公开密钥密码算法是网络与信息安全工程中最重要的密码算法之一,公钥密码概念的提出也标志着密码学从一门艺术走向了一门科学。传统的常用的公钥密码是基于整数分解问题(以rsa为代表)和离散对数问题(以基于椭圆曲线上离散对数困难问题的ecc为代表)而设计的,因此,传统的公钥密码算法不可避免的要使用计算量比较大的模指数或模求逆运算,因此,效率不高(较之对称密码而言)。而且,shor发现在量子计算机上存在有效的求解整数分解问题和离散对数问题的多项式时间算法,因此,传统的公钥密码在量子计算机时代将彻底不安全。正是基于这些考虑,学术界和产业界都在开展传统公钥密码算法的替代算法研究。而ntru公钥密码就是其中的一个高效的公钥加密算法。ntru优点很多:比如说相对于传统公钥密码学算法,其密钥生成速度快,加解密效率高,没有传统的公钥密码学算法运算量大,这些优良的性质令其在传输加密数据时作为优先选择。因此随着ntru算法和签名算法的日益成熟,业界对算法也有了更浓厚的兴趣,对应的ntru公司开发研制了基于ntru算法的软硬件产品,可广泛应用于网络通讯、无线接入等领域。

伴随着ntru的广泛使用,对ntru的攻击也在不断发展。目前研究者针对ntru算法面临的安全问题提出了一系列方案,但现有方案大多仅能提供单一的安全性保护。一些学术文献提出的ntru算法保护方案声称能够保护数据的安全性和实现的高效性,但这些协议仍然存在很多问题。如:2010年,mun-kyulee等人提出了抗ntru公钥加密体系能量分析攻击的一些对策,其中系统介绍了ntru算法原理,针对ntru算法的能量分析攻击,以及针对这些攻击提出了三种对策,并且对三种对策进行了实践,在当时的攻击基础上取得了不错的结果。

但在2013年,xuexinzheng等人在上述基础上提出了针对mun-kyulee等人提出的对策,进行了一阶碰撞攻击,利用数学运算和能量分析以及基于汉明重量模型的相关性分析进行证明,并且进行了实践,结果证明上述对策对于一阶碰撞攻击是无效的。

下面对ntru算法进行简单介绍:

ntru是一种基于多项式环的加密系统,其加、解密过程基于环上多项式代数运算和对数p及q的模约化运算,解密的有效性依赖于某些元素的概率,并且还有它是由正整数(n,p,q,df,dg,dr)以及4个(n-1)次整系数多项式集合rf,rg,rr,rm来建构的。

n一般为大质数,r=z[x]/(xn-1)为多项式截断环,其元素f可表示为向量的形式:

定义:r上多项式元素加运算为普通多项式之间的加运算,用符号+表示;r上多项式元素乘法运算为普通多项式的乘法运算,但乘完的结果要模上多项式(xn-1),即2个多项式的卷积运算,常称为星乘,用表示。r上多项式元素模q运算就是把多项式的系数作模q处理,用modq表示。可以证明是一个环。

p和q在ntru中一般作为模数,不一定为质数,但是为了安全,要求p和q必须互质,且q远大于p。

df,dg,dr为正整数,分别决定了多项式集合rf,rg,rr的系数分布。令r(d1,d2)={f∈r:f的d1个系数为1,d2个系数为-1,余下的系数为0},则多项式集合:

rf=r(df,df-1)

rg=r(dg,dg)

rr=r(dr,dr)

rm={m∈r:m的系数位于区间[(1-p)/2,(p-1)/2]},rm是明文空间,由于4个元素系数一般都比较小,常称为小多项式。

密钥问题:

要生成ntru的公私密钥,分别要进行以下几步:

随机从集合rf中选择一个多项式f,使得f在环r中模p模q的逆多项式存在,记为fp和fq,即f和fp称为私钥;

随机从集合rg中选择一个多项式g,并计算h称为公钥,为了安全,g和fq也要保密;

(1)加密过程:令m为集合rm中待加密的明文,随机的从集合rr中选择一个小多项式r,通常被用来置乱密文,加密密文为:

(2)解密过程:用私钥f计算将多项式a的系数做模q处理,并调整于[-q/2,q/2]之间,用私钥fp计算所得到的结果d是解密的明文。

ntru卷积:

一般攻击者均将对如下卷积过程进行攻击,输入是b数组(数组b表示f二元多项式(binarypolynomial)的d个系数为1的位置,举例说明,n=8多项式f[x]=x+x4+x5+x7的向量表示是[0,1,0,0,1,1,0,1],其数组表示是b=[1,4,5,7])和一般多项式c(generalpolynomial)。算法的输出是t=f*cmodq的计算结果。下面对ntru卷积的步骤进行阐述:

步骤一:t数组初始大小为2n,如图1所示,初始值为0。

步骤二:此步骤是一个双层循环,外层循环j从0递增到d-1,内层循环k从0递增到n-1,进行的运算是将tk+b[j]+ck赋值给tk+b[j](如图1中j=0、1、2、3列所示)。

步骤三:此步骤是一个单层循环,j从0递增至n-1(不包括n-1),进行的运算是将(tj+tj+n)modq赋值给tj。

得到的结果t数组即为卷积的输出。

以上内容对ntru算法进行了简单介绍。

下面对目前常用的能量分析攻击进行简单介绍:

1、简单能量分析(spa)

简单能量分析(spa)是一种能够对密码算法执行过程中所采集到的能量消耗信息进行直接分析的技术,也就是说,攻击者试图通过spa直接或间接地由一条给定的能量迹,这就使得spa攻击的实施成为一项极具挑战性的工作。

我们将spa攻击分为单迹spa攻击和多迹spa攻击,在单迹spa中,攻击者只能采样一条能量迹,在多迹spa中,攻击者可以采样多条能量迹。在多迹spa中,攻击者既可以对同一个明文对应的能量消耗进行多次测量,也可以对多个不同明文所对应的能量进行测量,对同一个明文的能量消耗进行多次测量的优点是可以通过计算多条迹的平均值来降低噪声影响。

spa中有许多具体的相关技术,在我们的实验中,将会采取能量迹直观分析和碰撞攻击的方法来测试方法是否有效。

2、差分能量分析(dpa)

差分能量分析(dpa)攻击是最流行的能量分析攻击,这源自于如下的事实:dpa攻击者无需了解关于被攻击设备的详细知识,此外即使所记录的能量迹中包含噪声,但是仍然恢复出设备中的密钥。

spa攻击和dpa攻击的另外一个重要区别是,它们使用不同的方法,对所记录的能量迹进行分析,spa攻击主要沿着时间轴来分析设备的能量消耗,攻击者试图在单条能量迹中找到某种模式或者与模板进行匹配。在dpa攻击中,沿时间轴的能量迹的形状并非如此重要。dpa攻击分析固定时刻的能量消耗与被处理数据之间的依赖关系,因此,dpa攻击仅仅关注能量迹的数据依赖性。



技术实现要素:

本发明的目的在于,针对现有的ntru及其改进方案存在的不能有效抗spa、dpa以及一阶碰撞攻击的安全性问题,提出用于ntru抗侧信道攻击的随机旋转密钥rkr(rkr,randomkeyrotation)的方法。

本发明的思想是在每一次解密之前对密钥f进行随机化处理,在保证ntru安全性正确性的同时,也保证了处理过程的高效性。

本发明的目的是通过以下技术方案实现的:

一种用于ntru抗侧信道攻击的随机旋转密钥rkr的方法,该方法包括以下步骤:

步骤一:输入二元多项式f(binarypolynomial)和一般多项式c(generalpolynomial);

步骤二:取一个随机i值,其中i=random([0,n-1]),n代表c数组的位数;

步骤三:令二元多项式f乘以xi得到新的多项式f,一般多项式c乘以xn-i得到新的多项式c,其中x代表二元多项式f和一般多项式c的自变量;

步骤四:进行上面介绍的ntru卷积操作。

作为优选,所述ntru卷积操作为将原始的ntru卷积过程中第一步骤设置的初始值0改为随机非零值后,并且在算法结束之后t数组减去初始随机值的过程。

有益效果:

对比现有技术,本发明针对ntru及其改进方案存在的安全性问题,通过随机旋转密钥的方式在保证ntru安全性正确性的同时,也保证了处理过程的高效性。

证明:

由于卷积是建立在r=z[x]/(xn-1)环上的,所以有如下证明:

(f*xi)*(c*xn-i)=f*c*xn=f*c

所以说本发明提出的rkr方法对于解密仍然是正确的。

附图说明

图1是无保护的ntru卷积流程示意图。

图2是随机化初始t数组与rkr结合保护的ntru卷积示意图。

图3是各种攻击作用于rkr保护的ntru卷积时被攻击情况示意图。

图4是lee等人的方案作用于ntru卷积其相关系数和样本点的关系示意图。

图5是受rkr保护的ntru卷积其相关系数和样本点的关系示意图。

图6是本发明实施例隐性碰撞分析作用于受rkr保护的ntru的分析示意图。

图7是本发明实施例中运用桶形移位器实现rkr时的结构示意图。

图8是本发明实施例中运用循环1-比特移位实现rkr时的结构示意图。

具体实施方式

下面结合附图与实施例对本发明的优选实施方式进行详细介绍。

实施例1

如图2所示,结合我们上述方案,对应参数为n=8,d=4,b=[1,4,5,7],i=1。

步骤一:输入二元多项式f(binarypolynomial和一般多项式c(generalpolynomial)。

步骤二:取一个随机i值,在此例中i=1。

步骤三:令二元多项式f乘以x得到新的多项式f,一般多项式c乘以x7得到新的多项式c;

步骤四:进行ntru卷积操作。

现有的ntru卷积方案是将t数组所有元素设为0,由于spa可以区分x+0与x+y(其中x,y不等于0),在图1中j=0列,spa可以获得从t数组的第几个元素进行加法操作使得破解卷积算法成为可能,此种设置使得本发明方案不能抵抗spa攻击,因此,在上述方案的基础上,本实施例加入了init初始化操作,将r0至r15进行随机非零赋值,由于初始值也加入了随机化非零赋值操作使得初始值不再为0,这样的方案可以抵抗spa攻击。在卷积的最后要将t数组减去初始值,最后输出的t数组为ti{i=0,1....7}。

实施例2

基于实施例1所述方法发明人进行了软件实现,本例中,我们在stc89c52处理器上实现了rkr方法,该方法只花费了两个简单的循环时间来随机化密钥和密文c。由于我们使用rkr方法进行处理使用的随机存取存储器能够在之后的卷积计算中重复使用,所以并不需要额外的随机存取存储器ram消耗。我们对rkr方法与未受保护的ntru算法、lee等人提出的防护方案进行了资源耗费的对比,如下面表1所示。

表1:不同方案的性能对比

从表中可以看出,我们的方案不仅在时间上比lee等人的方案省时,而且避免了使用额外的随机存取存储器ram,节省了空间(其中n代表c数组的位数,d代表b数组的二进制序列中1的个数)。与未受保护的ntru方案性能相近,各项指标中我们未用到额外的ram,rom字节数同未受保护的ntru方案相比略有增加,时钟数相比未受保护的ntru也略有增加,但总体上均优于lee等人的方案,由此可以得出结论,本发明技术方案更高效。

实施例3

基于实施例1所述方法发明人进行了硬件实现,在硬件实现的层次上,rkr可以采用两种方案进行:

第一种方案为桶形移位器方案:桶形移位器可以用在轮换比特位的工作中,在进行卷积操作之前,密钥b和密文c分别在一个时钟循环中被左移i位和右移n-i位,如图7所示为其结构示意图,左侧输入c数组的信息,由八个选择器和移位器组成的单元构成,可以实现c数组的n-i位的右移操作,右侧则输入b数组的信息,实现b数组的i位左移操作,最后在ntru加密系统中进行卷积操作。

第二种方案为控制器方案:如图8所示为其结构示意图,此方案由一个计数器,一个解码器和两个循环移位单元构成,计数器输入移位的位数,左侧循环移位单元和右侧循环移位单元相当于将第一种方案的移位操作进行循环处理,最后在ntru加密系统中进行卷积操作。由于直接输入循环移位的位数容易被攻击者获取n的信息,所以引入了编码器,将n位散列成一个固定位数的序列,那么就保证了设计的安全性。

我们将上述两种硬件实现方案与lee等人提出的方案进行了对比,如表2所示,以n=251,d=72当作参数为例,我们的第一种实现:桶形移位器只花费了8个比特的额外空间和一个额外的时钟循环,然而lee等人的方案花费了258个额外比特的空间消耗和74个时钟循环的额外时间消耗;我们其他的多的消耗只有16个额外的选择器。第二种方案实现对比第一种方案时间不具有优势,但是实现上硬件空间更为节省。

表2:硬件实现的性能对比

下面来本发明rkr方法的安全性进行分析:

如图3所示显示了对于rkr的三种攻击,每一种攻击用不同的图形标记出来。

1、隐性碰撞分析攻击的安全性分析

我们先来看图3中使用双方块标记出的碰撞攻击,在rkr中,每一次的c0都不能准确的定位到它的位置,攻击者可以根据图1中j=0列对c数组做251次能量迹提取,并且和j=1列最小的ci进行相关系数的计算。我们假设计算出的相关系数是ρk(k∈[0,250]),这个ρ能反映的信息只有251次不同的提取中δ=b(i)[1]-b(i)[0]的值的平均出现频率。

为了证明这种说法,我们将rkr与t数组的随机初始化相结合,在stc89c52处理器上使用参数(n,d,q)=(251,72,128)实现了该方案,我们初始化b=[0,3,7,9,13,15,17,20,23,24,25,29,31,33,38,41,43,47,49,52,59,62,63,65,66,69,71,72,75,78,81,83,85,88,92,95,96,97,100,102,105,108,114,118,121,122,127,131,135,139,145,147,150,153,157,162,167,171,173,179,189,194,199,205,212,218,225,235,238,245,247,250]。

对于这个b数组,b(i)[1]-b(i)[0]的值出现次数如表3所示,出现总数为251。

表3:δ的值的出现频次

我们基于汉明重量模型提取了100000次能量迹,图6证明了我们的分析,我们对于根据第一行的251次c数组的能量迹提取,与第二行的c0做相关系数的计算,这个实验结果可以反映出在很低准确率下δ的值出现的频次。然而,即使这个发生频次可以从能量分析中被复原出来,但是由于想通过δ计算出密钥有着极高的计算复杂度,这个系统仍然是安全的。

2、碰撞攻击的安全性分析

在之前xuexinzheng等人发表的论文之中,碰撞攻击能够从未受保护的ntru系统中恢复出b[0]来。当rkr被应用到ntru系统中的时候,对于每一个i来说,经过偏移操作的b(i)[0]可以被恢复出来。对于上述的b数组来说,我们可以对b(i)[0]值的出现频率做出断定,如表所示它会遵循正态分布,结果如下表4所示,所以攻击者不会从中获取任何有用的信息。

表4:b(i)[0]的值出现的频次

3、二阶相关系数分析攻击的安全性分析

如图4所示,我们通过提取50000次能量迹的信息,用lee等人的方法进行攻击,发现无法还原任何密钥的相关信息,黑色弧线代表着b[1]-b[0]正确的相关系数,灰色的线代表是错误的猜测。图4显示,lee等人的二阶相关系数分析攻击的方法可以区分出正确的密钥来,然而根据图5我们的rkr方法的分析,lee等人的方法不再奏效。

4、安全性的对比

本发明提出的rkr方法,可以保护ntru算法不受相关系数分析攻击、模版攻击等一阶静态分析的方法。因为对于任何一个ck,都会等概率的分布在[c0,......,cn-1]的位置上,攻击者不能准确的确定一个初始ck值的初始位置,并且在结合随机化处理t数组的情况下,结合之后的ntru可以抵抗定时攻击和简单能量分析攻击。

下表5我们将未受保护的ntru算法与其他三种方法进行比较,从表中可以看出,未受保护的算法对于五种攻击均不能抵抗,lee等人的方法对于spa和cpa是有效的,但是对于其他攻击不能起到保护作用,我们提出的rkr方法除了spa不能抵抗,其他攻击都能有效抵抗,并且我们将rkr与随机化t数组结合处理之后,由于数组的初始值具有随机性,此时spa也不能奏效,综上所述五种攻击都不能恢复出密钥。

表5:四种实现方法的抵抗攻击结果的对比

综上所述,本发明有着很高的安全性和可靠性,对于能量攻击有着很好的抵抗效果。

为了说明本发明的内容及实施方法,本说明书给出了具体实施例。在实施例中引入细节的目的不是限制权利要求书的范围,而是帮助理解本发明所述方法。本领域的技术人员应理解:在不脱离本发明及其所附权利要求的精神和范围内,对最佳实施例步骤的各种修改、变化或替换都是可能的。因此,本发明不应局限于最佳实施例及附图所公开的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1