加密运算中模幂的保护的制作方法

文档序号:6361929阅读:231来源:国知局
专利名称:加密运算中模幂的保护的制作方法
技术领域
本发明涉及软件和数据加密。特别是,本发明涉及一种用于隐藏模幂运算中间结果的方法。
背景技术
直到不久前,密码学还仅仅关注于对于不利环境中消息传递的保护。在传统方案中(又名黑盒模型),攻击者仅可以访问解密装置的输入。随着付费电视、受DRM所保护的数字内容(智能电话、个人电脑或CD/DVD中的电影,音乐)的出现,当前攻击者实际可以访问解密装置及其输出,这意味着他不仅可以被动研究加密装置的状态和中间值,而且还可以主动地干预其计算。具体而言,1996年出现了故障分析的概念:当提交解密装置给异常状况(输入错误、温度异常、强电磁辐射……)时,解密算法能够输出故障明文,其给出了有关解密装置中所使用的密钥的信息。参见 Dan Boneh,Richard A.DeMillo 和 Richard J.Lipton 在 1997年的 proceedings of Eurocrypt 中的 “On the Importance of Checking CryptographicProtocols for Faults“。

同年还出现了侧信道攻击的概念:解密装置在解密处理过程中所输出的物理信号(处理的定时、功率消耗、电磁辐射……)可能泄漏有关解密算法的内部变量的信息(侧信道信息)。从该内部变量和统计分析,攻击者可以检索到有关解密装置中所使用的密钥的信息。参见 Paul C.Kocher 在 1996 年的 proceedings of Eurocrypt 中的 “Timing Attackson Implementations of Diffie-HelIman, RSA, DSS and Other Systems,,。故障分析与侧信道分析都属于灰盒模型:攻击者所拥有的关于实现加密算法及其内部数据的知识是有限的。这些攻击被成功地用于检索付费电视系统中所使用的智能卡的密钥和源代码。对于在个人计算机上或⑶/DVD上的音乐和电影,由于使用软件混淆(DRM)比用分发智能卡来进行保护成本低很多,所有使用软件混淆来保护内容密钥。在这种情况下,由于攻击者完全可以访问软件内部,因此它比灰盒模型的环境更加糟糕。这就是所谓的白盒模型。白盒密码学的概念出现于2002年。白盒密码学是一种混淆技术,旨在实现密码原语的方式为:即便对手完全可以访问实现及其执行平台,他也无法提取密钥信息[I]。正如BrechtWyseur在关于白盒密码学的论文中所描述的,在白盒模型中能有效抵御攻击的对策在灰盒模型中也能有效抵御攻击。用于密钥交换、加密或签名的一些重要加密协议(Diffie_Hellman、EIGamal、RSA、DSS……)中涉及模幂运算。本领域中公知的是:进行模幂运算的最基本的方法就是所谓的“平方乘(square-and-multiply) ”算法[2],其包括逐位处理指数,并根据其数值进行乘法。下面,我们来回顾一些有关模幂运算的概念以及一些现有技术算法。 幂运算是一种数学运算,写为b%其涉及两个数字,基数b和指数e。当e是一个正整数时,幂运算相当于重复相乘;换言之,b的e因子次乘积:bX……Xb
模幂运算是一种在求幂运算之后再取模的运算。进行“模幂”运算是指一个正整数b (称为基数)升高e次方(e称为指数),用其除以一个正整数m (称为模数),再计算其余数。换句话说,设置问题形式,其中给出基数b、指数e和模数m,那么人们期望如此计算 C:C = bemod m 基本二进制模幂(平方乘)输入:η位整数g, t+Ι位整数e,即e = (etey ep。),其中Gi是e的第i个最低有效位,以及η位模数m。输出:gemodmUA=L2、对于i从t向下到O,进行如下运算:2.1A = AXAmod m.
2.2 如果 ei = I,则 A = AX g mod m3、返回(A) 通过对一组k位指数进行分析,该二进制幂运算能够大幅加速。这种方法也被称为窗口法,其中窗口尺寸为k。 使用窗口法的模幂运算输入:n位的g, (t+1) Xb位的e,即e = (etety一卢丄,其中对于一些k > l,b =2k,以及η位模数m输出:gemodm1.预计算1.1 G0 = I1.2 对于 i 从 I 到(2k_l),计算=Gi = Gi^1Xg,(由此,Gi = g1)2.A = 1.
3.对于i从t向下到0,进行如下运算:3.1B = A2mod m, A = Bk mod m3.2j = ej, A = AXGj.
4.返回(A)

发明内容
应该强调的是,上述任一模型中攻击者为了自身的非法用途,其目标都是要获取密钥。针对模幂运算,如果使用混淆技术对指数进行了适当的保护,那么攻击者就会尝试通过监测模幂运算的中间结果来获取有关密钥的信息。事实上本领域技术人员会注意到,在基本平方乘方法的示例中,攻击者通过简单观测求幂算法的执行,并测量计算中所涉及每一步骤的时间(或者所消耗的功率),就能够轻易获取密钥值(指数)。窗口法也倾向于使用一些先进的侧信道攻击技术,诸如[3]中所述的差分功率分析(DPA)。用于混淆加密计算的现有技术包括在[4]中所提出的方法。与[4]中解决方案相比,本发明的优点在于:在主 循环中除了对预计算的窗口因子进行“隐蔽(blinding)”之夕卜,它不再需要额外的计算,因此基于窗口的幂运算的执行速度会显著提升。虽然现有技术中提出了一些其它混淆和保护模幂运算的方法,诸如,例如[5],但他们都是对加密的消息本身(C)或者解密指数(d)进行掩蔽(隐蔽)处理。本发明提出一种新的方法,其中对预先计算的窗口值施以掩蔽,这使得攻击者更难以凭借一次故障攻击或软件修改来绕过该隐蔽。本领域技术人员可以理解,通过对一个变量或数值的随机化的操作进行“隐蔽(blinding) ”或“掩蔽(masking) ”,使得所述变量或数值频繁改变,由此攻击者就无法使用侧信道攻击法来进行识别和研究。要解决的问题本发明的一个目的是提供一种隐蔽模幂的中间结果的方法,对于先进的侧信道分析技术来说,该方法比现有技术中描述的隐蔽方法更难绕过,现有技术例如为[4]、[5]以及 Paul C.Kocher 在 1996 年的 proceedings of Eurocrypt 中的 “Timing Attacks onImplementations of Diffie-HelIman, RSA, DSS and Other Systems,,。技术方案本发明提出了一种 用于保护模幂运算的方法,基于窗口尺寸为k位的窗口法,对于η位输入数据X,使用2k预计算变量(对于i = O到2k-l,Yi = XiHiod N),得到η位输出数据S,S = Xd mod N,其中,d是尺寸为m位的指数,N是η位的模数,所述方法包括以下步骤: 通过隐蔽值BI对预计算变量进行隐蔽,B1是与所述模数的尺寸相同(η位)但小于所述模数的伪随机变量(对于i = O到2k-l, Yi = YiXB1Hiod N), 按照窗口法执行模幂运算,该窗口法基于将指数d分割成表示窗口的尺寸最多为k位的多个块,利用所述隐蔽的预计算变量,以获得中间结果(A), 通过解除隐蔽值C1 = (Bjr1mOd N对所述中间结果进行解除隐蔽,以得到输出数据S,其中g等于k位编码的值“I”串联m/k次。


附图显示了能够执行所要求保护方法的各个步骤的处理单元,借助该附图,能够更好地理解本发明。
具体实施例方式本发明描述了一种模幂运算的保护方法,其在一个开放软件环境中使用所谓的窗口法。通过开放软件环境,我们假设在所述PC系统上执行并由攻击者可访问的二进制代码。如图1所示,可以在专门执行加密操作的处理单元中实现本发明。该单元至少包括:能够执行软件核的处理器CPU ;以及存储器MEM1,用于存储该代码并为存储临时数据MEM2提供必要的空间。提供接口 INT,以便接收被加密(或解密)以存储于临时存储器MEM2的用于加密处理的消息。该接口 INT还以相同的方式向接收装置的其它组件发送解密(或加密)的消息。根据优选的实施方案,我们考虑使用窗口法来执行所述模幂运算的PC系统或处理单元,所述窗口法在所述软件环境中实现。设X是η位输入数据,K是包括m位指数d和η位模数N的密钥。在所述PC系统中执行的模幂运算包括两个步骤:预计算(pre-calculation)和求幕运算(exponentiation)。在预计算步骤中,值 Yi = X1 mod N 是预先计算的。本领域技术人员会注意到,在窗口法中,i的变化介于O至2k-l之间,k表示施加到指数d的窗口尺寸。在求幂运算的步骤中使用所述预先计算的值I。下面使用伪代码来介绍本发明的实施例。需着重注意的是,下面所描述的步骤仅仅是为了介绍本发明的优选实施例,并且在任何情况下都不具有限制意义。使用η位寄存器Α,以值I进行初始化,用于临时存储求幂算法的中间结果,使用η位寄存器C,以值I进行初始化,用于临时存储最后使用的随机值,使用log (m)位寄存器V,以值M/Κ进行初始化,-对于j= m/k到I,从密钥d的第j X K位开始截取k位,根据关于j的函数Π,确定隐蔽条件(0/l)b,如果设定了隐蔽条件,则执行:-更新η位伪随机变量B,-对于i = O 到 2k-l, Yi 替换为 Yi X (B mod N),-对于i = O 到 2k_l,Yi 替换为 Yi X ((TlIiiod N),-A 替换为 AXCg,其中 g 为(v-j)的函数(即,g =-f2(v_j),其中 f2(r)是 kXr位的数,它由k位编码的数字I串联r次得到,例如,如果r = 4且k = 2,则二进制f2 (r =4) = “01010101”,十六进制 f2 (4) =0X55),-加载具有值B的寄存器C,-加载具有值j的寄存器V数值A替换为(Ak mod NXYdj mod N),dj表示从最低有效位向最高有效位计数时,指数d的k位中的第j位字,且K = 2k。本技术领域技术人员会理解该隐蔽方法的优点在于,该隐蔽实际上涉及多次计算(与窗口尺寸一样多次的计算),所以对于侧信道攻击者来说,想要通过一次故障攻击或软件修改来绕过该隐蔽会变得更加困难。相对于已知现有技术的另一个优点是算法内部的隐蔽是可更新的,这也使得使用故障攻击或者通过软件修改方式来绕过该隐蔽变得更加困难。如权利要求1所述的方法,其中,在几次窗口处理之后隐蔽值B1被更新,而对中间结果的解除隐蔽是靠乘以变量C1来完成的,C1取决于窗口的尺寸(k)、所处理窗口的数量(w)、模数N和初始隐蔽值B1 % = (B11T1 mod N,其中h等于对k位编码的值“I”进行w次串联。另一个优点是,攻击者无法找到具体的函数T,因此提交T (X)作为模幂运算的输入将使得A中存储的中间结果独立于隐蔽变量B,即使B是已知常数。如果解除隐蔽的步骤不是预先计算好的,那么与传统的求幂算法相比,该对策的开销是使用与输入指数d相同长度的求幂运算,以及与隐蔽更新的数量一样多次的反演运算。
根据另一特定实施例,当在所述PC系统上执行时,可以在求幂算法刚开始时隐蔽一次预计算变量,然后再在求幂运算结束时移除该隐蔽,以此来简化现存速度有限时所要求保护的方法。于是,此对策的开销是一次使用与输入指数d相同长度的幂运算以及仅仅一次的反演运算。本领域的技术人员明白,模幂方法通常用于RSA密码系统环境中。根据特定的实施例,当模幂算法被用于具有私有密钥d(其可能在位数尺寸方面相对较大)的RSA计算时,参照以下步骤,可以提升所要求保护方法的速度: 预先计算e’ = g_1mod(p-l) X (q_l),其中g等于k位编码的值“I”串联m/k次, 通过同一个隐蔽值B2来对预计算变量(Yi = XiHiod N)进行隐蔽,由此B2 =B1^mod N, B1是伪随机变量,其与模数尺寸相同但小于模数(对于i = O到2k_l, Yi =YiXB2Hiod N), 使用已隐蔽的预计算变量来执行模幂运算,以获得中间结果(A), 通过B1的反演运算来对该中间结果解除隐蔽。通过这种方式,隐蔽开销被降低到一次小指数(幂指数为e’)的求幂运算,以及一次反演。根据优选的实施例,伪随机变量B可以使用不同的方法进行更新。此外,主方法的两次执行之间所使用的B值也 可以是不同的。下面根据优选实施例,介绍了这种实施方式。一种提升速度的方法是建立新的隐蔽与在先隐蔽之间的联系。在w个窗口处理之后更新隐蔽值B,在此情形下,幂运算期间所使用的隐蔽值是子块数组B= (B1, B2, B3,…Bn),后一子块Bi+1是前一子块Bi的平方值按N取模,每个子块Bi都是一个与模数位数相同但小于模数的伪随机变量,幂运算期间所使用的解除隐蔽值是子块数组C= (C17C27C3,…Cn),后一子块Ci+1是前一子块Ci的平方值,Ci= (BigFmod N,其中,g等于该k位编码的值“I”串联w次,但是只有C1是通过反演运算得出,而其它的Ci均为其前一的平方。虽然B是在主算法内部被更新,但是在主方法的两次执行之间可以使用相同的B值:因此能够预先计算B和Cg的不同值,来消除幂运算和反演运算的开销。在优选实施例中的特定情形下,该方法包括预先计算并存储Cg值的步骤,其中隐蔽值B1提取于全部或部分模幂代码。参考文献:[I] ^ffhite-Box Cryptography and an AES Implementation”of Stanley Chow,Philip A.EiseniHarold Johnson,and Paul C.van Oorschot in the proceedings of the9th International Workshop on Selected Areas in Cryptography (SAC2002)[2] “Handbook of applied cryptography” of A.Menezes, P.van Oorshot andS.Vanstone.
[3]“Differential Power Analysis,,,Paul Kocher,Joshua Jaffe and BenjaminJun in the proceedings of Advances in CryptoIOgy-CRYPTO^ 99,19th AnnualInternational Cryptology Conference[4] “Method of obscuring cryptographic computations,,,Ernie F.Brickel,Pub.No US 2005/0084098[5] “Cryptographic method comprising a modular exponentiation securedagainst hidden—channel attacks,cryptoprocessor for implementing the method andassociated chip card”,Mathieu Ciet,Benoit Feix,Pub N0.2007/074149
权利要求
1.一种由处理单元在加密运算中所执行的用于保护模幂运算的方法,所述模幂运算基于窗口尺寸为k位的窗口法,对于η位输入数据X,使用2k预计算变量(对于i = O到2k-l,Yi = X1Iiiod N),得到η位输出数据S,S = Xd mod N,其中,d是尺寸为m位的指数,N是η位的模数,所述方法包括以下步骤: 通过隐蔽值B1对预计算变量进行隐蔽,B1是与所述模数的尺寸相同(η位)但小于所述模数的伪随机变量(对于i = O到2k-l, Yi = YiXB1Hiod N), 按照窗口法执行模幂运算,该窗口法基于将指数d分割成表示窗口的尺寸最多为k位的多个块,利用所述隐蔽的预计算变量,以获得中间结果(A), 通过解除隐蔽值C1= (B1T1Hiod N对所述中间结果进行解除隐蔽,以得到输出数据S,其中g等于k位编码的值“I”串联m/k次。
2.根据权利要求1所述的方法,其中所述窗口法基于将指数d分割成表示窗口的最多为k位的多个块,隐蔽值B1在处理一个或多个所述块之后被更新,以及对于中间结果的解除隐蔽是通过乘以变量C1来完成,C1取块于窗口的尺寸(k)、所处理过的窗口的数目(W)、模数N和初始隐蔽值B1 =C1 = (B111)-1Hiod N,其中h等于k位编码的值“ I”串联w次。
3.根据权利要求1所述的方法,其中模数N是两个n/2位的素数p、q的乘积,所述方法包括以下步骤:预计算e’ = g_1mod(p-l) X (q_l),其中g等于k位编码的值“I”串联m/k次,通过相同隐蔽值B2对预计算变量(Yi = XiHiod N)进行隐蔽,使得B2 = B,mod N7B1是与所述模数的尺寸相同但小于所述模数的伪随机变量(对于i = O到Zk-LYi = YiXB2HiodN), 使用被隐蔽的预计算变量执行模幂运算,以获得中间结果(A), 通过B2的反演运算对所述中间结果解除隐蔽。
4.根据权利要求1、2或3所述的方法,其中隐蔽值B1是动态随机值,B1在每次使用被隐蔽的预计算变量执行模幂运算的步骤时被更新。
5.根据权利要求2所述的方法,其中隐蔽值在每次k位窗口的处理之后被更新,在幂运算中所使用的隐蔽值是子块数组B = (B1, B2, B3,…匕),后一子块Bi+1是前一子块Bi的平方值对N取模,每个子块Bi都是与所述模数的尺寸相同但小于所述模数的伪随机变量,幂运算中所使用的解除隐蔽值是子块数组C = (C1, C2, (V..Cn),后一子块Ci+1是前一子块Ci的平方值,Ci= (B^^mod N,其中h等于k位编码的值“I”串联w次,但是仅C1使用反演运算,而其它Ci均为其前一子块的平方。
6.根据前述权利要求中任一项所述的方法,其中隐蔽值B1是静态伪随机值,并且对于权利要求1、3或5中所述的方法的多次执行,根据所述静态伪随机值来对所述解除隐蔽值进行一次预计算。
7.根据前述权利要求中任一项所述的方法,包括预先计算和存储值C1的步骤,其中隐蔽值B1提取于全部或部分模幂代码。
全文摘要
本发明提出了一种执行掩蔽的模幂运算的方法,基于窗口尺寸为k位的窗口法,对于n位输入数据X,使用2k预计算变量(对于i=0到2k-1,Yi=Xi mod N),得到n位输出数据S,S=Xd mod N,其中,d是尺寸为m位的指数,N是n位的模数,所述方法包括以下步骤通过隐蔽值B1对预计算变量进行隐蔽,B1是与所述模数的尺寸相同(n位)但小于所述模数的伪随机变量(对于i=0到2k-1,Yi=Yi×B1mod N),利用所述隐蔽的预计算变量执行模幂运算以获得中间结果(A),通过解除隐蔽值C1=(B1g)-1mod N对所述中间结果进行解除隐蔽,以得到输出数据S。
文档编号G06F7/72GK103221917SQ201180047639
公开日2013年7月24日 申请日期2011年9月29日 优先权日2010年9月29日
发明者R·贝文 申请人:纳格拉影像股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1