CN105094746A - 一种椭圆曲线密码的点加/点倍的实现方法 - Google Patents
一种椭圆曲线密码的点加/点倍的实现方法 Download PDFInfo
- Publication number
- CN105094746A CN105094746A CN201410190867.8A CN201410190867A CN105094746A CN 105094746 A CN105094746 A CN 105094746A CN 201410190867 A CN201410190867 A CN 201410190867A CN 105094746 A CN105094746 A CN 105094746A
- Authority
- CN
- China
- Prior art keywords
- instruction
- point
- fifo memory
- fifo
- described fifo
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Advance Control (AREA)
Abstract
一种椭圆曲线密码的点加/点倍运算的实现方法,采用FIFO存储器作为指令存储器,包括如下步骤:判断FIFO存储器中是否已满;若FIFO存储器中已包含FIFO指令,FIFO存储器自动执行FIFO指令;若FIFO存储器中未包含FIFO指令,则在FIFO存储器中写入FIFO指令并执行FIFO指令,若所有的FIFO指令运行结束后,则读取点加/点倍运算的结果,实现椭圆曲线密码的点加/点倍运算。通过本发明实现了点加/点倍的高速运算,实现了本发明在硬件上,只需有模乘、模加和模减这三个基本单元;软件上,由协处理直接处理基本指令,减少了软件的等待时间。
Description
技术领域
本发明涉及椭圆曲线密码技术领域,尤其是涉及一种椭圆曲线密码的点加/点倍运算的实现方法。
背景技术
椭圆曲线密码(E1lipticCurveCryptography,ECC)体制因其单比特安全强度远超过RSA系统,被公认为是公钥密码未来的发展方向。ECC的层次结构自上而下可以分4层,分别为:(1)应用层的顶层协议,具体包括密钥交换、数据加/解密、数字签名、签名认证等应用协议。(2)群运算层的点乘算法,主要有Double-and-Add、Montgomery、窗口NAF等多种点乘调度算法。(3)曲线层的点加调度算法和点倍调度算法,主要涉及到仿射坐标系和不同投影坐标系下点加/点倍算法的不同表现形式。(4)有限域层的模运算,主要有模加、减算法和模乘算法。
椭圆密码曲线算法的底层运算单元是模乘、模加和模减。有了这三个基本单元,就可以实现椭圆密码曲线算法,但是仅靠这三个基本单元实现的椭圆密码曲线算法的速度比较慢。为了进一步的提高椭圆曲线算法的运算速度,需要把软件实现的点加/点倍算法改成硬件实现。然而现有技术中协处理器的硬件实现点加/点倍,都是通过设计状态机来实现的,为了要实现双域的点加/点倍,一共需要设计四个状态机,如果用逻辑来实现四个状态机,则会导致状态机的控制逻辑复杂,而且实现面积庞大。
发明内容
本发明的目的在于设计一种椭圆曲线密码的点加/点倍运算的实现方法,解决上述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种椭圆曲线密码的点加/点倍运算的实现方法,采用FIFO存储器作为指令存储器;包括如下步骤:
步骤101,判断所述FIFO存储器中的存储数据是否已满;
步骤101.1,若所述FIFO存储器中的存储数据已满,则重新判断;
步骤101.2,若所述FIFO存储器中的存储数据未满,执行步骤102;
步骤102,判断所述FIFO存储器中是否包含FIFO指令;
步骤102.1,若所述FIFO存储器中已包含所述FIFO指令,则执行步骤103;
步骤102.2,若所述FIFO存储器中未包含所述FIFO指令,则在所述FIFO存储器中逐条的写入所述FIFO指令,执行步骤103;
步骤103,所述FIFO存储器执行所述FIFO指令,实现椭圆曲线密码的点加/点倍运算。
优选的,所述FIFO存储器为16个。
优选的,所述FIFO存储器为带有32位长度FIFO指令的存储器。
优选的,所述FIFO指令包括模乘指令、模减指令和模加指令。
优选的,所述步骤103中,当所述FIFO存储器执行完毕所述FIFO指令时,将所述FIFO存储器中的一个寄存器的标志位拉高,作为结束标识,当所述FIFO存储器未执行完毕所述FIFO指令时,继续执行所述FIFO指令。
FIFO即先入先出队列。FirstInputFirstOutput的缩写,先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。
本发明的有益效果可以总结如下:
通过本发明实现了点加/点倍的高速运算,本发明将点加/点倍中的模乘、模加和模减三个基本操作设计成基本指令;专有指令和FIFO相结合的方式来共同实现点加/点倍的操作;然后由CPU按照点加/点倍的指令顺序,把指令存到FIFO存储器中;FIFO存储器,按照先入先出的原则顺序执行指令;实现了本发明在硬件上,只需有模乘、模加和模减这三个基本单元;软件上,由于协处理直接处理基本指令,减少了软件的等待时间,CPU可以并行处理一些别的事务。本发明在较少硬件资源条件下能满足椭圆曲线密码双有限域点加/点倍高速运算。通过本发明最大程度的优化了硬件资源,大大的提高了运算速度。
附图说明
图1为本发明FIFO存储器的结构示意图。
图2为本发明的椭圆曲线密码的点加/点倍运算的实现方法的流程图。
图3为本发明的椭圆曲线密码的点加/点倍运算的实现后的仿真波形图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的目的在于提出一种采用专用指令和FIFO存储器相结合的方式来实现双域的点加/点倍操作。采用这种方式实现的点加/点倍,硬件能够满负荷地运转,所以性能和状态机实现的性能几乎是一样的,但是这种方式比状态机实现更灵活,而且面积更小。
接下来以素域的点倍为例,介绍一下设计思想:
椭圆曲线的方程:Y2=X2+ax+b。
P是椭圆曲线上的点P=(X1,Y1,Z2)∈E,求P的点倍:2P=(X3,Y3,Z3)∈E。
在雅克比坐标系下,求2P的公式如下:
先求B=4X1A,c=8A2,
再求X2=u2-2B,Y3=u(B-X3)-c,Z3=22Z1
因为硬件只有一个模乘、模加和模减单元,所以具体实现的时候需要分为23步来实现:
1)模乘:求D中的Z1^2modM
2)模乘:求D中的Z1^4modM
3)模乘:求D中的a*Z1^4modM
4)模乘:求D中的X1^2modM
5)模乘:求D中的2*X1^2modM
6)模乘:求D中的3*X1^2modM
7)模加:求D=3*X1^2+a*Z1^4modM
8)模乘:求A=Y1^2modM
9)模乘:求B中的X1*AmodM
10)模加:求B中的2*X1*AmodM
11)模加:求B=4*X1*AmodM
12)模乘:求C中的A^2modM
13)模加:求C中的2*A^2modM
14)模加:求C中的4*A^2modM
15)模加:求C=8*A^2modM
16)模乘:求X3中的D^2
17)模减:求X3中的D^2-B
18)模减:求X3=D^2-2B
19)模减:求Y3中的B-X3
20)模乘:求Z3中的Y1*Z1
21)模加:求Z3=2*Y1*Z1
22)模乘:求Y3中的(B-X3)*D
23)模减:求Y3中的(B-X3)*DC
由此可以看出,点倍运算是由模乘、模加和模减三个基本指令按照固定的顺序实现的。如果用状态机来实现整个流程,那么支持双域的点加/点倍操作,一共需要四个状态机,这样控制逻辑复杂,而且实现面积庞大。因此设计了专用指令和FIFO存储器相结合的方式来实现双域的点加/点倍算法。
如图1所示,为了实现双域的点加/点倍运算,为了保证指令的顺序执行,我们采用FIFO存储器作为指令存储器。FIFO存储器是先入先出的存储器,先压进去的指令,会最先被执行,而且FIFO存储器可以循环使用。故此本发明采用的FIFO存储器作为协处理器;FIFO存储器选用16个32位长度FIFO指令的存储器;其中FIFO指令包括模乘指令、模减指令和模加指令。
如图2所示,一种椭圆曲线密码的点加/点倍运算的实现方法,采用FIFO存
储器作为指令存储器;FIFO存储器为16个带有32位长度FIFO指令的存储器。
FIFO指令包括模乘指令、模减指令和模加指令。
具体包括如下步骤:
步骤101,判断FIFO存储器中的存储数据是否已满;
步骤101.1,若FIFO存储器中的存储数据已满,则重新判断;
步骤101.2,若FIFO存储器中的存储数据未满,执行步骤102;
步骤102,判断FIFO存储器中是否包含FIF0指令;
步骤102.1,若FIFO存储器中已包含FIFO指令,则执行步骤103;
步骤102.2,若FIFO存储器中未包含FIFO指令,则在FIFO存储器中逐条的写入FIFO指令,执行步骤103;
步骤103,FIFO存储器执行FIFO指令,硬件自动实现椭圆曲线密码的点加/点倍运算。
其中在步骤103中,当FIFO存储器执行完毕FIFO指令时,将FIFO存储器中的一个寄存器的标志位拉高,作为结束标识,当FIFO存储器未执行完毕FIFO指令时,继续执行FIFO指令。
如图3所示为实现之后的仿真波形,其中fifo_wr是FIFO存储器的写信号,fifo_rd是FIFO存储器的读信号,mmul_start表示模乘操作的开始,madd_start表示模加操作的开始。从波形上可以看出,CPU刚开始连续地把指令都写入到了fifo_wr,然后该FIFO存储器会把待执行的指令顺序读出fifo_rd,执行mmul_start和madd_start。这样就可以保证硬件满负荷地工作,性能达到最优。当CPU写完所有的指令之后,CPU同时还可以做其它的工作,也提高了CPU的工作效率。
以上通过具体的和优选的实施例详细的描述了本发明,但本领域技术人员应该明白,本发明并不局限于以上所述实施例,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种椭圆曲线密码的点加/点倍运算的实现方法,其特征在于,采用FIFO存储器作为指令存储器;包括如下步骤:
步骤101,判断所述FIFO存储器中的存储数据是否已满;
步骤101.1,若所述FIFO存储器中的存储数据已满,则重新判断;
步骤101.2,若所述FIFO存储器中的存储数据未满,执行步骤102;
步骤102,判断所述FIFO存储器中是否包含FIFO指令;
步骤102.1,若所述FIFO存储器中已包含所述FIFO指令,则执行步骤103;
步骤102.2,若所述FIFO存储器中未包含所述FIFO指令,则在所述FIFO存储器中逐条的写入所述FIFO指令,执行步骤103;
步骤103,所述FIFO存储器执行所述FIFO指令,实现椭圆曲线密码的点加/点倍运算。
2.根据权利要求1所述的椭圆曲线密码的点加/点倍运算的实现方法,其特征在于:所述FIFO存储器为16个。
3.根据权利要求1或2所述的椭圆曲线密码的点加/点倍运算的实现方法,其特征在于:所述FIFO存储器为带有32位长度FIFO指令的存储器。
4.根据权利要求1所述的椭圆曲线密码的点加/点倍运算的实现方法,其特征在于:所述FIFO指令包括模乘指令、模减指令和模加指令。
5.根据权利要求1所述的椭圆曲线密码的点加/点倍运算的实现方法,其特征在于:所述步骤103中,当所述FIFO存储器执行完毕所述FIFO指令时,将所述FIFO存储器中的一个寄存器的标志位拉高,作为结束标识,当所述FIFO存储器未执行完毕所述FIFO指令时,继续执行所述FIFO指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410190867.8A CN105094746A (zh) | 2014-05-07 | 2014-05-07 | 一种椭圆曲线密码的点加/点倍的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410190867.8A CN105094746A (zh) | 2014-05-07 | 2014-05-07 | 一种椭圆曲线密码的点加/点倍的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105094746A true CN105094746A (zh) | 2015-11-25 |
Family
ID=54575297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410190867.8A Pending CN105094746A (zh) | 2014-05-07 | 2014-05-07 | 一种椭圆曲线密码的点加/点倍的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094746A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390761A (zh) * | 2018-02-09 | 2018-08-10 | 北京万协通信息技术有限公司 | 一种双域模逆的硬件实现方法 |
CN111198672A (zh) * | 2019-12-30 | 2020-05-26 | 华南师范大学 | 一种基于二元扩域的点加和倍点电路及其控制方法 |
CN111966324A (zh) * | 2020-08-19 | 2020-11-20 | 哈尔滨理工大学 | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731345A (zh) * | 2005-08-18 | 2006-02-08 | 上海微科集成电路有限公司 | 可扩展高基蒙哥马利模乘算法及其电路结构 |
US20080130873A1 (en) * | 2006-12-04 | 2008-06-05 | Lsi Corporation | Flexible hardware architecture for ECC/HECC based crytography |
CN101212292A (zh) * | 2006-12-31 | 2008-07-02 | 航天信息股份有限公司 | 一种ecc\rsa加解密协处理器 |
CN102122241A (zh) * | 2010-01-08 | 2011-07-13 | 复旦大学 | 一种适用于素域和多项式域的模乘模除器 |
-
2014
- 2014-05-07 CN CN201410190867.8A patent/CN105094746A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731345A (zh) * | 2005-08-18 | 2006-02-08 | 上海微科集成电路有限公司 | 可扩展高基蒙哥马利模乘算法及其电路结构 |
US20080130873A1 (en) * | 2006-12-04 | 2008-06-05 | Lsi Corporation | Flexible hardware architecture for ECC/HECC based crytography |
CN101212292A (zh) * | 2006-12-31 | 2008-07-02 | 航天信息股份有限公司 | 一种ecc\rsa加解密协处理器 |
CN102122241A (zh) * | 2010-01-08 | 2011-07-13 | 复旦大学 | 一种适用于素域和多项式域的模乘模除器 |
Non-Patent Citations (3)
Title |
---|
唐薛峰: "《椭圆曲线密码算法IP的VLSI实现》", 《中国优秀博硕士学位论文全文数据库 (硕士) 信息科技辑》 * |
朱华,等: "《素域上椭圆曲线密码IP的高效VLSI实现》", 《计算机工程》 * |
谢元斌: "《异构多核网络安全处理器硬件优化技术研究》", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390761A (zh) * | 2018-02-09 | 2018-08-10 | 北京万协通信息技术有限公司 | 一种双域模逆的硬件实现方法 |
CN108390761B (zh) * | 2018-02-09 | 2021-03-05 | 北京万协通信息技术有限公司 | 一种双域模逆的硬件实现方法 |
CN111198672A (zh) * | 2019-12-30 | 2020-05-26 | 华南师范大学 | 一种基于二元扩域的点加和倍点电路及其控制方法 |
CN111966324A (zh) * | 2020-08-19 | 2020-11-20 | 哈尔滨理工大学 | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 |
CN111966324B (zh) * | 2020-08-19 | 2024-01-30 | 哈尔滨理工大学 | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112865954B (zh) | 用于Paillier解密的加速器、芯片及系统 | |
Knežević et al. | Low-latency ECDSA signature verification—A road toward safer traffic | |
CN106100844B (zh) | 基于点盲化方法的优化自动双线性对加密方法及装置 | |
CN103226461B (zh) | 一种用于电路的蒙哥马利模乘方法及其电路 | |
WO2015164996A1 (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
CN101170406B (zh) | 双核公钥密码算法运算协处理器的一种实现方法 | |
CN101834723A (zh) | 一种rsa算法及其ip核 | |
CN103761068A (zh) | 优化的蒙哥马利模乘方法、模平方方法和模乘硬件 | |
CN101547089A (zh) | 集成电路中素数域椭圆曲线密码算法的实现方法 | |
CN103793199A (zh) | 一种支持双域的快速rsa密码协处理器 | |
CN113628094A (zh) | 一种基于gpu的高吞吐量sm2数字签名计算系统及方法 | |
CN102999313A (zh) | 一种基于蒙哥马利模乘的数据处理方法 | |
CN102073808A (zh) | 一种通过sata接口加密存储的方法和加密卡 | |
CN102122241A (zh) | 一种适用于素域和多项式域的模乘模除器 | |
CN102737270A (zh) | 一种基于国产算法的银行智能卡芯片安全协处理器 | |
CN104536913A (zh) | 一种基于多块ram的大数运算电路及数据转移方法 | |
CN105094746A (zh) | 一种椭圆曲线密码的点加/点倍的实现方法 | |
WO2021211678A1 (en) | System and method to improve efficiency in multiplication ladder-based cryptographic operations | |
KR20100098017A (ko) | 확장된 몽고메리 레더를 이용한 스칼라 곱셈 방법 | |
CN100518058C (zh) | 一种用于公钥密码运算加速的方法及其体系结构 | |
CN103107879B (zh) | 一种rsa加速器 | |
CN104503730A (zh) | 一种基于指令的大数点加、倍点运算电路及实现方法 | |
CN101819519B (zh) | 多功能数字签名电路 | |
CN104572012A (zh) | 一种基于aop的多项式基gf(2227)高速模乘法器 | |
US8626811B2 (en) | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151125 |
|
RJ01 | Rejection of invention patent application after publication |