安全解密方法

文档序号:6454432阅读:200来源:国知局
专利名称:安全解密方法
技术领域
本发明涉及基于密码来确定明文的方法。
背景技术
例如,这样的方法以RSA方法而为人所知。在RSA方法中,通 过公共密钥加密明文,其中,可以通过相关联的秘密密钥再次解密该 密码。由于加密数据通常是高度机密而不能公共访问,因此数据越来 越频繁地暴露在攻击之下,以侦察出秘密密钥,解密加密数据,并从 而非所希望地确定加密数据,导致滥用该解密的数据。
这样的攻击已经以定时攻击(timing attack)或差分错误分析 (DFA)攻击而为人所知,在这些攻击中,观察操作过程中的计算时 间或计算的运行时间或错误行为,以确定在这样的过程中使用的秘密 密钥。
因此,己经提出了方法,这些方法通过反RSA函数或二次RSA 计算,需要大量计算消耗,从而试图探知上述操作并使其无效。

发明内容
本发明的目的是提供一种基于密码来确定明文的方法,所述方法 不易受定时攻击或差分错误分析攻击,而具有相对低的附加消耗量。
根据本发明,这是由基于密码C来确定明文M并使用秘密密钥d 的方法来实现的,其中,以二进制形式使用秘密密钥d,其中,在每 个迭代步骤i对于对应的密码密钥的比特di确定明文M,并与之并行 地确定安全变量Mn,接着通过秘密密钥d的比特兼容(bit-compatible) 的幂来确定验证变量x。
在从属权利要求中描述优选的进一步方案。


参照附图中所示的实施例示例,进一步描述本发明,但是,本发 明不限于这些实施例示例。
图1示出了 RSA方法的示意说明图。
图2示出了RSA方法的框图。
图3示出了定时攻击的说明图。
图4示出了 "总是乘法和平方"方法的框图。
图5示出了根据本发明的验证方法的框图。
图6示出了根据本发明的验证方法的框图。
图7示出了根据本发明的验证方法的框图。
具体实施例方式
由于非常频繁地使用机密信息并以公共可访问的方式传送机密 信息,现今加密和解密方法非常普遍。以下参照根据Rivest、 Shamir 和Adleman的所谓RSA方法,描述根据现有技术的加密和相关联的解 密的实现。在RSA方法中,首先,使用公共密钥g来加密明文M以形成 密码C,即秘文。接着,由于没有秘密密钥d就不能解密密码C,因此 也可以公开或传送已加密的密码C。明文M的计算是通过使用秘密密 钥d对密码C进行模求幂运算(mod N) (modular exponentiation (mod N))来实施的。图l示出了示意图l,以便说明根据M-CdmodN的RSA 方法的解密。为此,图1示出了表示RSA解密的框2。所使用的输入变 量是密码C和秘密密钥d,以获得明文M作为结果。
一般地,通过所谓的"乘法和平方"算法来实现这个等式。此处, 以长度为L的二进制形式使用密钥d:
"《+ 2《+ 4《+…2"d =》'' 《
,'=0
《e{0,l}
如果使用这种形式,则结果是如下乘积链-M = C"。
C"' C44 . CM'... C2"rf"' modiV£-1
/.=0
如果x,;C2、则在以下等式中
i一l
M-JJxf'modiV其中xf'=
i=0
X" =1
1,《=0
变量Xi可以迭代计算得到-
= C = (C ) = x,
因此,如下伪代码来获得该"乘法和平方"算法
M=l;x=C; for i=0 to L-l
ifd= = l
M=M*x mod N
end if
x=square(x) mod N sndfor
图2将模求幂运算的相关联过程10示为框图。
该方法开始于框ll,在框12,使用值M-1、 x-C和i-O来初始化该 方法。在框13,执行秘密密钥d的比特dj是否等于l的询问。如果是, 则该方法继续至框14;如果否,则该方法继续至框15。在框14中,计 算M-xfMmodN。接着,该方法也继续至框15,其中,确定x-x2mod N。此后,在框16,执行是否i-L-l的询问。如果是,则该方法在框18 终止;如果否,则在框17设置i^+l,该方法再次继续至框13。执行L 次循环,其中每种情况下处理秘密密钥d的一个比特di。
RSA方法的定时攻击是在1998年提出的。在这种攻击中,从各个 循环中的不同运行时间或计算时间获得秘密密钥d。如果d产l,则执行 框14中的乘法,即运行时间较长。如果d产0,则不执行框14中的乘法, 因此结果是较短的运行时间。例如,通过评估电流消耗、通过记录PC 应用中的高速缓存活动或通过测量组件的电磁辐射,针对每个循环进 行运行时间或计算时间的检测。
图3中通过示例示出了芯片卡微控制器的电流消耗作为时间的函数,并以简单方式说明了定时攻击的操作模式。图3示出了不同的电流 消耗的区域作为时间的函数,其中,低电流消耗区域具有两种典型宽 度,即持续时间。第一区域20表示平方区域,其中确定x-VmodN, 而区域21表示乘法区域,其中计算VNWmodN。由于根据图2方法的 最后的计算仅在比特d^l时才执行,因此对于目前的情况,di必定等于 1。接着是区域22、 23和24,在这些区域中,没有执行乘法,因此di 必定等于O。因此,可以以相对简单的方式检测出d^O或d产l。因此, 可以通过"乘法"和"平方"的不同的运行时间,基于电流曲线来检 测各个密钥比特dj。为了防止这种攻击,使用所谓的"总是乘法和平 方(always multiplication and squaring)"方法,该方法在d产O的情况下, 总是执行相同但无效的乘法,这样导致了对于d产l或d产O而言恒定的循
环时间。相应地,相关联的伪代码是 M=l;x=C; for i=0 to L-l ifd= = l
M=M*x mod N else
M*x mod N end if
x=square(x) mod N endfor
图4示出了用于说明该改进的RSA方法的框图30。该方法开始于 框31,在框32,使用对应的开始值来初始化该方法。在框33,执行是 否di-l的询问。如果是,则该方法继续至框34;如果否,则该方法继 续至框35。在框34中,计算M=x*MmodN。在框35中,执行乂*1^1 mod N作为所谓的无效乘法。接着,该方法继续至框36,其中确定j^x21110(1 N。此后,在框37,执行是否i-L-l的询问。如果是,则该方法在框39 终止;如果否,则在框38设置i-i+l,该方法再次继续至框33。执行L 次循环,其中每种情况下处理秘密密钥d的一个比特di。
在该改进的RSA方法实现之后,对这种算法的另一种攻击方法,所谓的差分错误分析(DFA)攻击变得为人所知,根据该攻击,通过 例如光、电磁脉冲、供电脉冲之类来破坏各个循环中的乘法。如果乘 法的破坏对最终结果没有任何影响,则相关联的循环执行了如上所述 的无效乘法。对应的密钥比特dj则是d产O。然而,如果该破坏改变了最 终结果,该密钥比特则是d产l。如果逐个循环地按照这种方式来攻击 该方法,则可以确定整个秘密密钥d。
为了防止这样的攻击,通常通过反RSA函数(inverse RSA function),或通过二次RSA函数(second RSA function)来验证密码的 计算,所述反RSA函数通过C-Me来使用公共密钥e。在第一种情况下, 公共密钥e必须是系统中己知的。在第二中情况下,将计算所耗费的时 间加倍。
根据本发明的用于对抗上述DFA攻击的方法,通过校验和来提供 对幂等式M-Cd的计算的验证。在这种情况下,执行一种方法,该方法 使用图4的方法中所示的无效乘法。为此,在无效乘法过程中计算d的 二进制互补幂(binary complementary exponent)的密码Mn,见图5。 如图5所示,根据本发明的方法通过计算M。,提供对"总是乘法和平 方"方法的验证。
图5示出了用于说明相对于DFA攻击而改进的该方法的框图40。 该方法开始于框41,在框42,使用开始值来初始化该方法。在框43, 执行是否d产l的询问。如果是,则该方法继续至框44;如果否,则该 方法继续至框45。在框44中,计算M-x^MmodN。在框45中,计算 Mn=x*M modN。接着,该方法也继续至框46,其中,确定x-x2 mod N。 此后,在框47,执行是否i-L-l的询问。如果是,则该方法在框49终止; 如果否,则在框48设置i-i+l,该方法再次继续至框43。在框49,询问 计算C^^Mn mod N=x,作为验证框53的一部分。如果满足该等式, 则在框51识别出未被破坏的计算,并返回对应的信号。然而,如果不 满足该等式,则在框50识别出被破坏的计算,返回对应的错误信号。 该方法在框52终止。执行L次循环,其中每种情况下处理秘密密钥d的 一个比特dj。
根据图5,如果在无效乘法过程中执行了计算M^x+MnmodN,则在最后的循环结束时获得以下结果
其中,密钥d的互补数^必须由以下等式来替代
7 = 2L-l-d
这给出了
如果计算乘积
j/ = CC2i-wmodiV _y = C2i mod _/V
则结果y可以直接与辅助变量x进行比较,在L次循环之后,辅助变量x 取相同的值A-fmodW。因此,由所谓的DFA攻击导致的任何破坏
都意味着x不等于乘积y。 -
由于对于典型的1024比特RSA而言仅有两次乘法和一次比较 (1024次乘法+1024次平方计算),该验证的消耗较低。
如果使用C来初始化Mn,这样的计算甚至更有优势。因此,不需 要在最后的循环之后乘以C。此外,由于在初始化之后不需要存储C, 减少了存储器需求。图6示出了这样的方法,在该方法中,在求幂运算 之前通过初始化M。-C来执行优化。
图6示出了用于说明相对于DFA攻击而改进并优化的该方法的框 图60。该方法开始于框61,在框62,使用包括M^C在内的开始值来初 始化该方法。在框63,执行是否d尸l的询问。如果是,则该方法继续 至框64;如果否,则该方法继续至框65。在框64中,计算M=x*Mmod N。在框65中,计算M^x+MnmodN。接着,该方法也继续至框66, 其中,确定x-xZmodN。此后,在框67,执行是否i-L-l的询问。如果 是,则该方法在框69终止;如果否,则在框68设置i^+l,该方法再次 继续至框63。在框69,询问计算N^Mn mod N=x,作为验证框73的一 部分。如果满足该等式,则在框71识别出未被破坏的计算,并返回对 应的信号。然而,如果不满足该等式,则在框70识别出被破坏的计算, 返回对应的错误信号。该方法在框72终止。然而,根据本发明,上述方法也适用于其他方法或一般数学结构,
如适用于"总是加法和加倍"方法。图7示出了框图80,用于说明相对 于DFA攻击而改进并优化的对应"总是加法和加倍"方法,如ECC或 HECC方法,其中ECC方法是椭圆曲线密码方法,HECC是超椭圆曲线 密码方法。该方法开始于框81,在框82,使用开始值来初始化该方法。 在框83,执行是否di-l的询问。如果是,则该方法继续至框84;如果 否,则该方法继续至框85。在框84中,计算M- x+M。在框85中,计 算Mn-x+M^接着,该方法也继续至框86,其中,确定x-2t。此后, 在框87,执行是否i:L-l的询问。如果是,则该方法在框89终止;如果 否,则在框88设置i-i+l,该方法再次继续至框83。在框89,询问计算 M+Mn=x,作为验证框93的一部分。如果满足该等式,则在框91识别 出未被破坏的计算,并返回对应的信号。然而,如果不满足该等式, 则在框90识别出被破坏的计算,返回对应的错误信号。该方法在框92 终止。
该验证方法也可以用于一般的数学群(mathematical group)。设 (G, +, 0)是包含元素G、中立元素O和群链接符"+ "的群。群元 素P的n次(n-fold)求和被标记为一P,特别地,0*P=O, (-n)*P=n*(-P), 其中"-P"是P的反元素。为了使用可选的具有比特长度L的秘密标量 因子d》0来保护该运算fP的实现不受定时攻击,也可以以与"总是
乘法和平方"算法相同的方式来实现"总是加法和加倍"算法。也可 以以类似的方式来转变上述对抗DFA攻击的保护;最后,辅助变量y
计算为
<formula>formula see original document page 9</formula> 对于辅助变量x,当且仅当x-;;时,才发生DFA攻击。附图标记列表 1图
2图l中的框
10示出了模求幂运算的过程的框图 11框图10中的框
12框图10中的框 13框图10中的框 14框图10中的框 15框图10中的框 16框图10中的框 17框图10中的框 18框图10中的框 20区域 21区域 22区域 23区域 24区域 30框图
31框图30中的框 32框图30中的框 33框图30中的框 34框图30中的框 35框图30中的框 36框图30中的框 37框图30中的框 38框图30中的框 40框图
41框图40中的框 42框图40中的框44框图40中的框 45框图40中的框 46框图40中的框 47框图40中的框 48框图40中的框 49框图40中的框 50框图40中的框 51框图40中的框 52框图40中的框 53框图40中的验证框 60框图
61框图60中的框 62框图60中的框 63框图60中的框 64框图60中的框 65框图60中的框 66框图60中的框 67框图60中的框 68框图60中的框 69框图60中的框 70框图60中的框 71框图60中的框 72框图60中的框 73框图60中的验证框 80框图
81框图80中的框 82框图80中的框 83框图80中的框 84框图80中的框85框图80中的框
86框图80中的框 87框图80中的框 88框图80中的框 89框图80中的框 90框图80中的框 91框图80中的框 92框图80中的框 93框图80中的验证框
权利要求
1. 一种基于密码C来确定明文M并使用秘密密钥d的方法,其中,以二进制形式使用秘密密钥d,在每个迭代步骤i针对对应比特di确定明文M,并与之并行地确定安全变量Mn,接着通过秘密密钥d的比特兼容的幂来确定验证变量x。
2. 如权利要求l所述的方法,其特征在于,通过求幂运算(modN) 来确定所述明文。
3. 如之前任一权利要求所述的方法,其特征在于,使用乘法/平 方算法来确定所述明文。
4. 如之前任一权利要求所述的方法,其特征在于,使用加法/加 倍算法来确定所述明文。
5. 如权利要求1至3中任一项所述的方法,其特征在于,对于d产l, 计算M-xtMmodN,以确定所述明文。
6. 如权利要求5所述的方法,其特征在于,对于d产0,计算M^ Mn*xmodN,作为无效乘法。
7. 如权利要求l、 2或4所述的方法,其特征在于,对于drl,计 算M-x+M,以确定所述明文。
8. 如权利要求5所述的方法,其特征在于,对于d产0,计算 Mn=x+Mn,作为无效加法。
9. 如之前任一权利要求所述的方法,其特征在于,计算!V^Mn mod N=x,以用于验证目的。
10. 如之前任一权利要求所述的方法,其特征在于,计算 M+Mn=x,以用于验证目的。
全文摘要
本发明涉及一种基于密码C来确定明文M并使用秘密密钥d的方法,其中,以二进制形式使用秘密密钥d,其中,在每个迭代步骤i对于对应比特d<sub>i</sub>确定明文M并与之并行地确定安全变量M<sub>n</sub>,接着通过秘密密钥d的比特兼容的幂来确定验证变量x。
文档编号G06F7/72GK101416154SQ200780011977
公开日2009年4月22日 申请日期2007年2月15日 优先权日2006年4月6日
发明者沃尔夫冈·托贝尔格特 申请人:Nxp股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1