包括与标量或求幂的乘法运算的密码学方法

文档序号:9221604阅读:577来源:国知局
包括与标量或求幂的乘法运算的密码学方法
【专利说明】包括与标量或求幂的乘法运算的密码学方法
[0001] 本发明涉及在电子设备中的椭圆曲线密码学的实现,以及更具体地涉及用于计算 与属于椭圆曲线的点的标量乘法的结果的方法
[0002] 各种已知的椭圆曲线密码学方法基于标量乘法,标量乘法的数学表达式是: [k] ?p=p[+]P[+]... [+]p(k次),P是在椭圆曲线上选择的点,k是整数,以及" [+] "是应 用于椭圆曲线的点的加法运算符。数字k是例如私有密钥,以及这个运算的结果点[k] *p, 或结果点的仿射坐标(affinecoordinates)中的一个仿射坐标,能够用作公开密钥。实际 上,在知道[k] *P和点P的坐标的情况下,找到数目k的值可能是极其困难的。例如在签名 计算期间使用这个运算,或这个运算用于生成密码学密钥,或甚至用于将消息译成密码。基 于椭圆曲线,诸如E⑶SA( "椭圆曲线数字签名算法")、E⑶H(椭圆曲线Diffie-Hellman)、 ECIES(椭圆曲线综合的密码学方案)等,通过各种密码学算法来实现这个运算。
[0003] 在椭圆曲线的点之间的运算相当于在形式Fq的伽罗华域中在这些点的坐标上的 运算,q是素数P,或2的幂(形式2m)。标量乘法运算一般被分解成一连串的对点进行加法 和双倍的运算。因此,一种众所周知的方法涉及借助于在附录I中出现的"双倍&加法"算 法A1或A1'来执行标量乘法计算。算法A1可以说是"从左到右",因为计算环路的第一步 骤从处理标量数k的最高位开始,直到最低位。算法A1'可以说是"从右到左",因为计算环 路的第一步骤从处理标量数的最低位开始,直到最高位。
[0004] 这些算法包括:针对每次迭代,即,指数的每个比特,椭圆曲线的两个相同点R的 加法,以及如果通过迭代所处理的标量的比特等于1,则点R与椭圆曲线的另一个点P的加 法。不同的函数一般用于执行这些运算中的每个运算,借助于双倍函数或"DOUBLE"函数来 执行两个相同点的加法,而借助于加法函数或"ADD"函数来执行两个不同点的加法。这个 区别是由于以下事实:当与相反的情况相比,点P和Q是相同的时,借助于DOUBLE函数能够 更加快速地计算P[+]Q。在某些坐标系统中,两个相同点的加法能够导致除以零。因此,另 一种计算模式是需要的。
[0005] 在智能卡类型的电子设备中,密码学计算一般由诸如算术协处理器或密码处理器 的特定处理器来执行。相对于生成密钥、计算签名、检查签名或执行加密或解密运算它花费 的总时间而言," [k] *P"的计算,以及更具体地椭圆曲线的点的加法的执行,占据处理器的 计算时间的大部分。使用可替代地依赖于将执行的计算的类型的DOUBLE函数或ADD函数 优化了总的加密、解密、签名或签名检查计算时间。
[0006] 然而,使用两个不同的DOUBLE和ADD函数导致由简单功率分析(SPA),即通过分 析卡的电流消耗,能够检测的信息泄露。因为DOUBLE函数具有比ADD函数短的运行时间, 因此,能够通过观察组件的电流消耗曲线来区分这两种运算。"电流消耗"意味着任何可以 观察到的物理值,该可以观察到的物理值揭示执行运算的电子组件的运算,特别是该组件 消耗的电流或电磁辐射。因此,在运行算法A1的组件的电流消耗曲线上,能够区分DOUBLE 函数的消耗轮廓和ADD函数的消耗轮廓。由ADD运算跟随的DOUBLE运算(由步骤2. 2跟 随步骤2. 1)揭示了标量数k的比特等于1,因为朝向步骤2.2的条件分支要求的是,满足条 件ks= 1。相反,由另一个DOUBLE运算跟随的DOUBLE运算(由另一个步骤2. 1跟随步骤 2. 1)揭示了标量数k的比特等于0。因此,通过电流消耗曲线的简单观察,能够陆续地发现 标量数k的比特。
[0007] 为了克服这个缺点,能够(如果可能的话)借助于仅ADD函数而不使用DOUBLE函 数来执行算法A1和A1'的步骤2. 1和2. 2。然而,因为算法A1或A1'不规整(regular), 因此电流消耗的更详细的分析使得步骤2. 1能够与步骤2. 2进行区分。实际上,在这种情 况下,当两个加法对应于两个步骤2. 1的连续执行(比特ks等于0)或对应于由步骤2. 2跟 随的步骤2. 1的执行(比特ks等于1)时,在两个连续加法之间流逝的时间不是相同的。因 此,攻击者能够在加法之间延伸的消耗曲线上进行"缩放(zoom) ",以及将看到揭露条件分 支的时间不对称以及从而揭露标量数的比特的值。
[0008] 在附录I中显示的算法A2,被称为"蒙哥马利阶梯(MontgomeryLadder) ",也使得 能够执行标量乘法计算。在每次迭代时,这个算法涉及执行两个加法,一个加法应用于两个 不同的点,以及另一个加法应用于两个相同的点,以及因此能够由减法或双倍运算来执行。 在每次迭代时,两个寄存器RpRi*的一个寄存器接收两个寄存器的内容的合,以及这两个 寄存器中的另一个寄存器接收这个寄存器的内容的双倍。如果对应于标量数k的正在进行 中的迭代的比特匕是0,则寄存器Ri接收加法的和,以及寄存器L的内容被双倍,以及如果 比特匕是1则进行相反地操作。
[0009] 这个算法提供了完全规整的优点在于:每次迭代系统性地包括两个加法,或一个 加法和双倍运算。在不是必须添加任何虚拟(du_y)运算的情况下,获得这个优点,因此不 是必须增加计算时间。
[0010] 还能够减少标量数与适当选择的椭圆曲线的点的表示的乘积的计算时间。实际 上,在仿射坐标中的双倍和加法运算包括:反演计算(inversioncalculation),反演计算 要求对应于数十倍乘法的计算时间的计算时间。一种众所周知的方法涉及:通过使用在诸 如齐次或雅可比射影坐标的射影坐标中的表示来去除这种反演计算。在齐次射影坐标中的 表示由将仿射坐标(x,y)转换成形式(X/Z,Y/Z)的坐标组成,Z不同于0。于是,魏尔斯特 拉斯椭圆曲线的方程式变成Y2Z=X3+aXZ2+bZ3。在雅可比射影坐标中的表示由将仿射坐标 (x,y)转换成形式(X/Z2,Y/Z3)的坐标组成,Z不同于0。魏尔斯特拉斯椭圆曲线的方程式 变成Y2=X3+aXZ4+bZ6。
[0011] 因此,可以期望的是进一步减少用于执行应用于椭圆曲线的点的标量乘法计算的 方法的计算时间。还可以期望的是保护此类方法免受上述隐蔽信道攻击,同时避免不利地 影响计算时间。
[0012] 一些实施例涉及在包括处理器的电子设备中实现的密码学数据处理方法,该方法 包括以下步骤:提供在伽罗华域中椭圆曲线的点,和第一整数,以及计算该点与第一数的标 量乘法,该点的坐标和第一数具有比可以由该处理器直接处理的字的大小大的大小。根据 一个实施例,该点与第一数的标量乘法计算包括以下步骤:存储一系列的多个点,每个点 从该点与2的属于一系列的整数的幂的标量乘积而产生,初始化属于椭圆曲线的所产生的 点,执行若干次迭代以考虑第一数的比特中的每个比特仅一次,每次迭代包括第一数的数 个比特的组合的计算,以及如果该组合是非零,则在所产生的点和对应于第一数的比特的 组合的比特的排名(ranks)的所存储的多个点中的一个点之间进行加法计算,以及在处理 器的输出处提供所产生的点作为该点与第一数的标量乘法计算的结果。
[0013] 根据一个实施例,当计算所产生的点时,以随机顺序或伪随机顺序来考虑第一数 的比特。
[0014] 根据一个实施例,在仿射坐标中执行在所产生的点和所存储的倍数(multiples) 之间的加法计算。
[0015] 根据一个实施例,在射影坐标中执行在所产生的点和所存储的结果之间的加法计 算。
[0016] 根据一个实施例,该点的标量倍数被存储在仿射坐标中,以及通过将具有被设置 为1的值的第三坐标加到仿射坐标,将所存储的结果转换到摄影坐标中。
[0017] 根据一个实施例,第一数和该点的坐标被NAF编码,该方法包括:针对第一数的等 于-1的每个比特或小于或等于-1的比特的组合,在所产生的点和对应于第一数的等于-1 的比特或等于或小于-1的比特的组合的排名的所存储的倍数的对立面(opposite)之间进 行加法计算。
[0018] 根据一个实施例,该方法包括生成一对私有密钥和公开密钥的阶段,包括以下步 骤:随机地选择第二数作为私有密钥,选择椭圆曲线的点作为基点,已经从基点计算了所存 储的倍数,以及使用所存储的多个点来计算基点与第二数的标量乘法的所产生的点,所产 生的点或它的坐标中的一个坐标被选择作为对应于私有密钥的公开密钥。
[0019] 根据一个实施例,该方法包括用于对消息进行签名的阶段,包括以下步骤:随机地 选择第二数,选择椭圆曲线的点作为基点,已经从基点计算了所存储的倍数,以及使用所存 储的倍数来计算来自基点与第二数的标量乘法的所产生的点,将哈希函数应用于将被签名 的消息,以及通过以下方程式来计算该消息的签名:
[0020] x=imodn
[0021] y=kT1 (H(m)+sx)modn,
[0022] 其中x和y表示消息m的签名,i是所产生的点的坐标,k是第二数,H(m)是应用 于消息m的哈希函数,s是用作私有密钥的数,以及n是最小的正整数,使得n与基点的标 量乘积
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1