用于计算椭圆曲线上的点的倍数的设备和方法.pdf

上传人:奻奴 文档编号:1278480 上传时间:2018-04-12 格式:PDF 页数:12 大小:375.66KB
返回 下载 相关 举报
摘要
申请专利号:

CN200980104838.2

申请日:

2009.02.12

公开号:

CN101971138A

公开日:

2011.02.09

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 7/72申请日:20090212授权公告日:20140820终止日期:20170212|||授权|||实质审查的生效IPC(主分类):G06F 7/72申请日:20090212|||公开

IPC分类号:

G06F7/72

主分类号:

G06F7/72

申请人:

汤姆森许可贸易公司

发明人:

马克·乔伊

地址:

法国伊西莱穆利诺

优先权:

2008.02.15 EP 08300097.6

专利代理机构:

中科专利商标代理有限责任公司 11021

代理人:

李敬文

PDF下载: PDF下载
内容摘要

一种用于从右至左通过反复的点加和点倍增来计算椭圆曲线上的点的倍数的设备(100)和方法。利用扩展的坐标集合来估算每次点倍增,通过采用扩展的坐标集合的受限集合作为输入来估算每次点加,在点倍增的每次迭代之间将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器(120)中。与现有技术解决方案相比,这使得能够加速计算。同样提供了一种计算机程序和一种计算机程序产品(140)。

权利要求书

1: 一种用于从右至左通过反复的点加和点倍增来计算椭圆曲线上的点的倍数的方法, 其特征在于, 利用扩展的坐标集合来估算每次点倍增, 通过采用所述扩展的坐标集合的受 限集合作为输入来估算每次点加, 所述方法还包括步骤 : 在进行下次点倍增之前, 将扩展集 合中不是受限集合的一部分的至少一个坐标存储在存储器 (120) 中。
2: 根据权利要求 1 所述的方法, 其中, 点倍增的输出坐标用作下次点倍增的输入坐标。
3: 根据权利要求 1 或 2 所述的方法, 其中, 通过韦氏方程 EIK : Y2 = X3+aXZ4+bZ6 给出特 征不同于 2 和 3 的椭圆曲线, 其中, a 和 b 是椭圆曲线的第一和第二参数。
4: 根据权利要求 3 所述的方法, 其中, 通过执行以下步骤来获得点倍增 : 获得坐标 T1, T2, T3 的值以及附加坐标 T4 的值, T4 被初始化为 T4 = aT34, 其中, a 是椭圆 曲线的第一参数 ; 计算 (210) 中间变量 : U = T12 ; V = T22 ; M = 3U+T4 ; W = V2 ; 以及 S = 2((T1+V)2-U-W) ; 计算 (220)T3 和 T4 的新值 : T3 = 2T2T3 ; T4 = 16WT4 ; 计算 (230)T1 的新值 : T1 = M2-2S ; 计算 (240)T2 的新值 : T2 = M(S-T1)-8W ; 以及 至少输出 (250) 坐标 T1, T2, T3 的值。
5: 根据权利要求 1 至 3 中任一项所述的方法, 其中, 使用标量的非邻近形式来执行标量 乘法。
6: 根据权利要求 1 至 3 中任一项所述的方法, 其中, 使用标量的二进制表示来执行标量 乘法。
7: 根据前述权利要求中任一项所述的方法, 其中, 使用修正的雅可比坐标来执行点倍 增, 并且使用雅可比坐标来执行点加。
8: 一种用于从右至左计算椭圆曲线上的点的倍数的设备 (100), 所述设备包括 : 处理 器 (110), 适用于点倍增和点加, 其特征在于所述处理器 (110) 适用于 : 使用扩展的坐标集合来估算每次点倍增, 以及 通过采用所述扩展的坐标集合的受限集合作为输入来估算每次点加, 所述设备 (100) 还包括 : 存储器 (120), 用于存储扩展集合中不是受限集合的一部分的 至少一个坐标, 直到下次点倍增为止。
9: 一种计算机程序, 当在处理器 (110) 上执行时, 所述计算机程序执行用于从右至左 通过反复的点倍增和点加来计算椭圆曲线上的点的倍数的方法, 其特征在于, 利用扩展的 坐标集合来估算每次点倍增, 通过采用所述扩展的坐标集合的受限集合作为输入来估算每 2 次点加, 并且所述方法在进行下次点倍增之前, 将扩展集合中不是受限集合的一部分的至 少一个坐标存储在存储器中。
10: 一种存储了计算机程序的计算机程序产品 (140), 当在处理器上执行所述计算机 程序时, 所述计算机程序执行用于从右至左通过反复的点加和点倍增来计算椭圆曲线上的 点的倍数的方法, 其特征在于, 利用扩展的坐标集合来估算每次点倍增, 通过采用所述扩展 的坐标集合的受限集合作为输入来估算每次点加, 并且所述方法在进行下次点倍增之前, 将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器中。

说明书


用于计算椭圆曲线上的点的倍数的设备和方法

    技术领域 本发明总体上涉及密码技术, 更具体地, 涉及针对椭圆曲线密码系统的从右至左 标量乘法。
     背景技术 本节旨在向读者介绍与以下描述和 / 或要求保护的本发明的各方面有关的现有 技术的各方面。相信此处的讨论有助于向读者提供背景知识, 以便更好地理解本发明的各 个方面。因此, 应当理解的是, 应据此阅读这些说明, 而不应将这些说明视为对现有技术的 认可。
     椭圆曲线密码 (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 对策 ( 即, 随机化的点表示或随机化的同构曲线表示 ), 不存在效率上的不利。
     可以以独立或者以任何恰当的组合的形式来提供在说明书和 ( 恰当的地方 ) 和权 利要求以及附图中公开的每一个特征。以硬件来实现的特征也可以采用软件来实现, 反之
     亦然。如果适用, 连接可以实现为无线连接或有线 ( 不必直接或专用的 ) 连接。
     出现在权利要求中的参考数字仅作为说明之用并且不应当对权利要求的范围起 到任何限制作用。

用于计算椭圆曲线上的点的倍数的设备和方法.pdf_第1页
第1页 / 共12页
用于计算椭圆曲线上的点的倍数的设备和方法.pdf_第2页
第2页 / 共12页
用于计算椭圆曲线上的点的倍数的设备和方法.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《用于计算椭圆曲线上的点的倍数的设备和方法.pdf》由会员分享,可在线阅读,更多相关《用于计算椭圆曲线上的点的倍数的设备和方法.pdf(12页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101971138A43申请公布日20110209CN101971138ACN101971138A21申请号200980104838222申请日2009021208300097620080215EPG06F7/7220060171申请人汤姆森许可贸易公司地址法国伊西莱穆利诺72发明人马克乔伊74专利代理机构中科专利商标代理有限责任公司11021代理人李敬文54发明名称用于计算椭圆曲线上的点的倍数的设备和方法57摘要一种用于从右至左通过反复的点加和点倍增来计算椭圆曲线上的点的倍数的设备100和方法。利用扩展的坐标集合来估算每次点倍增,通过采用扩展的坐标集合的受限集合作为输入来估。

2、算每次点加,在点倍增的每次迭代之间将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器120中。与现有技术解决方案相比,这使得能够加速计算。同样提供了一种计算机程序和一种计算机程序产品140。30优先权数据85PCT申请进入国家阶段日2010081186PCT申请的申请数据PCT/EP2009/0516572009021287PCT申请的公布数据WO2009/101147EN2009082051INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图1页按照条约第19条的修改2页CN101971138A1/2页21一种用于从右至左通过反复的点加和点倍增来计算。

3、椭圆曲线上的点的倍数的方法,其特征在于,利用扩展的坐标集合来估算每次点倍增,通过采用所述扩展的坐标集合的受限集合作为输入来估算每次点加,所述方法还包括步骤在进行下次点倍增之前,将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器120中。2根据权利要求1所述的方法,其中,点倍增的输出坐标用作下次点倍增的输入坐标。3根据权利要求1或2所述的方法,其中,通过韦氏方程EIKY2X3AXZ4BZ6给出特征不同于2和3的椭圆曲线,其中,A和B是椭圆曲线的第一和第二参数。4根据权利要求3所述的方法,其中,通过执行以下步骤来获得点倍增获得坐标T1,T2,T3的值以及附加坐标T4的值,T4被初始化为T4。

4、AT34,其中,A是椭圆曲线的第一参数;计算210中间变量UT12;VT22;M3UT4;WV2;以及S2T1V2UW;计算220T3和T4的新值T32T2T3;T416WT4;计算230T1的新值T1M22S;计算240T2的新值T2MST18W;以及至少输出250坐标T1,T2,T3的值。5根据权利要求1至3中任一项所述的方法,其中,使用标量的非邻近形式来执行标量乘法。6根据权利要求1至3中任一项所述的方法,其中,使用标量的二进制表示来执行标量乘法。7根据前述权利要求中任一项所述的方法,其中,使用修正的雅可比坐标来执行点倍增,并且使用雅可比坐标来执行点加。8一种用于从右至左计算椭圆曲线上的。

5、点的倍数的设备100,所述设备包括处理器110,适用于点倍增和点加,其特征在于所述处理器110适用于使用扩展的坐标集合来估算每次点倍增,以及通过采用所述扩展的坐标集合的受限集合作为输入来估算每次点加,所述设备100还包括存储器120,用于存储扩展集合中不是受限集合的一部分的至少一个坐标,直到下次点倍增为止。9一种计算机程序,当在处理器110上执行时,所述计算机程序执行用于从右至左通过反复的点倍增和点加来计算椭圆曲线上的点的倍数的方法,其特征在于,利用扩展的坐标集合来估算每次点倍增,通过采用所述扩展的坐标集合的受限集合作为输入来估算每权利要求书CN101971138A2/2页3次点加,并且所述方。

6、法在进行下次点倍增之前,将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器中。10一种存储了计算机程序的计算机程序产品140,当在处理器上执行所述计算机程序时,所述计算机程序执行用于从右至左通过反复的点加和点倍增来计算椭圆曲线上的点的倍数的方法,其特征在于,利用扩展的坐标集合来估算每次点倍增,通过采用所述扩展的坐标集合的受限集合作为输入来估算每次点加,并且所述方法在进行下次点倍增之前,将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器中。权利要求书CN101971138A1/6页4用于计算椭圆曲线上的点的倍数的设备和方法技术领域0001本发明总体上涉及密码技术,更具体地,涉及针。

7、对椭圆曲线密码系统的从右至左标量乘法。背景技术0002本节旨在向读者介绍与以下描述和/或要求保护的本发明的各方面有关的现有技术的各方面。相信此处的讨论有助于向读者提供背景知识,以便更好地理解本发明的各个方面。因此,应当理解的是,应据此阅读这些说明,而不应将这些说明视为对现有技术的认可。0003椭圆曲线密码ECC技术变得越来越普遍,这是由于其密钥长度明显短于用于相应安全级别的RIVESTSHAMIRADLEMANRSA密钥。然而,在选择密码系统时,较短的密钥长度不是唯一要考虑的因素;例如,还必须考虑计算时间,这是由于证明了相对长的等待会使使用密码系统的用户感到烦躁。0004尽管实际中可以在任何情。

8、况下使用椭圆曲线密码技术,但是,该密码技术特别适合于在嵌入式设备中使用,这是由于ECC需要比基于RAS的密码技术少的存储和计算能力。0005椭圆曲线密码技术的基本操作是标量乘法给定椭圆曲线上的点P以及标量D,必须计算点QDP即,PP0P,D次。主要存在两种标量乘法方法族,这两种方法族依赖于扫描标量D的方向0006从左至右方法,以及0007从右至左方法。0008通常使用从左至右方法,因为它们给出更好的性能,但是还已知这种方法提供较低的安全级别。0009至今,技术人员在某种程度上不得不在性能与安全性之间做出选择。因此应当认识到,需要一种克服现有技术中的至少一些问题的解决方案。本发明提供了一种解决方。

9、案,使现有技术的从右至左标量乘法的速度提高,从而减小两种方法族之间的性能差异。0010现在描述经典的现有技术的基于从右至左的标量乘法方法。0011设E表示特征2、3的域K上的椭圆曲线。这样的椭圆曲线可以由韦氏方程给出0012EIKY2X3AXZ4BZ6。0013椭圆曲线上点集合X,Y,Z形成阿贝耳群,其中,中立元素被称作无穷处的点是O1,1,0。投影点X,Y,Z在Z0的情况下与O相对应,否则与仿射点X/Z2,Y/Z3相对应。注意,投影点的投影坐标不是唯一的,这是由于针对K中的每个非零T,X,Y,ZT2X,T3Y,TZ。0014经典现有技术的从右至左二进制标量乘法方法采用标量D0以及具有参数A和。

10、B的椭圆曲线E上的点PX,Y,Z作为输入,并且输出点QDP。0015输入D,PX,Y,Z说明书CN101971138A2/6页50016输出DPX,Y,Z0017方法00181如果D0或Z0,则返回1,1,0并停止。00192设定X,Y,Z1,1,0以及T1,T2,T3X,Y,Z00203当D0时,执行0021A如果D是奇数,0022IDD10023IIX,Y,Z相加X,Y,Z,T1,T2,T30024BDD/20025CT1,T2,T3倍增T1,T2,T300264返回X,Y,Z0027经典现有技术的基于NAF的标量乘法方法采用标量D0以及具有参数A和B的椭圆曲线E上的点PX,Y,Z作为输入。

11、,并且输出点QDP。0028输入D,PX,Y,Z0029输出DPX,Y,Z0030方法00311如果D0或者Z0,返回1,1,0并停止。00322设定X,Y,Z1,1,0以及T1,T2,T3X,Y,Z00333当D0时,执行0034A如果D是奇数,0035IU2DDMOD40036IIDDU0037III如果U1,X,Y,Z相加X,Y,Z,T1,T2,T30038IV如果U1,X,Y,Z相加X,Y,Z,T1,T2,T30039BDD/20040CT1,T2,T3倍增T1,T2,T300414返回X,Y,Z发明内容0042在第一方面中,本发明涉及一种用于从右至左通过反复的点加POINTADDIT。

12、ION和点倍增POINTDOUBLING来计算椭圆曲线上的点的倍数MULTIPLE的方法。利用扩展的坐标集合来估算每次点倍增,通过采用扩展的坐标集合的受限集合作为输入来估算每次点加。0043在第一优选实施例中,点倍增的输出坐标用作下次点倍增的输入坐标。0044在第二优选实施例中,通过韦氏方程EIKY2X3AXZ4BZ6给出特征不同于2和3的椭圆曲线,其中,A和B是椭圆曲线的第一和第二参数。0045有利地,通过获得坐标T1,T2,T3的值以及附加坐标T4初始化为T4AT34的值来计算点倍增,其中,A是椭圆曲线的第一参数;计算中间变量UT12,VT22,M3UT4,WV2,以及S2T1V2UW;计。

13、算T3和T4的新值T32T2T3,T416WT4;计算T1的新说明书CN101971138A3/6页6值T1M22S;计算T2的新值T2MST18W;以及至少输出坐标T1,T2,T3和T4的值。0046在第三优选实施例中,使用标量的非邻近形式来执行标量乘法。0047在第四优选实施例中,使用标量的二进制表示来执行标量乘法。0048在第五优选实施例中,使用修正的雅可比坐标来执行点倍增,并且使用雅可比坐标来执行点加。0049在第二方面中,本发明涉及一种用于从右至左计算椭圆曲线上的点的倍数的设备。该设备包括适用于点倍增和点加的处理器。处理器适用于使用扩展的坐标集合来估算每次点倍增,以及通过采用扩展的坐。

14、标集合的受限集合作为输入来估算每次点加。0050在第三方面中,本发明涉及一种计算机程序,当在处理器上执行计算机程序时,该计算机程序执行用于从右至左通过反复的点倍增和点加来计算椭圆曲线上的点的倍数的方法,其特征在于,利用扩展的坐标集合来估算每次点倍增,通过采用扩展的坐标集合的受限集合作为输入来估算每次点加。0051在第四方面中,本发明涉及一种存储了计算机程序的计算机程序产品,当在处理器上执行计算机程序时,该计算机程序执行用于从右至左通过反复的点倍增和点加来计算椭圆曲线上的点的倍数的方法,其特征在于,利用扩展的坐标集合来估算每次点倍增,通过采用扩展的坐标集合的受限集合作为输入来估算每次点加。附图说。

15、明0052参照附图,作为非限制示例,描述本发明的优选特征,在附图中0053图1示出了根据本发明优选实施例的进行椭圆曲线上的计算的设备;以及0054图2示出了根据本发明优选实施例的点倍增方法。具体实施方式0055图1示出了根据本发明优选实施例的用于进行椭圆曲线上的计算的设备100,具体用于执行点倍增和标量乘法。设备100包括至少一个适用于执行计算机程序的处理器110下文中为“处理器”,该计算机程序执行下文描述的方法的计算。应当注意,处理器110还可以以硬件来实现,或者以软件和硬件的组合方式来实现。设备100还包括适用于存储数据例如,来自处理器110的中间计算结果的存储器120。设备100还包括用。

16、于与其他设备未示出交互的至少一个接口130下文中为“接口”。图1还示出了用于存储计算机程序的计算机程序产品140,例如,CDROM,当在处理器110上执行该计算机程序时,该计算机程序执行根据本发明的方法的优选实施例的标量乘法。0056本发明的主要构思是使用附加坐标T4,使用该附加坐标T4来高速缓存在从右至左标量乘法方法中常规点倍增运算中涉及的值。在迭代之间,将附加坐标T4存储在存储器120中。由于反复执行现有技术方法的步骤3C中的倍增,并且在方法的其他地方也不进行修正,因此,高速缓存使得能够加速该方法,虽然这是以使用额外存储空间为代价来实现的。因此,本发明旨在找到速度即,所执行的运算具体地,乘。

17、法的次数与资源具体地,存储器的使用之间的良好权衡。0057图2示出了根据本发明优选实施例的点倍增方法。有利地,该方法替换现有技术方法中的倍增步骤3C。该方法的输入是值T1,T2,T3和T4,其中,T4在该方法的第一次迭代说明书CN101971138A4/6页7中被初始化为AT34步骤200。然后定义多个有帮助的中间变量,步骤2100058UT120059VT220060M3UT40061WV20062S2T1V2UW0063然后,在步骤220中,计算T3和T4的新值0064T32T2T30065T416WT40066如上所述,有利地将T4的值存储在存储器中,直到在下次迭代时需要该值为止。006。

18、7在步骤230中,计算T1的新值0068T1M22S0069最后,在步骤240中,计算剩下的变量T2的新值0070T2MST18W;0071现在,4个输出变量表示已经倍增的点,这些变量可以是步骤250的输出,以用于标量乘法方法中的其他步骤中的其他计算。如果有必要,针对标量乘法方法的其他迭代来重复步骤210250。将认识到,不一定要输出T4的值,这是由于该值仅用于点倍增;这假定将T4的值存储在存储器中,直到点倍增的下次迭代。0072本发明的方法的优点在于,使得能够提高性能,特别是在计算速度方面。0073表1给出了针对各种系统的点倍增的成本,表2给出针对点加的成本。这些表是基于DJBERNSTEI。

19、N和TLANGE“FASTERADDITIONANDDOUBLINGONELLIPTICCURVES”INADVANCESINCRYPTOLOGYASIACRYPT2007,LNCS,PP2950,SPRINGERVERLAG,2007。符号M、S、C分别代表“乘法”、“平方”和“与常数相乘”。最后两列给出了,针对,1,1和,08,0,当SM和CM时的乘法的次数。00740075表1点倍增的成本0076说明书CN101971138A5/6页80077表2点加的成本0078可以看出,当针对点表示使用雅可比投影坐标时,可以获得最佳总体性能。设I表示D的比特长度。在这种情况下,如果利用经典的基于NA。

20、F的从右至左二进制标量乘法方法估算QDP,则预期的运算次数大约为I1M8S1CI/311M5S,假定SCM,该方程等于153IM。0079然而,根据本发明的方法可以使用一种类型的坐标来将点相加,并且使用另一类型的坐标来将点倍增。例如,可以使用雅可比坐标进行点加,使用修正的雅可比坐标进行点倍增。对于从左到右标量乘法方法,这在以前是效率低的,甚至是不可能的。所有这些方法共同使用累加器,反复使该累加器加倍,并且反复向该累加器添加输入点或输入点的倍数。这意味着,针对点倍增和点加例程的输出表示必须相同,即,累加器的坐标系统必须相同。0080根据本发明的方法的成本因此大约为I3M5SI/311M5S,在同。

21、样假定SCM的情况下,该方程等于133IM。因此,增益是加速因子133。0081尽管通过使用附加临时变量,以进一步存储器需求为代价,能够加速经典方法,但是根据本发明的方法仍更快速,这是由于加速的经典方法估算QDP的成本大约是I3M5SI/311M7S1C,等于143IM。因此,根据本发明的方法仍更快速。0082通常利用标量D来执行椭圆曲线上的标量乘法,标量D以其非邻近形式NAF来表示,这是由于可以容易推断出点的逆,并不需要额外存储器需求。由于NAF是从右至左计算的,因此在从右至左标量乘法包括根据本发明优选实施例的方法中,不需要像在从左至右标量乘法方法中进行的一样,首先计算NAF表示,然后估算标。

22、量乘法。可以在运行中计算该表示,而不必预先计算和存储NAF表示。0083无穷处的点需要特殊处理。对于从左至右方法,这意味着,应当跳过前导零。由于从右至左处理标量D,因此对于从右至左标量乘法,包括根据本发明的优选实施例的方法,不存在上述复杂性。0084根据本发明的方法的另一优点在于,在倍增中不涉及曲线参数。这能够实现该方法的硬编码,对于硬件实现方式特别有用。0085与从左至右标量乘法方法相反,从右至左标量乘法方法,包括本发明的一个优选实施例,能够对抗倍增攻击。这些攻击非常强大,因为从两个功率曲线中可以完全恢复秘密信息。0086此外,本发明的方法可以与各种随机化技术相结合。具体地,使用经典DPA对。

23、策即,随机化的点表示或随机化的同构曲线表示,不存在效率上的不利。0087可以以独立或者以任何恰当的组合的形式来提供在说明书和恰当的地方和权利要求以及附图中公开的每一个特征。以硬件来实现的特征也可以采用软件来实现,反之说明书CN101971138A6/6页9亦然。如果适用,连接可以实现为无线连接或有线不必直接或专用的连接。0088出现在权利要求中的参考数字仅作为说明之用并且不应当对权利要求的范围起到任何限制作用。说明书CN101971138A1/1页10图1图2说明书附图CN101971138A1/2页111一种用于从右至左通过反复的点加和点倍增来计算椭圆曲线上的点的倍数的方法,其特征在于,利用。

24、扩展的投影坐标集合来估算每次点倍增,通过采用所述扩展的投影坐标集合的受限集合作为输入来估算每次点加,所述方法还包括步骤在进行下次点倍增之前,将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器120中。2根据权利要求1所述的方法,其中,点倍增的输出坐标用作下次点倍增的输入坐标。3根据权利要求1或2所述的方法,其中,通过韦氏方程EIKY2X3AXZ4BZ6给出特征不同于2和3的椭圆曲线,其中,A和B是椭圆曲线的第一和第二参数。4根据权利要求3所述的方法,其中,通过执行以下步骤来获得点倍增获得坐标T1,T2,T3的值以及附加坐标T4的值,T4被初始化为T4AT34,其中,A是椭圆曲线的第一参。

25、数;计算210中间变量UT12;VT22;M3UT4;WV2;以及S2T1V2UW;计算220T3和T4的新值T32T2T3;T416WT4;计算230T1的新值T1M22S;计算240T2的新值T2MST18W;以及至少输出250坐标T1,T2,T3的值。5根据权利要求1至3中任一项所述的方法,其中,使用标量的非邻近形式来执行标量乘法。6根据权利要求1至3中任一项所述的方法,其中,使用标量的二进制表示来执行标量乘法。7根据前述权利要求中任一项所述的方法,其中,使用修正的雅可比坐标来执行点倍增,并且使用雅可比坐标来执行点加。8一种用于从右至左计算椭圆曲线上的点的倍数的设备100,所述设备包括处。

26、理器110,适用于点倍增和点加,其特征在于所述处理器110适用于使用扩展的投影坐标集合来估算每次点倍增,以及通过采用所述扩展的投影坐标集合的受限集合作为输入来估算每次点加,所述设备100还包括存储器120,在进行下次点倍增之前,用于存储扩展集合中不是受限集合的一部分的至少一个坐标。9一种计算机程序,当在处理器110上执行时,所述计算机程序执行用于从右至左通过反复的点倍增和点加来计算椭圆曲线上的点的倍数的方法,其特征在于,利用扩展的投影坐标集合来估算每次点倍增,通过采用所述扩展的投影坐标集合的受限集合作为输入权利要求书按照条约第19条的修改CN101971138A2/2页12来估算每次点加,并且所述方法在进行下次点倍增之前,将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器中。10一种存储了计算机程序的计算机程序产品140,当在处理器上执行所述计算机程序时,所述计算机程序执行用于从右至左通过反复的点加和点倍增来计算椭圆曲线上的点的倍数的方法,其特征在于,利用扩展的投影坐标集合来估算每次点倍增,通过采用所述扩展的投影坐标集合的受限集合作为输入来估算每次点加,并且所述方法在进行下次点倍增之前,将扩展集合中不是受限集合的一部分的至少一个坐标存储在存储器中。权利要求书按照条约第19条的修改。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1