CN102306091B - 椭圆曲线点乘硬件快速实现方法 - Google Patents
椭圆曲线点乘硬件快速实现方法 Download PDFInfo
- Publication number
- CN102306091B CN102306091B CN201110191950.3A CN201110191950A CN102306091B CN 102306091 B CN102306091 B CN 102306091B CN 201110191950 A CN201110191950 A CN 201110191950A CN 102306091 B CN102306091 B CN 102306091B
- Authority
- CN
- China
- Prior art keywords
- register
- product
- intermediate value
- coordinate
- result
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000004364 calculation method Methods 0.000 abstract description 5
- 230000007812 deficiency Effects 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开一种椭圆曲线点乘硬件快速实现方法,本发明基于蒙哥马利算法的椭圆曲线点乘算法,采用硬件并行运算的特点,在资源消耗量没有明显的增加的情况下,将点乘运算中比较耗时的步骤进行拆分,重新组合,设计出了基点乘法1、基点乘法2和基点乘法3三个新的并行运算模块,同时在方法开始时增加了一个对随机数的预判断,形成了一个新的比较节省时间的点乘硬件实现方法。在资源消耗量没有明显的增加的情况下,提高了运算速度。同时在复杂度适中的情况下,适用于固定点点乘与非固定点点乘,提高了通用性。
Description
技术领域
本发明涉及通信技术领域,更进一步涉及密码学领域中的椭圆曲线点乘硬件快速实现方法。该方法可以用于固定点与非固定点的点乘运算,从而提高椭圆曲线数字签名(ECDSA),椭圆曲线加解密(ECIES),椭圆曲线密钥分配(ECDH)和椭圆曲线密钥对生成的运算速度。
背景技术
目前,国内外在对于基于椭圆曲线点乘运算上主要有两种方法,梳法和蒙哥马利点乘方法。
微软公司在其专利申请文件“椭圆曲线点乘法”(公开号CN 101507176A,申请号200680031543.3,申请日2006.6.29)中提出一种新的用梳法表示k的点乘计算方法,通过将奇整数k转换成二进制,然后再将该二进制配置成梳比特列,并且提出了一种更高效的比已知的梳法保存更少点的梳法变形,梳法变形在抗简单能量分析攻击上具体比较好的表现。这种方法存在的明显不足是,只能适合于固定点的点乘运算,应用范围窄。而且该方法在运算时还需要进行预计算,从而增加在***外的开销,使得其应用范围有一定的限度。
清华大学在其专利申请文件“椭圆曲线密码***的倍点***”(公开号CN101262345A,申请号200810055618.2,申请日20081.4)与“椭圆曲线密码***的点加***”(公开号CN 101221491A,申请号200810055610.6,申请日2008.1.4)中公开了一种新型的倍点和点加***,将点乘运算分解为点加和倍点运算,分别投影到仿射坐标系和雅格比投影坐标系,然后在不增加面积的情况下,以流水线结构将点加和倍点组合在一起,从而达到在一个基本层面优化椭圆曲线的点乘性能。该方法存在的不足是,这种点乘运算的组合方法在进行点乘运算时,其复杂度将随k值的增加而增加,而且在点乘运算速度过慢的问题上没有很大的改进。
发明内容
本发明的目的在于克服上述现有技术的不足,提出了一种适用于硬件实现的快速点乘方法。该方法可以使点乘运算在满足通用性的前提下能够以较小的面积和较快的速度来完成运算,从而提高了ECDSA,ECIES,椭圆曲线密钥对的生成和ECDH的运算速度。
本发明实现的思路是,基于Lopez和Dahab两位学者提出的基于蒙哥马利算法的椭圆曲线点乘算法,利用硬件并行运算的特点,在资源消耗量没有明显的增加的情况下,将点乘运算中比较耗时的步骤进行拆分,重新组合形成一个新的比较节省时间的点乘硬件实现方法。
本发明的具体实现步骤如下:
(1)数据输入:通过数据输入端接收来自外部一个随机数和一个二进制域椭圆曲线基点;
(2)获取随机数;
(3)获取两倍基点的x坐标值:通过乘法组合运算获取两倍基点的x坐标值,在标准投影坐标下将基点、两倍基点的X坐标值、Z坐标值分别存放在寄存器X1、Z1、X2、Z2中;
(4)调用寄存器中的值:主状态机调用上一次运算结束后存放在寄存器X1、Z1、X2、Z2中的值;
(5)判断位操作:主状态机从随机数的最高位开始往低位进行逐位判断,若随机数当前判断位的值为1,则执行步骤(6),若为0,则执行步骤(7);
(6)基点乘法1运算
6a)主状态机同时做以下四个乘法运算:
调用乘法模块求寄存器X1、Z1中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器X2、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器X1、Z2中值的乘积,其结果存放在寄存器Z5中;调用乘法模块求寄存器X2、Z1中值的乘积;其结果存放在寄存器Z6中;
6b)主状态机同时做以下五个运算:
调用乘法模块求基点x坐标值和寄存器Z1中值的乘积,将乘积结果存放在寄存器Z3中;调用乘法模块求寄存器Z3、Z4中值的乘积,将结果存放在寄存器Z4中;将寄存器Z5与Z6中的值相加后求平方,其结果存放在寄存器Z1中;将寄存器X2中的值求四次方,其结果存放在寄存器X2中;将寄存器Z2中的值求四次方,其结果存放在寄存器X1中;
6c)主状态机同时做以下三个运算:
主状态机调用乘法模块求b与寄存器X1中值的乘积,再将乘积结果与寄存器X2中值相加,其结果存放在寄存器Z2中,其中,b是二进制椭圆曲线Weierstrass方程的一个系数;将寄存器Z5中值求平方,其结果存放在寄存器X1中;将寄存器Z3、Z4中值相加,其结果存放在寄存器X2中;
6d)发出一个完成信号给步骤(8);
(7)基点乘法2运算
7a)主状态机同时做以下四个乘法运算:
调用乘法模块求寄存器X1、Z1中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器X2、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器X1、Z2中值的乘积,其结果存放在寄存器Z5中;调用乘法模块求寄存器X2、Z1中值的乘积;其结果存放在寄存器Z6中;
7b)主状态机同时做以下五个运算:
调用乘法模块求基点x坐标值和寄存器Z2中值的乘积,将乘积结果存放在寄存器Z3中;调用乘法模块求寄存器Z3、Z4中值的乘积,将结果存放在寄存器Z4中;将寄存器Z5与Z6中值相加后求平方,其结果存放在寄存器Z2;将寄存器X1中值求四次方,其结果存放在寄存器X2中;将寄存器Z1中值求四次方,其结果存放在寄存器X1中;
7c)主状态机同时做以下三个运算:
主状态机调用乘法模块求b与寄存器X2中值的乘积,再将乘积结果与寄存器X1中值相加,其结果存放在寄存器Z2中,其中,b是二进制椭圆曲线Weierstrass方程的一个系数;将寄存器Z5中值求平方,其结果存放在寄存器X1中;将寄存器Z3和Z4中值相加,其结果存放在寄存器X2中;
7d)发出一个完成信号给步骤(8);
(8)判断重复条件
主状态机在收到6d)或7d)发出的任意一个完成信号之后,完成以下步骤:
8a)控制当前判断位向下移一位;
8b)根据当前判断位是否还在随机数内,检查随机数最低位是否已经根据步骤(5)完成了判断,如果完成了判断,则执行步骤(9),否则,重复执行步骤(4);
(9)获取点乘的x坐标值
主状态机通过对存放在寄存器X1、Z1中的X坐标值和Z坐标值进行除法运算,得到了点乘的x坐标值;
(10)基点乘法3运算
10a)主状态机调用存放在寄存器X1、Z1、X2、Z2中的值;
10b)主状态机同时做以下三个乘法运算:
调用乘法模块求寄存器Z1中值和基点x坐标值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器Z2中值和基点x坐标值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器Z1、Z2中值的乘积,其结果存放在寄存器Z5中;
10c)主状态机同时做以下四个运算:
将基点x坐标值和点乘x坐标值相加,其结果存放在寄存器Z1中;将寄存器Z3、X1中值相加,其结果存放在寄存器Z3中;将寄存器Z4、X2中值相加,其结果存放在寄存器Z4中;将基点x坐标值平方后与基点y坐标值相加,其结果存放寄存器Z2中;
10d)主状态机同时做以下三个乘法运算:
调用乘法模块求寄存器Z3、Z4中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器Z5、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器Z5中值和基点x坐标值的乘积,其结果存放在寄存器Z5中;
10e)主状态机将寄存器Z3与Z4中值相加,其结果存放在寄存器Z3中;
10f)主状态机调用求逆模块,对寄存器Z5中值进行一次求逆,将求逆结果存放在寄存器Z5中;
10g)主状态机调用一个乘法模块求寄存器Z5、Z3中值的乘积,将乘积结果存放在寄存器Z3中;
10h)主状态机调用一个乘法模块求寄存器Z4、Z3中值的乘积,将乘积结果存放在寄存器Z3中;
10i)主状态机将寄存器Z3的值与基点的y坐标值相加,得到点乘y坐标值;
(11)输出:将得到的点乘的x坐标值和y坐标值通过数据输出端口进行输出操作。
本发明与现有技术相比具有以下优点:
第一,本发明在基点乘法1运算、基点乘法2运算和基点乘法3运算中,采用硬件并行运算的方法,克服了现有技术中运算速度过慢的问题,在资源消耗量没有明显的增加的情况下,提高了运算速度。
第二,本发明的所有步骤均不需要对基点进行预计算,克服了现有技术中需要预计算而额外增加资源消耗的问题和预计算只能使用于固定点点乘的问题,在复杂度适中的情况下,适用于固定点点乘与非固定点点乘,提高了通用性。
附图说明
图1为本发明方法流程图。
具体实施方式
结合附图1,对本发明的步骤做进一步的描述。
本发明的实施例选择标准投影坐标下基于二进制正规基的191位椭圆曲线。由于在正规基下的平方和开方就是移位运算,加法在硬件下实现也是一个逐位异或,因此将加法和平方两个运算放到主状态机中进行。
步骤1.数据输入:通过数据输入端接收来自外部一个随机数和一个二进制域椭圆曲线基点。
步骤2.获取随机数;
随机数的获取步骤是,主状态机调用预判断模块,从输入的固定位数的随机数最高位开始判断,遇到0继续往低位走,遇到1停止,从停止位对随机数进行截取,得到一个新的可供运算的随机数。
步骤3.获取两倍基点的x坐标值:通过乘法组合运算获取两倍基点的x坐标值,在标准投影坐标下将基点、两倍基点的X坐标值、Z坐标值分别存放在寄存器X1、Z1、X2、Z2中,乘法组合运算的方法是,主状态机通过调用乘法模块,将基点的x坐标值四次方后加1,再将基点的x坐标值平方,得到在标准投影坐标下两倍基点的X坐标值和Z坐标值;主状态机对X坐标值和Z坐标值进行相除,得到两倍基点的x坐标值。
步骤4.调用寄存器中的值:主状态机调用上一次运算结束后存放在寄存器X1、Z1、X2、Z2中的值。
步骤5.判断位操作
主状态机从随机数的最高位开始往低位进行逐位判断,若随机数当前判断位的值为1,则跳转至步骤(6),若为0,则跳转至步骤(7)。
步骤6.基点乘法1运算
6a)主状态机同时做以下四个乘法运算:
调用乘法模块求寄存器X1、Z1中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器X2、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器X1、Z2中值的乘积,其结果存放在寄存器Z5中;调用乘法模块求寄存器X2、Z1中值的乘积;其结果存放在寄存器Z6中;
6b)主状态机同时做以下五个运算:
调用乘法模块求基点x坐标值和寄存器Z1中值的乘积,将乘积结果存放在寄存器Z3中;调用乘法模块求寄存器Z3、Z4中值的乘积,将结果存放在寄存器Z4中;将寄存器Z5与Z6中的值逐位异或后循环左移一位,其结果存放在寄存器Z1中;将寄存器X2中的值循环左移两位,其结果存放在寄存器X2中;将寄存器Z2中的值循环左移两位,其结果存放在寄存器X1中;
6c)主状态机同时做以下三个运算:
主状态机调用乘法模块求b与寄存器X1中值的乘积,再将乘积结果与寄存器X2中值进行逐位异或操作,其结果存放在寄存器Z2中,其中,b是二进制椭圆曲线Weierstrass方程的一个系数;将寄存器Z5中值循环左移一位,其结果存放在寄存器X1中;将寄存器Z3、Z4中值进行逐位异或操作,其结果存放在寄存器X2中;
6d)发出一个完成信号给步骤(8);
从而得到了在标准投影坐标下当前判断位对应的两个不同迭代形式点乘的X坐标值和Z坐标值,这些坐标值存放在寄存器中X1、Z1、X2、Z2中。
步骤7.基点乘法2运算
7a)主状态机同时做以下四个乘法运算:
调用乘法模块求寄存器X1、Z1中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器X2、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器X1、Z2中值的乘积,其结果存放在寄存器Z5中;调用乘法模块求寄存器X2、Z1中值的乘积;其结果存放在寄存器Z6中;
7b)主状态机同时做以下五个运算:
调用乘法模块求基点x坐标值和寄存器Z2中值的乘积,将乘积结果存放在寄存器Z3中;调用乘法模块求寄存器Z3、Z4中值的乘积,将结果存放在寄存器Z4中;将寄存器Z5与Z6中值逐位异或后循环左移一位,其结果存放在寄存器Z2;将寄存器X1中值循环左移两位,其结果存放在寄存器X2中;将寄存器Z1中值循环左移两位,其结果存放在寄存器X1中;
7c)主状态机同时做以下三个运算:
主状态机调用乘法模块求b与寄存器X2中值的乘积,再将乘积结果与寄存器X1中值进行逐位异或操作,其结果存放在寄存器Z2中,其中,b是二进制椭圆曲线Weierstrass方程的一个系数;将寄存器Z5中值循环左移一位,其结果存放在寄存器X1中;将寄存器Z3和Z4中值进行逐位异或操作,其结果存放在寄存器X2中;
7d)发出一个完成信号给步骤(8);
从而得到了在标准投影坐标下当前判断位对应的另外两个不同迭代形式点乘的X坐标值和Z坐标值,这些坐标值存放在寄存器中X1、Z1、X2、Z2中。
步骤8.判断重复条件
主状态机在收到6d)和7d)发出的任意一个完成信号之后,完成以下步骤:
8a)控制当前判断位向下移一位;
8b)根据当前判断位是否还在随机数内,检查随机数最低位是否已经根据步骤(5)完成了判断,如果完成了判断,则执行步骤(9),否则,重复执行步骤(4)。
步骤9.获取点乘的x坐标值
主状态机通过对存放在寄存器X1、Z1中的X坐标值和Z坐标值进行除法运算,得到了点乘的x坐标值。
步骤10.基点乘法3
10a)主状态机调用存放在寄存器X1、Z1、X2、Z2中的值;
10b)主状态机同时做以下三个乘法运算:
调用乘法模块求寄存器Z1中值和基点x坐标值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器Z2中值和基点x坐标值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器Z1、Z2中值的乘积,其结果存放在寄存器Z5中;
10c)主状态机同时做以下四个运算:
将基点x坐标值和点乘x坐标值进行逐位异或操作,其结果存放在寄存器Z1中;将寄存器Z3、X1中值进行逐位异或操作,其结果存放在寄存器Z3中;将寄存器Z4、X2中值进行逐位异或操作,其结果存放在寄存器Z4中;将基点x坐标值循环左移一位后与基点y坐标值逐位异或,其结果存放在寄存器Z2中;
10d)主状态机同时做以下三个乘法运算:
调用乘法模块求寄存器Z3、Z4中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器Z5、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器Z5中值和基点x坐标值的乘积,其结果存放在寄存器Z5中;
10e)主状态机将寄存器Z3与Z4中值进行逐位异或操作,其结果存放在寄存器Z3中;
10f)主状态机调用求逆模块,对寄存器Z5中值进行一次求逆,将求逆结果存放在寄存器Z5中;
10g)主状态机调用一个乘法模块求寄存器Z5、Z3中值的乘积,将乘积结果存放在寄存器Z3中;
10h)主状态机调用一个乘法模块求寄存器Z4、Z3中值的乘积,将乘积结果存放在寄存器Z3中;
10i)主状态机将寄存器Z3中的值与基点的y坐标值进行逐位异或操作,得到点乘的y坐标值。
步骤11.输出:将得到的点乘的x坐标值和y坐标值通过数据输出端口进行输出操作。
Claims (3)
1.一种椭圆曲线点乘硬件快速实现方法,其具体步骤如下:
(1)数据输入:通过数据输入端接收来自外部一个随机数和一个二进制域椭圆曲线基点;
(2)获取随机数;
(3)获取两倍基点的x坐标值:通过乘法组合运算获取两倍基点的x坐标值,在标准投影坐标下将基点、两倍基点的X坐标值、Z坐标值分别存放在寄存器X1、Z1、X2、Z2中;
(4)调用寄存器中的值:主状态机调用上一次运算结束后存放在寄存器X1、Z1、X2、Z2中的值;
(5)判断位操作:主状态机从随机数的最高位开始往低位进行逐位判断,若随机数当前判断位的值为1,则执行步骤(6),若为0,则执行步骤(7);
(6)基点乘法1运算
6a)主状态机同时做以下四个乘法运算:
调用乘法模块求寄存器X1、Z1中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器X2、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器X1、Z2中值的乘积,其结果存放在寄存器Z5中;调用乘法模块求寄存器X2、Z1中值的乘积;其结果存放在寄存器Z6中;
6b)主状态机同时做以下五个运算:
调用乘法模块求基点x坐标值和寄存器Z1中值的乘积,将乘积结果存放在寄存器Z3中;调用乘法模块求寄存器Z3、Z4中值的乘积,将结果存放在寄存器Z4中;将寄存器Z5与Z6中的值相加后求平方,其结果存放在寄存器Z1中;将寄存器X2中的值求四次方,其结果存放在寄存器X2中;将寄存器Z2中的值求四次方,其结果存放在寄存器X1中;
6c)主状态机同时做以下三个运算:
主状态机调用乘法模块求b与寄存器X1中值的乘积,再将乘积结果与寄存器X2中值相加,其结果存放在寄存器Z2中,其中,b是二进制椭圆曲线Weierstrass方程的一个系数;将寄存器Z5中值求平方,其结果存放在寄存器X1中;将寄存器Z3、Z4中值相加,其结果存放在寄存器X2中;
6d)发出一个完成信号给步骤(8);
(7)基点乘法2运算
7a)主状态机同时做以下四个乘法运算:
调用乘法模块求寄存器X1、Z1中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器X2、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器X1、Z2中值的乘积,其结果存放在寄存器Z5中;调用乘法模块求寄存器X2、Z1中值的乘积;其结果存放在寄存器Z6中;
7b)主状态机同时做以下五个运算:
调用乘法模块求基点x坐标值和寄存器Z2中值的乘积,将乘积结果存放在寄存器Z3中;调用乘法模块求寄存器Z3、Z4中值的乘积,将结果存放在寄存器Z4中;将寄存器Z5与Z6中值相加后求平方,其结果存放在寄存器Z2;将寄存器X1中值求四次方,其结果存放在寄存器X2中;将寄存器Z1中值求四次方,其结果存放在寄存器X1中;
7c)主状态机同时做以下三个运算:
主状态机调用乘法模块求b与寄存器X2中值的乘积,再将乘积结果与寄存器X1中值相加,其结果存放在寄存器Z2中,其中,b是二进制椭圆曲线Weierstrass方程的一个系数;将寄存器Z5中值求平方,其结果存放在寄存器X1中;将寄存器Z3和Z4中值相加,其结果存放在寄存器X2中;
7d)发出一个完成信号给步骤(8);
(8)判断重复条件
主状态机在收到6d)或7d)发出的任意一个完成信号之后,完成以下步骤:
8a)控制当前判断位向下移一位;
8b)根据当前判断位是否还在随机数内,检查随机数最低位是否已经根据步骤(5)完成了判断,如果完成了判断,则执行步骤(9),否则,重复执行步骤(4);
(9)获取点乘的x坐标值
主状态机通过对存放在寄存器X1、Z1中的X坐标值和Z坐标值进行除法运算,得到了点乘的x坐标值;
(10)基点乘法3运算
10a)主状态机调用存放在寄存器X1、Z1、X2、Z2中的值;
10b)主状态机同时做以下三个乘法运算:
调用乘法模块求寄存器Z1中值和基点x坐标值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器Z2中值和基点x坐标值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器Z1、Z2中值的乘积,其结果存放在寄存器Z5中;
10c)主状态机同时做以下四个运算:
将基点x坐标值和点乘x坐标值相加,其结果存放在寄存器Z1中;将寄存器Z3、X1中值相加,其结果存放在寄存器Z3中;将寄存器Z4、X2中值相加,其结果存放在寄存器Z4中;将基点x坐标值平方后与基点y坐标值相加,其结果存放寄存器Z2中;
10d)主状态机同时做以下三个乘法运算:
调用乘法模块求寄存器Z3、Z4中值的乘积,其结果存放在寄存器Z3中;调用乘法模块求寄存器Z5、Z2中值的乘积,其结果存放在寄存器Z4中;调用乘法模块求寄存器Z5中值和基点x坐标值的乘积,其结果存放在寄存器Z5中;
10e)主状态机将寄存器Z3与Z4中值相加,其结果存放在寄存器Z3中;
10f)主状态机调用求逆模块,对寄存器Z5中值进行一次求逆,将求逆结果存放在寄存器Z5中;
10g)主状态机调用一个乘法模块求寄存器Z5、Z3中值的乘积,将乘积结果存放在寄存器Z3中;
10h)主状态机调用一个乘法模块求寄存器Z4、Z3中值的乘积,将乘积结果存放在寄存器Z3中;
10i)主状态机将寄存器Z3的值与基点的y坐标值相加,得到点乘y坐标值;
(11)输出:将得到的点乘的x坐标值和y坐标值通过数据输出端口进行输出操作。
2.根据权利要求1所述的椭圆曲线点乘硬件快速实现方法,其特征在于,步骤(2)中所述随机数的获取步骤是,主状态机调用预判断模块,从输入的固定位数的随机数最高位开始判断,遇到0继续往低位走,遇到1停止,从停止位对随机数进行截取,得到一个新的可供运算的随机数。
3.根据权利要求1所述的椭圆曲线点乘硬件快速实现方法,其特征在于,步骤(3)中所述乘法组合运算的方法是,主状态机通过调用乘法模块,将基点的x坐标值四次方后加1,再将基点的x坐标值平方,得到在标准投影坐标下两倍基点的X坐标值和Z坐标值;主状态机对X坐标值和Z坐标值进行相除,得到两倍基点的x坐标值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110191950.3A CN102306091B (zh) | 2011-07-08 | 2011-07-08 | 椭圆曲线点乘硬件快速实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110191950.3A CN102306091B (zh) | 2011-07-08 | 2011-07-08 | 椭圆曲线点乘硬件快速实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102306091A CN102306091A (zh) | 2012-01-04 |
CN102306091B true CN102306091B (zh) | 2014-04-16 |
Family
ID=45379957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110191950.3A Expired - Fee Related CN102306091B (zh) | 2011-07-08 | 2011-07-08 | 椭圆曲线点乘硬件快速实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102306091B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970504B (zh) * | 2014-05-07 | 2017-03-29 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 在ecc中实现位数自适应模乘运算的方法及模乘运算器 |
CN105320977B (zh) * | 2015-12-08 | 2018-04-24 | 安徽马钢自动化信息技术有限公司 | 一种基于rfid卡的控制模块及其控制方法 |
CN106126193A (zh) * | 2016-08-24 | 2016-11-16 | 四川卫士通信息安全平台技术有限公司 | 基于Zynq的椭圆曲线点加运算加速器及加速方法 |
CN108075889B (zh) * | 2016-11-18 | 2021-07-16 | 腾讯科技(深圳)有限公司 | 一种降低加解密运算时间复杂度的数据传输方法及*** |
CN107425974B (zh) * | 2017-05-18 | 2021-03-23 | 西安电子科技大学 | 一种FourQ椭圆曲线上KP运算的硬件实现方法 |
CN107425968A (zh) * | 2017-06-22 | 2017-12-01 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现*** |
CN108667621A (zh) * | 2018-05-14 | 2018-10-16 | 河南科技大学 | 一种椭圆曲线数字签名方法 |
CN110233727B (zh) * | 2019-06-12 | 2023-06-13 | 湖南国科微电子股份有限公司 | 一种sm2运算方法、***、设备及计算机存储介质 |
CN112131613B (zh) * | 2020-09-15 | 2022-02-22 | 郑州信大捷安信息技术股份有限公司 | 一种针对sm2算法的掩码运算方法及装置 |
WO2023108422A1 (zh) * | 2021-12-14 | 2023-06-22 | 中国科学院深圳先进技术研究院 | 一种高效的零知识证明加速器及方法 |
CN115062565B (zh) * | 2022-06-22 | 2024-01-05 | 北京理工大学 | 一种低时延椭圆曲线点乘电路设计方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101197668A (zh) * | 2007-12-06 | 2008-06-11 | 上海交通大学 | 基于随机化带符号标量乘法的椭圆曲线抗旁路攻击方法 |
CN101221491A (zh) * | 2008-01-04 | 2008-07-16 | 清华大学 | 椭圆曲线密码***的点加*** |
CN101262345A (zh) * | 2008-01-04 | 2008-09-10 | 清华大学 | 椭圆曲线密码***的倍点*** |
CN101507176A (zh) * | 2005-07-01 | 2009-08-12 | 微软公司 | 椭圆曲线点乘法 |
CN101567783A (zh) * | 2008-04-24 | 2009-10-28 | 深圳市同洲电子股份有限公司 | 一种基于ⅱ型高斯基域的椭圆曲线加解密方法和装置 |
-
2011
- 2011-07-08 CN CN201110191950.3A patent/CN102306091B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101507176A (zh) * | 2005-07-01 | 2009-08-12 | 微软公司 | 椭圆曲线点乘法 |
CN101197668A (zh) * | 2007-12-06 | 2008-06-11 | 上海交通大学 | 基于随机化带符号标量乘法的椭圆曲线抗旁路攻击方法 |
CN101221491A (zh) * | 2008-01-04 | 2008-07-16 | 清华大学 | 椭圆曲线密码***的点加*** |
CN101262345A (zh) * | 2008-01-04 | 2008-09-10 | 清华大学 | 椭圆曲线密码***的倍点*** |
CN101567783A (zh) * | 2008-04-24 | 2009-10-28 | 深圳市同洲电子股份有限公司 | 一种基于ⅱ型高斯基域的椭圆曲线加解密方法和装置 |
Non-Patent Citations (2)
Title |
---|
一种通用ECC协处理器的设计与实现;蔡亮等;《计算机工程》;20090220(第04期);140-142 * |
蔡亮等.一种通用ECC协处理器的设计与实现.《计算机工程》.2009,(第04期),140-142. |
Also Published As
Publication number | Publication date |
---|---|
CN102306091A (zh) | 2012-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102306091B (zh) | 椭圆曲线点乘硬件快速实现方法 | |
CN102207847B (zh) | 基于蒙哥马利模乘运算的数据加解密处理方法及装置 | |
CN101782845B (zh) | 一种椭圆曲线密码的高速运算装置和方法 | |
CN103942031B (zh) | 椭圆域曲线运算方法 | |
CN104679474A (zh) | 有限域gf(2^227)上的乘法器及模乘算法 | |
CN103475469A (zh) | 一种结合cpu和gpu实现sm2算法的方法及装置 | |
CN111966324A (zh) | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 | |
CN103427997A (zh) | 一种生成数字签名的方法及装置 | |
CN100583769C (zh) | 椭圆曲线密码***的倍点*** | |
CN113628094A (zh) | 一种基于gpu的高吞吐量sm2数字签名计算***及方法 | |
CN101221491B (zh) | 椭圆曲线密码***的点加*** | |
CN110460443A (zh) | 椭圆曲线密码的高速点加运算方法和装置 | |
CN109145616B (zh) | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及*** | |
CN104184578B (zh) | 一种基于fpga的椭圆曲线标量乘法加速电路及其算法 | |
CN102571342B (zh) | 一种rsa算法数字签名方法 | |
CN101599828A (zh) | 一种高效的rsa加解密方法及其协处理器 | |
CN113783702A (zh) | 一种椭圆曲线数字签名与验签的硬件实现方法和*** | |
CN105913118A (zh) | 一种基于概率计算的人工神经网络硬件实现装置 | |
Dong et al. | Ec-ecc: Accelerating elliptic curve cryptography for edge computing on embedded gpu tx2 | |
CN101630244B (zh) | 一种流水线型椭圆曲线双标量乘法***及方法 | |
CN111917548B (zh) | 基于gpu与cpu异构结构的椭圆曲线数字签名方法 | |
CN103412737A (zh) | 基4-Booth编码方法及门电路和流水线大数乘法器 | |
CN113467754A (zh) | 一种基于分解约简的格加密模乘运算方法及架构 | |
CN114238205B (zh) | 一种抗功耗攻击的高性能ecc协处理器*** | |
CN110232289A (zh) | 椭圆曲线密码的高速倍点运算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140416 |