CN111740820B - 基于ecc的有限域运算调度方法、装置、设备、介质及系统 - Google Patents
基于ecc的有限域运算调度方法、装置、设备、介质及系统 Download PDFInfo
- Publication number
- CN111740820B CN111740820B CN202010793176.2A CN202010793176A CN111740820B CN 111740820 B CN111740820 B CN 111740820B CN 202010793176 A CN202010793176 A CN 202010793176A CN 111740820 B CN111740820 B CN 111740820B
- Authority
- CN
- China
- Prior art keywords
- finite field
- field operation
- request
- index
- requests
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种基于ECC的有限域运算调度方法,涉及基于椭圆曲线加解密算法的资源优化领域,旨在提高有限域运算资源的利用率,同时节省硬件资源,该方法包含以下步骤:接收并融合不同点乘运算的有限域运算请求;为每个有限域运算请求添加索引标签,并将添加索引标签后的有限域运算请求进行流水寄存;按照寄存顺序,依次提取有限域运算请求进行有限域运算,得到携带所述索引标签的运算结果,将所述运算结果进行流水寄存;按照寄存顺序,依次提取运算结果进行解析,将运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。本发明还公开了一种基于ECC的有限域运算调度装置、电子设备、计算机存储介质及系统。
Description
技术领域
本发明涉及基于椭圆曲线加解密算法的资源优化领域,尤其涉及一种基于ECC的有限域运算调度方法、装置、设备、介质及系统。
背景技术
椭圆曲线加解密算法的应用范围很广,如TLS、SSH、比特币以及其他加密数字货币等;该算法基于的数学原理是求解定义在椭圆曲线上的离散对数问题。椭圆曲线加密算法具有安全性能高,计算量小,处理速度快,存储空间占用小和带宽要求低等特点。
在求解椭圆曲线上的离散对数问题时:椭圆曲线上存在一基点G,在已知密钥K,求KG点并不困难;反之,已知KG点,求密钥K则非常困难。在此不详细说明该数学原理背后的推导过程。
在利用椭圆曲线实现例如数字货币的签名验证、TLS等时,都需要进行点乘算法即上述数学原理中KG的计算。
点乘算法的常规实现方法如下:
输入:K=(Kt-1,…,K1,K0)2,P∈E(Fq)
输出:KP
实现步骤如下:
1. Q→∞
2. for i from 0 to t-1 do
2.1 if Ki=1 then Q→Q+P
2.2 Q←2P
3. return(Q)
由上述实现步骤可知,步骤2.1为点加运算,步骤2.2为倍加运算。
当采用其他优化算法实现点乘算法时,也需要进行点加运算和倍加运算,假设选取椭圆曲线方程y2=x3+ax+b,则具体计算方法如下:
xr=m2-xp-xq(mod N)
yr=yp+m(xr-xp)(mod N)
其中,当P=Q时即为倍加运算,上述N为大素数。上述运算中存在大量的有限域运算包括有限加减法、有限域乘法和有限域除法,其中有限域加减法比较简单,而有限域除法在实现时非常耗时,一般需要采用射影坐标变换的方法,将除法转换为乘法,最后再将坐标系转换为仿射坐标。
常用的变换坐标系有标准射影坐标系、雅克比射影坐标系等。以上述椭圆曲线方程为例,在素域下采用雅克比射影坐标变换后,对应的运算方程为Y2=X3+aXZ4+bZ6,则倍加运算经过坐标变换后如下所示:
同理,点加运算经过坐标变换后如下所示:
在利用椭圆曲线加解密算法实现例如数字货币的签名验证、TLS等时,对点乘算法的优化大致在三个层面进行。第一层为点乘算法实现层,点乘算法实现有很多优化算法,例如自同态(Endomorphism)、非邻近形式(Non Adjacent Form)、联合稀疏形式(JointSparse Form)等,这些算法的思路都是对标量K的表示方法进行研究,以采用最少次数的点加运算和倍加运算为目的,来优化系统的性能。第二层为点加算法和倍加算法实现层,该层主要实现点加和倍加算法的数学运算,通常采用不同的射影坐标系或者混合坐标系(MixedCoordinates),使得点加和倍加运算得到一定程度优化;第三层为有限域运算层,该层为算法的底层,涉及有限域的选取、椭圆曲线参数的选取等,在椭圆曲线加解密算法实现之初既已确定,因此主要是针对有限域上的快速运算进行研究,底层运算性能优化是上述高层优化的基石,直接影响到整个设计的性能。
而在对限域运算层进行优化时,由于系统进行了射影坐标变换,有限域上的除法运算只需进行一次,因此除法运算即使性能稍差,对整个系统的影响有限,一般采用扩展欧几里得算法即可实现;有限域的加减法运算相对简单,也不是影响性能的关键瓶颈;有限域乘法运算相对频次较高,采用常规方法进行点加和倍加运算,根据上述射影坐标系下的公式,除了乘数当中有固定数的乘法可以通过移位相加完成乘法运算,一次点加运算需要进行11次有限域的乘法,一次倍加运算需要进行10次有限域的乘法。
通过对点加和倍加运算的有限域运算进一步分析,有限域乘法是不能完全并行的,由于前后依赖关系必须计算按流程完成运算,以倍加运算为例,必须得到ABC的结果,才能计算DEF的结果。
如果要达到最优的运算性能,则需要多个有限域运算资源并行工作,这样的设计会引入两个问题,一是并不是每步运算都需要多个有限域运算单元,使得有限域的乘法运算的利用率并不高;二是会导致硬件资源浪费严重。无论是在FPGA还是ASIC上实现椭圆曲线加解密算法,硬件资源和性能一直是硬件实现需要考虑和研究的问题。如何在硬件资源和性能上取得平衡,在最少资源上实现有限域运算的最高性能是目前亟需解决的问题。
发明内容
为了克服现有技术的不足,本发明的目的之一在于提供一种基于ECC的有限域运算调度方法,在不影响系统设计性能的基础上,减少硬件资源的消耗,提高有限域运算的利用率。
本发明的目的之一采用以下技术方案实现:
一种基于ECC的有限域运算调度方法,包括以下步骤:
接收点乘运算的有限域运算请求;
依次为每个所述有限域运算请求添加索引标签,并将添加所述索引标签后的所述有限域运算请求进行流水寄存;
按照所述有限域运算请求的寄存顺序,依次提取添加所述索引标签后的所述有限域运算请求以进行有限域运算,得到携带所述索引标签的运算结果,将所述运算结果进行流水寄存;
按照所述运算结果的寄存顺序,依次提取所述运算结果进行解析,根据所述运算结果携带的所述索引标签,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
进一步地,接收点乘运算的有限域运算请求,包括以下步骤:
接收从不同点乘运算中提取的若干有限域运算请求,其中所述点乘运算包括点加运算和倍加运算,所述若干有限域运算请求具有编号;
对若干个所述有限域运算请求进行轮询,根据所述编号依次排列所述的有限域运算请求。
进一步地,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回,包括:
根据所述运算结果携带的所述索引标签,为所述运算结果匹配具有相同索引标签的有限域运算请求;
移除所述运算结果的索引标签和所述具有相同索引标签的有限域运算请求的索引标签;
将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
进一步地,接收点乘运算的有限域运算请求之前,包括以下步骤:
获取目标运算性能和目标可用资源;
根据所述目标运算性能和目标可用资源,确定所述点乘运算的数量;
根据所述点乘运算的数量,设置执行所述有限域运算的有限域运算资源的初始数量。
进一步地,还包括以下步骤:
检测所述有限域运算的实时参数,迭代调整执行所述有限域运算资源的数量,一次迭代包括:
检测所述有限域运算的实时参数,其中所述实时参数包括所述有限运算资源的利用率和/或寄存的所述有限域乘法请求个数;
当所述实时参数大于等于设定值时,发出报警信号,
增加所述有限域运算资源的数量;
直至检测到的所述实时参数小于所述设定值时,迭代结束;
根据调整后的有限域运算资源的数量,评估当前运算性能和当前可用资源。
本发明的目的之二在于提供一种基于ECC的有限域运算调度装置,其能减少硬件资源的消耗,同时提高有限域运算的利用率。
本发明的目的之二采用以下技术方案实现:
一种基于ECC的有限域运算调度装置,包括:
数据接收模块,用于接收点乘运算的有限域运算请求;
索引添加模块,用于依次为每个所述有限域运算请求添加索引标签,将添加所述索引标签后的每个所述有限域运算请求进行流水寄存;
运算模块,用于按照所述有限域运算请求的寄存顺序,依次提取添加所述索引标签后的所述有限域运算请求以进行有限域运算,得到携带所述索引标签的运算结果,将所述运算结果进行流水寄存;
结果返回模块,用于按照所述运算结果的寄存顺序,依次提取所述运算结果进行解析,根据所述运算结果携带的所述索引标签,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
本发明的目的之三在于提供执行发明目的之一的电子设备,其包括处理器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,所述计算机程序被处理器执行时实现上述的基于ECC的有限域运算调度方法。
本发明的目的之四在于提供存储发明目的之一的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于ECC的有限域运算调度方法。
本发明的目的之五在于提供一种基于ECC的有限域运算调度系统,旨在,有效弥补有限域运算单元空闲的问题,提高系统的资源利用率,同时减少硬件资源消耗。
本发明的目的之五采用以下技术方案实现:
一种基于ECC的有限域运算调度系统,包括:
点乘单元,用于发起有限域运算请求并为所述有限域运算请求进行编号,所述点乘单元包括一个以上进行点加运算的点加运算模块或一个以上进行倍加运算的倍加运算模块;
有限域运算单元,用于根据有限域运算请求,进行有限域运算;
仲裁单元,用于接收所述点乘单元发送的有限域运算请求,通过遍历所述有限域运算请求,根据所述编号依次排列处理所述有限域运算请求,并依次为每个所述有限域运算请求添加索引标签,将添加索引标签后的有限域运算请求进行流水寄存后,按所述添加索引标签后的有限域运算请求的寄存顺序,将添加索引标签后的有限域运算请求依次传入所述有限域运算单元,并依次接收所述有限域运算单元返回的运算结果,将依次接收到的所述运算结果进行流水寄存,按所述运算结果的寄存顺序,对所述运算结果进行解析,以根据所述运算结果携带的索引标签,为所述运算结果匹配具有相同索引标签的有限域运算请求,并将所述运算结果返回至发起所述具有相同索引标签的有限域运算请求的点加运算模块或倍加运算模块。
进一步地,所述仲裁单元包括:
输入控制模块,用于接收所述点乘单元发送的有限域运算请求,并对接收到的所述有限域运算请求进行轮询,按所述有限域运算请求的编号依次排列并输出所述有限域运算请求;
索引添加模块,用于为所述输入控制模块输出的每个所述有限域运算请求添加索引标签;
第一数据寄存模块,用于对添加索引标签后的有限域运算请求进行流水寄存;
第二数据寄存模块,用于对所述有限域运算单元输出的运算结果进行流水寄存;
索引移除模块,用于移除所述索引标签;
输出控制模块,用于将运算结果输出至发起对应有限域运算请求的点加运算模块或倍加运算模块。
进一步地,还包括监测单元,用于评估系统的当前运算性能和可用资源,若监测到所述有限域运算单元的利用率或所述第一数据寄存模块寄存的有限域运算请求数量超过设定值,则发出报警信号。
相比现有技术,本发明的有益效果在于:
本发明通过融合多个点乘算法间的有限域运算请求并进行调度,充分提高有限域运算的利用率,提高了系统资源的利用率,大幅度的减少了硬件资源消耗,并通过监测机制可方便的对椭圆曲线算法的硬件设计进行性能资源的评估。
附图说明
图1是本发明基于ECC的有限域运算调度方法的流程图;
图2是实施例2的基于ECC的有限域运算调度装置的结构框图;
图3是实施例3的电子设备的结构框图;
图4是实施例5的基于ECC的有限域运算调度系统的结构框图。
具体实施方式
以下将结合附图,对本发明进行更为详细的描述,需要说明的是,以下参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。
实施例1
本实施例提供了一种基于ECC的有限域运算调度方法,旨在通过融合多个点运算间的有限域运算请求以进行调度,以减少运算资源的消耗。
通过对点加和倍加运算的执行步骤进行分析,倍加运算最少需要分为以下四个步骤:
第二步:计算D→4XP ▪ A,E→8A2,C→B+aC2
第三步:计算X r→F2-2D,Z r→2YpZP
第四步:Y r →F(D-X r)-E。
点加运算可分为以下六个步骤:
第二步:计算B→Z p ▪A,C→X q▪ A
第三步:计算F→D-Y p ,G→E2,Z r→ZP▪E
第四步:计算H→G ▪E,I→Y p▪ G
第五步:计算X r →F2-(H+2I),K→Y p▪ H
第六步:计算Y r→F(I- X r)-K。
点加运算和倍加运算的每一步运算都需要等待上一步骤运算结束,才能进行当前步骤的运算。如果想要达到最快的计算性能,那么每一步的运算都应该并行进行,则最少需要3个并行的有限域运算资源,那么一个点乘运算中点加运算需要3个有限域运算单元,倍加运算也需要3个有限域运算单元。
但是并不是每一个运算步骤都需要有限域运算,且根据算法不同,有限域运算耗时在几个时钟到几十个时钟不等,可能导致有限域运算单元利用率不高,为了使得有限域运算单元(乘法器)在此期间不空置,因此针对点加运算和倍加运算的有限域运算的使用频率,采用流水线设计,将点加运算和倍加运算以及多个点乘运算之间的有限域运算请求进行融合,对执行有限域运算的硬件资源进行仲裁调度,提高有限域运算资源的利用率。
根据上述原理,对基于ECC的有限域运算调度方法进行介绍,如图1所示,基于ECC的有限域运算调度方法,具体包括以下步骤:
接收点乘运算的有限域运算请求;
依次为每个所述有限域运算请求添加索引标签,并将添加所述索引标签后的所述有限域运算请求进行流水寄存;
按照所述有限域运算请求的寄存顺序,依次提取添加所述索引标签后的所述有限域运算请求以进行有限域运算,得到携带所述索引标签的运算结果,将所述运算结果进行流水寄存;
按照所述运算结果的寄存顺序,依次提取所述运算结果进行解析,根据所述运算结果携带的所述索引标签,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
本实施例的基于ECC的有限域运算调度方法可应用于FPGA芯片上或ASIC芯片上,以实现减少资源消耗,提高芯片的运算性能。
本实施例通过接收多个点乘运算的有限域运算请求以进行融合,将每个有限域运算请求进行流水线式的存储,再进行流水输出,以依次将每个有限域运算请求进行有限域运算,得到运算结果,将该运算结果也进行流水线存储后进行流水线输出,将运算结果作为有限域运算请求的响应,为了使运算结果能与正确的有限域运算请求进行对应,在处理有限域运算请求时,通过添加索引的方式,为每个有限域运算请求添加索引标签,使得基于有限域运算请求进行有限域运算而得到的运算结果,能根据该索引标签匹配对应的有限域运算请求,从而完成有限域运算过程。在整个处理过程中,将不同点乘运算的每个有限域运算的请求进行融合,并在一个有限域运算资源里对这些有限域运算请求进行流水处理,不需要使用多个有限域运算资源并行工作,节约了硬件资源,能最大程度的利用有限域运算资源,在改变系统设计性能的基础上,提高了有限域运算资源的利用率。
优选地,接收有限域运算请求之前,包括以下步骤:
接收从不同的点乘运算中提取的若干有限域运算请求,其中所述若干有限域运算请求具有编号,该若干有限域运算请求是针对不同点乘运算中的点加运算或倍加运算发出的请求;
对若干个所述有限域运算请求进行轮询,根据所述编号依次排列所述的有限域运算请求。
在本实施例中,对有限域运算请求进行调度和仲裁前,从不同点乘操作中的点加运算和倍加运算中获取有限域运算请求,通过对每个有限域运算请求进行编号,然后再将编号后的有限域运算请求进行调度处理:将每个有限域运算请求按编号进行排序后,按顺序进行调度,以实现对不同有限运算请求的进行统一流水运算。
本实施例采用的编号方式可为阿拉伯数字编号,且依次排列所述有限域运算请求的方式可为按编号的从小到大顺序依次排列,也可为按编号的从大到小的顺序依次排列,在此不作具体限定,排列顺序的不同,不会影响后续有限域运算的执行。
优选地,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回,包括:
根据所述运算结果携带的所述索引标签,为所述运算结果匹配具有相同索引标签的有限域运算请求;
移除所述运算结果的索引标签和所述具有相同索引标签的有限域运算请求的索引标签;
将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
在本实施例中,再完成运算结果与对应的有限域运算请求的匹配后,对该索引标签进行回收,以节约芯片的内存资源。
优选地,接收点乘运算的有限域运算请求之前,包括以下步骤:
获取硬件的目标运算性能和目标可用资源;
根据所述运算性能和可用资源,确定所述点乘运算的数量,其中单个点乘运算的运算性能和所用资源为已知数据;
根据所述点乘运算的数量,设置执行所述有限域运算的有限域运算资源的初始数量。
根据初始数量的所述有限域运算资源,执行本实施的基于ECC的有限域运算的调度方法,还包括以下步骤:
检测所述有限域运算的实时参数,迭代调整所述有限域运算资源的数量;这里的实时参数可以是寄存的所述有限域乘法请求的个数,或/和所述有限域运算资源的利用率;
一次迭代包括:
检测所述有限域运算的实时参数,
当所述实时参数超过所述设定值时,例如当利用率超过第一预设阈值时,或者寄存数据个数超过第二预设阈值时,则发出报警信号,
发出报警信号后,自动增加执行所述有限域运算资源的数量,通过不断迭代增加有限域运算资源的数量,具体是后续有限域运算单元的个数,直至检测到的实时参数小于所述设定值,即说明满足运算性能要求,停止迭代;
根据调整后的有限域运算资源的数量,可对硬件的当前的运算性能和可用资源进行评估。
上述设定值中的第一预设阈值可为根据单个有限域运算资源可执行的有限域运算的次数以及当前有限域运算资源的数量确定,上述利用率的计算为:对单个点乘运算在计算使能状态下计数,对当前有限域运算资源的使能信号进行累加计数,求取两个计数的比值即得到利用率,需要注意的是,针对多个点乘运算,通过计算会得到多个利用率,取多个利用率的最大值作为检测得到的实时参数。利用率越大,寄存数据越多,表示硬件的有限域运算资源(后续有限域运算单元)的工作压力越大,需要增加有限域运算资源(有限域运算单元)的数量来减少运算压力,提高硬件的运算性能,若调整有限域运算资源的数量后,硬件的可用资源不足,则可以通过人工增加硬件的可用资源或更改目标运算性能,使得有限域运算性能和所用资源与系统的目标运算性能和可用资源匹配。
在本发明的其他实施例中,上述实时参数还可包括有限域运算的延时,延时越大,则运算性能越低。
在本实施例中,请求、运算结果等数据采用一组总线进行传输,包含数据有效标志位、数据总线、控制总线和准备信号等,其中控制总线用于进行索引标签的添加和移除。
实施例2
实施例2公开了一种对应实施例1的基于ECC的有限域运算调度方法对应的装置,如图2所示,包括:
数据接收模块210,用于接收点乘运算的有限域运算请求;
索引添加模块220,用于依次为每个所述有限域运算请求添加索引标签,将添加所述索引标签后的每个所述有限域运算请求进行流水寄存;
运算模块230,用于按照所述有限域运算请求的寄存顺序,依次提取添加所述索引标签后的所述有限域运算请求以进行有限域运算,得到携带所述索引标签的运算结果,将所述运算结果进行流水寄存;
结果返回模块240,用于按照所述运算结果的寄存顺序,依次提取所述运算结果进行解析,根据所述运算结果携带的所述索引标签,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
实施例3
图3为本发明实施例3提供的一种电子设备的结构示意图,如图3所示,该电子设备包括处理器310、存储器320、输入装置330和输出装置340;计算机设备中处理器310的数量可以是一个或多个,图3中以一个处理器310为例;电子设备中的处理器310、存储器320、输入装置330和输出装置340可以通过总线或其他方式连接,图3中以通过总线连接为例。
存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于ECC的有限域运算调度方法对应的程序指令/模块(例如,基于ECC的有限域运算调度装置中的数据接收模块210、索引添加模块220、运算模块230和结果返回模块240)。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现实施例1的基于ECC的有限域运算调度方法。
存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置330可用于接收有限域运算请求等数据。输出装置340用于输出运算结果等。
实施例4
本发明实施例4还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于实现基于ECC的有限域运算调度方法,该方法包括:
接收点乘运算的有限域运算请求;
依次为每个所述有限域运算请求添加索引标签,并将添加所述索引标签后的所述有限域运算请求进行流水寄存;
按照所述有限域运算请求的寄存顺序,依次提取添加所述索引标签后的所述有限域运算请求以进行有限域运算,得到携带所述索引标签的运算结果,将所述运算结果进行流水寄存;
按照所述运算结果的寄存顺序,依次提取所述运算结果进行解析,根据所述运算结果携带的所述索引标签,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的基于ECC的有限域运算调度方法中的相关操作。
实施例5
本实施例提供一种基于ECC的有限域运算调度系统,如图4所示,包括:
点乘单元410,用于发起有限域运算请求并为所述有限域运算请求进行编号,所述点乘单元述点乘单元包括一个以上的进行点加运算的点加运算模块或一个以上的进行倍加运算的倍加运算模块;
有限域运算单元420,用于根据有限域运算请求,进行有限域运算;
仲裁单元430,用于接收点乘单元410发送的有限域运算请求,通过遍历所述有限域运算请求,根据所述编号依次排列处理所述的有限域运算请求,并为每个有限域运算请求添加索引标签,将添加索引标签后的有限域运算请求进行流水寄存后,按所述添加索引标签后的有限域运算请求的寄存顺序,将添加索引标签后的有限域运算请求依次传入有限域运算单元420,并依次接收所述有限域运算单元420返回的运算结果,将依次接收到的所述运算结果进行流水寄存,按所述运算结果的寄存顺序,对所述运算结果进行解析,以根据所述运算结果携带的索引标签,为所述运算结果匹配具有相同索引标签的有限域运算请求,并将所述运算结果返回至发起所述具有相同索引标签的有限域运算请求的点加运算模块或倍加运算模块。
本实施例所述的基于ECC的有限域运算调度系统应用在FPGA芯片或ASIC芯片上,在实现椭圆曲线加解密算法的同时,能有效的融合多个点乘运算之间的有限域运算请求进行调度,以进行对多个有限域运算请求进行流水线处理,提高有限域运算单元的利用率,在优化运算性能的同时节省硬件资源。
本实施例通过点乘单元410从点加运算和倍加运算中提取有限域运算请求,并为每个有限域运算请求进行编号,点乘单元410将有限域运算请求发送至仲裁单元430,由仲裁单元430对有限域运算请求进行流水寄出后,以流水线形式发送至有限域运算单元420处理,仲裁单元430接收到有限域运算单元420返回的运算结果后,再此将运算结果进行流水寄出,并基于索引标签,将对应有限域运算请求的运算结果返回至正确的运算模块。
优选地,仲裁单元430包括:
输入控制模块431,用于接收点乘单元410发送的有限域运算请求,并对接收到的所述有限域运算请求进行轮询,按所述有限域运算请求的编号依次排列输出所述有限域运算请求;
索引添加模块432,用于为所述输入控制模块431输出的每个所述有限域运算请求添加索引标签;
第一数据寄存模块433,用于对添加索引标签后的有限域运算请求进行流水寄存;
第二数据寄存模块434,用于对所述有限域运算单元输出的运算结果进行流水寄存;
索引移除模块435,用于移除所述索引标签;
输出控制模块436,用于将运算结果输出至发起对应有限域运算请求的点加运算模块或倍加运算模块。
上述第一数据寄存模块433和第二数据寄存模块434对有限域运算单元420的输入数据和输出数据进行寄存,以改变数据的时序。
优选地,还包括监测单元440,用于评估系统的当前运算性能和当前可用资源,若监测到所述有限域运算单元的利用率或所述第一数据寄存模块寄存的有限域运算请求数量超过设定值,则发出报警信号。
在本实施例中,监测单元440负责监测有限域运算单元420的利用率以及仲裁单元430的第一数据寄存模块433的寄存个数,进行运算性能和可用资源的评估。当监测单元发出报警信号时,可增加有限域运算单元420的个数,降低有限域运算单元420的运算压力,增加系统运算性能。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory, RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述基于ECC的有限域运算调度方法或装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。
Claims (11)
1.一种基于ECC的有限域运算调度方法,其特征在于,包括以下步骤:
接收点乘运算的有限域运算请求;
依次为每个所述有限域运算请求添加索引标签,并将添加所述索引标签后的所述有限域运算请求进行流水寄存;
按照所述有限域运算请求的寄存顺序,依次提取添加所述索引标签后的所述有限域运算请求以进行有限域运算,得到携带所述索引标签的运算结果,将所述运算结果进行流水寄存;
按照所述运算结果的寄存顺序,依次提取所述运算结果进行解析,根据所述运算结果携带的所述索引标签,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
2.如权利要求1所述的基于ECC的有限域运算调度方法,其特征在于,接收点乘运算的有限域运算请求,包括以下步骤:
接收从不同点乘运算中提取的若干有限域运算请求,其中,所述点乘运算包括点加运算和倍加运算,所述若干有限域运算请求具有编号;
对若干个所述有限域运算请求进行轮询,根据所述编号依次排列所述的有限域运算请求。
3.如权利要求2所述的基于ECC的有限域运算调度方法,其特征在于,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回,包括:
根据所述运算结果携带的所述索引标签,为所述运算结果匹配具有相同索引标签的有限域运算请求;
移除所述运算结果的索引标签和所述具有相同索引标签的有限域运算请求的索引标签;
将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
4.如权利要求1-3任一项所述的基于ECC的有限域运算调度方法,其特征在于,接收点乘运算的有限域运算请求之前,包括以下步骤:
获取目标运算性能和目标可用资源;
根据所述目标运算性能和目标可用资源,确定所述点乘运算的数量;
根据所述点乘运算的数量,设置执行所述有限域运算的有限域运算资源的初始数量。
5.如权利要求4所述的基于ECC的有限域运算调度方法,其特征在于,还包括以下步骤:
检测所述有限域运算的实时参数,迭代调整执行所述有限域运算资源的数量,一次迭代包括:
检测所述有限域运算的实时参数,其中所述实时参数包括所述有限域运算资源的利用率和/或寄存的所述有限域运算请求个数;
当所述实时参数大于等于设定值时,发出报警信号,
增加所述有限域运算资源的数量;
直至检测到的所述实时参数小于所述设定值时,迭代结束;
根据调整后的有限域运算资源的数量,评估当前运算性能和当前可用资源。
6.一种基于ECC的有限域运算调度装置,其特征在于,包括:
数据接收模块,用于接收点乘运算的有限域运算请求;
索引添加模块,用于依次为每个所述有限域运算请求添加索引标签,将添加所述索引标签后的每个所述有限域运算请求进行流水寄存;
运算模块,用于按照所述有限域运算请求的寄存顺序,依次提取添加所述索引标签后的所述有限域运算请求以进行有限域运算,得到携带所述索引标签的运算结果,将所述运算结果进行流水寄存;
结果返回模块,用于按照所述运算结果的寄存顺序,依次提取所述运算结果进行解析,根据所述运算结果携带的所述索引标签,将所述运算结果作为具有相同索引标签的有限域运算请求的响应进行返回。
7.一种电子设备,其包括处理器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述的基于ECC的有限域运算调度方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述的基于ECC的有限域运算调度方法。
9.一种基于ECC的有限域运算调度系统,其特征在于,包括:
点乘单元,用于发起点乘运算的有限域运算请求并为所述有限域运算请求进行编号,所述点乘单元包括一个以上进行点加运算的点加运算模块或一个以上进行倍加运算的倍加运算模块;
有限域运算单元,用于根据有限域运算请求,进行有限域运算;
仲裁单元,用于接收所述点乘单元发送的有限域运算请求,通过遍历所述有限域运算请求,根据所述编号依次排列处理所述有限域运算请求,并依次为每个所述有限域运算请求添加索引标签,将添加索引标签后的有限域运算请求进行流水寄存后,按所述添加索引标签后的有限域运算请求的寄存顺序,将添加索引标签后的有限域运算请求依次传入所述有限域运算单元,并依次接收所述有限域运算单元返回的运算结果,将依次接收到的所述运算结果进行流水寄存,按所述运算结果的寄存顺序,对所述运算结果进行解析,以根据所述运算结果携带的索引标签,为所述运算结果匹配具有相同索引标签的有限域运算请求,并将所述运算结果返回至发起所述具有相同索引标签的有限域运算请求的点加运算模块或倍加运算模块。
10.如权利要求9所述的有限域运算调度系统,其特征在于,所述仲裁单元包括:
输入控制模块,用于接收所述点乘单元发送的有限域运算请求,并对接收到的所述有限域运算请求进行轮询,按所述有限域运算请求的编号依次排列并输出所述有限域运算请求;
索引添加模块,用于为所述输入控制模块输出的每个所述有限域运算请求添加索引标签;
第一数据寄存模块,用于对添加索引标签后的有限域运算请求进行流水寄存;
第二数据寄存模块,用于对所述有限域运算单元输出的运算结果进行流水寄存;
索引移除模块,用于移除所述索引标签;
输出控制模块,用于将运算结果输出至发起对应有限域运算请求的点加运算模块或倍加运算模块。
11.如权利要求10所述的有限域运算调度系统,其特征在于,还包括:
监测单元,用于评估系统当前的运算性能和可用资源,若监测到所述有限域运算单元的利用率或所述第一数据寄存模块寄存的有限域运算请求数量超过设定值,则发出报警信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010793176.2A CN111740820B (zh) | 2020-08-10 | 2020-08-10 | 基于ecc的有限域运算调度方法、装置、设备、介质及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010793176.2A CN111740820B (zh) | 2020-08-10 | 2020-08-10 | 基于ecc的有限域运算调度方法、装置、设备、介质及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111740820A CN111740820A (zh) | 2020-10-02 |
CN111740820B true CN111740820B (zh) | 2020-11-20 |
Family
ID=72658294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010793176.2A Active CN111740820B (zh) | 2020-08-10 | 2020-08-10 | 基于ecc的有限域运算调度方法、装置、设备、介质及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111740820B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782845B (zh) * | 2009-01-20 | 2014-11-26 | 北京华大信安科技有限公司 | 一种椭圆曲线密码的高速运算装置和方法 |
CN102682232B (zh) * | 2011-12-26 | 2014-08-13 | 丁丹 | 一种高性能超标量椭圆曲线密码处理器芯片 |
US9507565B1 (en) * | 2014-02-14 | 2016-11-29 | Altera Corporation | Programmable device implementing fixed and floating point functionality in a mixed architecture |
US10635404B2 (en) * | 2017-06-29 | 2020-04-28 | Intel Corporation | Mixed-coordinate point multiplication |
CN108306735A (zh) * | 2017-12-29 | 2018-07-20 | 成都锐成芯微科技股份有限公司 | 椭圆曲线点乘运算的硬件实现方法及其系统 |
CN110232289A (zh) * | 2019-08-09 | 2019-09-13 | 南京秉速科技有限公司 | 椭圆曲线密码的高速倍点运算方法 |
-
2020
- 2020-08-10 CN CN202010793176.2A patent/CN111740820B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111740820A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11023801B2 (en) | Data processing method and apparatus | |
CN110929860B (zh) | 一种卷积加速运算方法、装置、存储介质及终端设备 | |
CN108509615B (zh) | 基于抽签机制的共识建立方法、装置及可读存储介质 | |
CN110825436B (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
CN112328962A (zh) | 矩阵运算优化方法、装置、设备和可读存储介质 | |
CN112214402A (zh) | 一种代码验证算法的选择方法、装置及存储介质 | |
CN111740820B (zh) | 基于ecc的有限域运算调度方法、装置、设备、介质及系统 | |
CN116432040B (zh) | 基于联邦学习的模型训练方法、装置、介质以及电子设备 | |
CN108647007B (zh) | 运算系统及芯片 | |
CN112230994A (zh) | 一种计算方法及相关产品 | |
CN112131274A (zh) | 时间序列异常点的检测方法、装置、设备及可读存储介质 | |
CN108595369B (zh) | 算式并行计算装置及方法 | |
CN110515591A (zh) | 基于区块链的随机数生成方法及装置 | |
CN115562861A (zh) | 针对数据倾斜的数据处理的方法和装置 | |
CN112001571B (zh) | 一种基于马尔科夫链的区块链性能分析方法及装置 | |
US9158807B2 (en) | Fast distributed database frequency summarization | |
CN113704174A (zh) | 一种芯片和数据处理方法 | |
CN109901931B (zh) | 一种归约函数数量确定方法、装置及系统 | |
Dong et al. | TEGRAS: An efficient Tegra embedded GPU-based RSA acceleration server | |
CN109522125A (zh) | 一种矩阵乘积转置的加速方法、装置及处理器 | |
CN115113848B (zh) | 签名/验签电路、装置、设备、方法及坐标还原电路 | |
CN115563103B (zh) | 一种多维度聚合方法、系统、电子设备及存储介质 | |
US20230091951A1 (en) | Polynomial multiplication for side-channel protection in cryptography | |
WO2017166829A1 (zh) | 一种数据处理方法及装置 | |
Liu et al. | Low consumption automatic discovery protocol for DDS-based large-scale distributed parallel computing |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |