椭圆曲线密码学过程的安全执行的制作方法

文档序号:33324169发布日期:2023-03-03 22:15阅读:29来源:国知局

1.本发明涉及用于椭圆曲线密码学过程的安全执行的方法,以及用于实行这样的方法的系统和计算机程序。


背景技术:

2.有限域f上的椭圆曲线是众所周知的。对于定义椭圆曲线的系数,椭圆曲线由满足的中的点(x,y)以及被称为无穷远处的点的点组成。椭圆曲线形成阿贝尔群,其中无穷远处的点充当群的恒等元素,并且其中群具有加法运算符+,用于将椭圆曲线的两个点相加在一起以形成椭圆曲线的另一个点。加法运算符的细节是众所周知的,并且因此在本文将不详细描述(然而,参见例如https://en.wikipedia.org/wiki/elliptic_curve,其全部公开内容通过参考并入本文)。
3.椭圆曲线点v(即椭圆曲线的点或椭圆曲线上的点)与正整数k相乘以产生椭圆曲线点kv——即标量乘法——是众所周知的(例如,参见https://en.wikipedia.org/wiki/elliptic_curve_point_multiplication,其全部公开内容通过参考并入本文)。特别地,kv被定义为将点v加到自身上另外k-1次,即。
4.椭圆曲线用于密码学目的是众所周知的。为此,椭圆曲线密码学过程的所谓“域参数”在参与椭圆曲线密码学过程的各方之间达成一致。典型地,域参数将包括:(1)有限域f的标识;(2)有限域f上椭圆曲线的标识(例如,为方程指定系数);(3)椭圆曲线的“基点”或“生成点”g;以及(4)点g的阶,即对于的最小正整数n——这里,n通常是素数。对于有限域f的标识,例如,如果f是伽罗瓦域,则这可以涉及指定素数p,或者如果f是伽罗瓦域,则指定f的次数τ和域多项式。应当领会的是,可以指定附加的域参数(例如,辅助因子h,即椭圆曲线除以n的阶),并且可以以不同的方式表示域参数。
5.椭圆曲线密码学过程的一些示例阐述如下:示例1:椭圆曲线共享秘密建立椭圆曲线共享秘密建立的示例,即椭圆曲线diffie-hellman (ecdh)阐述如下(其更多细节可在例如在https://en.wikipedia.org/wiki/elliptic-curve_diffie-hellman找到,其全部公开内容通过参考并入本文)。应当领会的是,使用椭圆曲线执行共享秘密建立的其他方法是可能的。
6.假设alice和bob希望建立共享秘密。如提及的,他们将首先就域参数达成一致。alice具有私钥da,它是在[1,n-1]范围内随机选取的整数;alice的对应公钥是点q
a = dag。同样,bob具有私钥d
b ,它是在[1,n-1]范围内随机选取的整数;bob的对应公钥是点q
b = dbg。
[0007]
alice可以生成点。同样,bob可以生成点
。因此,alice和bob二者均可以通过仅暴露他们的公钥(并且就域参数达成一致)来计算p
x
,并且可以使用p
x
作为共享秘密(例如,来为密码学过程生成另外的密钥)。
[0008]
示例2:椭圆曲线加密和解密椭圆曲线加密和解密的示例阐述如下(更多细节参见,例如,https://en.wikipedia.org/wiki/integrated_encryption_scheme,其全部公开内容通过参考并入本文)。应当领会的是,使用椭圆曲线执行加密和解密的其他方法是可能的。
[0009]
假设alice希望给bob发送消息m。如提及的,他们将首先就域参数达成一致。bob具有私钥d
b ,它是在[1,n-1]范围内随机选取的整数;bob的对应公钥是点q
b = dbg。
[0010]
alice可以如下对消息m进行加密:(1)生成随机整数并计算w=rg。(2)生成p=rqb。如果p=,则返回到(1)。否则,设置s=p
x
,其中。(3)使用密钥推导函数(如本技术领域中已知的)来推导基于s的对称密钥ke。
[0011]
(4)使用对称加密算法e(例如aes加密),以使用对称密钥ke对消息m进行加密,从而产生c=e(m,ke)。(5)将w和c作为密文提供给bob。
[0012]
bob可以如下对密文进行解密:(1)生成s=p
x
,其中(注意(注意),使得知道私钥d
b 并且也知道alice提供的点w的bob可以生成相同的字段元素s。如果p=,则解密失败。(2)使用与alice相同的密钥推导函数,以基于s推导相同的对称密钥ke。(3)使用与alice使用的对称加密算法e相对应的对称解密算法e-1
来使用对称密钥ke解密c,从而产生。
[0013]
如众所周知的,也有可能的是包括消息完整性和/或认证措施作为该过程的一部分。
[0014]
示例3:椭圆曲线数字签名椭圆曲线数字签名生成和验证的示例,即椭圆曲线数字签名算法(ecdsa)阐述如下(更多细节参见,例如,https://en.wikipedia.org/wiki/elliptic_curve_digital_signature_algorithm,其全部公开内容通过参考并入本文)。应当领会的是,使用椭圆曲线执行数字签名生成和验证的其他方法是可能的。
[0015]
假设alice希望给bob发送签名消息m。如提及的,他们将首先就域参数达成一致。alice具有私钥da,它是在[1,n-1]范围内随机选取的整数;alice的对应公钥是点qa=dag。
[0016]
alice可以如下为消息m生成签名:(1)使用散列函数h(例如sha-2)来生成消息m的散列h=h(m)。(2)将z设为h最左边的αn位,其中αn为n的位长度。(3)生成随机整数(4)计算点(x1,y1)=kg。(5)计算。如果r=0,则返回到(3)。
[0017]
(6)计算。如果s=0,则返回到(3)。
[0018]
(7)签名是一对(r,s)。
[0019]
bob可以如下验证alice的签名(r,s)对应于消息m和alice的公钥qa:(1)检查qa是椭圆曲线的有效点,即:(i);(ii)qa位于曲线上;和(iii)。(2)检查r和s是否为[1,n-1]范围内的整数。如果不是,则签名无效。(3)使用与alice相同的散列函数h(例如sha-2)来生成消息m的散列h=h(m)。(4)计算和,其中z是h最左边的αn位,其中αn是n的位长度。(5)计算椭圆曲线的点。(6)如果,则签名无效。(7)如果,则签名有效;否则签名无效。
[0020]
这些椭圆曲线密码学过程的密码安全性是基于计算上求解不可行的椭圆曲线离散对数问题(ecldp)。特别地,ecldp是:给定椭圆曲线点p和q,找到整数k,使得kp=q。给定该问题的计算难度,例如,攻击者基于公钥qa和生成点g(其中qa=dag)来确定alice的私钥da是不可行的。
[0021]
然而,重要的是椭圆曲线密码学过程实际上也是以安全的方式实现的。“白盒”环境是软件项的执行环境,在该环境中,软件项的攻击者被假定对正被操作的数据(包括中间值)、存储器内容和软件项的执行/处理流程具有完全的访问权和可见性。此外,在白盒环境中,假定攻击者能够修改正被操作的数据、存储器内容和软件项的执行/处理流程,例如通过使用调试器——以此方式,攻击者可以试验并试图操纵软件项的操作,目的是规避最初预期的功能性和/或标识秘密信息和/或用于其他目的。事实上,人们甚至可以假定攻击者知悉软件项正在执行的基础算法。然而,软件项可能需要使用秘密信息(例如,一个或多个密码密钥),其中该信息需要对攻击者保持隐藏。类似地,将合期望的是防止攻击者修改软件项的执行/控制流程,例如防止攻击者迫使软件项在决策块之后采取一个执行路径而不是合法的执行路径。
[0022]
现在已知和理解了许多块密码(诸如aes)的白盒实现。然而,由于所涉及的数据操作的性质和被处理的数据字的大小,公钥/私钥加密算法的白盒实现、并且特别是椭圆曲线密码学过程已经被证明开发起来更具挑战性。


技术实现要素:

[0023]
根据本发明的第一方面,提供了一种用于执行椭圆曲线密码学过程以基于输入数据生成输出数据的方法,所述椭圆曲线密码学过程基于有限域上的椭圆曲线,其中输出数据的生成包括基于椭圆曲线的预定点v和正r位整数k生成椭圆曲线的第一点,所述第一点至少部分基于椭圆曲线的点kv,其中,并且对于每个,br是k的位位置(bit position)r处k的位值,其中所述方法包括:根据k的r个位位置到t组位位置的划分,存储对应的查找表l
t
,其对于用于向个位位置分配相
应位值xs的个可能选项中的每个,具有至少部分基于椭圆曲线的点的椭圆曲线的对应点;获得k;以及将第一点确定为,其中l
t
是椭圆曲线的点,所述点在查找表l
t
中对应于用于向个位位置分配对应位值bs的选项。
[0024]
根据本发明的第二方面,提供了一种系统,所述系统被布置成执行椭圆曲线密码学过程以基于输入数据生成输出数据,所述椭圆曲线密码学过程基于有限域上的椭圆曲线,其中输出数据的生成包括基于椭圆曲线的预定点v和正r位整数k生成椭圆曲线的第一点,所述第一点至少部分基于椭圆曲线的点kv,其中,并且对于每个,br是k的位位置r处k的位值,其中所述系统包括:存储器,所述存储器根据k的r个位位置到t组位位置的划分,存储对应的查找表l
t
,其对于用于向个位位置分配相应位值xs的个可能选项中的每个,具有至少部分基于椭圆曲线的点的椭圆曲线的对应点;以及一个或多个处理器,被布置成:获得k;以及将第一点确定为,其中l
t
是椭圆曲线的点,所述点在查找表l
t
中对应于用于向个位位置分配对应位值bs的选项。
[0025]
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点kv,并且对于每个查找表以及对于用于向个位位置分配相应位值xs的个可能选项中的每个,存储在查找表l
t
中的椭圆曲线的对应点是椭圆曲线的点。
[0026]
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点,其中是预定非负整数,其中对于每个查找表以及对于用于向个位位置分配相应位值xs的个可能选项中的每个,存储在查找表l
t
中的椭圆曲线的对应点是椭圆曲线的点。
[0027]
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点,其中是预定非负r位整数,其中,并且对于每个,是在的位位置r处的位值,其中对于每个查找表以及对于用于向个位位置分配相应位值xs的个可能选项中的每个,存储在查找表l
t
中的椭圆曲线的对应点是椭圆曲线的点。
[0028]
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点k(v+m),其中m是椭圆曲线的预定点,其中对于每个查找表以及对于用于向个位位置分配相应位值xs的个可能选项中的每个,存储在查找表l
t
中的椭圆曲线的对应点是椭圆曲线的点。
[0029]
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点kv+m,其中m是椭圆曲线的预定点,其中对于每个查找表以及对于用于向个位位
置分配相应位值xs的个可能选项中的每个,存储在查找表l
t
中的椭圆曲线的对应点是椭圆曲线的点。
[0030]
在本发明的第一和第二方面的一些实施例中,其中椭圆曲线的第一点是点,其中m是椭圆曲线的预定点,并且是预定非负整数,其中对于每个查找表以及对于用于向个位位置分配相应位值xs的个可能选项中的每个,存储在查找表l
t
中的椭圆曲线的对应点是椭圆曲线的点。
[0031]
在本发明的第一和第二方面的上述实施例中,和/或m可以是由第三方维护的秘密。
[0032]
在本发明的第一和第二方面的一些实施例中,所有t组位位置具有相同数量的位位置。在一些这样的情况下,所有t组位位置具有4个位位置。
[0033]
在本发明的第一和第二方面的一些实施例中,对于t组位位置中的每一组,p
t
的位位置是连续的。
[0034]
在本发明的第一和第二方面的一些实施例中,密码学过程包括以下各项中的一个或多个:椭圆曲线加密;椭圆曲线解密;椭圆曲线共享秘密建立;椭圆曲线数字签名生成;椭圆曲线数字签名验证。
[0035]
根据本发明的第三方面,提供了一种计算机程序,当由一个或多个处理器执行时,所述计算机程序使得一个或多个处理器实行本发明第一方面的方法或其任何实施例。该计算机程序可以存储在一个或多个存储介质上。
附图说明
[0036]
现在将参考附图仅以示例的方式描述本发明的实施例,其中:图1示意性地图示了计算机系统的示例;和图2是图示了用于执行椭圆曲线密码学过程的方法的流程图。
具体实施方式
[0037]
在下面的描述中和附图中,描述了本发明的某些实施例。然而,应当领会的是,本发明不限于所描述的实施例,并且一些实施例可能不包括下面描述的所有特征。然而,应当显而易见的是,在不脱离如所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以在本文进行各种修改和改变。
[0038]
1-系统概述图1示意性地图示了计算机系统100的示例。系统100包括计算机102。计算机102包括:存储介质104、存储器106、处理器108、接口110、用户输出接口112、用户输入接口114和网络接口116,它们可以通过一个或多个通信总线118链接在一起。
[0039]
存储介质104可以是任何形式的非易失性数据存储设备,诸如硬盘驱动器、磁盘、固态存储设备、光盘、rom等中的一个或多个。存储介质104可以存储供处理器108执行以便计算机102运作的操作系统。存储介质104还可以存储一个或多个计算机程序(或者软件或
者指令或者代码)。
[0040]
存储器106可以是适于存储数据和/或计算机程序(或软件或指令或代码)的任何随机存取存储器(存储单元或易失性存储介质)。
[0041]
处理器108可以是适于执行一个或多个计算机程序(诸如存储在存储介质104上和/或存储器106中的那些)的任何数据处理单元,其中一些可以是根据本发明实施例的计算机程序,或者是当由处理器108执行时使得处理器108实行根据本发明实施例的方法并将系统100配置为根据本发明实施例的系统的计算机程序。处理器108可以包括单个数据处理单元或者并行地单独或彼此协作地操作的多个数据处理单元。处理器108在实行本发明实施例的数据处理操作时,可以将数据存储到存储介质104和/或存储器106和/或从存储介质104和/或存储器106读取数据。
[0042]
接口110可以是用于向计算机102外部或可从计算机102移除的设备122提供接口的任何单元。设备122可以是数据存储设备,例如光盘、磁盘、固态存储设备等中的一个或多个。设备122可以具有处理能力——例如,设备可以是智能卡。接口110因此可以根据它从处理器108接收的一个或多个命令从设备122访问数据或者向设备122提供数据或者与设备122对接。
[0043]
用户输入接口114被布置成接收来自系统100的用户或操作者的输入。用户可以经由系统100的一个或多个输入设备来提供该输入,所述输入设备诸如连接到用户输入接口114或与之通信的鼠标(或其他定点设备)126和/或键盘124。然而,应当领会的是,用户可以经由一个或多个附加或替代输入设备(诸如触摸屏)向计算机102提供输入。计算机102可以将经由用户输入接口114从输入设备接收的输入存储在存储器106中,以供处理器108后续访问和处理,或者可以将其直接传递给处理器108,使得处理器108可以相应地响应用户输入。
[0044]
用户输出接口112被布置成向系统100的用户或操作员提供图形/视觉和/或音频输出。这样,处理器108可以被布置成指示用户输出接口112形成表示期望的图形输出的图像/视频信号,并将该信号提供给连接到用户输出接口112的系统100的监视器(或屏幕或显示单元)120。附加地或可替代地,处理器108可以被布置成指示用户输出接口112形成表示期望音频输出的音频信号,并将该信号提供给连接到用户输出接口112的系统100的一个或多个扬声器121。
[0045]
最后,网络接口116为计算机102提供从一个或多个数据通信网络下载数据和/或将数据上传到一个或多个数据通信网络的功能性。
[0046]
应当领会的是,图1中图示并在上面描述的系统100的架构仅仅是示例性的,并且具有不同架构(例如具有与图1中所示相比更少的组件或者具有与图1中所示相比附加的和/或替代的组件)的其他计算机系统100可以用于本发明的实施例中。作为示例,计算机系统100可以包括以下各项中的一个或多个:个人计算机;服务器计算机;移动电话;平板计算机;膝上型计算机;电视机;机顶盒;游戏控制台;其他移动设备或消费电子设备;等等。附加地,可能的是计算机系统100的一些组件不位于计算机102中而是作为经由网络接口116连接到计算机102的计算机网络的一部分。附加地或可替代地,计算机系统100可以包括多个计算机102,例如在诸如计算资源云系统的计算机网络中。
[0047]
2-具有掩蔽曲线点的椭圆曲线密码学过程
椭圆曲线密码学过程(诸如早前阐述的示例)可能涉及执行椭圆曲线标量乘法,即:给定椭圆曲线点v和非负整数k,计算椭圆曲线点kv。例如,点v可以是生成点g或公钥q。当实现密码学过程时(例如,作为软件实现的一部分),可能的是以掩蔽的方式来这样做。掩蔽可以采取各种形式,例如(a)对于某个正整数(其可以保密),使用点而不是点v,从而计算;(b)对于某个正整数(其可以保密),计算点而不是点kv;(c)对于某个椭圆曲线点,计算点或而不是点kv;(d)上述各项的某种组合;等。
[0048]
示例1-续:椭圆曲线共享秘密建立继续进行早前阐述的椭圆曲线共享秘密建立的示例,这可以以多种方式实现/适应,如下面所阐述的:
· 对于某个正整数,使用点而不是点v来实现alice的实现使用da的模糊版本,即,而不是da,其中。在这里,是由第三方保密的正整数(例如,第三方可能参与了私钥da的初始生成,并且可能生成(并且保密)了值,并且可能向alice提供了而不是da)。因此,alice的实现更安全,因为它不存储或显露实际的私钥da。当bob想要将他的公钥qb发送给alice时,bob将qb传递给第三方,并且第三方向alice提供(或标识)qb的模糊版本,即点,或者第三方使得alice能够实现函数(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。alice然后可以计算。bob可以计算dbqa以产生与alice相同的结果(即daqb)。这可以直接基于db和qa,或者以类似于alice的方式,使用d
b 的模糊版本(其可能基于的不同值)和qa的对应模糊版本。
· 对于某个正整数,使用点而不是点kv的计算来实现alice的实现使用da的模糊版本,即,而不是da,其中。在这里,是由第三方保密的正整数(例如,第三方可能参与了私钥da的初始生成,并且可能生成(并且保密)了值,并且可能向alice提供了而不是da)。因此,alice的实现更安全,因为它不存储或显露实际的私钥da。当bob想要将他的公钥qb发送给alice时,bob将qb传递给第三方,并且第三方使得alice能够实现函数(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。alice然后可以计算。bob可以计算dbqa以产生与alice相同的结果(即daqb)。这可以直接基于db和qa,或者以类似于alice的方式,使用d
b 的模糊版本(其可能基于的不同值)和qa的对应模糊
版本。
· 对于某个椭圆曲线点,使用点而不是点kv的计算来实现alice的实现使用da的模糊版本,即,而不是da,其中。在这里,是由第三方保密的正整数(例如,第三方可以已经参与了私钥da的初始生成,并且可以已经生成(并且保密)了值,并且可以已经向alice提供了而不是da)。因此,alice的实现更安全,因为它不存储或显露实际的私钥da。 当bob想要将他的公钥qb发送给alice时,bob将qb传递给第三方,并且第三方使得alice能够实现函数(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。alice然后可以计算。bob可以计算dbqa+m以产生与alice相同的结果(即daqb+m)。这可以直接基于db和qa,或者以类似于alice的方式,使用d
b 的模糊版本(其可以基于的不同值)和qa的对应模糊版本。
[0049]
示例2-续:椭圆曲线加密和解密继续早前阐述的椭圆曲线加密和解密的示例,这可以以多种方式实现/适应,如下面所阐述的:
· 对于某个正整数,使用点而不是点v来实现bob的实现使用d
b 的模糊版本,即,而不是d
b ,其中。在这里,是由第三方保密的正整数(例如,第三方可以已经参与了私钥d
b 的初始生成,并且可以已经生成(并且保密)了值,并且可以已经向bob提供了而不是d
b )。因此,bob的实现更安全,因为它不存储或显露实际的私钥d
b 。当bob想要将他的公钥qb发送给alice时,bob将qb传递给第三方,并且第三方向alice提供(或标识)qb以及g的模糊版本,即向alice提供(或标识)点,或者第三方使得alice能够实现函数(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。可替代地,第三方可以已经向bob提供(或标识)了(或函数f的代码或表),使得bob可以直接向alice提供这些,而不是使用第三方向alice进行该提供。加密步骤(1)然后变成alice生成随机整数并计算。在加密步骤(5)处,alice将发送给bob而不是w。 解密步骤(1)然后变成bob生成s=p
x
,其中(注意,如期望的)。
· 对于某个正整数,使用点而不是点v来实现bob的实现使用d
b 的模糊版本,即,而不是d
b ,其中。在这里,是由第三方保密的正整数(例如,第三方可以已经参与了私钥d
b 的初始生成,并且可以已经生
成(并且保密)了值,并且可以已经向bob提供了而不是d
b )。因此,bob的实现更安全,因为它不存储或显露实际的私钥d
b 。当bob想要将他的公钥qb发送给alice时,bob将qb传递给第三方,并且第三方向alice提供(或标识)qb的模糊版本(即点),或者第三方使得alice能够实现函数(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。可替代地,第三方可能已经向bob提供(或标识)了(或函数f的代码或表),使得bob可以直接向alice提供这些,而不是使用第三方向alice进行该提供。然后,加密步骤(2)包括alice生成,其中后续使用而不是p。解密步骤(1)然后变成bob生成s=p
x
,其中(注意,如期望的)。当然,这可以与先前的椭圆曲线加密和解密的掩蔽实现相组合。
[0050]
示例3-续:椭圆曲线数字签名继续早前阐述的椭圆曲线数字签名的示例,这可以以各种方式实现/适应,如下面所阐述的:
· 对于某个正整数,使用点而不是点v来实现alice的实现使用da的模糊版本,即,而不是da,其中。在这里,是由第三方保密的正整数(例如,第三方可以已经参与了私钥da的初始生成,并且可以已经生成(并且保密)了值,并且可以已经向alice提供了而不是da)。因此,alice的实现更安全,因为它不存储或显露实际的私钥da。 当alice想要将她的公钥qa发送给bob时,alice将qa传递给第三方,并且第三方向bob提供(或标识)qa的模糊版本(即点),或者第三方使得bob能够实现函数(例如,通过提供代码来实现该函数,或者如后面更详细描述的,通过提供合适的查找表集合)。可替代地,第三方可能已经向alice提供(或标识)了(或函数f的代码或表),使得alice可以直接向bob提供这些,而不是使用第三方向bob进行该提供。签名步骤(6)然后变成计算。如果s=0,则返回(3)。验证步骤(1)然后变成检查的有效性。验证步骤(5)然后变成计算椭圆曲线的点。这里,我们注意到:
如期望的那样。
[0051]
3-安全椭圆曲线乘法下面阐述了一种用于执行安全椭圆曲线标量乘法的方法,即:给定椭圆曲线点v和非负整数k,安全计算椭圆曲线点kv。例如,椭圆曲线点v可以是生成点g,其形成椭圆曲线密码学过程的域参数的一部分,但是这仅仅是椭圆曲线点v的一个示例。
[0052]
整数k具有r位(或可以由r位表示)。因此,在k的二进制表示中有r个位位置。在下文中,位位置应是位置,其中位位置0是最低有效位的位置,并且位位置r-1是最高有效位的位置。然而,应当领会的是,这不是必需的,并且下面阐述的等式/公式可以相应地适应于其他位位置编号。k的位的值是,其中br=0或1,并且br是位位置r的值,使得。
[0053]
对于整数t》1,k的这些r个位位置可以被划分(或分割或分隔)成t组位位置(或t个集合)。每组分别具有个位位置,也就是,即。t组位位置是不重叠的位位置组,它们一起跨越k的r个位位置的完整集合,即如果并且,则。因此。
[0054]
值得注意的是,,使得。
[0055]
现在,由于每组具有个位位置,因此存在用于将相应的位值xs(其中xs=0或1)分配给个位位置的个可能选项。定义,然后对于每组,可以构造对应的查找表l
t
,其中l
t
对于用于向个位位置分配相应位值xs的个可能选项中的每个,具有对应椭圆曲线点。例如,如果如果,则,并且在查找表l
t
中存储有8个点,它们对应于用于将位值分配给位x4、x5、x
10
的三元组的8个可能选项。
[0056]
因此,给定用于向个位位置分配相应位值xs(其中xs=0或1)的任何特定选
项,查找表l
t
可以用于查找(或获得或标识)对应椭圆曲线点。例如,
t
可以为查找表l编索引,使得对于由具有位二进制表示的值表示的输入,查找表l
t
将该输入值映射到椭圆曲线点。可替代地,查找表l
t
可以被索引,使得对于的输入值,查找表l
t
将该输入值映射到椭圆曲线点。应当领会的是,查找表l
t
也可以以其他方式被索引或配置。
[0057]
基于上文,椭圆曲线点kv然后可以确定为,即,其中l
t
是椭圆曲线的点,该点在查找表l
t
中对应于用于向个位位置分配对应位值bs的选项。
[0058]
例如,假设r=256,t=64,并且对于,,即对于和,。在该示例中,k的二进制表示可以被视为64个4位块的串联,那些块中的每一个表示4位值(对于),使得。然后可以生成(或配置)查找表l
t ()以将k
t
的16个可能值映射到相应的点。于是,,其中l
t
是在查找表l
t
中对应于k
t
的椭圆曲线的点,即用于向个位位置分配对应位值bs的选项。
[0059]
应当领会的是,虽然以上示例将位位置划分为相等大小的位位置组(即,每组具有4个位位置),但是这不是必需的。一些实施例可以对每组位位置施加最小和/或最大的大小。
[0060]
同样,应当领会的是,虽然以上示例将位位置划分为连续位位置的组,但是这也不是必须的,即组中的位位置不需要连续。
[0061]
在一些实施例中,当生成查找表时,可以随机确定划分(潜在地服从每个划分p
t
的大小的最小和/或最大阈值)。
[0062]
在一些实施例中,对于位位置组的数量t可以有最小阈值,其中相应地确定组(以及可能的组的大小),以便满足(至少)数量t的该最小阈值。
[0063]
如上面第2节中所讨论的,在一些实施例中,可能合期望的是实际计算要保持秘密的某个预定非负整数的点。在该情况下,可以被不同地定义为可以被不同地定义为。然后可以根据的该替代定义来生成查找表。
[0064]
如上面第2节中所讨论的,在一些实施例中,可能合期望的是实际计算要保持秘密的某个预定非负r位整数的点。的位值是,其中=0或1,并且是位位置r的值,使得。在该情况下,可以被不同地定义为。然后可以根据的该替代定义来生成查找表义来生成查找表。
[0065]
如上面第2节中所讨论的,在一些实施例中,可能合期望的是实际计算要保持秘密的某个预定椭圆曲线点m的点。在该情况下,可以被不同地定义为。然后可以根据的该替代定
义来生成查找表。
[0066]
如上面第2节中所讨论的,在一些实施例中,可能合期望的是实际计算要保持秘密的某个预定椭圆曲线点m和某个预定非负整数的点。在该情况下,可以被不同地定义为。然后可以根据的该替代定义来生成查找表。
[0067]
基于上文,图2是图示了用于执行椭圆曲线密码学过程220的方法200的流程图。方法200可以例如由图1的计算机系统100来执行(例如,由处理器108执行计算机程序)。例如,椭圆曲线密码学过程220可以是任何上面讨论的椭圆曲线密码学过程,诸如共享秘密建立、加密、解密、数字签名生成和数字签名验证,尽管应当领会的是,椭圆曲线密码学过程220可以是任何其他的椭圆曲线密码学过程和/或可以是不同于上面针对共享秘密建立、加密、解密、数字签名生成和数字签名验证所阐述的具体示例的算法/协议。
[0068]
一般而言,椭圆曲线密码学过程220基于输入数据生成输出数据。椭圆曲线密码学过程220基于有限域上的椭圆曲线(如上面已经讨论的)。输出数据的生成(除了其他操作/计算之外)包括基于椭圆曲线的预定点v和正r位整数k生成椭圆曲线的第一点,该第一点至少部分基于椭圆曲线的点kv。在一些实施例中,第一点可以是点kv。在其他实施例中,第一点可以与点kv相关或基于点kv,诸如:针对某个预定非负整数的点;针对某个预定非负r位整数的点;针对某个预定椭圆曲线点m的点;针对某个预定椭圆曲线点m的点;这些中的两个或更多个的某种组合;等。
[0069]
例如:(a)如果椭圆曲线密码学过程220是上面讨论的共享秘密建立的示例(即示例1),如alice所执行的,那么(i)输入数据可以包括bob的公钥qb;(ii)输出数据可以包括p
x
,其中;以及(iii)输出数据的生成涉及基于点qb和正整数da使用/确定点daqb。(b)如果椭圆曲线密码学过程220是上面讨论的加密的示例(即示例2),如alice所执行的,那么(i)输入数据可以包括消息m和bob的公钥qb;(ii)输出数据可以包括点w和加密消息;以及(iii)输出数据的生成涉及基于点g和正整数r使用/确定点w=rg,和/或基于点qb和正整数r使用/确定点p=rqb。(c)如果椭圆曲线密码学过程220是上面讨论的数字签名生成的示例(即示例3),如alice所执行的,那么(i)输入数据可以包括消息m;(ii)输出数据可以包括签名(r,s);以及(iii)输出数据的生成涉及基于点g和正整数k使用/确定点kg。(d)如果椭圆曲线密码学过程220是上面讨论的数字签名验证的示例(即示例3),如bob所执行的,那么(i)输入数据可以包括签名(r,s)、消息m和alice的公钥qa;(ii)输出数据可以包括签名(r,s)是否有效的指示,即签名(r,s)是否对应于消息m和alice的公钥qa;以及(iii)输出数据的生成涉及基于点qa和正整数n使用/确定点nqa,和/或基于点g和正整数使用/确定点,和/或基于点qa和正整数使用/确定点:。
[0070]
如上面已经讨论的,上文同样适用于使用掩蔽曲线点和/或掩蔽私钥的这些密码学过程的修改版本。
[0071]
在步骤202处,方法200包括基于(或根据)将k的r个位位置划分为分别具有个
位位置的t组位位置(即针对每组的)来存储对应查找表l
t
。如上面讨论的,l
t
对于用于向p
t
的个位位置p
t,s
分配相应位值xs的个可能选项中的每个(并且xs=0或1),具有椭圆曲线的对应点。
[0072]
在一些实施例中,步骤202涉及计算机系统100生成查找表,并且然后存储那些生成的表。例如,如果点v将是椭圆曲线的生成点g(如对于上面的示例(b)、(c)和(d)),那么一旦计算机系统100知道要使用哪个椭圆曲线和生成点g(例如由域参数所建立的),计算机系统100就可以生成查找表。作为另一个示例,如果点v将是alice的公钥qa或bob的公钥qb(如对于上面的示例(a)、(b)和(e)),那么一旦计算机系统100知道要使用哪个椭圆曲线(例如由域参数所建立的)以及该公钥,计算机系统100就可以生成查找表。如提及的,查找表的生成还可以包括确定用于k的r个位位置的划分(例如,作为随机生成的划分);可替代地,划分可以是预定。
[0073]
在其他实施例中,步骤202可以涉及计算机系统100接收查找表,并且然后存储那些接收到的查找表。例如,alice或bob可以基于点v是他们各自的公钥qa或qb来生成查找表,并且然后将生成的查找表提供给计算机系统100,使得计算机系统100可以使用那些表(以及因此公钥)作为密码学过程的一部分。在一些实施例中,查找表的生成可以由第三方来执行,该第三方不同于参与或最终执行一些或全部密码学过程的实体(或多个实体)——例如,如在使用掩蔽曲线点和/或掩蔽私钥的密码学过程的修改版本中,如上面已经讨论的。
[0074]
应当领会的是,可以使用用于生成和/或存储查找表的其他机制。
[0075]
在步骤204处,方法200包括获得椭圆曲线密码学过程220的输入数据。给定各种椭圆曲线密码学过程220(例如,上面阐述的示例(a)-(e)),应当领会的是,输入数据可以以各种方式获得,并且可以意图用于各种目的。
[0076]
在步骤206处,方法200包括获得(或者计算或者生成)正整数k。如上面所讨论的,k的r位具有相应的值br(),使得。给定各种椭圆曲线密码学过程220(例如,上面阐述的示例(a)-(d)),应当领会的是,k可以以各种方式获得,并且可以旨在用于各种目的。
[0077]
在步骤208处,方法200包括如上面已经描述的使用查找表以生成第一点(例如,在一些实施例中为kv)作为,其中l
t
是椭圆曲线的点,该点在查找表l
t
中对应于用于将位值分配给位位置p
t,s
的选项(对于每个),即其中l
t
是椭圆曲线的点,该点在查找表l
t
中对应于用于向个位位置分配对应位值bs的选项。
[0078]
在步骤210处,方法200包括使用生成的第一点来生成椭圆曲线密码学过程220的输出数据。给定各种椭圆曲线密码学过程220(例如,上面阐述的示例(a)-(e)),应当领会的
是,输出数据可以以各种方式生成。
[0079]
最后,在步骤212处,方法202可以包括取决于输出数据的意图目的,使用和/或提供生成的输出数据,例如,在上面的示例(a)中,alice和bob使用他们的共享秘密来建立共享秘密密钥;在上面的示例(b)中,alice向bob提供点w和加密消息;在上面的示例(c)中,alice向bob提供签名(r,s);以及bob基于以上示例(d)中的验证结果来确定是否信任签名的消息。
[0080]
使用上述方法经由查找表执行椭圆曲线标量乘法提供了几个技术优点,包括:
· 将第一点(例如,在一些实施例中为kv)生成为涉及执行t次查找(来自每个查找表有一次查找)和使用那些查找到的点的t-1次椭圆曲线点加法。这意味着经由查找表的椭圆曲线标量乘法的执行(这形成了密码学过程的许多白盒实现的基础)可以以存储器高效的方式实现,尤其是当域f是大型域(例如或更大)时。例如,如果f是,并且如果要使用先前的示例——其中r=256、t=64,并且对于,,则每个查找表具有16个查找值/点,每个查找值/点是一对(x,y),其中,使得每个查找值/点可以由512位表示。因此,每个查找表可以使用16
×
512=8192位,使得总的来说,t个查找表的集合()可以只使用64
×
8192=524288位,即64 kb。
· 由于将第一点(例如,在一些实施例中为kv)生成为涉及执行t次查找(来自每个查找表有一次查找)和使用那些查找到的点的t-1次椭圆曲线点加法而不管k的值如何,因此椭圆曲线标量乘法可以快速且在基本上恒定的时间(独立于k)内执行,从而使攻击者更加难以进行定时攻击。
· 使用查找表)固有地隐藏/嵌入基础椭圆曲线点v,使得攻击者难以标识基础椭圆曲线点v。即使密码学过程本身的安全性不依赖于基础椭圆曲线点v的保密性(例如,如果点v是生成点g或公钥),使用查找表来实现基础椭圆曲线点v也有助于添加额外的后期安全性,这使得攻击者更难。例如,alice和bob可能需要进行共享秘密建立,其中alice负责该过程——alice可以向bob发送查找表集合,以便基于基础点g执行椭圆曲线标量乘法(使得bob可以在不知道点g的情况下生成私钥和公钥对)和/或查找表集合,以便基于基础点qa执行椭圆曲线标量乘法(使得bob可以在不知道点qa的情况下使用alice的公钥qa)。
· 此外,如上所讨论的,使用查找表可以用于隐藏/嵌入/使用另外的秘密数据,例如,计算针对要保密的某个预定非负整数的点;计算针对要保密的某个预定非负r位整数的点;计算针对要保密的某个预定椭圆曲线点m和预定非负整数的点或或。以该方式,因为攻击者在没有秘密数据的知识的情况下不能利用可用的数据,因此可以为椭圆曲线密码学过程的实现来实现另外的安全性。附加地,如上面讨论的,这使得能够实现不存储实体的实际私钥而是取而代之存储或使用私钥的模糊版本的实现。
[0081]
4-修改应当领会的是,所描述的方法已经被示出为以特定次序执行的单独的步骤。然而,
本领域技术人员应当领会的是,这些步骤可以被组合或以不同的次序执行,同时仍然实现期望的结果。
[0082]
应当领会的是,本发明的实施例可以使用各种不同的信息处理系统来实现。具体而言,尽管附图及其讨论提供了示例性计算系统和方法,但是呈现这些仅仅是为了在讨论本发明的各种方面时提供有用的参考。本发明的实施例可以在任何合适的数据处理设备上执行,所述数据处理设备诸如个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视、服务器计算机等。当然,出于讨论的目的,已经简化了系统和方法的描述,并且它们仅仅是可以用于本发明的实施例的许多不同类型的系统和方法中的一个。应当领会的是,逻辑块之间的边界仅仅是说明性的,并且替代实施例可以合并逻辑块或元件,或者可以将功能的替代分解强加于各种逻辑块或元件。
[0083]
应当领会的是,上面提及的功能可以被实现为硬件和/或软件的一个或多个相应模块。例如,上面提及的功能可以被实现为由该系统的处理器执行的一个或多个软件组件。可替代地,上面提及的功能可以被实现为硬件,诸如一个或多个现场可编程门阵列(fpga)、和/或一个或多个专用集成电路(asic)、和/或一个或多个数字信号处理器(dsp)、和/或一个或多个图形处理单元(gpu)、和/或其他硬件布置。在本文中包含的流程图中实现的或如上所描述的方法步骤可以均由对应的相应模块来实现;在本文中包含的流程图中实现的或如上所描述的多个方法步骤可以由单个模块一起实现。
[0084]
应当领会的是,由于本发明的实施例由计算机程序来实现,因此存储或携带计算机程序的一个或多个存储介质和/或一个或多个传输介质形成本发明的方面。计算机程序可以具有一个或多个程序指令或程序代码,当由一个或多个处理器(或一个或多个计算机)执行时,这些程序指令或程序代码执行本发明的实施例。本文中使用的术语“程序”可以是被设计用于在计算机系统上执行的指令序列,并且可以包括子例程、函数、过程、模块、对象方法、对象实现、可执行应用、小程序、小服务程序、源代码、对象代码、字节代码、共享库、动态链接库、和/或被设计用于在计算机系统上执行的其他指令序列。存储介质可以是磁盘(诸如,硬盘或软盘)、光盘(诸如,光盘、dvd-rom或蓝光光盘)、或存储器(诸如,rom、ram、eeprom、eprom、闪速存储器或便携式/可移动存储设备)等。传输介质可以是通信信号、数据广播、两个或更多个计算机之间的通信链路等。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1