CN115730295A - 椭圆曲线密码学过程的安全执行 - Google Patents

椭圆曲线密码学过程的安全执行 Download PDF

Info

Publication number
CN115730295A
CN115730295A CN202210111179.2A CN202210111179A CN115730295A CN 115730295 A CN115730295 A CN 115730295A CN 202210111179 A CN202210111179 A CN 202210111179A CN 115730295 A CN115730295 A CN 115730295A
Authority
CN
China
Prior art keywords
elliptic curve
point
look
bit
points
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210111179.2A
Other languages
English (en)
Inventor
林婷婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Irdeto BV
Original Assignee
Irdeto BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Irdeto BV filed Critical Irdeto BV
Publication of CN115730295A publication Critical patent/CN115730295A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)

Abstract

一种用于执行椭圆曲线密码学过程以基于输入数据生成输出数据的方法,所述椭圆曲线密码学过程基于有限域上的椭圆曲线,其中输出数据的生成包括基于椭圆曲线的预定点V和正R位整数k生成椭圆曲线的第一点,所述第一点至少部分基于椭圆曲线的点kV,其中
Figure 829225DEST_PATH_IMAGE002
,并且对于每个
Figure 993491DEST_PATH_IMAGE004
b r k的位位置rk的位值,其中所述方法包括:根据kR个位位置到T组位位置
Figure 235116DEST_PATH_IMAGE006
的划分,存储对应的查找表L t ,其对于用于向
Figure DEST_PATH_IMAGE008AAA
个位位置
Figure DEST_PATH_IMAGE010AA
分配相应位值x s
Figure DEST_PATH_IMAGE012AA
个可能选项中的每个,具有至少部分基于椭圆曲线的点
Figure 900453DEST_PATH_IMAGE014
的椭圆曲线的对应点;获得k;以及将第一点确定为
Figure 100004_DEST_PATH_IMAGE016AA
,其中l t 是椭圆曲线的点,所述点在查找表L t 中对应于用于向
Figure 100004_DEST_PATH_IMAGE018AA
个位位置
Figure DEST_PATH_IMAGE020A
分配对应位值b s 的选项。

Description

椭圆曲线密码学过程的安全执行
技术领域
本发明涉及用于椭圆曲线密码学过程的安全执行的方法,以及用于实行这样的方法的系统和计算机程序。
背景技术
有限域F上的椭圆曲线是众所周知的。对于定义椭圆曲线的系数
Figure DEST_PATH_IMAGE002AAA
,椭圆曲线由满足
Figure 808117DEST_PATH_IMAGE004
Figure DEST_PATH_IMAGE006AAA
中的点(xy)以及被称为无穷远处的点的点
Figure DEST_PATH_IMAGE008AA
组成。椭圆曲线形成阿贝尔群,其中无穷远处的点
Figure DEST_PATH_IMAGE009AA
充当群的恒等元素,并且其中群具有加法运算符+,用于将椭圆曲线的两个点相加在一起以形成椭圆曲线的另一个点。加法运算符的细节是众所周知的,并且因此在本文将不详细描述(然而,参见例如https://en.wikipedia.org/wiki/Elliptic_curve,其全部公开内容通过参考并入本文)。
椭圆曲线点V(即椭圆曲线的点或椭圆曲线上的点)与正整数k相乘以产生椭圆曲线点kV——即标量乘法——是众所周知的(例如,参见https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication,其全部公开内容通过参考并入本文)。特别地,kV被定义为将点V加到自身上另外k-1次,即
Figure 351356DEST_PATH_IMAGE011
椭圆曲线用于密码学目的是众所周知的。为此,椭圆曲线密码学过程的所谓“域参数”在参与椭圆曲线密码学过程的各方之间达成一致。典型地,域参数将包括:(1)有限域F的标识;(2)有限域F上椭圆曲线的标识(例如,为方程
Figure 131093DEST_PATH_IMAGE013
指定系数
Figure DEST_PATH_IMAGE015AA
);(3)椭圆曲线的“基点”或“生成点”G;以及(4)点G的阶,即对于
Figure DEST_PATH_IMAGE017AA
的最小正整数n——这里,n通常是素数。对于有限域F的标识,例如,如果F是伽罗瓦域
Figure DEST_PATH_IMAGE019AAAA
,则这可以涉及指定素数p,或者如果F是伽罗瓦域
Figure DEST_PATH_IMAGE021AA
,则指定F的次数τ和域多项式。应当领会的是,可以指定附加的域参数(例如,辅助因子h,即椭圆曲线除以n的阶),并且可以以不同的方式表示域参数。
椭圆曲线密码学过程的一些示例阐述如下:
示例1:椭圆曲线共享秘密建立
椭圆曲线共享秘密建立的示例,即椭圆曲线Diffie-Hellman (ECDH)阐述如下(其更多细节可在例如在https://en.wikipedia.org/wiki/Elliptic-curve_Diffie-Hellman找到,其全部公开内容通过参考并入本文)。应当领会的是,使用椭圆曲线执行共享秘密建立的其他方法是可能的。
假设Alice和Bob希望建立共享秘密。如提及的,他们将首先就域参数达成一致。Alice具有私钥d A ,它是在[1,n-1]范围内随机选取的整数;Alice的对应公钥是点Q A = d A G。同样,Bob具有私钥d B ,它是在[1,n-1]范围内随机选取的整数;Bob的对应公钥是点Q B =d B G
Alice可以生成点
Figure 339352DEST_PATH_IMAGE023
。同样,Bob可以生成点
Figure 153724DEST_PATH_IMAGE025
。因此,Alice和Bob二者均可以通过仅暴露他们的公钥(并且就域参数达成一致)来计算p x ,并且可以使用p x 作为共享秘密(例如,来为密码学过程生成另外的密钥)。
示例2:椭圆曲线加密和解密
椭圆曲线加密和解密的示例阐述如下(更多细节参见,例如,https://en.wikipedia.org/wiki/Integrated_Encryption_Scheme,其全部公开内容通过参考并入本文)。应当领会的是,使用椭圆曲线执行加密和解密的其他方法是可能的。
假设Alice希望给Bob发送消息m。如提及的,他们将首先就域参数达成一致。Bob具有私钥d B ,它是在[1,n-1]范围内随机选取的整数;Bob的对应公钥是点Q B = d B G
Alice可以如下对消息m进行加密:
(1)生成随机整数
Figure 976187DEST_PATH_IMAGE027
并计算W=rG
(2)生成P=rQ B 。如果P=
Figure DEST_PATH_IMAGE029AA
,则返回到(1)。否则,设置s=p x ,其中
Figure 180903DEST_PATH_IMAGE031
(3)使用密钥推导函数(如本技术领域中已知的)来推导基于s的对称密钥k E
(4)使用对称加密算法E(例如AES加密),以使用对称密钥k E 对消息m进行加密,从而产生c=E(mk E )。
(5)将Wc作为密文提供给Bob。
Bob可以如下对密文进行解密:
(1)生成s=p x ,其中
Figure 379803DEST_PATH_IMAGE033
(注意
Figure 235633DEST_PATH_IMAGE035
Figure DEST_PATH_IMAGE037AA
),使得知道私钥d B 并且也知道Alice提供的点W的Bob可以生成相同的字段元素s。如果P=
Figure 100002_DEST_PATH_IMAGE039AA
,则解密失败。
(2)使用与Alice相同的密钥推导函数,以基于s推导相同的对称密钥k E
(3)使用与Alice使用的对称加密算法E相对应的对称解密算法E -1来使用对称密钥k E 解密c,从而产生
Figure 166680DEST_PATH_IMAGE041
如众所周知的,也有可能的是包括消息完整性和/或认证措施作为该过程的一部分。
示例3:椭圆曲线数字签名
椭圆曲线数字签名生成和验证的示例,即椭圆曲线数字签名算法(ECDSA)阐述如下(更多细节参见,例如,https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm,其全部公开内容通过参考并入本文)。应当领会的是,使用椭圆曲线执行数字签名生成和验证的其他方法是可能的。
假设Alice希望给Bob发送签名消息m。如提及的,他们将首先就域参数达成一致。Alice具有私钥d A ,它是在[1,n-1]范围内随机选取的整数;Alice的对应公钥是点Q A =d A G。
Alice可以如下为消息m生成签名:
(1)使用散列函数H(例如SHA-2)来生成消息m的散列h=Hm)。
(2)将z设为h最左边的α n 位,其中α n n的位长度。
(3)生成随机整数
Figure 921009DEST_PATH_IMAGE043
(4)计算点(x 1y 1)=kG
(5)计算
Figure DEST_PATH_IMAGE045AAA
。如果r=0,则返回到(3)。
(6)计算
Figure 346436DEST_PATH_IMAGE047
。如果s=0,则返回到(3)。
(7)签名是一对(r,s)。
Bob可以如下验证Alice的签名(r,s)对应于消息m和Alice的公钥Q A
(1)检查Q A 是椭圆曲线的有效点,即:(i)
Figure DEST_PATH_IMAGE049AAA
;(ii)Q A 位于曲线上;和(iii)
Figure DEST_PATH_IMAGE051_22A
(2)检查rs是否为[1,n-1]范围内的整数。如果不是,则签名无效。
(3)使用与Alice相同的散列函数H(例如SHA-2)来生成消息m的散列h=Hm)。
(4)计算
Figure 994455DEST_PATH_IMAGE053
Figure 424300DEST_PATH_IMAGE055
,其中zh最左边的α n 位,其中α n n的位长度。
(5)计算椭圆曲线的点
Figure 665925DEST_PATH_IMAGE057
(6)如果
Figure DEST_PATH_IMAGE059AAA
,则签名无效。
(7)如果
Figure 878732DEST_PATH_IMAGE061
,则签名有效;否则签名无效。
这些椭圆曲线密码学过程的密码安全性是基于计算上求解不可行的椭圆曲线离散对数问题(ECLDP)。特别地,ECLDP是:给定椭圆曲线点PQ,找到整数k,使得kP=Q。给定该问题的计算难度,例如,攻击者基于公钥Q A 和生成点G(其中Q A =d A G)来确定Alice的私钥d A 是不可行的。
然而,重要的是椭圆曲线密码学过程实际上也是以安全的方式实现的。“白盒”环境是软件项的执行环境,在该环境中,软件项的攻击者被假定对正被操作的数据(包括中间值)、存储器内容和软件项的执行/处理流程具有完全的访问权和可见性。此外,在白盒环境中,假定攻击者能够修改正被操作的数据、存储器内容和软件项的执行/处理流程,例如通过使用调试器——以此方式,攻击者可以试验并试图操纵软件项的操作,目的是规避最初预期的功能性和/或标识秘密信息和/或用于其他目的。事实上,人们甚至可以假定攻击者知悉软件项正在执行的基础算法。然而,软件项可能需要使用秘密信息(例如,一个或多个密码密钥),其中该信息需要对攻击者保持隐藏。类似地,将合期望的是防止攻击者修改软件项的执行/控制流程,例如防止攻击者迫使软件项在决策块之后采取一个执行路径而不是合法的执行路径。
现在已知和理解了许多块密码(诸如AES)的白盒实现。然而,由于所涉及的数据操作的性质和被处理的数据字的大小,公钥/私钥加密算法的白盒实现、并且特别是椭圆曲线密码学过程已经被证明开发起来更具挑战性。
发明内容
根据本发明的第一方面,提供了一种用于执行椭圆曲线密码学过程以基于输入数据生成输出数据的方法,所述椭圆曲线密码学过程基于有限域上的椭圆曲线,其中输出数据的生成包括基于椭圆曲线的预定点V和正R位整数k生成椭圆曲线的第一点,所述第一点至少部分基于椭圆曲线的点kV,其中
Figure 522203DEST_PATH_IMAGE063
,并且对于每个
Figure 857369DEST_PATH_IMAGE065
b r k的位位置(bit position)rk的位值,其中所述方法包括:根据kR个位位置到T组位位置
Figure 274706DEST_PATH_IMAGE067
的划分,存储对应的查找表L t ,其对于用于向
Figure DEST_PATH_IMAGE069AA
个位位置
Figure DEST_PATH_IMAGE071AA
分配相应位值x s
Figure DEST_PATH_IMAGE073AAA
个可能选项中的每个,具有至少部分基于椭圆曲线的点
Figure 556783DEST_PATH_IMAGE075
的椭圆曲线的对应点;获得k;以及将第一点确定为
Figure DEST_PATH_IMAGE077AA
,其中l t 是椭圆曲线的点,所述点在查找表L t 中对应于用于向
Figure DEST_PATH_IMAGE079AA
个位位置
Figure DEST_PATH_IMAGE081AA
分配对应位值b s 的选项。
根据本发明的第二方面,提供了一种系统,所述系统被布置成执行椭圆曲线密码学过程以基于输入数据生成输出数据,所述椭圆曲线密码学过程基于有限域上的椭圆曲线,其中输出数据的生成包括基于椭圆曲线的预定点V和正R位整数k生成椭圆曲线的第一点,所述第一点至少部分基于椭圆曲线的点kV,其中
Figure 196972DEST_PATH_IMAGE083
,并且对于每个
Figure 968619DEST_PATH_IMAGE085
b r k的位位置rk的位值,其中所述系统包括:存储器,所述存储器根据kR个位位置到T组位位置
Figure 919258DEST_PATH_IMAGE087
的划分,存储对应的查找表L t ,其对于用于向
Figure DEST_PATH_IMAGE089AA
个位位置
Figure DEST_PATH_IMAGE091AA
分配相应位值x s
Figure DEST_PATH_IMAGE093AAA
个可能选项中的每个,具有至少部分基于椭圆曲线的点
Figure 427862DEST_PATH_IMAGE095
的椭圆曲线的对应点;以及一个或多个处理器,被布置成:获得k;以及将第一点确定为
Figure DEST_PATH_IMAGE097AA
,其中l t 是椭圆曲线的点,所述点在查找表L t 中对应于用于向
Figure DEST_PATH_IMAGE099_5A
个位位置
Figure DEST_PATH_IMAGE101_9A
分配对应位值b s 的选项。
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点kV,并且对于每个查找表
Figure 593395DEST_PATH_IMAGE103
以及对于用于向
Figure DEST_PATH_IMAGE104A
个位位置
Figure DEST_PATH_IMAGE105AA
分配相应位值x s
Figure DEST_PATH_IMAGE107AA
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 473626DEST_PATH_IMAGE109
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点
Figure DEST_PATH_IMAGE111AA
,其中
Figure DEST_PATH_IMAGE113_5A
是预定非负整数,其中对于每个查找表
Figure 36195DEST_PATH_IMAGE115
以及对于用于向
Figure DEST_PATH_IMAGE117AA
个位位置
Figure DEST_PATH_IMAGE119AA
分配相应位值x s
Figure DEST_PATH_IMAGE121AA
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 71192DEST_PATH_IMAGE123
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点
Figure DEST_PATH_IMAGE125AAA
,其中
Figure DEST_PATH_IMAGE113_6A
是预定非负R位整数,其中
Figure 730712DEST_PATH_IMAGE127
,并且对于每个
Figure 844161DEST_PATH_IMAGE129
Figure DEST_PATH_IMAGE131AA
是在
Figure DEST_PATH_IMAGE113_7A
的位位置r
Figure DEST_PATH_IMAGE113_8A
的位值,其中对于每个查找表
Figure 395491DEST_PATH_IMAGE133
以及对于用于向
Figure DEST_PATH_IMAGE135AA
个位位置
Figure DEST_PATH_IMAGE137AA
分配相应位值x s
Figure DEST_PATH_IMAGE139AA
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 744432DEST_PATH_IMAGE141
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点k(V+M),其中M是椭圆曲线的预定点,其中对于每个查找表
Figure 805929DEST_PATH_IMAGE143
以及对于用于向
Figure DEST_PATH_IMAGE145AA
个位位置
Figure DEST_PATH_IMAGE147AAA
分配相应位值x s
Figure DEST_PATH_IMAGE149AAA
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 716379DEST_PATH_IMAGE151
在本发明的第一和第二方面的一些实施例中,椭圆曲线的第一点是点kV+M,其中M是椭圆曲线的预定点,其中对于每个查找表
Figure 128906DEST_PATH_IMAGE153
以及对于用于向
Figure DEST_PATH_IMAGE154A
个位位置
Figure DEST_PATH_IMAGE147AAAA
分配相应位值x s
Figure DEST_PATH_IMAGE149AAAA
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 281538DEST_PATH_IMAGE156
在本发明的第一和第二方面的一些实施例中,其中椭圆曲线的第一点是点
Figure DEST_PATH_IMAGE158A
,其中M是椭圆曲线的预定点,并且
Figure DEST_PATH_IMAGE160AA
是预定非负整数,其中对于每个查找表
Figure 89220DEST_PATH_IMAGE162
以及对于用于向
Figure DEST_PATH_IMAGE164A
个位位置
Figure DEST_PATH_IMAGE166A
分配相应位值x s
Figure DEST_PATH_IMAGE168A
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 403526DEST_PATH_IMAGE170
在本发明的第一和第二方面的上述实施例中,
Figure DEST_PATH_IMAGE160AAA
和/或M可以是由第三方维护的秘密。
在本发明的第一和第二方面的一些实施例中,所有T组位位置
Figure 303349DEST_PATH_IMAGE172
具有相同数量的位位置。在一些这样的情况下,所有T组位位置
Figure 807143DEST_PATH_IMAGE174
具有4个位位置。
在本发明的第一和第二方面的一些实施例中,对于T组位位置
Figure 108811DEST_PATH_IMAGE175
中的每一组,P t 的位位置是连续的。
在本发明的第一和第二方面的一些实施例中,密码学过程包括以下各项中的一个或多个:椭圆曲线加密;椭圆曲线解密;椭圆曲线共享秘密建立;椭圆曲线数字签名生成;椭圆曲线数字签名验证。
根据本发明的第三方面,提供了一种计算机程序,当由一个或多个处理器执行时,所述计算机程序使得一个或多个处理器实行本发明第一方面的方法或其任何实施例。该计算机程序可以存储在一个或多个存储介质上。
附图说明
现在将参考附图仅以示例的方式描述本发明的实施例,其中:
图1示意性地图示了计算机系统的示例;和
图2是图示了用于执行椭圆曲线密码学过程的方法的流程图。
具体实施方式
在下面的描述中和附图中,描述了本发明的某些实施例。然而,应当领会的是,本发明不限于所描述的实施例,并且一些实施例可能不包括下面描述的所有特征。然而,应当显而易见的是,在不脱离如所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以在本文进行各种修改和改变。
1-系统概述
图1示意性地图示了计算机系统100的示例。系统100包括计算机102。计算机102包括:存储介质104、存储器106、处理器108、接口110、用户输出接口112、用户输入接口114和网络接口116,它们可以通过一个或多个通信总线118链接在一起。
存储介质104可以是任何形式的非易失性数据存储设备,诸如硬盘驱动器、磁盘、固态存储设备、光盘、ROM等中的一个或多个。存储介质104可以存储供处理器108执行以便计算机102运作的操作系统。存储介质104还可以存储一个或多个计算机程序(或者软件或者指令或者代码)。
存储器106可以是适于存储数据和/或计算机程序(或软件或指令或代码)的任何随机存取存储器(存储单元或易失性存储介质)。
处理器108可以是适于执行一个或多个计算机程序(诸如存储在存储介质104上和/或存储器106中的那些)的任何数据处理单元,其中一些可以是根据本发明实施例的计算机程序,或者是当由处理器108执行时使得处理器108实行根据本发明实施例的方法并将系统100配置为根据本发明实施例的系统的计算机程序。处理器108可以包括单个数据处理单元或者并行地单独或彼此协作地操作的多个数据处理单元。处理器108在实行本发明实施例的数据处理操作时,可以将数据存储到存储介质104和/或存储器106和/或从存储介质104和/或存储器106读取数据。
接口110可以是用于向计算机102外部或可从计算机102移除的设备122提供接口的任何单元。设备122可以是数据存储设备,例如光盘、磁盘、固态存储设备等中的一个或多个。设备122可以具有处理能力——例如,设备可以是智能卡。接口110因此可以根据它从处理器108接收的一个或多个命令从设备122访问数据或者向设备122提供数据或者与设备122对接。
用户输入接口114被布置成接收来自系统100的用户或操作者的输入。用户可以经由系统100的一个或多个输入设备来提供该输入,所述输入设备诸如连接到用户输入接口114或与之通信的鼠标(或其他定点设备)126和/或键盘124。然而,应当领会的是,用户可以经由一个或多个附加或替代输入设备(诸如触摸屏)向计算机102提供输入。计算机102可以将经由用户输入接口114从输入设备接收的输入存储在存储器106中,以供处理器108后续访问和处理,或者可以将其直接传递给处理器108,使得处理器108可以相应地响应用户输入。
用户输出接口112被布置成向系统100的用户或操作员提供图形/视觉和/或音频输出。这样,处理器108可以被布置成指示用户输出接口112形成表示期望的图形输出的图像/视频信号,并将该信号提供给连接到用户输出接口112的系统100的监视器(或屏幕或显示单元)120。附加地或可替代地,处理器108可以被布置成指示用户输出接口112形成表示期望音频输出的音频信号,并将该信号提供给连接到用户输出接口112的系统100的一个或多个扬声器121。
最后,网络接口116为计算机102提供从一个或多个数据通信网络下载数据和/或将数据上传到一个或多个数据通信网络的功能性。
应当领会的是,图1中图示并在上面描述的系统100的架构仅仅是示例性的,并且具有不同架构(例如具有与图1中所示相比更少的组件或者具有与图1中所示相比附加的和/或替代的组件)的其他计算机系统100可以用于本发明的实施例中。作为示例,计算机系统100可以包括以下各项中的一个或多个:个人计算机;服务器计算机;移动电话;平板计算机;膝上型计算机;电视机;机顶盒;游戏控制台;其他移动设备或消费电子设备;等等。附加地,可能的是计算机系统100的一些组件不位于计算机102中而是作为经由网络接口116连接到计算机102的计算机网络的一部分。附加地或可替代地,计算机系统100可以包括多个计算机102,例如在诸如计算资源云系统的计算机网络中。
2-具有掩蔽曲线点的椭圆曲线密码学过程
椭圆曲线密码学过程(诸如早前阐述的示例)可能涉及执行椭圆曲线标量乘法,即:给定椭圆曲线点V和非负整数k,计算椭圆曲线点kV。例如,点V可以是生成点G或公钥Q。当实现密码学过程时(例如,作为软件实现的一部分),可能的是以掩蔽的方式来这样做。掩蔽可以采取各种形式,例如(a)对于某个正整数
Figure DEST_PATH_IMAGE177_8A
(其可以保密),使用点
Figure DEST_PATH_IMAGE179AA
而不是点V,从而计算
Figure DEST_PATH_IMAGE181AA
;(b)对于某个正整数
Figure DEST_PATH_IMAGE177_9A
(其可以保密),计算点
Figure 282435DEST_PATH_IMAGE183
而不是点kV;(c)对于某个椭圆曲线点
Figure DEST_PATH_IMAGE185AA
,计算点
Figure DEST_PATH_IMAGE187AA
Figure 607237DEST_PATH_IMAGE189
而不是点kV;(d)上述各项的某种组合;等。
示例1-续:椭圆曲线共享秘密建立
继续进行早前阐述的椭圆曲线共享秘密建立的示例,这可以以多种方式实现/适应,如下面所阐述的:
· 对于某个正整数
Figure DEST_PATH_IMAGE191AAAA
,使用点
Figure DEST_PATH_IMAGE193AA
而不是点V来实现
Figure 665454DEST_PATH_IMAGE195
Alice的实现使用d A 的模糊版本,即
Figure DEST_PATH_IMAGE197AAA
,而不是d A ,其中
Figure DEST_PATH_IMAGE199AA
。在这里,
Figure DEST_PATH_IMAGE191_5A
是由第三方保密的正整数(例如,第三方可能参与了私钥d A 的初始生成,并且可能生成(并且保密)了值
Figure DEST_PATH_IMAGE191_6A
,并且可能向Alice提供了
Figure DEST_PATH_IMAGE197AAAA
而不是d A )。因此,Alice的实现更安全,因为它不存储或显露实际的私钥d A
Figure 618366DEST_PATH_IMAGE195
当Bob想要将他的公钥Q B 发送给Alice时,Bob将Q B 传递给第三方,并且第三方向Alice提供(或标识)Q B 的模糊版本,即点
Figure DEST_PATH_IMAGE201AA
,或者第三方使得Alice能够实现函数
Figure 103836DEST_PATH_IMAGE203
(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。
Figure 712672DEST_PATH_IMAGE195
Alice然后可以计算
Figure 823848DEST_PATH_IMAGE205
Figure 834529DEST_PATH_IMAGE195
Bob可以计算d B Q A 以产生与Alice相同的结果(即d A Q B )。这可以直接基于d B Q A ,或者以类似于Alice的方式,使用d B 的模糊版本(其可能基于
Figure DEST_PATH_IMAGE207_8A
的不同值)和Q A 的对应模糊版本。
· 对于某个正整数
Figure DEST_PATH_IMAGE207_9A
,使用点
Figure 989436DEST_PATH_IMAGE209
而不是点kV的计算来实现
Figure 85568DEST_PATH_IMAGE195
Alice的实现使用d A 的模糊版本,即
Figure DEST_PATH_IMAGE211AA
,而不是d A ,其中
Figure 734855DEST_PATH_IMAGE213
。在这里,
Figure DEST_PATH_IMAGE215AA
是由第三方保密的正整数(例如,第三方可能参与了私钥d A 的初始生成,并且可能生成(并且保密)了值
Figure DEST_PATH_IMAGE207_10A
,并且可能向Alice提供了
Figure DEST_PATH_IMAGE217AA
而不是d A )。因此,Alice的实现更安全,因为它不存储或显露实际的私钥d A
Figure 226141DEST_PATH_IMAGE195
当Bob想要将他的公钥Q B 发送给Alice时,Bob将Q B 传递给第三方,并且第三方使得Alice能够实现函数
Figure 364999DEST_PATH_IMAGE219
(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。
Figure 135377DEST_PATH_IMAGE195
Alice然后可以计算
Figure 385093DEST_PATH_IMAGE221
Figure 370367DEST_PATH_IMAGE195
Bob可以计算d B Q A 以产生与Alice相同的结果(即d A Q B )。这可以直接基于d B Q A ,或者以类似于Alice的方式,使用d B 的模糊版本(其可能基于
Figure DEST_PATH_IMAGE223AA
的不同值)和Q A 的对应模糊版本。
· 对于某个椭圆曲线点
Figure DEST_PATH_IMAGE225AA
,使用点
Figure 617808DEST_PATH_IMAGE227
而不是点kV的计算来实现
Figure 388667DEST_PATH_IMAGE195
Alice的实现使用d A 的模糊版本,即
Figure DEST_PATH_IMAGE229AA
,而不是d A ,其中
Figure DEST_PATH_IMAGE231A
。在这里,
Figure DEST_PATH_IMAGE233AA
是由第三方保密的正整数(例如,第三方可以已经参与了私钥d A 的初始生成,并且可以已经生成(并且保密)了值
Figure DEST_PATH_IMAGE233AAA
,并且可以已经向Alice提供了
Figure DEST_PATH_IMAGE229AAA
而不是d A )。因此,Alice的实现更安全,因为它不存储或显露实际的私钥d A
Figure 504390DEST_PATH_IMAGE195
当Bob想要将他的公钥Q B 发送给Alice时,Bob将Q B 传递给第三方,并且第三方使得Alice能够实现函数
Figure 344171DEST_PATH_IMAGE235
(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。
Figure 824830DEST_PATH_IMAGE195
Alice然后可以计算
Figure 117271DEST_PATH_IMAGE237
Figure 662785DEST_PATH_IMAGE195
Bob可以计算d B Q A +M以产生与Alice相同的结果(即d A Q B +M)。这可以直接基于d B Q A ,或者以类似于Alice的方式,使用d B 的模糊版本(其可以基于
Figure DEST_PATH_IMAGE239AA
的不同值)和Q A 的对应模糊版本。
示例2-续:椭圆曲线加密和解密
继续早前阐述的椭圆曲线加密和解密的示例,这可以以多种方式实现/适应,如下面所阐述的:
· 对于某个正整数
Figure DEST_PATH_IMAGE207_11A
,使用点
Figure DEST_PATH_IMAGE241AA
而不是点V来实现
Figure 294754DEST_PATH_IMAGE195
Bob的实现使用d B 的模糊版本,即
Figure DEST_PATH_IMAGE243AA
,而不是d B ,其中
Figure DEST_PATH_IMAGE245AA
。在这里,
Figure DEST_PATH_IMAGE247AA
是由第三方保密的正整数(例如,第三方可以已经参与了私钥d B 的初始生成,并且可以已经生成(并且保密)了值
Figure DEST_PATH_IMAGE248AA
,并且可以已经向Bob提供了
Figure DEST_PATH_IMAGE249A
而不是d B )。因此,Bob的实现更安全,因为它不存储或显露实际的私钥d B
Figure 697048DEST_PATH_IMAGE195
当Bob想要将他的公钥Q B 发送给Alice时,Bob将Q B 传递给第三方,并且第三方向Alice提供(或标识)Q B 以及G的模糊版本,即向Alice提供(或标识)点
Figure DEST_PATH_IMAGE251A
,或者第三方使得Alice能够实现函数
Figure DEST_PATH_IMAGE253A
(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。可替代地,第三方可以已经向Bob提供(或标识)了
Figure DEST_PATH_IMAGE255A
(或函数f的代码或表),使得Bob可以直接向Alice提供这些,而不是使用第三方向Alice进行该提供。
Figure 929315DEST_PATH_IMAGE195
加密步骤(1)然后变成Alice生成随机整数
Figure 262207DEST_PATH_IMAGE257
并计算
Figure 811000DEST_PATH_IMAGE259
。在加密步骤(5)处,Alice将
Figure DEST_PATH_IMAGE261A
发送给Bob而不是W
Figure 587458DEST_PATH_IMAGE195
解密步骤(1)然后变成Bob生成s=p x ,其中
Figure 854491DEST_PATH_IMAGE263
(注意
Figure 53391DEST_PATH_IMAGE265
,如期望的)。
· 对于某个正整数
Figure DEST_PATH_IMAGE267AAA
,使用点
Figure DEST_PATH_IMAGE269A
而不是点V来实现
Figure 394374DEST_PATH_IMAGE195
Bob的实现使用d B 的模糊版本,即
Figure DEST_PATH_IMAGE271AA
,而不是d B ,其中
Figure DEST_PATH_IMAGE273AA
。在这里,
Figure DEST_PATH_IMAGE267AAAA
是由第三方保密的正整数(例如,第三方可以已经参与了私钥d B 的初始生成,并且可以已经生成(并且保密)了值
Figure DEST_PATH_IMAGE267_5A
,并且可以已经向Bob提供了
Figure DEST_PATH_IMAGE274A
而不是d B )。因此,Bob的实现更安全,因为它不存储或显露实际的私钥d B
Figure 466366DEST_PATH_IMAGE195
当Bob想要将他的公钥Q B 发送给Alice时,Bob将Q B 传递给第三方,并且第三方向Alice提供(或标识)Q B 的模糊版本(即点
Figure DEST_PATH_IMAGE276A
),或者第三方使得Alice能够实现函数
Figure 158378DEST_PATH_IMAGE278
(例如,通过提供代码来实现该函数,或者如稍后更详细阐述的,通过提供合适的查找表集合)。可替代地,第三方可能已经向Bob提供(或标识)了
Figure DEST_PATH_IMAGE280A
(或函数f的代码或表),使得Bob可以直接向Alice提供这些,而不是使用第三方向Alice进行该提供。
Figure 82341DEST_PATH_IMAGE195
然后,加密步骤(2)包括Alice生成
Figure 605726DEST_PATH_IMAGE282
,其中后续使用
Figure DEST_PATH_IMAGE284A
而不是P
Figure 973254DEST_PATH_IMAGE195
解密步骤(1)然后变成Bob生成s=p x ,其中
Figure 949300DEST_PATH_IMAGE286
(注意
Figure 490003DEST_PATH_IMAGE288
,如期望的)。
Figure 821889DEST_PATH_IMAGE195
当然,这可以与先前的椭圆曲线加密和解密的掩蔽实现相组合。
示例3-续:椭圆曲线数字签名
继续早前阐述的椭圆曲线数字签名的示例,这可以以各种方式实现/适应,如下面所阐述的:
· 对于某个正整数
Figure DEST_PATH_IMAGE290AA
,使用点
Figure DEST_PATH_IMAGE292A
而不是点V来实现
Figure 94739DEST_PATH_IMAGE195
Alice的实现使用d A 的模糊版本,即
Figure DEST_PATH_IMAGE294AA
,而不是d A ,其中
Figure DEST_PATH_IMAGE296A
。在这里,
Figure DEST_PATH_IMAGE290AAA
是由第三方保密的正整数(例如,第三方可以已经参与了私钥d A 的初始生成,并且可以已经生成(并且保密)了值
Figure DEST_PATH_IMAGE207_12A
,并且可以已经向Alice提供了
Figure DEST_PATH_IMAGE294AAA
而不是d A )。因此,Alice的实现更安全,因为它不存储或显露实际的私钥d A
Figure 636710DEST_PATH_IMAGE195
当Alice想要将她的公钥Q A 发送给Bob时,Alice将Q A 传递给第三方,并且第三方向Bob提供(或标识)Q A 的模糊版本(即点
Figure DEST_PATH_IMAGE298A
),或者第三方使得Bob能够实现函数
Figure 653207DEST_PATH_IMAGE300
(例如,通过提供代码来实现该函数,或者如后面更详细描述的,通过提供合适的查找表集合)。可替代地,第三方可能已经向Alice提供(或标识)了
Figure DEST_PATH_IMAGE302A
(或函数f的代码或表),使得Alice可以直接向Bob提供这些,而不是使用第三方向Bob进行该提供。
Figure 338135DEST_PATH_IMAGE195
签名步骤(6)然后变成
计算
Figure 844203DEST_PATH_IMAGE304
。如果s=0,则返回(3)。
Figure 60421DEST_PATH_IMAGE195
验证步骤(1)然后变成检查
Figure DEST_PATH_IMAGE306A
的有效性。
Figure 880609DEST_PATH_IMAGE195
验证步骤(5)然后变成
计算椭圆曲线的点
Figure 233093DEST_PATH_IMAGE308
这里,我们注意到:
Figure 175641DEST_PATH_IMAGE310
如期望的那样。
3-安全椭圆曲线乘法
下面阐述了一种用于执行安全椭圆曲线标量乘法的方法,即:给定椭圆曲线点V和非负整数k,安全计算椭圆曲线点kV。例如,椭圆曲线点V可以是生成点G,其形成椭圆曲线密码学过程的域参数的一部分,但是这仅仅是椭圆曲线点V的一个示例。
整数k具有R位(或可以由R位表示)。因此,在k的二进制表示中有R个位位置。在下文中,位位置应是位置
Figure DEST_PATH_IMAGE312A
,其中位位置0是最低有效位的位置,并且位位置R-1是最高有效位的位置。然而,应当领会的是,这不是必需的,并且下面阐述的等式/公式可以相应地适应于其他位位置编号。k的位的值是
Figure 301991DEST_PATH_IMAGE314
,其中b r =0或1,并且b r 是位位置r的值,使得
Figure 722608DEST_PATH_IMAGE316
对于整数T>1,k的这些R个位位置可以被划分(或分割或分隔)成T组位位置
Figure 132861DEST_PATH_IMAGE318
(或T个集合)。每组
Figure 980731DEST_PATH_IMAGE319
分别具有
Figure DEST_PATH_IMAGE321A
个位位置,也就是
Figure 92913DEST_PATH_IMAGE323
,即
Figure 317221DEST_PATH_IMAGE325
T组位位置
Figure 644297DEST_PATH_IMAGE319
是不重叠的位位置组,它们一起跨越kR个位位置的完整集合,即如果
Figure DEST_PATH_IMAGE327A
并且
Figure 866331DEST_PATH_IMAGE329
,则
Figure 278858DEST_PATH_IMAGE331
。因此
Figure 41277DEST_PATH_IMAGE333
值得注意的是,
Figure 222860DEST_PATH_IMAGE335
,使得
Figure 354809DEST_PATH_IMAGE337
现在,由于每组
Figure 254632DEST_PATH_IMAGE339
具有
Figure DEST_PATH_IMAGE341AA
个位位置,因此存在用于将相应的位值x s (其中x s =0或1)分配给
Figure DEST_PATH_IMAGE342AAA
个位位置
Figure DEST_PATH_IMAGE344A
Figure DEST_PATH_IMAGE346AA
个可能选项。定义
Figure 945376DEST_PATH_IMAGE348
,然后对于每组
Figure 919148DEST_PATH_IMAGE349
,可以构造对应的查找表L t ,其中L t 对于用于向
Figure DEST_PATH_IMAGE341AAA
个位位置
Figure DEST_PATH_IMAGE351A
分配相应位值x s
Figure DEST_PATH_IMAGE352
个可能选项中的每个,具有对应椭圆曲线点
Figure DEST_PATH_IMAGE354
。例如,如果
Figure DEST_PATH_IMAGE356
Figure DEST_PATH_IMAGE358
,则
Figure DEST_PATH_IMAGE360
,并且在查找表L t 中存储有8个点
Figure 358351DEST_PATH_IMAGE362
,它们对应于用于将位值分配给位x 4x 5x 10的三元组的8个可能选项。
因此,给定用于向
Figure DEST_PATH_IMAGE342AAAA
个位位置
Figure DEST_PATH_IMAGE363
分配相应位值x s (其中x s =0或1)的任何特定选项,查找表L t 可以用于查找(或获得或标识)对应椭圆曲线点
Figure DEST_PATH_IMAGE365
。例如, t 可以为查找表L编索引,使得对于由具有
Figure DEST_PATH_IMAGE342_5A
位二进制表示
Figure DEST_PATH_IMAGE367
的值表示的输入,查找表L t 将该输入值映射到椭圆曲线点
Figure DEST_PATH_IMAGE369
。可替代地,查找表L t 可以被索引,使得对于
Figure DEST_PATH_IMAGE371
的输入值,查找表L t 将该输入值映射到椭圆曲线点
Figure DEST_PATH_IMAGE373
。应当领会的是,查找表L t 也可以以其他方式被索引或配置。
基于上文,椭圆曲线点kV然后可以确定为
Figure DEST_PATH_IMAGE375
,即
Figure DEST_PATH_IMAGE377
,其中l t 是椭圆曲线的点,该点在查找表L t 中对应于用于向
Figure DEST_PATH_IMAGE379
个位位置
Figure DEST_PATH_IMAGE381
分配对应位值b s 的选项。
例如,假设R=256,T=64,并且对于
Figure DEST_PATH_IMAGE383
Figure DEST_PATH_IMAGE385
,即对于
Figure DEST_PATH_IMAGE387
Figure DEST_PATH_IMAGE389
Figure DEST_PATH_IMAGE391
。在该示例中,k的二进制表示可以被视为64个4位块的串联,那些块中的每一个表示4位值
Figure DEST_PATH_IMAGE393
(对于
Figure DEST_PATH_IMAGE395
),使得
Figure DEST_PATH_IMAGE397
。然后可以生成(或配置)查找表L t
Figure DEST_PATH_IMAGE399
)以将k t 的16个可能值映射到相应的点
Figure DEST_PATH_IMAGE401
。于是,
Figure DEST_PATH_IMAGE403
,其中l t 是在查找表L t 中对应于k t 的椭圆曲线的点,即用于向
Figure DEST_PATH_IMAGE405
个位位置
Figure DEST_PATH_IMAGE407
分配对应位值b s 的选项。
应当领会的是,虽然以上示例将位位置划分为相等大小的位位置组(即,每组具有4个位位置),但是这不是必需的。一些实施例可以对每组位位置施加最小和/或最大的大小。
同样,应当领会的是,虽然以上示例将位位置划分为连续位位置的组,但是这也不是必须的,即组中的位位置不需要连续。
在一些实施例中,当生成查找表
Figure DEST_PATH_IMAGE409
时,可以随机确定划分(潜在地服从每个划分P t 的大小的最小和/或最大阈值)。
在一些实施例中,对于位位置组的数量T可以有最小阈值,其中相应地确定组(以及可能的组的大小),以便满足(至少)数量T的该最小阈值。
如上面第2节中所讨论的,在一些实施例中,可能合期望的是实际计算要保持秘密的某个预定非负整数
Figure DEST_PATH_IMAGE411
的点
Figure DEST_PATH_IMAGE413
。在该情况下,
Figure DEST_PATH_IMAGE415
可以被不同地定义为
Figure 935350DEST_PATH_IMAGE415
Figure 39572DEST_PATH_IMAGE417
。然后可以根据
Figure DEST_PATH_IMAGE418
的该替代定义来生成查找表
Figure 884163DEST_PATH_IMAGE420
如上面第2节中所讨论的,在一些实施例中,可能合期望的是实际计算要保持秘密的某个预定非负R位整数
Figure DEST_PATH_IMAGE421
的点
Figure DEST_PATH_IMAGE423
Figure DEST_PATH_IMAGE425
的位值是
Figure DEST_PATH_IMAGE427
,其中
Figure DEST_PATH_IMAGE429
=0或1,并且
Figure DEST_PATH_IMAGE431
是位位置r的值,使得
Figure DEST_PATH_IMAGE433
。在该情况下,
Figure DEST_PATH_IMAGE435
可以被不同地定义为
Figure DEST_PATH_IMAGE437
。然后可以根据
Figure DEST_PATH_IMAGE439
的该替代定义来生成查找表
Figure DEST_PATH_IMAGE441
Figure DEST_PATH_IMAGE443
如上面第2节中所讨论的,在一些实施例中,可能合期望的是实际计算要保持秘密的某个预定椭圆曲线点M的点
Figure DEST_PATH_IMAGE445
。在该情况下,
Figure DEST_PATH_IMAGE447
可以被不同地定义为
Figure DEST_PATH_IMAGE449
。然后可以根据
Figure DEST_PATH_IMAGE451
的该替代定义来生成查找表
Figure DEST_PATH_IMAGE453
如上面第2节中所讨论的,在一些实施例中,可能合期望的是实际计算要保持秘密的某个预定椭圆曲线点M和某个预定非负整数
Figure DEST_PATH_IMAGE455
的点
Figure DEST_PATH_IMAGE457
。在该情况下,
Figure DEST_PATH_IMAGE459
可以被不同地定义为
Figure DEST_PATH_IMAGE461
。然后可以根据
Figure DEST_PATH_IMAGE463
的该替代定义来生成查找表
Figure DEST_PATH_IMAGE465
基于上文,图2是图示了用于执行椭圆曲线密码学过程220的方法200的流程图。方法200可以例如由图1的计算机系统100来执行(例如,由处理器108执行计算机程序)。例如,椭圆曲线密码学过程220可以是任何上面讨论的椭圆曲线密码学过程,诸如共享秘密建立、加密、解密、数字签名生成和数字签名验证,尽管应当领会的是,椭圆曲线密码学过程220可以是任何其他的椭圆曲线密码学过程和/或可以是不同于上面针对共享秘密建立、加密、解密、数字签名生成和数字签名验证所阐述的具体示例的算法/协议。
一般而言,椭圆曲线密码学过程220基于输入数据生成输出数据。椭圆曲线密码学过程220基于有限域上的椭圆曲线(如上面已经讨论的)。输出数据的生成(除了其他操作/计算之外)包括基于椭圆曲线的预定点V和正R位整数k生成椭圆曲线的第一点,该第一点至少部分基于椭圆曲线的点kV。在一些实施例中,第一点可以是点kV。在其他实施例中,第一点可以与点kV相关或基于点kV,诸如:针对某个预定非负整数
Figure DEST_PATH_IMAGE207_13A
的点
Figure DEST_PATH_IMAGE467
;针对某个预定非负R位整数
Figure DEST_PATH_IMAGE207_14A
的点
Figure DEST_PATH_IMAGE469
;针对某个预定椭圆曲线点M的点
Figure DEST_PATH_IMAGE471
;针对某个预定椭圆曲线点M的点
Figure DEST_PATH_IMAGE473
;这些中的两个或更多个的某种组合;等。
例如:
(a)如果椭圆曲线密码学过程220是上面讨论的共享秘密建立的示例(即示例1),如Alice所执行的,那么(i)输入数据可以包括Bob的公钥Q B ;(ii)输出数据可以包括p x ,其中
Figure DEST_PATH_IMAGE475
;以及(iii)输出数据的生成涉及基于点Q B 和正整数d A 使用/确定点d A Q B
(b)如果椭圆曲线密码学过程220是上面讨论的加密的示例(即示例2),如Alice所执行的,那么(i)输入数据可以包括消息m和Bob的公钥Q B ;(ii)输出数据可以包括点W和加密消息
Figure DEST_PATH_IMAGE477
;以及(iii)输出数据的生成涉及基于点G和正整数r使用/确定点W=rG,和/或基于点Q B 和正整数r使用/确定点P=rQ B
(c)如果椭圆曲线密码学过程220是上面讨论的数字签名生成的示例(即示例3),如Alice所执行的,那么(i)输入数据可以包括消息m;(ii)输出数据可以包括签名(rs);以及(iii)输出数据的生成涉及基于点G和正整数k使用/确定点kG
(d)如果椭圆曲线密码学过程220是上面讨论的数字签名验证的示例(即示例3),如Bob所执行的,那么(i)输入数据可以包括签名(rs)、消息m和Alice的公钥Q A ;(ii)输出数据可以包括签名(rs)是否有效的指示,即签名(rs)是否对应于消息m和Alice的公钥Q A ;以及(iii)输出数据的生成涉及基于点Q A 和正整数n使用/确定点nQ A ,和/或基于点G和正整数
Figure DEST_PATH_IMAGE479
使用/确定点
Figure DEST_PATH_IMAGE481
,和/或基于点Q A 和正整数
Figure DEST_PATH_IMAGE483
使用/确定点
Figure DEST_PATH_IMAGE485
:。
如上面已经讨论的,上文同样适用于使用掩蔽曲线点和/或掩蔽私钥的这些密码学过程的修改版本。
在步骤202处,方法200包括基于(或根据)将kR个位位置划分为分别具有
Figure DEST_PATH_IMAGE487
个位位置的T组位位置
Figure DEST_PATH_IMAGE489
(即针对每组
Figure 7450DEST_PATH_IMAGE489
Figure DEST_PATH_IMAGE491
)来存储对应查找表L t 。如上面讨论的,L t 对于用于向P t
Figure DEST_PATH_IMAGE487A
个位位置P t,s 分配相应位值x s
Figure DEST_PATH_IMAGE493
个可能选项中的每个(
Figure DEST_PATH_IMAGE495
并且x s =0或1),具有椭圆曲线的对应点
Figure DEST_PATH_IMAGE497
在一些实施例中,步骤202涉及计算机系统100生成查找表
Figure 429336DEST_PATH_IMAGE499
,并且然后存储那些生成的表。例如,如果点V将是椭圆曲线的生成点G(如对于上面的示例(b)、(c)和(d)),那么一旦计算机系统100知道要使用哪个椭圆曲线和生成点G(例如由域参数所建立的),计算机系统100就可以生成查找表
Figure 602828DEST_PATH_IMAGE499
。作为另一个示例,如果点V将是Alice的公钥Q A 或Bob的公钥Q B (如对于上面的示例(a)、(b)和(e)),那么一旦计算机系统100知道要使用哪个椭圆曲线(例如由域参数所建立的)以及该公钥,计算机系统100就可以生成查找表
Figure 613509DEST_PATH_IMAGE499
。如提及的,查找表
Figure DEST_PATH_IMAGE500
的生成还可以包括确定用于kR个位位置的划分(例如,作为随机生成的划分);可替代地,划分可以是预定。
在其他实施例中,步骤202可以涉及计算机系统100接收查找表
Figure 519148DEST_PATH_IMAGE499
,并且然后存储那些接收到的查找表。例如,Alice或Bob可以基于点V是他们各自的公钥Q A Q B 来生成查找表,并且然后将生成的查找表提供给计算机系统100,使得计算机系统100可以使用那些表(以及因此公钥)作为密码学过程的一部分。在一些实施例中,查找表
Figure 615280DEST_PATH_IMAGE499
的生成可以由第三方来执行,该第三方不同于参与或最终执行一些或全部密码学过程的实体(或多个实体)——例如,如在使用掩蔽曲线点和/或掩蔽私钥的密码学过程的修改版本中,如上面已经讨论的。
应当领会的是,可以使用用于生成和/或存储查找表
Figure 61305DEST_PATH_IMAGE499
的其他机制。
在步骤204处,方法200包括获得椭圆曲线密码学过程220的输入数据。给定各种椭圆曲线密码学过程220(例如,上面阐述的示例(a)-(e)),应当领会的是,输入数据可以以各种方式获得,并且可以意图用于各种目的。
在步骤206处,方法200包括获得(或者计算或者生成)正整数k。如上面所讨论的,kR位具有相应的值b r
Figure DEST_PATH_IMAGE502
),使得
Figure DEST_PATH_IMAGE504
。给定各种椭圆曲线密码学过程220(例如,上面阐述的示例(a)-(d)),应当领会的是,k可以以各种方式获得,并且可以旨在用于各种目的。
在步骤208处,方法200包括如上面已经描述的使用查找表
Figure 880488DEST_PATH_IMAGE499
以生成第一点(例如,在一些实施例中为kV)作为
Figure DEST_PATH_IMAGE506
,其中l t 是椭圆曲线的点,该点在查找表L t 中对应于用于将位值
Figure DEST_PATH_IMAGE508
分配给位位置p t,s 的选项(对于每个
Figure DEST_PATH_IMAGE510
),即其中l t 是椭圆曲线的点,该点在查找表L t 中对应于用于向
Figure DEST_PATH_IMAGE512
个位位置
Figure DEST_PATH_IMAGE514
分配对应位值b s 的选项。
在步骤210处,方法200包括使用生成的第一点来生成椭圆曲线密码学过程220的输出数据。给定各种椭圆曲线密码学过程220(例如,上面阐述的示例(a)-(e)),应当领会的是,输出数据可以以各种方式生成。
最后,在步骤212处,方法202可以包括取决于输出数据的意图目的,使用和/或提供生成的输出数据,例如,在上面的示例(a)中,Alice和Bob使用他们的共享秘密来建立共享秘密密钥;在上面的示例(b)中,Alice向Bob提供点W和加密消息
Figure DEST_PATH_IMAGE516
;在上面的示例(c)中,Alice向Bob提供签名(rs);以及Bob基于以上示例(d)中的验证结果来确定是否信任签名的消息。
使用上述方法经由查找表执行椭圆曲线标量乘法提供了几个技术优点,包括:
· 将第一点(例如,在一些实施例中为kV)生成为
Figure DEST_PATH_IMAGE518
涉及执行T次查找(来自每个查找表
Figure DEST_PATH_IMAGE520
有一次查找)和使用那些查找到的点的T-1次椭圆曲线点加法。这意味着经由查找表的椭圆曲线标量乘法的执行(这形成了密码学过程的许多白盒实现的基础)可以以存储器高效的方式实现,尤其是当域F是大型域(例如
Figure DEST_PATH_IMAGE522A
或更大)时。例如,如果F
Figure DEST_PATH_IMAGE523
,并且如果要使用先前的示例——其中R=256、T=64,并且对于
Figure DEST_PATH_IMAGE525
Figure DEST_PATH_IMAGE527
,则每个查找表具有16个查找值/点,每个查找值/点是一对(xy),其中
Figure DEST_PATH_IMAGE529
,使得每个查找值/点可以由512位表示。因此,每个查找表可以使用16×512=8192位,使得总的来说,T个查找表的集合(
Figure DEST_PATH_IMAGE531
)可以只使用64×8192=524288位,即64 KB。
· 由于将第一点(例如,在一些实施例中为kV)生成为
Figure DEST_PATH_IMAGE533A
涉及执行T次查找(来自每个查找表
Figure DEST_PATH_IMAGE534
有一次查找)和使用那些查找到的点的T-1次椭圆曲线点加法而不管k的值如何,因此椭圆曲线标量乘法可以快速且在基本上恒定的时间(独立于k)内执行,从而使攻击者更加难以进行定时攻击。
· 使用查找表
Figure 832394DEST_PATH_IMAGE534
)固有地隐藏/嵌入基础椭圆曲线点V,使得攻击者难以标识基础椭圆曲线点V。即使密码学过程本身的安全性不依赖于基础椭圆曲线点V的保密性(例如,如果点V是生成点G或公钥),使用查找表来实现基础椭圆曲线点V也有助于添加额外的后期安全性,这使得攻击者更难。例如,Alice和Bob可能需要进行共享秘密建立,其中Alice负责该过程——Alice可以向Bob发送查找表集合,以便基于基础点G执行椭圆曲线标量乘法(使得Bob可以在不知道点G的情况下生成私钥和公钥对)和/或查找表集合,以便基于基础点Q A 执行椭圆曲线标量乘法(使得Bob可以在不知道点Q A 的情况下使用Alice的公钥Q A )。
· 此外,如上所讨论的,使用查找表
Figure 619085DEST_PATH_IMAGE534
可以用于隐藏/嵌入/使用另外的秘密数据,例如,计算针对要保密的某个预定非负整数
Figure DEST_PATH_IMAGE536
的点
Figure DEST_PATH_IMAGE538
;计算针对要保密的某个预定非负R位整数
Figure DEST_PATH_IMAGE536A
的点
Figure DEST_PATH_IMAGE540
;计算针对要保密的某个预定椭圆曲线点M和预定非负整数
Figure DEST_PATH_IMAGE536AA
的点
Figure DEST_PATH_IMAGE542
Figure DEST_PATH_IMAGE544
Figure DEST_PATH_IMAGE546
。以该方式,因为攻击者在没有秘密数据的知识的情况下不能利用可用的数据,因此可以为椭圆曲线密码学过程的实现来实现另外的安全性。附加地,如上面讨论的,这使得能够实现不存储实体的实际私钥而是取而代之存储或使用私钥的模糊版本的实现。
4-修改
应当领会的是,所描述的方法已经被示出为以特定次序执行的单独的步骤。然而,本领域技术人员应当领会的是,这些步骤可以被组合或以不同的次序执行,同时仍然实现期望的结果。
应当领会的是,本发明的实施例可以使用各种不同的信息处理系统来实现。具体而言,尽管附图及其讨论提供了示例性计算系统和方法,但是呈现这些仅仅是为了在讨论本发明的各种方面时提供有用的参考。本发明的实施例可以在任何合适的数据处理设备上执行,所述数据处理设备诸如个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视、服务器计算机等。当然,出于讨论的目的,已经简化了系统和方法的描述,并且它们仅仅是可以用于本发明的实施例的许多不同类型的系统和方法中的一个。应当领会的是,逻辑块之间的边界仅仅是说明性的,并且替代实施例可以合并逻辑块或元件,或者可以将功能的替代分解强加于各种逻辑块或元件。
应当领会的是,上面提及的功能可以被实现为硬件和/或软件的一个或多个相应模块。例如,上面提及的功能可以被实现为由该系统的处理器执行的一个或多个软件组件。可替代地,上面提及的功能可以被实现为硬件,诸如一个或多个现场可编程门阵列(FPGA)、和/或一个或多个专用集成电路(ASIC)、和/或一个或多个数字信号处理器(DSP)、和/或一个或多个图形处理单元(GPU)、和/或其他硬件布置。在本文中包含的流程图中实现的或如上所描述的方法步骤可以均由对应的相应模块来实现;在本文中包含的流程图中实现的或如上所描述的多个方法步骤可以由单个模块一起实现。
应当领会的是,由于本发明的实施例由计算机程序来实现,因此存储或携带计算机程序的一个或多个存储介质和/或一个或多个传输介质形成本发明的方面。计算机程序可以具有一个或多个程序指令或程序代码,当由一个或多个处理器(或一个或多个计算机)执行时,这些程序指令或程序代码执行本发明的实施例。本文中使用的术语“程序”可以是被设计用于在计算机系统上执行的指令序列,并且可以包括子例程、函数、过程、模块、对象方法、对象实现、可执行应用、小程序、小服务程序、源代码、对象代码、字节代码、共享库、动态链接库、和/或被设计用于在计算机系统上执行的其他指令序列。存储介质可以是磁盘(诸如,硬盘或软盘)、光盘(诸如,光盘、DVD-ROM或蓝光光盘)、或存储器(诸如,ROM、RAM、EEPROM、EPROM、闪速存储器或便携式/可移动存储设备)等。传输介质可以是通信信号、数据广播、两个或更多个计算机之间的通信链路等。

Claims (15)

1.一种用于执行椭圆曲线密码学过程以基于输入数据生成输出数据的方法,所述椭圆曲线密码学过程基于有限域上的椭圆曲线,其中输出数据的生成包括基于椭圆曲线的预定点V和正R位整数k生成椭圆曲线的第一点,所述第一点至少部分基于椭圆曲线的点kV,其中
Figure 67684DEST_PATH_IMAGE002
,并且对于每个
Figure 52957DEST_PATH_IMAGE004
b r k的位位置rk的位值,其中所述方法包括:
根据kR个位位置到T组位位置
Figure 51131DEST_PATH_IMAGE006
的划分,存储对应的查找表L t ,其对于用于向
Figure DEST_PATH_IMAGE008_9A
个位位置
Figure DEST_PATH_IMAGE010_8A
分配相应位值x s
Figure DEST_PATH_IMAGE012_8A
个可能选项中的每个,具有至少部分基于椭圆曲线的点
Figure 246489DEST_PATH_IMAGE014
的椭圆曲线的对应点;
获得k;以及
将第一点确定为
Figure DEST_PATH_IMAGE016AA
,其中l t 是椭圆曲线的点,所述点在查找表L t 中对应于用于向
Figure DEST_PATH_IMAGE018AA
个位位置
Figure DEST_PATH_IMAGE020AA
分配对应位值b s 的选项。
2.根据权利要求1所述的方法,其中椭圆曲线的第一点是点kV,并且其中,对于每个查找表
Figure 925995DEST_PATH_IMAGE022
以及对于用于向
Figure DEST_PATH_IMAGE023A
个位位置
Figure DEST_PATH_IMAGE024_7A
分配相应位值x s
Figure DEST_PATH_IMAGE025AA
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 155988DEST_PATH_IMAGE027
3.根据权利要求1所述的方法,其中椭圆曲线的第一点是点
Figure DEST_PATH_IMAGE029A
,其中
Figure DEST_PATH_IMAGE031A
是预定非负整数,其中对于每个查找表
Figure 308751DEST_PATH_IMAGE032
以及对于用于向
Figure DEST_PATH_IMAGE033A
个位位置
Figure DEST_PATH_IMAGE024_8A
分配相应位值x s
Figure DEST_PATH_IMAGE025AAA
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 492870DEST_PATH_IMAGE035
4.根据权利要求1所述的方法,其中椭圆曲线的第一点是点
Figure DEST_PATH_IMAGE037A
,其中
Figure DEST_PATH_IMAGE039AA
是预定非负R位整数,其中
Figure 474602DEST_PATH_IMAGE041
,并且对于每个
Figure 168888DEST_PATH_IMAGE043
Figure DEST_PATH_IMAGE045A
是在
Figure DEST_PATH_IMAGE046A
的位位置r
Figure DEST_PATH_IMAGE046AA
的位值,其中对于每个查找表
Figure 446548DEST_PATH_IMAGE048
以及对于用于向
Figure DEST_PATH_IMAGE050AA
个位位置
Figure DEST_PATH_IMAGE052AA
分配相应位值x s
Figure DEST_PATH_IMAGE054A
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 350919DEST_PATH_IMAGE056
5.根据权利要求1所述的方法,其中椭圆曲线的第一点是点k(V+M),其中M是椭圆曲线的预定点,其中对于每个查找表
Figure 746128DEST_PATH_IMAGE048
以及对于用于向
Figure DEST_PATH_IMAGE050AAA
个位位置
Figure DEST_PATH_IMAGE057A
分配相应位值x s
Figure DEST_PATH_IMAGE058A
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 186599DEST_PATH_IMAGE060
6.根据权利要求1所述的方法,其中椭圆曲线的第一点是点kV+M,其中M是椭圆曲线的预定点,其中对于每个查找表
Figure 274641DEST_PATH_IMAGE062
以及对于用于向
Figure DEST_PATH_IMAGE064A
个位位置
Figure DEST_PATH_IMAGE066A
分配相应位值x s
Figure DEST_PATH_IMAGE068A
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 666308DEST_PATH_IMAGE070
7.根据权利要求1所述的方法,其中椭圆曲线的第一点是点
Figure DEST_PATH_IMAGE072A
,其中M是椭圆曲线的预定点,并且
Figure DEST_PATH_IMAGE074A
是预定非负整数,其中对于每个查找表
Figure 22465DEST_PATH_IMAGE076
以及对于用于向
Figure DEST_PATH_IMAGE077A
个位位置
Figure DEST_PATH_IMAGE078A
分配相应位值x s
Figure DEST_PATH_IMAGE079A
个可能选项中的每个,存储在查找表L t 中的椭圆曲线的对应点是椭圆曲线的点
Figure 81557DEST_PATH_IMAGE081
8.根据权利要求3、4或7中任一项所述的方法,其中
Figure DEST_PATH_IMAGE082A
是由第三方维护的秘密。
9.根据权利要求5至7中任一项所述的方法,其中M是由第三方维护的秘密。
10.根据前述权利要求中任一项所述的方法,其中所有T组位位置
Figure 278183DEST_PATH_IMAGE084
具有相同数量的位位置。
11.根据权利要求10所述的方法,其中所有T组位位置
Figure 766933DEST_PATH_IMAGE085
具有4个位位置。
12.根据前述权利要求中任一项所述的方法,其中对于T组位位置
Figure 769524DEST_PATH_IMAGE084
中的每一组,P t 的位位置是连续的。
13.根据前述权利要求中任一项所述的方法,其中密码学过程包括以下各项中的一个或多个:椭圆曲线加密;椭圆曲线解密;椭圆曲线共享秘密建立;椭圆曲线数字签名生成;椭圆曲线数字签名验证。
14.一种被布置来实行前述权利要求中任一项的方法的系统。
15.一种计算机程序,当由一个或多个处理器执行时,所述计算机程序使得一个或多个处理器实行权利要求1至13中任一项的方法。
CN202210111179.2A 2021-08-26 2022-01-29 椭圆曲线密码学过程的安全执行 Pending CN115730295A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP21193192.8A EP4024755B1 (en) 2021-08-26 2021-08-26 Secured performance of an elliptic curve cryptographic process
EP21193192.8 2021-08-26

Publications (1)

Publication Number Publication Date
CN115730295A true CN115730295A (zh) 2023-03-03

Family

ID=77518968

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210111179.2A Pending CN115730295A (zh) 2021-08-26 2022-01-29 椭圆曲线密码学过程的安全执行

Country Status (3)

Country Link
US (1) US20230085577A1 (zh)
EP (1) EP4024755B1 (zh)
CN (1) CN115730295A (zh)

Also Published As

Publication number Publication date
EP4024755B1 (en) 2024-03-20
US20230085577A1 (en) 2023-03-16
EP4024755A1 (en) 2022-07-06

Similar Documents

Publication Publication Date Title
CN106161034B (zh) 使用乘法秘密共享的rsa解密
US11895231B2 (en) Adaptive attack resistant distributed symmetric encryption
CN109309569B (zh) 基于sm2算法的协同签名的方法、装置及存储介质
Abroshan A hybrid encryption solution to improve cloud computing security using symmetric and asymmetric cryptography algorithms
CN114586313B (zh) 用于签署一信息的系统及方法
JP6697506B2 (ja) 関連付けられた秘密鍵部分を用いた高速公開鍵暗号化のためのシステムおよび方法
EP2252932B1 (en) White-box implementation
US20080240443A1 (en) Method and apparatus for securely processing secret data
JP7123959B2 (ja) 楕円曲線点乗算デバイス及び方法
CN107004084B (zh) 用于加密操作的乘法掩码
JP2010277085A (ja) Rsaアルゴリズムにおける素数生成の保護
US11063743B2 (en) Method of RSA signature of decryption protected using assymetric multiplicative splitting
CN108933650B (zh) 数据加解密的方法及装置
TWI686722B (zh) 用於加密操作之指數分拆技術
US10630476B1 (en) Obtaining keys from broadcasters in supersingular isogeny-based cryptosystems
US11418334B2 (en) Protecting modular inversion operation from external monitoring attacks
US10075290B2 (en) Operator lifting in cryptographic algorithm
CN110798313A (zh) 基于秘密动态共享的包含秘密的数的协同生成方法及系统
WO2016102202A1 (en) Cryptographic system and method
CN115730295A (zh) 椭圆曲线密码学过程的安全执行
WO2023055371A1 (en) Replicated secret share generation for distributed symmetric cryptography
US10880278B1 (en) Broadcasting in supersingular isogeny-based cryptosystems
US10523419B2 (en) Data protection
WO2023048711A1 (en) Threshold secret share generation for distributed symmetric cryptography
Assafli et al. The Evaluation of Time-Dependent Initialization Vector Advanced Encryption Standard Algorithm for Image Encryption

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination