CN116827547A - 椭圆曲线点乘运算方法、签名方法及装置、介质、设备 - Google Patents
椭圆曲线点乘运算方法、签名方法及装置、介质、设备 Download PDFInfo
- Publication number
- CN116827547A CN116827547A CN202210284538.4A CN202210284538A CN116827547A CN 116827547 A CN116827547 A CN 116827547A CN 202210284538 A CN202210284538 A CN 202210284538A CN 116827547 A CN116827547 A CN 116827547A
- Authority
- CN
- China
- Prior art keywords
- point
- data
- elliptic curve
- result
- data segment
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000008569 process Effects 0.000 claims abstract description 18
- 238000004590 computer program Methods 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000004422 calculation algorithm Methods 0.000 abstract description 25
- 238000004364 calculation method Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 241000695274 Processa Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
一种椭圆曲线点乘的运算方法、签名方法及装置、介质、设备。所述运算方法包括:对第一数据进行分段,得到所述第一数据的各个数据段,其中每个数据段的长度均所述第一数据的长度与窗口长度的比值;从各个数据段的最高位比特开始,逐次遍历各个数据段的每一比特,并在每一次遍历过程中均依次执行倍点操作及点加操作;将各个数据段最低位比特对应的点加操作结果,作为所述预设点的最终点乘运算结果并输出;其中,在当前次遍历为对各个数据段的第预设次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。采用上述方案,可以提高椭圆曲线签名算法的使用安全性。
Description
技术领域
本发明涉及密码算法技术领域,具体涉及一种椭圆曲线点乘的运算方法、签名方法及装置、介质、设备。
背景技术
椭圆曲线签名算法,是一种基于椭圆曲线上离散对数困难问题的公钥密码算法,以其密钥长度短、算法安全性高等特点,被广泛使用。
椭圆曲线签名算法中的关键步骤是点乘操作,在对性能有要求的实现中,点乘算法通常使用一类快速算法实现,例如梳状算法。梳状算法的原理是:在对椭圆曲线上的某一点执行点乘操作前,预先计算并存储相应窗口长度位数对应的预计算点,后续在点乘计算过程中,每一次均可以对窗口长度位的点乘标量执行倍点和点加操作。相比于一次仅处理一位点乘标量的原始方法,上述梳状算法可以实现点乘加速。
然而,利用椭圆曲线签名算法对信息进行签名时,若采用上述梳状算法执行点乘操作,攻击者可以通过侧信道能量攻击的方式,破解得到椭圆曲线签名算法的私钥,导致信息泄露。
发明内容
本发明要解决的问题是:如何提高椭圆曲线签名算法的使用安全性。
为解决上述问题,本发明实施例提供了一种椭圆曲线点乘的运算方法,所述方法包括:
接收第一数据,并对所述第一数据进行分段,得到所述第一数据的各个数据段,其中每个数据段的长度均所述第一数据的长度与窗口长度的比值;
从各个数据段的最高位比特开始,逐次遍历各个数据段的每一比特,并在每一次遍历过程中均依次执行倍点操作及点加操作;所述倍点操作是对上一次点加操作结果执行倍点操作,所述点加操作是对当前次倍点操作结果与椭圆曲线上预设点的当前点乘操作结果执行点加操作;
将各个数据段最低位比特对应的点加操作结果,作为所述预设点的最终点乘运算结果并输出;
其中,在当前次遍历为对各个数据段的第预设次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。
本发明实施例还提供了一种椭圆曲线签名方法,所述方法包括:
获取密钥数据、椭圆曲线上的相关参数值和预设点的数据;
生成第一数据,并采用上述任一种的椭圆曲线点乘的运算方法,得到所述预设点的最终点乘运算结果;
基于所述预设点的最终点乘运算结果,对待签名数据进行签名,得到所述待签名数据对应的签名结果。
本发明实施例还提供了一种椭圆曲线点乘的运算装置,所述装置包括:
分段单元,适于接收第一数据,并对所述第一数据进行分段,得到所述第一数据的各个数据段,其中每个数据段的长度均所述第一数据的长度与窗口长度的比值;
操作单元,适于从各个数据段的最高位比特开始,逐次遍历各个数据段的每一比特,并在每一次遍历过程中均依次执行倍点操作及点加操作;所述倍点操作是对上一次点加操作结果执行倍点操作,所述点加操作是对当前次倍点操作结果与椭圆曲线上预设点的当前点乘操作结果执行点加操作;
输出单元,适于将各个数据段最低位比特对应的点加操作结果,作为所述预设点的最终点乘运算结果并输出;
其中,在当前次遍历为对各个数据段的第预设次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。
本发明实施例还提供了一种椭圆曲线签名装置,所述装置包括:
获取单元,适于获取密钥数据、椭圆曲线上的相关参数值及预设点的数据;
点乘运算单元,适于生成第一数据,并采用上述任一种的椭圆曲线点乘的运算方法,得到所述预设点的最终点乘运算结果
签名生成单元,适于基于所述预设点的最终点乘运算结果,对待签名数据进行签名,得到所述待签名数据对应的签名结果。
本发明实施例还提供了一种电子设备,所述电子设备包括上述的椭圆曲线签名装置。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行,以实现上述任一种所述方法的步骤。
本发明实施例还提供了一种电子设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述任一种所述方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下优点:
应用本发明的方案,在当前次遍历为对各个数据段的第预设次遍历后,除依次执行倍点操作及点加操作外,还在对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作,即使椭圆曲线上预设点的点乘操作结果为零时不进行点加操作这一侧信道特征被攻击者利用,由于伪倍点操作的存在,攻击者得到的某一数据段得某一比特值在第一数据中位置信息是错误的,从而无法成功进行格攻击获取椭圆曲线签名算法中私钥的值。
附图说明
图1是本发明实施例中一种椭圆曲线点乘运算方法的流程图;
图2是本发明实施例中一种椭圆曲线签名方法的流程图;
图3是本发明实施例中一种椭圆曲线点乘运算装置的结构示意图;
图4是本发明实施例中一种椭圆曲线签名装置的结构示意图。
具体实施方式
以利用梳状算法对椭圆曲线上有限域为FP的点P执行点乘操作为例,假设对点P执行点乘操作的第一数据为k,第一数据k的二进制表示为:(kl-1,……,k1,k0),l表示第一数据k的总长度。窗口长度为w,w为大于或等于1的整数。令即对l/w的取值向上取整。对点P执行点乘操作的具体过程如下:
步骤1、对第一数据k进行分段,令第一数据k=Kw-1||...||K1||K0,对于第一数据k的任意数据段Kj的二进制长度均为t,j∈[0,w-1]。预先计算第一数据k各数据段同一比特构成的数据与第一数据k的点乘结果,例如,令表示数据段Kj的第i个比特,则第一数据k各数据段的第i个比特与第一数据k的点乘结果可以表示为:/>依此类推,可以得到第一数据k各数据段同一比特构成的数据与第一数据k的w个点乘结果。
步骤2、令Q的初始值为0,从i=t-1到i=0,对于i的任意值,依次对上一次遍历得到的点加操作结果执行倍点操作及点加操作,最终输出i=0的点加操作结果值,作为对点P执行点乘操作的最终结果。例如,当前对上一次遍历得到的点加操作结果执行倍点操作,是对上一轮点加操作结果值取2倍,再将对上一轮点加操作结果值取2倍的结果,与当前第一数据k各数据段的同一比特与第一数据k的点乘结果执行点加操作,即此轮执行倍点操作及点加操作后得到的点加操作结果值,为下一轮执行倍点操作的操作数。
在上述步骤2中,当时,Q=2Q,算法流程不会进行点加操作,即不会执行/>这一操作。此时,攻击者可以通过观察点乘运算过程中,点加操作和倍点操作的侧信道特征来确定当前/>是否为0。由于的期望为1/2w,因此,攻击者仅知道单次点乘过程中的部分标量时,无法对整个点乘产生威胁。
然而,攻击者可以对签名功能进行多次调用,并根据侧信道特征筛选出点乘中特定位置为0的签名,再结合格攻击的方法,就可以获取椭圆曲线签名算法中的私钥。
以利用椭圆曲线签名算法对消息m进行加密为例,选取第一数据k后,先对曲线上P点执行点乘操作,得到点乘操作结果Q,其中,k的取值范围是:1≤k≤n-1,n为整数。假设Q坐标为(x1,y1),根据Q的横坐标x1,可以得到r=x1modn,基于第一数据k、消息m的哈希运算结果e及私钥d,计算得到s的值,s=k-1(e+dr)modn,再将消息m和签名{r,s}发送给接收方。
将椭圆曲线签名公式s=k-1(e+dr)modn进行变形后可得sk-rd=emodn,其中s、r及e为已知数,k及d是未知数。每次签名时私钥d是固定的。攻击者可以通过侧信道攻击的方式获取每次签名中部分k的信息,通过多次签名,攻击者就可以构建一个关于k和d的扩展隐数问题(Extended Hidden Number Problem,EHNP),通过使用相关算法解决上述EHNP问题就能够得到私钥d的值。
为了抵抗上述格攻击,需要在进行椭圆曲线签名过程中防止攻击者获取k的信息,现有常用的方法是:在点乘过程中使用伪点加操作。伪点加操作是在点乘过程中当等于0时也进行一次点加操作,即无论/>是否等于0,均执行一次点加操作。但该次点加操作的结果仅保存在伪操作结果缓冲区,不参与后续正常计算。
由于无论是否等于0,均执行了一次点加操作,因此攻击者无法通过点乘的侧信道特征(如功耗、电磁、光、热等特征)来确定部分k的值,从而无法进行下一步的格攻击。
以D表示一次倍点所需要的时间,A表示一次点加所需要的时间。经发明人研究发现,当点乘标量位长为l时,梳状算法窗口位长为w时,使用上述梳妆算法计算一次点乘的时间为而使用在点乘过程中增加伪点加操作方案时计算一次点乘的时间为此时性能损失为:/>例如,当w=2且认为D和A近似相等时,使用在点乘过程中增加伪点加操作方案,相比改进前的梳妆算法,性能损失约为14.3%。
针对该问题,本发明提供了一种椭圆曲线点乘的运算方法,应用上述方案,在对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作,进而即使椭圆曲线上预设点的点乘操作结果为零时不进行点加操作这一侧信道特征被攻击者利用,由于伪倍点操作的存在,攻击者得到的某一数据段得某一比特值在第一数据中位置信息是错误的,从而无法成功进行格攻击获取椭圆曲线签名算法中私钥的值。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例作详细地说明。
参照图1,本发明实施例提供了一种椭圆曲线点乘的运算方法,所述方法可以包括如下步骤:
步骤11,接收第一数据,并对第一数据进行分段,得到所述第一数据的各个数据段,其中每个数据段的长度均所述第一数据的长度与窗口长度的比值。
在具体实施中,第一数据k可以是随机生成的。假设第一数据k分段后,得到k=Kw-1||...||K1||K0。对于第一数据k的任意数据段Kj的二进制长度均为t,j∈[0,w-1]。t为第一数据k的长度l与窗口长度w的比值,即
需要说明的是,在具体实施中,在需要时,可以通过在高位补“0”的方式,使得第一数据k每个数据段长度均为t。
步骤12,从各个数据段的最高位比特开始,逐次遍历各个数据段的每一比特,并在每一次遍历过程中均依次执行倍点操作及点加操作。
其中,所述倍点操作是对上一次点加操作结果执行倍点操作,所述点加操作是对当前次倍加操作结果与椭圆曲线上预设点的当前点乘操作结果执行点加操作。在当前次遍历为对各个数据段的第预设次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。
假设第一数据k每个数据段长度均为t,即各数据段均包括第0比特至第t-1比特,其中,第0比特为最低位比特,第t-1比特为最高位比特,从每个数据段的最高位比特开始,逐次遍历各个数据段的每一比特。具体地,第一次遍历各个数据段的第t-1比特,第二次遍历各个数据段的第t-2比特,……,最后一次遍历各个数据段的第0比特。每次遍历的各个比特,构成椭圆曲线上一个点,用于后续与预设点P执行点乘操作。
例如,将第一数据k分成四个数据段,分别为K0、K1、K2及K3。当t=4时,各个数据段K均包括第0比特至第3比特。第一次遍历,得到各个数据段的第3比特,即第二次遍历,得到各个数据段的第2比特,即/>第三次遍历,得到各个数据段的第1比特,即/>第四次遍历,得到各个数据段的第0比特,即/>
在每一次遍历过程中均依次执行倍点操作及点加操作。在本发明的一实施例中,所述倍点操作,可以是基于上一次点加操作结果的倍点操作。
具体地,可以设定椭圆曲线上预设点P的点乘操作结果Q初始值为Qt=0。
在第一次遍历时,对Qt执行倍点操作,再对Qt执行倍点操作的结果执行点加操作,得到第一次点加操作结果Qt-1。其中,所述对Qt执行倍点操作,具体可以是计算Qt的2倍。对Qt执行倍点操作的结果执行点加操作,即计算各数据段最高位比特构成的点与预设点之间的点乘操作结果,与2Qt之间的点加操作将结果。
第二次遍历时,对第一次点加操作结果Qt-1执行倍点操作,再对Qt-1执行倍点操作的结果执行点加操作,得到第二次点加操作结果Qt-2。其中,所述对Qt-1执行倍点操作,具体可以是计算Qt-1的2倍。对Qt-1执行倍点操作的结果执行点加操作,即计算各数据段次高位比特构成的点与预设点之间的点乘操作结果,与2Qt-1之间的点加操作将结果。
……
最后一次遍历时,对上一次点加操作结果Q1执行倍点操作,再对Q1执行倍点操作的结果执行点加操作,得到最后一次点加操作结果Q0。最后一次点加操作结果Q0,即各个数据段最低位比特对应的点加操作结果。其中,所述对Q1执行倍点操作,具体可以是计算Q1的2倍。对Q1执行倍点操作的结果执行点加操作,即计算各数据段最低位比特构成的点与预设点之间的点乘操作结果,与2Q1之间的点加操作将结果。
所述预设点的当前点乘操作结果,是当前次遍历的各个数据段各个比特与所述预设点的点乘操作结果,例如,在当前次遍历为对各个数据段的第i比特遍历时,预设点的当前点乘操作,即各个数据段的第i比特构成的点与预设点P之间执行点乘操作,即
在具体实施中,各个数据段同一比特构成的点与预设点之间的点乘操作结果,可以是预先计算得到的。在计算预设点P的最终点乘运算过程中,直接利用预先得到的进行运算即可。
在本发明的实施例中,每次对各个数据段进行遍历后,除依次执行倍点操作及点加操作外,还可以插入至少一次的伪倍点操作。其中,插入伪倍点操作的次数及时机可以根据实际需要进行设置,此次不作限制。可以理解的是,只要插入伪倍点操作,即落入本发明的保护范围之内。
所谓伪倍点操作,即基于上一次遍历得到的点加操作结果的倍点操作,但该倍点操作与后续的倍点操作及点加操作无关。所述伪倍点操作及后续执行的所述倍点操作,属于同一倍点操作。
在当前次遍历为对各个数据段的第预设次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。
在本发明的一实施例中,所述预设次可以为第一随机数y,即在当前次遍历为对各个数据段的第y次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。此时,对预设点执行点乘运算的整个过程中,仅插入一次伪倍点操作。所述第一随机数y小于或等于数据段的长度t。
在本发明的另一实施例中,所述预设次可以包括:第二随机数x及第三随机数u,即在当前次遍历为对各个数据段的第x遍历及第u次遍历时,均插入伪倍点操作,其中,x<u,且x及u均小于或等于数据段的长度t。此时,对预设点执行点乘运算的整个过程中,仅插入两次伪倍点操作。
在其它实施例中,所述预设次也可以包括三个或三个以上的随机数,即在对预设点执行点乘运算的整个过程中,插入三次或三次以上伪倍点操作。
可以理解的是,插入伪倍点操作的次数越多,防攻击效果越好,但性能损失也就越多。本领域技术人员可以根据实际需要设置插入伪倍点操作的次数。
在具体实施中,插入伪倍点操作的时机可以存在多种设置。比如,可以在对数据段前几次遍历时插入伪倍点操作,也可以在对数据段后几次遍历时插入伪倍点操作。
在本发明的一优选实施例中,所述数据段的长度为t,所述第二随机数x的取值范围为[0,3],所述第三随机数u的取值范围是[t-5,t-2]。即在前4次遍历过程中插入一次伪倍点操作,在后4次遍历过程中也插入一次伪倍点操作。此时可以在保证性能的情况下,达到最佳的防攻击效果。
在具体实施中,所述伪倍点操作与倍点操作的运算过程相同,由此才可以扰乱攻击者的侧信道特征分析。比如,当所述倍点操作是计算上一次点加操作结果的2倍时,所述伪倍点操作也是计算上一次点加操作结果的2倍,不同的是,所述倍点操作的结果用于后续的点加操作,而所述伪倍点操作的结果不用于后续的所述倍点操作及点加操作。
例如,当t=10时,可以设置第二随机数x=2,第三随机数u=8,即在对各个数据段的第9比特遍历时,先执行伪倍点操作,再依次执行倍点操作及点加操作。在对各个数据段的第3比特遍历时,先执行伪倍点操作,再依次执行倍点操作及点加操作。
具体地,在对各个数据段的第10比特遍历时,直接对点乘操作结果的初始值依次执行倍点操作及点加操作,得到第一次点乘运算结果Q10。
在对各个数据段的第9比特遍历时,对Q10先执行伪倍点操作,再依次执行倍点操作及点加操作,其中,伪倍点操作是计算Q10的2倍,倍点操作也是计算Q10的2倍,点加操作是计算2Q10及当前次遍历对应点乘运算结果的点加操作。
……
在对各个数据段的第3比特遍历时,对Q4先执行伪倍点操作,再依次执行倍点操作及点加操作,得到对应的点加操作结果Q3,其中,伪倍点操作是计算Q4的2倍,倍点操作也是计算Q4的2倍,点加操作是计算2Q4及当前次遍历对应点乘运算结果的点加操作。
在对各个数据段的第2比特遍历时,对Q3依次执行倍点操作及点加操作,得到对应的点加操作结果Q2。
在对各个数据段的第1比特遍历时,对Q2依次执行倍点操作及点加操作,得到对应的点加操作结果Q1。
需要说明的是,在具体实施中,可以在前4次遍历过程中插入两次或两次以上伪倍点操作,也可以在后4次遍历过程中插入两次或两次以上伪倍点操作,并不限制伪倍点插入次数。
步骤13,将各个数据段最低位比特对应的点加操作结果,作为所述预设点的最终点乘运算结果并输出。
例如,当t=10时,各个数据段最低位比特对应的点加操作结果即Q1,为所述预设点的最终点乘运算结果并输出。
采用上述椭圆曲线点乘的运算方法,通过插入伪倍点操作,攻击者在多次对运算过程进行侧信道特征分析时,伪倍点操作可以扰乱倍点操作的侧信道特征,使得倍点操作与点加操作之间的侧信道特征不匹配,由此使得供给侧得到的比特值在第一数据中的位置信息发生错误,从而无法成功获取到私钥值。
另外,采用本发明的方案,性能损失相对于现有方案也明显降低。D表示执行一次倍点操作所需的时间,A表示执行一次点加操作所需要的时间。当点乘标量位长为l,梳状算法窗口位长为w时,使用本发明的方法计算一次点乘的时间为相比于增加伪点加操作防攻击时,所带来的性能损失,明显减少。
例如,当w=2,l=256,且D和A近似相等时,采用增加伪点加操作执行点乘运算时,性能损失约14.3%。而采用本发明的方案,在前4次遍历及后4次遍历过程中分别插入一次伪倍点操作,则性能损失约0.9%。
参照图2,本发明实施例还提供了一种椭圆曲线签名方法,所述方法可以包括:
步骤21,获取密钥数据、椭圆曲线上相关参数值和预设点的数据。
在具体实施中,椭圆曲线上的相关参数值可以包括:预设点P所在的有限域、P的位置信息,及第一数据的取值上限n等。上述信息可以通过外部输入的方式获取。
步骤22,生成第一数据,并采用上述实施例中的椭圆曲线点乘的运算方法,得到所述预设点的最终点乘运算结果。
在具体实施中,可以在所获取的第一数据的取值上限n限制内,随机生成第一随机数,利用第一数据对预设点P执行点乘运算,得到点乘运算结果Q,Q坐标为(x1,y1)。
步骤23,基于所述预设点的最终点乘运算结果,对待签名数据进行签名,得到所述待签名数据对应的签名结果。
根据Q的横坐标x1,可以得到r=x1modn,基于第一数据k、消息m的哈希运算结果e及私钥d,计算得到s的值,s=k-1(e+dr)modn,再将消息m和签名{r,s}发送给接收方。
由上述内容可知,采用本发明实施例中的椭圆曲线签名方法,由于得到预设点的最终点乘运算结果的过程中,插入伪倍点操作,不仅可以抵抗针对椭圆曲线签名的格攻击,还可以尽量减少因增加防护所带来的性能损失。
为了使本领域技术人员更好地理解和实现本发明,以下对上述方法对应的用户终端及计算机可读存储介质进行详细描述。
参照图3,本发明实施例提供了一种椭圆曲线点乘的运算装置,所述装置可以包括:分段单元31、操作单元32及输出单元33。其中:
所述分段单元31,适于接收第一数据,并对所述第一数据进行分段,得到所述第一数据的各个数据段,其中每个数据段的长度均所述第一数据的长度与窗口长度的比值;
所述操作单元32,适于从各个数据段的最高位比特开始,逐次遍历各个数据段的每一比特,并在每一次遍历过程中均依次执行倍点操作及点加操作;所述倍点操作是对上一次点加操作结果执行倍点操作,所述点加操作是对当前次倍点操作结果与椭圆曲线上预设点的当前点乘操作结果执行点加操作;
所述输出单元33,适于将各个数据段最低位比特对应的点加操作结果,作为所述预设点的最终点乘运算结果并输出;
其中,在当前次遍历为对各个数据段的第预设次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。
在本发明的一实施例中,所述伪倍点操作及所述倍点操作,均是计算上一次点加操作结果的2倍。
参照图4,本发明实施例还提供了一种椭圆曲线签名装置,所述装置包括:获取单元41、点乘运算单元42及加密单元43。其中:
所述获取单元41,适于获取密钥数据、椭圆曲线上的相关参数值和预设点的数据;
所述点乘运算单元42,适于生成第一数据,并采用权利要求1至7任一项所述的椭圆曲线点乘的运算方法,得到所述预设点的最终点乘运算结果
所述签名生成单元43,适于基于所述预设点的最终点乘运算结果,对待签名数据进行签名,得到所述待签名数据对应的签名结果。
本发明实施例还提供了一种电子设备,所述电子设备包括上述的椭圆曲线签名装置。
本发明实施例还提供了另一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行,以实现上述任意实施例中方法的步骤。不再赘述。
在具体实施中,所述计算机可读存储介质可以包括:ROM、RAM、磁盘或光盘等。
本发明实施例还提供了一种电子设备,所述终端可以包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述实施例中任一种所述方法的步骤,不再赘述。
关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (14)
1.一种椭圆曲线点乘的运算方法,其特征在于,包括:
接收第一数据,并对所述第一数据进行分段,得到所述第一数据的各个数据段,其中每个数据段的长度均所述第一数据的长度与窗口长度的比值;
从各个数据段的最高位比特开始,逐次遍历各个数据段的每一比特,并在每一次遍历过程中均依次执行倍点操作及点加操作;所述倍点操作是对上一次点加操作结果执行倍点操作,所述点加操作是对当前次倍点操作结果与椭圆曲线上预设点的当前点乘操作结果执行点加操作;
将各个数据段最低位比特对应的点加操作结果,作为所述预设点的最终点乘运算结果并输出;
其中,在当前次遍历为对各个数据段的第预设次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。
2.如权利要求1所述的椭圆曲线点乘的运算方法,其特征在于,所述预设次包括:预先生成的第一随机数。
3.如权利要求1所述的椭圆曲线点乘的运算方法,其特征在于,所述预设次包括:预先生成的第二随机数及第三随机数,所述第二随机数小于所述第三随机数。
4.如权利要求3所述的椭圆曲线点乘的运算方法,其特征在于,所述数据段的长度为t,所述第二随机数的取值范围为[0,3],所述第三随机数的取值范围是[t-5,t-2]。
5.如权利要求1所述的椭圆曲线点乘的运算方法,其特征在于,所述伪倍点操作及所述倍点操作,均是基于上一次点加操作结果的倍点操作。
6.如权利要求1所述的椭圆曲线点乘的运算方法,其特征在于,运行所述方法的过程中,执行所述伪倍点操作的次数为两次以上。
7.如权利要求1所述的椭圆曲线点乘的运算方法,其特征在于,所述预设点的当前点乘操作结果,是预先计算得到的。
8.一种椭圆曲线签名方法,其特征在于,包括:
获取密钥数据、椭圆曲线上的相关参数值和预设点的数据;
生成第一数据,并采用权利要求1至7任一项所述的椭圆曲线点乘的运算方法,得到所述预设点的最终点乘运算结果;
基于所述预设点的最终点乘运算结果,对待签名数据进行签名,得到所述待签名数据对应的签名结果。
9.一种椭圆曲线点乘的运算装置,其特征在于,包括:
分段单元,适于接收第一数据,并对所述第一数据进行分段,得到所述第一数据的各个数据段,其中每个数据段的长度均所述第一数据的长度与窗口长度的比值;
操作单元,适于从各个数据段的最高位比特开始,逐次遍历各个数据段的每一比特,并在每一次遍历过程中均依次执行倍点操作及点加操作;所述倍点操作是对上一次点加操作结果执行倍点操作,所述点加操作是对当前次倍点操作结果与椭圆曲线上预设点的当前点乘操作结果执行点加操作;
输出单元,适于将各个数据段最低位比特对应的点加操作结果,作为所述预设点的最终点乘运算结果并输出;
其中,在当前次遍历为对各个数据段的第预设次遍历时,对上一次点加操作结果执行倍加操作之前,对上一次点加操作结果执行伪倍点操作。
10.如权利要求9所述的椭圆曲线点乘的运算装置,其特征在于,所述伪倍点操作及所述倍点操作,均是基于上一次点加操作结果的倍点操作。
11.一种椭圆曲线签名装置,其特征在于,包括:
获取单元,适于获取密钥数据、椭圆曲线上的相关参数值及预设点的数据;
点乘运算单元,适于生成第一数据,并采用权利要求1至7任一项所述的椭圆曲线点乘的运算方法,得到所述预设点的最终点乘运算结果
签名生成单元,适于基于所述预设点的最终点乘运算结果,对待签名数据进行签名,得到所述待签名数据对应的签名结果。
12.一种电子设备,其特征在于,包括权利要求11所述的椭圆曲线签名装置。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行,以实现权利要求1至8任一项所述方法的步骤。
14.一种电子设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时执行权利要求1至8任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210284538.4A CN116827547A (zh) | 2022-03-22 | 2022-03-22 | 椭圆曲线点乘运算方法、签名方法及装置、介质、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210284538.4A CN116827547A (zh) | 2022-03-22 | 2022-03-22 | 椭圆曲线点乘运算方法、签名方法及装置、介质、设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116827547A true CN116827547A (zh) | 2023-09-29 |
Family
ID=88115437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210284538.4A Pending CN116827547A (zh) | 2022-03-22 | 2022-03-22 | 椭圆曲线点乘运算方法、签名方法及装置、介质、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116827547A (zh) |
-
2022
- 2022-03-22 CN CN202210284538.4A patent/CN116827547A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1889391B1 (en) | Scalar recoding for elliptic curve point multiplication | |
Yen et al. | Power analysis by exploiting chosen message and internal collisions–vulnerability of checking mechanism for RSA-decryption | |
den Boer et al. | A DPA attack against the modular reduction within a CRT implementation of RSA | |
JP4632950B2 (ja) | 個人鍵を用いた耐タンパ暗号処理 | |
Medwed et al. | Template attacks on ECDSA | |
EP1840732A1 (en) | Protection against side channel attacks | |
US7908641B2 (en) | Modular exponentiation with randomized exponent | |
EP1160661A2 (en) | Method of calculating multiplication by scalars on an elliptic curve and apparatus using same | |
US7218735B2 (en) | Cryptography method on elliptic curves | |
CN109145616B (zh) | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 | |
US20170180114A1 (en) | Countermeasure method for an electronic component implementing an elliptic curve cryptography algorithm | |
JP2011510579A (ja) | 署名ダイアグラムを用いた非対称暗号方式のための対策方法およびデバイス | |
Koppermann et al. | 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices | |
CN107896142B (zh) | 一种执行模幂运算的方法及装置、计算机可读存储介质 | |
JP2004304800A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
KR100574965B1 (ko) | 유한체 곱셈기 | |
US9722773B2 (en) | Method of determining a representation of a product of a first element and a second element of a finite set, method of evaluating a function applied to an element of a finite set and associated devices | |
CN114465728B (zh) | 攻击椭圆曲线签名算法的方法、装置、设备及存储介质 | |
CN109936437B (zh) | 一种基于d+1阶掩码的抗功耗攻击方法 | |
CN116827547A (zh) | 椭圆曲线点乘运算方法、签名方法及装置、介质、设备 | |
CN116132050A (zh) | 一种消息处理方法、系统、设备及计算机可读存储介质 | |
Reyad et al. | Pseudo-random sequence generation from elliptic curves over a finite field of characteristic 2 | |
CN114257380A (zh) | 一种数字签名方法、系统及设备 | |
CN110299986B (zh) | 基于rsa乱序的多变量二次方程加密方法和装置 | |
KR100723863B1 (ko) | 랜덤화한 프로베니우스 분해방법을 이용한 차분 공격 방지방법 및 그 장치 |
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 |