CN102306091A - 椭圆曲线点乘硬件快速实现方法 - Google Patents

椭圆曲线点乘硬件快速实现方法 Download PDF

Info

Publication number
CN102306091A
CN102306091A CN201110191950A CN201110191950A CN102306091A CN 102306091 A CN102306091 A CN 102306091A CN 201110191950 A CN201110191950 A CN 201110191950A CN 201110191950 A CN201110191950 A CN 201110191950A CN 102306091 A CN102306091 A CN 102306091A
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.)
Granted
Application number
CN201110191950A
Other languages
English (en)
Other versions
CN102306091B (zh
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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201110191950.3A priority Critical patent/CN102306091B/zh
Publication of CN102306091A publication Critical patent/CN102306091A/zh
Application granted granted Critical
Publication of CN102306091B publication Critical patent/CN102306091B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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坐标值。
CN201110191950.3A 2011-07-08 2011-07-08 椭圆曲线点乘硬件快速实现方法 Active CN102306091B (zh)

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 true CN102306091A (zh) 2012-01-04
CN102306091B CN102306091B (zh) 2014-04-16

Family

ID=45379957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110191950.3A Active CN102306091B (zh) 2011-07-08 2011-07-08 椭圆曲线点乘硬件快速实现方法

Country Status (1)

Country Link
CN (1) CN102306091B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970504A (zh) * 2014-05-07 2014-08-06 广东顺德中山大学卡内基梅隆大学国际联合研究院 在ecc中实现位数自适应模乘运算的方法及模乘运算器
CN105320977A (zh) * 2015-12-08 2016-02-10 安徽马钢自动化信息技术有限公司 一种基于rfid卡的控制模块及其控制方法
CN106126193A (zh) * 2016-08-24 2016-11-16 四川卫士通信息安全平台技术有限公司 基于Zynq的椭圆曲线点加运算加速器及加速方法
CN107425974A (zh) * 2017-05-18 2017-12-01 西安电子科技大学 一种FourQ椭圆曲线上KP运算的硬件实现方法
CN107425968A (zh) * 2017-06-22 2017-12-01 广东工业大学 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统
CN108075889A (zh) * 2016-11-18 2018-05-25 腾讯科技(深圳)有限公司 一种降低加解密运算时间复杂度的数据传输方法及系统
CN108667621A (zh) * 2018-05-14 2018-10-16 河南科技大学 一种椭圆曲线数字签名方法
CN110233727A (zh) * 2019-06-12 2019-09-13 湖南国科微电子股份有限公司 一种sm2运算方法、系统、设备及计算机存储介质
CN112131613A (zh) * 2020-09-15 2020-12-25 郑州信大捷安信息技术股份有限公司 一种针对sm2算法的掩码运算方法及装置
CN115062565A (zh) * 2022-06-22 2022-09-16 北京理工大学 一种低时延椭圆曲线点乘电路设计方法
WO2023108422A1 (zh) * 2021-12-14 2023-06-22 中国科学院深圳先进技术研究院 一种高效的零知识证明加速器及方法

Citations (5)

* Cited by examiner, † Cited by third party
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 深圳市同洲电子股份有限公司 一种基于ⅱ型高斯基域的椭圆曲线加解密方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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 (1)

* Cited by examiner, † Cited by third party
Title
蔡亮等: "一种通用ECC协处理器的设计与实现", 《计算机工程》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970504B (zh) * 2014-05-07 2017-03-29 广东顺德中山大学卡内基梅隆大学国际联合研究院 在ecc中实现位数自适应模乘运算的方法及模乘运算器
CN103970504A (zh) * 2014-05-07 2014-08-06 广东顺德中山大学卡内基梅隆大学国际联合研究院 在ecc中实现位数自适应模乘运算的方法及模乘运算器
CN105320977A (zh) * 2015-12-08 2016-02-10 安徽马钢自动化信息技术有限公司 一种基于rfid卡的控制模块及其控制方法
CN105320977B (zh) * 2015-12-08 2018-04-24 安徽马钢自动化信息技术有限公司 一种基于rfid卡的控制模块及其控制方法
CN106126193A (zh) * 2016-08-24 2016-11-16 四川卫士通信息安全平台技术有限公司 基于Zynq的椭圆曲线点加运算加速器及加速方法
CN108075889A (zh) * 2016-11-18 2018-05-25 腾讯科技(深圳)有限公司 一种降低加解密运算时间复杂度的数据传输方法及系统
CN107425974B (zh) * 2017-05-18 2021-03-23 西安电子科技大学 一种FourQ椭圆曲线上KP运算的硬件实现方法
CN107425974A (zh) * 2017-05-18 2017-12-01 西安电子科技大学 一种FourQ椭圆曲线上KP运算的硬件实现方法
CN107425968A (zh) * 2017-06-22 2017-12-01 广东工业大学 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统
CN108667621A (zh) * 2018-05-14 2018-10-16 河南科技大学 一种椭圆曲线数字签名方法
CN110233727A (zh) * 2019-06-12 2019-09-13 湖南国科微电子股份有限公司 一种sm2运算方法、系统、设备及计算机存储介质
CN112131613A (zh) * 2020-09-15 2020-12-25 郑州信大捷安信息技术股份有限公司 一种针对sm2算法的掩码运算方法及装置
CN112131613B (zh) * 2020-09-15 2022-02-22 郑州信大捷安信息技术股份有限公司 一种针对sm2算法的掩码运算方法及装置
WO2023108422A1 (zh) * 2021-12-14 2023-06-22 中国科学院深圳先进技术研究院 一种高效的零知识证明加速器及方法
CN115062565A (zh) * 2022-06-22 2022-09-16 北京理工大学 一种低时延椭圆曲线点乘电路设计方法
CN115062565B (zh) * 2022-06-22 2024-01-05 北京理工大学 一种低时延椭圆曲线点乘电路设计方法

Also Published As

Publication number Publication date
CN102306091B (zh) 2014-04-16

Similar Documents

Publication Publication Date Title
CN102306091B (zh) 椭圆曲线点乘硬件快速实现方法
Bernstein Batch binary edwards
CN104679474A (zh) 有限域gf(2^227)上的乘法器及模乘算法
CN103942031B (zh) 椭圆域曲线运算方法
Knežević et al. Low-latency ECDSA signature verification—A road toward safer traffic
CN102207847A (zh) 基于蒙哥马利模乘运算的数据加解密处理方法及装置
CN113628094B (zh) 一种基于gpu的高吞吐量sm2数字签名计算系统及方法
CN111966324A (zh) 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质
CN100583769C (zh) 椭圆曲线密码系统的倍点系统
CN101221491B (zh) 椭圆曲线密码系统的点加系统
CN110460443A (zh) 椭圆曲线密码的高速点加运算方法和装置
CN105790939A (zh) 一种vlsi实现加速器的素数域椭圆曲线密码系统
CN113783702A (zh) 一种椭圆曲线数字签名与验签的硬件实现方法和系统
CN102571342B (zh) 一种rsa算法数字签名方法
CN113794572A (zh) 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法
CN101630244B (zh) 一种流水线型椭圆曲线双标量乘法系统及方法
CN104572012A (zh) 一种基于aop的多项式基gf(2227)高速模乘法器
CN114238205B (zh) 一种抗功耗攻击的高性能ecc协处理器系统
CN113114462A (zh) 一种应用于ecc安全硬件电路的小面积标量乘电路
CN103023659B (zh) 一种参数位宽可扩展的ecc加密硬件装置
CN101866278B (zh) 一种异步迭代的64位整型乘法器及其计算方法
CN111966327A (zh) 基于nas搜索的混合精度时空复用乘法器及其控制方法
CN114527956B (zh) 抗spa攻击的sm2算法中非定点标量乘法的计算方法
CN111917548B (zh) 基于gpu与cpu异构结构的椭圆曲线数字签名方法
CN103944714A (zh) 基于ecc实现抗dpa攻击的标量乘算法的方法及装置

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