用于计算椭圆曲线上的点的倍数的设备和方法 技术领域 本发明总体上涉及密码技术, 更具体地, 涉及针对椭圆曲线密码系统的从右至左 标量乘法。
背景技术 本节旨在向读者介绍与以下描述和 / 或要求保护的本发明的各方面有关的现有 技术的各方面。相信此处的讨论有助于向读者提供背景知识, 以便更好地理解本发明的各 个方面。因此, 应当理解的是, 应据此阅读这些说明, 而不应将这些说明视为对现有技术的 认可。
椭圆曲线密码 (ECC) 技术变得越来越普遍, 这是由于其密钥长度明显短于用于相 应安全级别的 Rivest-Shamir-Adleman(RSA) 密钥。然而, 在选择密码系统时, 较短的密钥 长度不是唯一要考虑的因素 ; 例如, 还必须考虑计算时间, 这是由于证明了相对长的等待会 使使用密码系统的用户感到烦躁。
尽管实际中可以在任何情况下使用椭圆曲线密码技术, 但是, 该密码技术特别适 合于在嵌入式设备中使用, 这是由于 ECC 需要比基于 RAS 的密码技术少的存储和计算能力。
椭圆曲线密码技术的基本操作是标量乘法 : 给定椭圆曲线上的点 P 以及标量 d, 必 须计算点 Q = dP( 即, P+P+0...+P, d 次 )。主要存在两种标量乘法方法族, 这两种方法族依 赖于扫描标量 d 的方向 :
- 从左至右方法, 以及
- 从右至左方法。
通常使用从左至右方法, 因为它们给出更好的性能, 但是还已知这种方法提供较 低的安全级别。
至今, 技术人员在某种程度上不得不在性能与安全性之间做出选择。因此应当认 识到, 需要一种克服现有技术中的至少一些问题的解决方案。 本发明提供了一种解决方案, 使现有技术的从右至左标量乘法的速度提高, 从而减小两种方法族之间的性能差异。
现在描述经典的现有技术的基于从右至左的标量乘法方法。
设 E 表示特征≠ 2、 3 的域 K 上的椭圆曲线。这样的椭圆曲线可以由韦氏方程给 出:
EIK : Y2 = X3+aXZ4+bZ6。
椭圆曲线上点集合 (X, Y, Z) 形成阿贝耳群, 其中, 中立元素 ( 被称作无穷处的点 ) 是 O = (1, 1, 0)。投影点 (X, Y, Z) 在 Z = 0 的情况下与 O 相对应, 否则与仿射点 (X/Z2, Y/ 3 Z ) 相对应。注意, 投影点的投影坐标不是唯一的, 这是由于针对 K 中的每个非零 t, (X, Y, 2 3 Z) = (t X, t Y, tZ)。
经典现有技术的从右至左二进制标量乘法方法采用标量 d ≥ 0 以及具有参数 a 和 b 的椭圆曲线 E 上的点 P = (X, Y, Z) 作为输入, 并且输出点 Q = dP。
输入 : d, P = (X, Y, Z)
输出 : dP = (X*, Y*, Z*)
方法 :
1. 如果 d = 0 或 Z = 0, 则返回 (1, 1, 0) 并停止。 * * *
2. 设定 (X , Y, Z ) ← (1, 1, 0) 以及 (T1, T2, T3) ← (X, Y,Z)
3. 当 (d ≥ 0) 时, 执行
a. 如果 (d 是奇数 ),
i.d ← d-1
ii.(X*, Y*, Z*) ←相加 [(X*, Y*, Z*), (T1, T2, T3)]
b.d ← d/2
c.(T1, T2, T3) ←倍增 [(T1, T2, T3)] * * *
4. 返回 (X , Y, Z)
经典现有技术的基于 NAF 的标量乘法方法采用标量 d ≥ 0 以及具有参数 a 和 b 的 椭圆曲线 E 上的点 P = (X, Y, Z) 作为输入, 并且输出点 Q = dP。
输入 : d, P = (X, Y, Z) * *
输出 : dP = (X , Y, Z*)
方法 :
1. 如果 d = 0 或者 Z = 0, 返回 (1, 1, 0) 并停止。 * * *
2. 设定 (X , Y, Z ) ← (1, 1, 0) 以及 (T1, T2, T3) ← (X, Y, Z)
3. 当 (d ≥ 0) 时, 执行
a. 如果 (d 是奇数 ),
i.u ← 2-d(d mod 4)
ii.d ← d-u
iii. 如果 (u = 1), (X*, Y*, Z*) ←相加 [(X*, Y*, Z*), (T1, T2, T3)] * * * * * *
iv. 如果 (u = -1), (X , Y, Z ) ←相加 [(X , Y, Z ), (T1, -T2, T3)]
b.d ← d/2
c.(T1, T2, T3) ←倍增 [(T1, T2, T3)] * * *
4. 返回 (X , Y, Z) 发明内容 在第一方面中, 本发明涉及一种用于从右至左通过反复的点加 (point addition) 和点倍增 (point doubling) 来计算椭圆曲线上的点的倍数 (multiple) 的方法。利用扩展 的坐标集合来估算每次点倍增, 通过采用扩展的坐标集合的受限集合作为输入来估算每次 点加。
在第一优选实施例中, 点倍增的输出坐标用作下次点倍增的输入坐标。
在第二优选实施例中, 通过韦氏方程 EIK : Y2 = X3+aXZ4+bZ6 给出特征不同于 2 和 3 的椭圆曲线, 其中, a 和 b 是椭圆曲线的第一和第二参数。
有利地, 通过获得坐标 T1, T2, T3 的值以及附加坐标 T4( 初始化为 T4 = aT34) 的值来 计算点倍增, 其中, a 是椭圆曲线的第一参数 ; 计算中间变量 U = T12, V = T22, M = 3U+T4, W 2 2 =V, 以及 S = 2((T1+V) -U-W) ; 计算 T3 和 T4 的新值 : T3 = 2T2T3, T4 = 16WT4 ; 计算 T1 的新
值: T1 = M2-2S ; 计算 T2 的新值 : T2 = M(S-T1)-8W ; 以及至少输出坐标 T1, T2, T3 和 T4 的值。
在第三优选实施例中, 使用标量的非邻近形式来执行标量乘法。
在第四优选实施例中, 使用标量的二进制表示来执行标量乘法。
在第五优选实施例中, 使用修正的雅可比坐标来执行点倍增, 并且使用雅可比坐 标来执行点加。
在第二方面中, 本发明涉及一种用于从右至左计算椭圆曲线上的点的倍数的设 备。该设备包括适用于点倍增和点加的处理器。处理器适用于 : 使用扩展的坐标集合来估 算每次点倍增, 以及通过采用扩展的坐标集合的受限集合作为输入来估算每次点加。
在第三方面中, 本发明涉及一种计算机程序, 当在处理器上执行计算机程序时, 该 计算机程序执行用于从右至左通过反复的点倍增和点加来计算椭圆曲线上的点的倍数的 方法, 其特征在于, 利用扩展的坐标集合来估算每次点倍增, 通过采用扩展的坐标集合的受 限集合作为输入来估算每次点加。
在第四方面中, 本发明涉及一种存储了计算机程序的计算机程序产品, 当在处理 器上执行计算机程序时, 该计算机程序执行用于从右至左通过反复的点倍增和点加来计算 椭圆曲线上的点的倍数的方法, 其特征在于, 利用扩展的坐标集合来估算每次点倍增, 通过 采用扩展的坐标集合的受限集合作为输入来估算每次点加。 附图说明
参照附图, 作为非限制示例, 描述本发明的优选特征, 在附图中 : 图 1 示出了根据本发明优选实施例的进行椭圆曲线上的计算的设备 ; 以及 图 2 示出了根据本发明优选实施例的点倍增方法。具体实施方式
图 1 示出了根据本发明优选实施例的用于进行椭圆曲线上的计算的设备 100, 具 体用于执行点倍增和标量乘法。设备 100 包括至少一个适用于执行计算机程序的处理器 110( 下文中为 “处理器” ), 该计算机程序执行下文描述的方法的计算。应当注意, 处理器 110 还可以以硬件来实现, 或者以软件和硬件的组合方式来实现。 设备 100 还包括适用于存 储数据 ( 例如, 来自处理器 110 的中间计算结果 ) 的存储器 120。设备 100 还包括用于与其 他设备 ( 未示出 ) 交互的至少一个接口 130( 下文中为 “接口” )。图 1 还示出了用于存储 计算机程序的计算机程序产品 140, 例如, CD-ROM, 当在处理器 110 上执行该计算机程序时, 该计算机程序执行根据本发明的方法的优选实施例的标量乘法。
本发明的主要构思是使用附加坐标 T4, 使用该附加坐标 T4 来高速缓存在从右至 左标量乘法方法中常规点倍增运算中涉及的值。在迭代之间, 将附加坐标 T4 存储在存储器 120 中。由于反复执行现有技术方法的步骤 3.c 中的倍增, 并且在方法的其他地方也不进 行修正, 因此, 高速缓存使得能够加速该方法, 虽然这是以使用额外存储空间为代价来实现 的。因此, 本发明旨在找到速度 ( 即, 所执行的运算 ( 具体地, 乘法 ) 的次数 ) 与资源 ( 具 体地, 存储器 ) 的使用之间的良好权衡。
图 2 示出了根据本发明优选实施例的点倍增方法。有利地, 该方法替换现有技术 方法中的倍增步骤 3.c。该方法的输入是值 T1, T2, T3 和 T4, 其中, T4 在该方法的第一次迭代中被初始化为 aT34( 步骤 200)。然后定义多个有帮助的中间变量, 步骤 210 : 2
-U = T1
-V = T22
-M = 3U+T4
-W = V2
-S = 2((T1+V)2-U-W)
然后, 在步骤 220 中, 计算 T3 和 T4 的新值 :
-T3 = 2T2T3
-T4 = 16WT4
如上所述, 有利地将 T4 的值存储在存储器中, 直到在下次迭代时需要该值为止。
在步骤 230 中, 计算 T1 的新值 : 2
-T1 = M -2S
最后, 在步骤 240 中, 计算剩下的变量 T2 的新值 :
-T2 = M(S-T1)-8W ;
现在, 4 个输出变量表示已经倍增的点, 这些变量可以是步骤 250 的输出, 以用于 标量乘法方法中的其他步骤中的其他计算。如果有必要, 针对标量乘法方法的其他迭代来 重复步骤 210-250。将认识到, 不一定要输出 T4 的值, 这是由于该值仅用于点倍增 ; 这假定 将 T4 的值存储在存储器中, 直到点倍增的下次迭代。
本发明的方法的优点在于, 使得能够提高性能, 特别是在计算速度方面。
表 1 给出了针对各种系统的点倍增的成本, 表 2 给出针对点加的成本。 这些表是基 于 D.J.Bernstein 和 T.Lange “ :Faster addition and doubling on elliptic curves” In : Advances in Cryptology-ASIACRYPT 2007, LNCS, pp.29-50, Springer-Verlag, 2007。 符号 M、 S、 c 分别代表 “乘法” 、 “平方” 和 “与常数相乘” 。最后两列给出了, 针对 (α, β) = (1, 1) 和 (α, β) = (0.8, 0), 当 S = αM 和 c = βM 时的乘法的次数。
表1: 点倍增的成本表2: 点加的成本
可以看出, 当针对点表示使用雅可比投影坐标时, 可以获得最佳总体性能。设 I 表 示 d 的比特长度。在这种情况下, 如果利用经典的基于 NAF 的从右至左二进制标量乘法方 法估算 Q = dP, 则预期的运算次数大约为 : I(1M+8S+1c)+I/3(11M+5S), 假定 S = c = M, 该 方程等于 15.3IM。
然而, 根据本发明的方法可以使用一种类型的坐标来将点相加, 并且使用另一类 型的坐标来将点倍增。 例如, 可以使用雅可比坐标进行点加, 使用修正的雅可比坐标进行点 倍增。对于从左到右标量乘法方法, 这在以前是效率低的, 甚至是不可能的。所有这些方法 共同使用累加器, 反复使该累加器加倍, 并且反复向该累加器添加输入点或输入点的倍数。 这意味着, 针对点倍增和点加例程的输出表示必须相同, 即, 累加器的坐标系统必须相同。
根据本发明的方法的成本因此大约为 : I(3M+5S)+I/3(11M+5S), 在同样假定 S = c = M 的情况下, 该方程等于 13.3IM。因此, 增益是加速因子 13.3%。
尽管通过使用附加临时变量, 以进一步存储器需求为代价, 能够加速经典方法, 但是根据本发明的方法仍更快速, 这是由于加速的经典方法估算 Q = dP 的成本大约是 I(3M+5S)+I/3(11M+7S+1c), 等于 14.3IM。因此, 根据本发明的方法仍更快速。
通常利用标量 d 来执行椭圆曲线上的标量乘法, 标量 d 以其非邻近形式 (NAF) 来 表示, 这是由于可以容易推断出点的逆, 并不需要额外存储器需求。由于 NAF 是从右至左计 算的, 因此在从右至左标量乘法 ( 包括根据本发明优选实施例的方法 ) 中, 不需要像在从左 至右标量乘法方法中进行的一样, 首先计算 NAF 表示, 然后估算标量乘法。可以在运行中计 算该表示, 而不必预先计算和存储 NAF 表示。
无穷处的点需要特殊处理。对于从左至右方法, 这意味着, 应当跳过前导零。由于 从右至左处理标量 d, 因此对于从右至左标量乘法, 包括根据本发明的优选实施例的方法, 不存在上述复杂性。
根据本发明的方法的另一优点在于, 在倍增中不涉及曲线参数。这能够实现该方 法的硬编码, 对于硬件实现方式特别有用。
与从左至右标量乘法方法相反, 从右至左标量乘法方法, 包括本发明的一个优选 实施例, 能够对抗倍增攻击。 这些攻击非常强大, 因为从两个功率曲线中可以完全恢复秘密 信息。
此外, 本发明的方法可以与各种随机化技术相结合。具体地, 使用经典 DPA 对策 ( 即, 随机化的点表示或随机化的同构曲线表示 ), 不存在效率上的不利。
可以以独立或者以任何恰当的组合的形式来提供在说明书和 ( 恰当的地方 ) 和权 利要求以及附图中公开的每一个特征。以硬件来实现的特征也可以采用软件来实现, 反之
亦然。如果适用, 连接可以实现为无线连接或有线 ( 不必直接或专用的 ) 连接。
出现在权利要求中的参考数字仅作为说明之用并且不应当对权利要求的范围起 到任何限制作用。