一种抵抗能量分析和错误攻击的安全模幂计算方法技术

技术编号:9033839 阅读:175 留言:0更新日期:2013-08-15 00:42
本发明专利技术公开了一种抵抗能量分析和错误攻击的安全模幂计算方法,其步骤包含:读取底数M,指数E,模数N;设中间变量TmpM=M,TmpE=E,TmpR=1;向NSRAM写入模数N并启动预计算,利用ASRAM和BSRAM将TmpM和TmpR转化为Montgomery数;随机选择一个除数D,并更新TmpE=TmpE/D,以及计算中间变量Rem=TmpEmodD;若TmpE≠0,则根据除数余数对(D,Rem)更新TmpR=TmpM^(Rem)*TmpRmodN,TmpM=TmpM^(D)modN,并转到上述选择除数的步骤;若TmpE=0,则根据余数Rem计算中间变量TmpR1=TmpM^(Rem)*TmpRmodN;重新装载模数N到NSRAM中,并根据余数Rem更新TmpR=TmpM^(Rem)*TmpRmodN;比较TmpR1和TmpR,如果相等则启动将TmpR转化为普通数命令并输出结果;如果不相等则结束本次运算。本发明专利技术提供的计算方法不仅能抵抗能量攻击,也能抵抗错误攻击。

【技术实现步骤摘要】

本专利技术涉及公钥密码体制的安全执行领域,具体涉及。
技术介绍
随着信息技术的发展与应用,网上交易如网上银行、电子政务和电子商务也变得越来越普遍,随之带来的安全问题也越来越严重,这就需要对在网络上传输的信息进行加密。传统的加密算法采用的是对称密码体制,通信双方共享同一密钥,它的优点是加密易于用硬件实现,加解密速度都很快,但是存在安全隐患,密钥在交换的时候容易被人窃取。而现代公钥密码体制是非对称密码体制,仅要求密钥的交换是保真的,而不要求其是保密的。每个实体选择一个密钥对(e,d),其中e是公钥,而d是私钥,私钥是需要保密。由公钥并不能计算出私钥。目 前,公钥密码算法主要有两种,一种是RSA,另外一种就是椭圆曲线密码ECC(Elliptic Curve Cryptography)0上述两种公钥密码算法都需要使用模幂计算(MEmod N)。在某些模幂计算中,比如涉及到私钥的模幂运算时,幂指数E是需要保护,不能被泄露的。为了提闻速度,现在模幕算法基本上都是用集成电路芯片实现。而芯片都是由晶体管门电路组成,电路在执行不同的操作时,所需要时间和能量不同,这个能够通过示波器被观察到,进而可以通过这些泄露的信息来攻击模幂运算,从而获得私钥。目前比较常见的攻击方法包括时间分析攻击法、电磁辐射法、能量分析攻击法和错误注入攻击法,其中能量分析攻击和错误注入攻击是最为有效的攻击方法。自从1996年Kocher等人提出简单能量分析(SPA)和差分能量分析(DPA)以来,人们就用这两种方法成功地对一些模幂算法进行攻击。并且随着能量分析技术的提高,一些现有的模幂算法已不能抵抗能量分析。在1997年,Boneh等人又提出一种新的攻击方法:错误注入攻击。通过注入一个错误,得到一个错误结果,然后利用错误结果和正确结果的内在联系从而分解模数N,进而获取私钥。这个攻击方法主要是针对于用中国剩余定理CRT方式来实现的模幂算法。随着技术的发展,错误注入攻击范围也越来越广,从随机注入错误发展到对密钥本身注入错误以及对模数N注入错误。通过注入错误得到错误数据,然后再经过一些运算,从而最终获取私钥。而现有很多的模幂运算往往只考虑抵抗能量分析,而忽略了抵抗错误注入攻击,或者相反,因此安全性不高。
技术实现思路
基于上述问题,本专利技术提供了一种既能抵抗能量分析,又能抵抗错误攻击的安全模幂算法,并且具有较快的计算速度,因此特别适合在智能卡,USBKey等嵌入式设备上应用。为了实现上述目的,本专利技术的技术方案是提供,该方法包含以下步骤:步骤1、读取底数M,指数E,模数N; 步骤 2、设中间变量 TmpM = M, TmpE =E, TmpR = I ; 步骤3、设置5块64X32位大小的SRAM,分别命名为A,B, N, R, T SRAM ;向N SRAM写入模数N并启动预计算,得到参数Nacc和R2 mod N的结果,接下来向A SRAM写入中间变量TmpM和向B SRAM写入中间变量TmpR,并启动将中间变量TmpM和TmpR转化为Montgomery数的命令。步骤4、随机选择一个除数D,并更新中间变量TmpE = TmpE/D,以及计算中间变量Rem = TmpE mod D ;进一步包含: 步骤4.1、设中间变量D = O ; 步骤4.2、产生一个32位的真随机数并赋值给中间变量temp,如果temp小于OxDfffffff,则转到步骤4.3,否则转到4.6 ; 步骤4.3、设t = TmpE mod 2,计算t的值,判断t的值是否等于O ; 若t = 0,表示TmpE能被2整除,则赋值D=2,Rem = O,并转到步骤4.6 ; 若t古O,表示TmpE不能被2整除,则转到步骤4.4 ; 步骤4.4、设t = TmpE mod 5,计算t的值,判断t的值是否等于O ; 若t = O,表示TmpE能被5整除,则赋值D=5, Rem = O,并转到步骤4.6 ; 若t古O,表示TmpE不能被5整除,则转到步骤4.5 ;步骤4.5、设t = TmpE mod 3,计算t的值,判断t的值是否等于O ; 若t = O,表示TmpE能被3整除,则赋值D=3, Rem = O,并转到步骤4.6 ; 若t古O,表示TmpE不能被3整除,则转到步骤4.6。步骤4.6、判断中间变量D的值,如果D的值等于0,则转到步骤4.7,否则转到步骤4.9 ; 步骤4.7、产生一个32位的真随机数并赋值给中间变量temp, 如果temp小于OxBfffffff,则赋值D=2 ; 如果temp小于OxDfffffff,则赋值D=3 ; 如果temp大于等于OxDffTfTfT,则赋值D=5 ; 转到步骤4.8。步骤4.8、计算中间变量Rem = TmpE mod D,转到步骤4.9;步骤 4.9、更新 TmpE = TmpE/D ο步骤5、判断中间变量TmpE的值,若TmpE =0,则跳转到步骤7,若TmpE 0,则跳转到步骤6 ; 步骤6、根据除数余数对(D, Rem)更新相应的中间变量:TmpR = TmpM" (Rem) * TmpRmod N, TmpM = TmpM' (D) mod N,并转到步骤 4 ; 步骤7、根据余数Rem计算中间变量TmpRl = TmpM' (Rem) * TmpR mod N ; 步骤8、重新装载模数N到N SRAM中,并根据余数Rem更新中间变量TmpR = TmpM" (Rem)* TmpR mod N ; 步骤9、比较中间变量TmpRl和TmpR,如果相等则转到步骤10,如果不相等则转到步骤 11 ; 步骤10、启动将TmpR转化为普通数的命令,并输出结果;步骤11、结束本次运算。和现有技术相比,本专利技术,其优点在于:第一,本专利技术在计算结束前重新装载模数N,并重新计算了最后一步,并将重新计算的结果与之前计算的结果进行比较,这样就可以抵御错误注入攻击;第二,采用随机算法选择除数D,使得可以更强抵抗SPA和DPA;第三,本专利技术的模乘模平方及其它模操作使用硬件的Montgomery算法实现,以及随机数,除法以及数据搬运也是用硬件实现,提高了算法性能;四、本专利技术的步骤4和步骤6可以同时运行,以提高算法性能。附图说明图1为本专利技术的总流程 图2为本专利技术中随机选择D以及计算商和余数的流程图。具体实施例方式以下结合附图对本专利技术的实施例作进一步详细描述,但本实施例并不用于限制本专利技术,凡是采用本专利技术的相似结构、方法及其相似变化,均应列入本专利技术的保护范围。如图1所示,本专利技术公开了,该方法包含以下步骤: 步骤1、读取底数M,指数E,模数N; 步骤 2、设中间变量 TmpM = M, TmpE =E, TmpR = I ; 步骤3、设置了相 应的硬件来实现本步骤3,所述硬件中包含有5块64X32位大小的SRAM,分别命名为 A, B, N, R, T SRAM ; 向N SRAM写入模数N并启动预计算(其目的是计算参数Nacc和R2 mod N),接下来向A SRAM写入中间变量TmpM和向B SRAM写入中间变量TmpR并启动转化为Montgomery数的命令(其目的是将T本文档来自技高网
...

【技术保护点】
一种抵抗能量分析和错误攻击的安全模幂计算方法,其特征在于,该方法包含以下步骤:步骤1、读取底数M,指数E,模数N;步骤2、设中间变量TmpM?=?M,TmpE?=E,TmpR?=?1;步骤3、设置5块64X32位大小的SRAM,分别命名为A,B,N,R,T?SRAM;向N?SRAM写入模数N并启动预计算,得到参数Nacc和R2?mod?N的结果,接下来向A?SRAM写入中间变量TmpM和向B?SRAM写入中间变量TmpR,并启动将中间变量TmpM和TmpR转化为Montgomery数的命令;步骤4、随机选择一个除数D,并更新中间变量TmpE?=?TmpE/D,以及计算中间变量Rem?=?TmpE?mod?D;步骤5、判断中间变量TmpE的值,若TmpE?=0,则跳转到步骤7,若TmpE≠0,则跳转到步骤6;步骤6、根据除数余数对(D,Rem)更新相应的中间变量:TmpR?=?TmpM^(Rem)?*?TmpR?mod?N,TmpM?=?TmpM^(D)?mod?N,并转到步骤4;步骤7、根据余数Rem计算中间变量TmpR1?=?TmpM^(Rem)?*?TmpR?mod?N;步骤8、重新装载模数N到N?SRAM中,并根据余数Rem更新中间变量TmpR?=?TmpM^(Rem)?*?TmpR?mod?N;步骤9、比较中间变量TmpR1和TmpR,如果相等则转到步骤10,如果不相等则转到步骤11;步骤10、启动将TmpR转化为普通数的命令,并输出结果;步骤11、结束本次运算。...

【技术特征摘要】

【专利技术属性】
技术研发人员:刘红明周玉洁
申请(专利权)人:上海爱信诺航芯电子科技有限公司
类型:发明
国别省市:

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

1