用于对消息可靠加密或者解密的方法

文档序号:7886604阅读:225来源:国知局
专利名称:用于对消息可靠加密或者解密的方法
用于对消息可靠加密或者解密的方法本发明涉及一种用于对消息可靠地进行加密或者解密或者用于产 生或者校验消息的数字签名的方法,其中,以处理器支持的方式将具 有密钥的数学运算应用于所述消息,所述密钥可以利用比特序列表示 为二进制数。非对称密码系统通过设置由私有或者公开密钥组成的密钥对来确 保提高的安全性程度,使得对于攻击者而言几乎不可能在有限的时间 内对私有密钥或者对以公开密钥加密的消息解密。通常的密码系统(例 如基于椭圆曲线的这种密码系统)基于一种加密,所述加密可在多项 式时间内被执行,但是仅仅在指数时间内可相对于密钥的长度被转化为比特。在基于椭圓曲线的系统的情况下,当今使用n=160至192比 特的密钥长度,在基于RSA算法的系统的情况下,对此对于大约相同 的安全性水平可以^使用n = 1024至1536比特的长度。对以加密转化为基础的攻击方法的替代方案是所谓的侧信道攻击 (Seitenkanalangriffe ),其中所述以加密转化为基础的攻击方法自身 也包括算法,以便尽可能有效地破坏加密所基于的算法。所述侧信道 攻击尤其可用于移动辅助装置、例如智能卡或者加密狗(Dongle), 在所述移动辅助装置上存储有秘密的密钥材料,用以能够以加密的方 式交换消息或者产生或者重新解密数字签名。攻击者充分利用对相应电路的数据线比较容易的可接入性,用以 测量物理量、例如电流、电磁辐射、在所引起的错误时的结果或者某 些计算的运行时间。在根据简单的电流分析(SPA)对测量值的直接评 估中或者通过借助于存储器示波仪记录测量值(如电流)和紧接着以 统计方式进行评估,可以以有效的方式获得关于所基于的算法或者简 单地还有仅仅当前存在的密钥的信息。对后者应该按照例子进一步说明用于加密的方法不仅为基于椭 圆曲线的算法而且为基于RSA方法的这种算法预先规定对算术运算的 应用。在RSA方法的情况下,可以执行模幂运算z=ak mod N,其中模数N是自然数并且k是密钥(私有的或者公 开的)或者至少是从该密钥推导的量。在椭圆曲线的情况下,可以作为算术运算执行标量乘法Q = k*P,其中P是在有限体K上椭圆曲线上的点并且k又是密 钥或者从该密钥推导的量。椭圆曲线是在有限体内具有系数ai的二次方程式y2 十a丄xy + a3y = x3 + &2乂2 +a々x + ag的零点集合。所述椭圆曲线不具有奇点,并且在将无限远的点再吸收 为中性元素的情况下,构成相加的群,其群法则可以在几何学上被解释。每个直线在三个不必不同的点与椭圆曲线相交(schndden)并且 对每两个点可以计算第三点,使得此三个点之和是中性元素。通过施 加穿过两个点P和Q的直线,确定与椭圆曲线相交的第三点S和将所 述点反映到x轴上来进行相加(以几何方式示出)。点与标量k的标 量乘法通过将点对自身的k次相加来实现。基于椭圆曲线的密码系统自1985年以来是公知的(通过Koblitz, N.和Miller, V.引入)。所述的密码系统和先前的RSA方法(Rivest, R., Shamir, A., Adleman, L.)例如在Menezes、 van Oorschot、 Vanstone 的"Handbookof Applied cryptography" ( CRC Press (1996))中详细地 予以描述。与椭圆曲线相反,在RSA系统中,以相乘的半群计算。根 据椭圆曲线的加法的类推法在此是RSA系统中的乘法。从标量乘法这 里得出幂运算。返回到待解说的例子,可以确定,对数学运算在计算技术上的转 换可以通过以下算法进行,其中k由二进制表示(bi, i-n-l…0)来预 先规定算法la: (RSA: z = ak mod N)(1) z —1(2) i — n-1(3) 只要i>-l(3.1) z — z2 mod N(3.2) 如果bi = l则z —z*amodN(3.3) i — i — 1(4) 提供z算法lb: (EC—椭圆曲线Q = k * P)(l) Q —o(2) i — n-l(3) 只要i>-l(3.1) Q — 2 * Q(3.2) 如果bj = l则Q —Q + P(3.3) i — i — 1(4) 提供(liefere ) Q因此,基本上在每个循环过程中分别执行两个计算计算运算、即 在RSA系统时所谓的平方-乘(Square-and-Mukiply)和在EC系统时 所谓的双倍-加(DouWe-and-Add )(接下来EC将^皮用作椭圆曲线的 简称)。在简单的电流分析(SPA)的情况下,对幂运算或者标量乘法的电 流消耗的分布图进行分析。标量乘法例如主要由加法和加倍组成。此 运算显著地在K的初等运算数目方面不同,使得电流消耗也不同。因 此,通过相应的侧信道攻击可以推断出各个比特和因此推断出k本身 的二进制表示。用于防御这种攻击的第一步骤在于,对于两个可能的比特状态0 和1使取决于相应比特值的电流流和计算运行时间相均衡,正如接下 来所示算法2a: (RSA: z = a k mod N)(1)zo — 1(2)i — ii-l(3)只要i>-l(3.1)zo <~ z()2 mod N(3.2)zi — zo * a mod N(3.3)zo —zbi ,其中bi = 0或1(3.4)i —i一l(4)提供zo算法2b: (EC —椭圆曲线Q二k六P)(1)(2)(3)只要i>-l(3.1)QO — 2 * Qo(3.2) Qi — Qo + P(3.3) Qo —Qbi ,其中bi = 0或1(3.4) i — i — 1 (4)提供Qo从现在开始,在每种情况下不依赖于相应比特bi来执行第一计算 运算(步骤3.1)以及从现在开始也执行第二计算运算(步骤3.2)。 然而,运行时间在这并不是不显著地增加,因为要执行更多的运算。比特值本身单独地进入在步骤(3.3)中的分配。如果b产0,那么在 循环过程中,点QQ(情况EC)单独地通过其本身被更新。换句话说 于是对Qi在步骤(3.2)中所计算的值被忽视,该值在使用其结果的意义 上来说"徒劳地"被计算了。如果与此相反,b产l,那么将Qo分配给 值Qi。根据现在的两个辅助量Qn、 Ch,由此在任何情况下都至少在电 流消耗和计算时间方面实现均衡。然而这并不完全的,正如所示。即步骤(3.3)类似于如果/否则 (if/sonst)询问("如果")隐含向地址的转移。视地址而定,这里 不同的电流消耗也可能变得可被察觉,使得侧信道攻击是有可能的。用于防御侧信道攻击的可替代方法在于所谓的 Montgomery-Leiter (蒙哥马利梯)。该算法在椭圆曲线的情况下特别 有效,然而从文献DE 10151129 Al还公知在RSA系统上的应用。如果 椭圆曲线上的点与因数1^并且同时与因数1^ + 1的乘积分别被计算,在 计算标量乘法时也即可以不需要共同计算y坐标。在椭圆曲线的情况 下,y坐标可以从两个分结果来重构。按照该算法,对乘法的两个结果的同时计算有利地集成在公共的 示意图中,其中为此所定义的辅助量(在这称为R和S)在每个循环 过程中有效地以相互的辅助的方式更新算法3: (EC-椭圆曲线Q=k*P)Montgomery丄eiter:(1) R — P, S — 0(2) i — n-l(3) 只要i>-l(3.1) 如果bi = l{S — S + R,R — 2*R}(3.2) 否则{R —R + S,S —2*S}(3.3)i — i — 1(4) 提供R, S(5) 从点R, S和P重构k * P在所示的例子中,在每个循环过程中,辅助量R或者点R以PP 运行在辅助量或者点S之前。P是事先规定的。对于k = (1010) = 10 , 例如8 = 10* 和11=11 *P。加法和加倍与比特无关地完全相同地进 行。从运算顺序侧不能推断出比特序列。然而转移指令("如果"或 者"否则")如刚开始所提及的那样形成用于攻击的弱点。因此,本发明的任务是,提供一种在相对于侧信道攻击的安全性 方面而言改善了的、用于加密或者解密或用于产生或者或者校验消息 的数字签名的方法。本任务通过具有根据独立权利要求1和9的特征的用于对消息可 靠地加密或者解密或者用于产生或者校验消息的数字签名的方法来解 决。从从属权利要求中可以得出有利的扩展方案。在独立权利要求中所说明的方法针对于例如在算法2和3中所示 的基本特征,其中连接该方面的思想在于避免在电流分布图上可测的 转移指令。建议,确定辅助量的存储器地址并且利用所述所述辅助量自身来 实施运算,其中利用辅助量执行在幂运算或标量乘法时的计算运算。 在此规定,计算存储器地址的差(分别被表示数字或者被映射到数字 范围内)。假如如果所计算的差具有较小的值,该所计算的差根据当 前的密钥比特被添加到所述存储器地址,或者如果所计算的差具有较 大的值,被减去,那么刚好得到相应其它辅助量(R或者S或者zo或 者Zl)的存储器地址。从而可以通过这种计算实现对两个辅助量的值 的交换或者两个辅助量之一向相应其它辅助量的映射。辅助量的值的交换在Montgomery-Leiter的情况下是有利的也即 对于两个与比特相关的分支路径进行相同的计算运算,但是以对称交 换的辅助量布置的方式。该计算例如可以在比特值与先前所计算的存储器地址值差的乘法 框架内进行。如果所述比特值为0,那么接下来在对存储器地址相加或 者相减时也不发生改变。如果与此相反,所述比特值是l,那么以相同 的方式对所述差进4于减或加。一个方面规定,将所述比特值引到计算机字的末尾,也就是说使其成为最低有效比特(LSB)。接下来所述计算机字与所述差的乘法提 供乘积,该乘积可以首先被添加到存储器地址。如果现在清除对值0 的比特(LSB),重新相乘并且再减去所述乘积,那么如果所述比特 LSB起初为0、也即由于清除过程而没有发生改变,则得到初始地址。 然而,如果所述比特LSB具有值1,那么围绕恰好地址域中的所述差 进一步获得在数学运算中所使用的其它辅助量的存储器地址。本发明的主要步骤是,形成地址差并且取决于当前的比特值从存 储器地址之一加或者减所述差用以与比特有关地分别获得其它的存储 器地址。因此,取消转移指令,这特别在Montgomery-Leiter的情况下 使人注意到是有利的。根据比特值要实施的计算运算迄今位于程序流 程中的不同位置。与此相反,从现在起基于辅助量的对称特性,在程 序指令中可以访问相同的计算运算,其中仅仅以对称的方式交换内容。 正如取消转移指令那样,根据比特值对不同电流消耗的检测或者相应 不同的计算时间几乎不再是可能的,使得抗侧信道攻击的安全性得以 提高。现在将根据实施例进一步解说本发明。以在算法3中所示出的才艮据现有4支术的Montgomery-Leiter流程为 出发点,形成SPA安全算法步骤(3.1) 如果bi = l:{S — S + R,R — 2*R}(3.2) 否则{R —R + S,S —2*S} 可以利用F1 = {S — S + R,R — 2*R}和 F2 = {R — R + S,S — 2*S} 以简化的方式来表示如果bi = 1: Fl,否则F2。如果获得本发明所基于的认识,即转移指令是抗側信道攻击的弱 点,那么下一步骤在于,如果密钥比特采用值O,则在循环过程的开始 和结束时交换辅助量。于是仅仅还需要参阅两个转移地址之一,例如 Fl:(3.1) 如果bi = 1: Fl(3.2) 否则{交换(R, S), Fl,交换(R,S))。在该点,通过侧信道攻击的可检测性又得到显著提高,因为取决于比特值,在复制时,每 计算机字两次存储器访问是必需的。在较长的体元素的情况下,多次访问是必需的,其中当所述密钥比特当前未被置位、即为o时,这明显地在电流消耗中反映了出来。可以如在接下来的算法中所示的那样进行均衡 算法4:(EC-椭圓曲线Q-k六P) Montgomery-Leiter:(1) R — P, S — 0(2) i — n画l(3) 只要i>-l(3.1) 如果bi = 1 { r —地址(R), s —地址(S) }(3.2) 否则{r —地址(S),s—地址(R))(3.3) 将内容s向S'装载,将内容r向R'装载(3.4) S' — S' + R'(3.5) R' — 2' * R'(3.6) 将S'向s存储,将R'向r存储(3.7) i — i - 1(4) 提供R, S(5) 从点R,S和P重构k头P。r和s在此是地址变量并且引起根据比特值对辅助量的交换。如果 bi = l,则r指向辅助量的地址或者点R,并且如果b产0,则指向点S。根据本发明,在(3.1)中避免转移指令,其方式是,在地址变量 r和s之间形成差并且使所述差与计算机字h相乘,其中比特依赖性被 存储。当前假设,地址(S)大于地址(R)。此外,标量k存在于计算机字的字段内。算法5:(EC—椭圆曲线Q-k六P) Montgomery-Leiter:(1) R —P,S —0(2) d —地址(S)-地址(R)(3) i — n-l(4) 只要i>-l(4.1) 基于计算机字的LSB循环地旋转bi(4.2)向h,复制h,从h'清除LSB(4.3)r—地址(S),s—地址(R)(4.4)m — h * d(4.5)r — i*-m,s — s + m(4.6)m — h, * d(4.7)r — r + m,s — s-m(4.8)向S'装载内容s,向R'装载内容(4.9)S' — S'+ R,(4.10)R' — 2' * R'(4.11)向s存储S',向r存储R'(4.12)i — i 一 1(5) 提供R,S(6) 从R,S和重构k*P。计算机字h和h'在数值上最大相差值1,因为它们仅仅可能在LSB 上不同。如果bi-l,那么在步骤(4.4)至(4.7)中将r从地址(S)降到 地址(R)。这对应于按照算法4的步骤(3.1)的结果,然而这里转 移指令是不必要的。仅仅进行真正的标量乘法(步骤4.4 )或者(4.6 ))。正如根据现有技术的算法2a中,以下流程示出本发明在RSA方法 上的应用算法6: (RSA: z = ak mod N)(1)zo — 1(2)d —地址(zo)-地址(zi)(3)i — n-1(4)只要i>-l(4.1)zo — z()2 mod N(4.2)zl — zo * a mod N(4.3)基于计算机字的LSB循环地旋转bi(4.4)向h'复制h,从h'清除LSB(4.5)r —地址(zo)(4.6)m — h * d(4.5)r — r 一 m(4.6)m — h, * d(4.7) r — r + m(4.8) 向zo存储内容r(4.9) i — i — 1 (5) 提供z0与Montgomery-Leiter相反,对于椭圆曲线必须在此算法中只计算 一个地址。仅仅应该存储中间值储。
权利要求
1.用于对消息可靠地加密或者解密或者用于产生或者校验消息的数字签名的方法,其中,以处理器支持的方式利用密钥(k)将数学运算应用于所述消息,所述密钥可以利用比特(bi)序列表示为二进制数,包含以下步骤-初始化第一辅助量(z0)和第二辅助量(z1);-为第一辅助量(z0)和第二辅助量(z1)分别确定存储器地址并且将第一存储器地址分配给地址变量(r);-从存储器地址之间的差别来计算差值(d);-从最高有效比特(MSB)开始顺序地为每个比特(bi)执行以下步骤(a)通过将第一计算运算应用于第一辅助量(z0)来更新第一辅助量(z0);(b)通过将第二计算运算应用于第一辅助量(z0)来更新第二辅助量(z1);(c)根据当前比特(bi)的值将所计算的差值(d)添加到地址变量(r),使得或者将第一辅助量(z0)的存储器地址或者将第二辅助量(z1)的存储器地址作为值分配给地址变量(r);(d)通过传输其存储器地址被分配给地址变量(r)的所述辅助量(z0,z1)的值来更新第一辅助量(z0);-在结束所述步骤之后为每个比特(bi)输出第一辅助变量(z0)作为数学运算的结果。
2. 按照权利要求1的方法,其中在初始化时将值1分配给第一辅 助量(z0),并且第一计算运算包含求积分或者第一辅助量(zO)与 自身的乘法。
3. 按照权利要求2的方法,其中事先规定定基(a)并且第二计算 运算包含第一辅助量(z0)与基(a)的乘法。
4. 按照权利要求3的方法,其中事先规定数字(N),所述数字在计算运算时被用于取模运算。
5. 按照权利要求4的方法,其中所述方法是RSA加密/解密或者 签名方法,其中数学运算是模幂运算(ak mod N),并且其中事先规 定的数字(N)对于取模运算而言是两个大质数的乘积(p*q)。
6. 按照权利要求l的方法,其中-第一辅助量(zO)表示在有限体(K)上椭圓曲线(E)上的点(Qo) 并且在初始化步骤中被分配值0,-在更新第一辅助量(z0)的步骤中,第一计算运算包含点(Qo) 与因数2的标量乘法,画所述数学运算包含标量乘法(k六P)。
7. 按照权利要求6的方法,其中在更新第二辅助量(zl )的步骤中, 第二计算运算包含点(Qo)与椭圆曲线(E)上的固定预先规定的点(P)的加法。
8. 按照权利要求1到7之一的方法,其中在步骤(c)中,根据当 前比特(bi)的值,将差值(d)添加到地址变量(r),其方式是,-构成第一计算机字(hl),其中当前比特(bi)在顺序处理中是 最低有效比特(LSB);-使第一计算机字(hl)与所述差相乘来形成第一乘积(m); -从地址变量(r)减去第一乘积(ml);-通过将最低有效比特(LSB)置为0,由第一计算机字(hi)构 成第二计算机字(h2);-使笫二计算机字(h2 )与所述差(d )相乘来形成第二乘积(m2 ); 一将第二乘积(m2)添加到地址变量(r)。
9. 用于对消息可靠地加密或者解密或者用于产生或者校验消息的 数字签名的方法,其中,以处理器支持的方式利用密钥(k)将数学运 算应用于所述消息,所述密钥可以利用比特(bi)序列表示为二进制数, 包含以下步骤-初始化第一 (R)和第二辅助量(S);-为第一 (R)和第二辅助量(S)分别确定存储器地址;-将第一存储器地址分配给第一地址变量(r )和将第二存储器地址 分配给第二地址变量(s);-从两个存储器地址之间的差别来计算差值(d);-顺序地为每个比特(bi)执行以下步骤 (a)根据比特(bi)的值,将所计算的差值(d)添加到第一地址 变量(r)并且从第二地址变量(s)减去差值(d),使得 或者作为值将第一辅助量(R)的存储器地址分配给第一地址变量(r)和将第二辅助量(S)的存储器地址分配给第二地址变量(s), 或者作为值将第二辅助量(S)的存储器地址分配给第一地址变 量(r)和将第一辅助量(R)的存储器地址分配给第二地址变量(s);(b)通过应用第一计算运算来更新分配给第一地址变量(r)的 所述辅助量(R, S);(c )通过应用第二计算运算来更新分配给第二地址变量(s )的所 述辅助量(R, S);-在结束所述步骤之后为每个比特(bi)输出第一 (R)和第二辅助 量(S)并且从第一 (R)和第二辅助量(S)计算数学运算的结果。
10. 按照权利要求9的方法,其中第一辅助量(R)表示在有限体 (K)上椭圆曲线(E)上的点并且在初始化步骤中被分配固定的点(P)。
11. 按照权利要求9或者IO的方法,其中第二辅助量(S)表示在 有限体(K)上椭圆曲线(E)上的点并且在初始化步骤中被分配值O。
12. 按照权利要求9到11之一的方法,其中所述数学运算包含标 量乘法(k*P)。
13. 按照权利要求9到12之一的方法,其中在更新给第一地址变 量所分配的辅助量的步骤中,第一计算运算包含椭圆曲线上的两个点 的加法。
14. 按照权利要求9到13之一的方法,其中在更新给第二地址变 量所分配的辅助量的步骤中,第二计算运算包含椭圆曲线上的点与因 数2的标量乘法或者与自身的加法。
15. 按照权利要求9的方法,所述方法是RSA加密/解密或者签名 方法,其中所述数学运算是利用事先规定的数字(N)用于取模运算的 模幂运算(akmodN),所述数字(N)是两个大质数的乘积(p*q )。
16. 按照权利要求9到15之一的方法,其中在步骤(a)中,根据 当前比特(bi)的值,将差值(d)添加到第一地址变量(r),其方式 是,-构成第一计算机字(hl),其中当前比特(bi)在顺序处理中是 最低有效比特(LSB);-使第一计算机字(hl)与所述差相乘来形成第一乘积(ml); -从地址变量(r)减去第一乘积(ml);陽通过将最低有效比特(LSB)置为0,由第一计算机字(hi)构成第二计算机字(h2);-使第二计算机字(h2 )与所述差(d )相乘来形成第二乘积(m2 ); -将第二乘积(m2)添加到地址变量(r)。
17.按照权利要求16的方法,其中在步骤(a)中,根据当前比特 (bi)的值,从第二地址变量(s)减去差值(d),其方式是, -将第一乘积(ml)添加到地址变量(r); -从地址变量(s)减去第二乘积(m2)。
全文摘要
用于对消息可靠地加密或者解密或者用于产生或者校验消息的数字签名的方法,其中,以处理器支持的方式利用密钥(k)将数学运算应用于所述消息,所述密钥可以利用比特(bi)序列表示为二进制数,为每个比特顺序地执行对辅助量(z<sub>0</sub>,z<sub>1</sub>,R,S)的计算运算。通过从辅助量读出存储器地址并且分配给地址变量(r,s),来考虑计算结果对各个比特(bi)的值的依赖性。地址的差(d)被计算并且根据分别当前的比特(bi)针对计算机地址被加或被减。因而可以交换辅助变量(z<sub>0</sub>,z<sub>1</sub>,R,S)对地址变量(r,s)的分配。由此可以与比特有关地控制计算运算的顺序和选择,而不必在程序流程中实现转移指令。
文档编号H04L9/30GK101268654SQ200680032749
公开日2008年9月17日 申请日期2006年7月26日 优先权日2005年9月6日
发明者A·卡格尔, B·迈耶, M·布劳恩 申请人:西门子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1