CN103970504B - 在ecc中实现位数自适应模乘运算的方法及模乘运算器 - Google Patents

在ecc中实现位数自适应模乘运算的方法及模乘运算器 Download PDF

Info

Publication number
CN103970504B
CN103970504B CN201410191201.4A CN201410191201A CN103970504B CN 103970504 B CN103970504 B CN 103970504B CN 201410191201 A CN201410191201 A CN 201410191201A CN 103970504 B CN103970504 B CN 103970504B
Authority
CN
China
Prior art keywords
digit
koa
input data
ecc
modular multiplication
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
Application number
CN201410191201.4A
Other languages
English (en)
Other versions
CN103970504A (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.)
Sun Yat Sen University
SYSU CMU Shunde International Joint Research Institute
Original Assignee
Sun Yat Sen University
SYSU CMU Shunde International Joint Research Institute
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 Sun Yat Sen University, SYSU CMU Shunde International Joint Research Institute filed Critical Sun Yat Sen University
Priority to CN201410191201.4A priority Critical patent/CN103970504B/zh
Publication of CN103970504A publication Critical patent/CN103970504A/zh
Application granted granted Critical
Publication of CN103970504B publication Critical patent/CN103970504B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种在ECC中实现位数自适应模乘运算的方法,包括:基于零位检测模块获取输入数据的位数;根据输入数据的位数选择与输入数据相接近的模乘运算档位;基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。本发明还公开了一种ECC模乘运算器,包括:零位检测模块,用于获取输入数据的位数;模乘运算档位选择模块,用于根据输入数据的位数选择与输入数据相接近的模乘运算档位;模乘运算模块,用于基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。通过本发明实施例,在原始的KOA算法进行改进,使其自动的根据输入乘数的位数进行计算调整,以达到最优的计算效果。

Description

在ECC中实现位数自适应模乘运算的方法及模乘运算器
技术领域
本发明涉及椭圆曲线加密算法(ECC)技术领域,具体涉及一种在ECC中实现位数自适应模乘运算的方法及模乘运算器。
背景技术
ECC加密算法是单位比特安全性能最高的非对称加密算法,由于硬件实现ECC算法速度比软件快很多,很多智能卡芯片、阅读器芯片及安全芯片中,均有ECC算法的实现电路。随着该算法的应用广泛,ECC算法实现的位数需要也不一样,不同标签芯片在ECC加密算法位数选择也不尽相同,为了保证安全模块的广泛使用性,在同一个安全模块内实现多位数的ECC加密算法。但是为了保证ECC加密算法的高速性,在基本模块的实现上需要使关键模块具有长度自适应性。
ECC加密算法中最关键的基本的运算为模乘运算,其决定了ECC加密算法具体实现时的运算速度。对于椭圆曲线中模乘算法也有三种,通常实现模乘算法主要直接相乘求模算法、KOA模乘算法和Montgomery模乘算法三种以及相关算法的改进。对于直接相乘求模的算法来说,虽然实现和算法都比较直接简单,但其在实现上占用的时间和面积也是最多的。而Montgomery模乘算法虽然高效,但是当我们只需要计算一次模乘时,需要的额外操作较多,比较适合RSA算法的模幂操作,ECC的标量乘算法并不一直使用模乘计算,中间还会用到其它的操作,并且每一个循环周期内都需要各种操作的组合,接下来要进行其它操作时,因此该算法在模乘算法上并不能取得高效的性能。
通常采用KOA乘法器来实现模乘算法。乘法器按运算周期来分,主要有串行乘法器、全并行乘法器和串并乘法器三种。对于串行乘法器来说,它通过不断的移位运算进行实现,该算法是以牺牲运算速度来获取较小的实现面积,其实现面积为O(m)其实现速度也为O(m)。第二种是全并行乘法器,该乘法器是在先分别求出部分积然后再对每一部分的部分积进行累加的操作,该算法是以牺牲面积来获取最快的运算速度,其实现面积为O(m2),而运算速度则为O(1)。第三种方法是串并混合乘法器,是以上两种方法的折中,其实就是以串行乘法器的思想调用底层并行乘法器加以实现。其面积及计算速度都介于前面两者中间。
KOA乘法器从理论上讲,是通过多次的分治处理可以将基础乘法器的数目减至到一位,这样算法的复杂度可以降低至但随着分治算法的进行,辅助操作随之增加,故一般分治的次数不会太多,因此必须根据实际需要进行合理设计。对于乘法器来说,串行乘法器和并行乘法器都不能在面积和速度上有很好的折合,因此目前通常采用串并乘法器来实现模乘器。但是位数越大的乘法器,消耗的时间越长。对于进行乘法操作的位数不是固定的情况,当位数较低时,传统的方法是采用高位补0法,补齐为最高位时再输入乘法器进行计算。但这无疑产生了极大的时间浪费,特别是位数低于最高位一半时,乘法器花了一半的时间在计算无用的数。
发明内容
针对以上几种实现算法的不足,本发明提出了在ECC中实现位数自适应模乘运算的方法及ECC模乘运算器,在原始的KOA算法进行改进,使其自动的根据输入乘数的位数进行计算调整,以达到最优的计算效果。
本发明提供了一种在ECC中实现位数自适应模乘运算的方法,所述方法包括如下步骤:
基于零位检测模块获取输入数据的位数;
根据输入数据的位数选择与输入数据相接近的模乘运算档位;
基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。
所述64位KOA并行乘法器包括至少两个或者以上串并在一起的64位KOA乘法器。
所述64位KOA乘法器由9个16位乘法器构成。
所述64位KOA并行乘法器至少满足512位乘法运算。
相应的,本发明实施例还提供了一种ECC模乘运算器,包括:
零位检测模块,用于获取输入数据的位数;
模乘运算档位选择模块,用于根据输入数据的位数选择与输入数据相接近的模乘运算档位;
模乘运算模块,用于基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。
所述64位KOA并行乘法器包括至少两个或者以上串并在一起的64位KOA乘法器。
所述64位KOA乘法器由9个16位乘法器构成。
所述64位KOA并行乘法器至少满足512位乘法运算。
本发明可以实现512位数以下的长度自适应KOA模乘算法,该算法以全并行的结构设计了64位的基础乘法器模块,根据硬件特点以及常见的椭圆曲线位数值,也可以设计不同的模乘运算档位,比如192、256、320、384、448、512。乘法器对输入的数据进行位数判断,自适应的选择这六档中最适当的长度进行计算。通过这种自适应的方法,在各种位数的情况下,尤其是计算较低位数时,显著的提高了乘法器的运算速度。
本发明的在硬件上,利用串并混合乘法器来实现,利用KOA算法原理,把乘法运算的位数进行分治,采用全并行的64位基础乘法器模块来实现。而对于这64位的基础乘法器模块,采用KOA的方法,将64位的乘法器由9个16位的乘法器构成,另外加上若干加法电路,就可以利用16位的乘法器来实现64位并行乘法器。为了满足模乘算法最高位512位的要求,实现的模乘器必须满足512位乘法运算,对于最高位情况,利用64位的基础乘法器,通过串行的方式来实现最高为512的乘法器。
为了满足模乘算法的长度自适应,根据常见的椭圆曲线加密算法ECC的位数值,把不同位数的模乘算法划分为6个档,通过一个状态机来控制整个运算的流程,同时利用一个组合逻辑电路和一个寄存器来标识输入数据的位数,根据输入位数,利用组合逻辑电路和寄存器的状态来决定调用哪几个64位乘法器,当输入的位数较少时,状态机根据寄存器表示的状态,跳过后面所有状态的操作,输出运算结果。该发明虽然在牺牲掉一小部分组合逻辑电路的面积,但能在长度自适应的同时快速的实现椭圆曲线模乘算法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例中的在ECC中实现位数自适应模乘运算的方法流程图;
图2是本发明实施例中的ECC模乘运算器结构示意图;
图3是本发明实施例中的ECC模乘运算器功能原理结构示意图;
图4是本发明实施例中的512位KOA乘法器结构原理示意图;
图5是本发明实施例中的ECC模乘运算中程序运行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示出了在ECC中实现位数自适应模乘运算的方法流程图,包括如下步骤:
S101、基于零位检测模块获取输入数据的位数;
S102、根据输入数据的位数选择与输入数据相接近的模乘运算档位;
S103、基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。
这里的64位KOA并行乘法器包括至少两个或者以上串并在一起的64位KOA乘法器。64位KOA乘法器由9个16位乘法器构成。该64位KOA并行乘法器至少满足512位乘法运算。
相应的,图2还示出了本发明实施例中的ECC模乘运算器结构示意图,包括:
零位检测模块,用于获取输入数据的位数;
模乘运算档位选择模块,用于根据输入数据的位数选择与输入数据相接近的模乘运算档位;
模乘运算模块,用于基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。
需要说明的是,该64位KOA并行乘法器包括至少两个或者以上串并在一起的64位KOA乘法器。该64位KOA乘法器由9个16位乘法器构成。该64位KOA并行乘法器至少满足512位乘法运算。
本发明可以实现512位数以下的长度自适应KOA模乘算法,该算法以全并行的结构设计了64位的基础乘法器模块,根据硬件特点以及常见的椭圆曲线位数值,也可以设计不同的模乘运算档位,比如192、256、320、384、448、512。乘法器对输入的数据进行位数判断,自适应的选择这六档中最适当的长度进行计算。通过这种自适应的方法,在各种位数的情况下,尤其是计算较低位数时,显著的提高了乘法器的运算速度。当然根据根据这种串并原理,其可以满足不同位数的长度适应性KOA模乘运算,也不限于512位数的运算。
本发明的在硬件上,利用串并混合乘法器来实现,利用KOA算法原理,把乘法运算的位数进行分治,采用全并行的64位基础乘法器模块来实现。而对于这64位的基础乘法器模块,采用KOA的方法,将64位的乘法器由9个16位的乘法器构成,另外加上若干加法电路,就可以利用16位的乘法器来实现64位并行乘法器。为了满足模乘算法最高位512位的要求,实现的模乘器必须满足512位乘法运算,对于最高位情况,利用64位的基础乘法器,通过串行的方式来实现最高为512的乘法器。
为了满足模乘算法的长度自适应,根据常见的椭圆曲线加密算法ECC的位数值,把不同位数的模乘算法划分为6个档,通过一个状态机来控制整个运算的流程,同时利用一个组合逻辑电路和一个寄存器来标识输入数据的位数,根据输入位数,利用组合逻辑电路和寄存器的状态来决定调用哪几个64位乘法器,当输入的位数较少时,状态机根据寄存器表示的状态,跳过后面所有状态的操作,输出运算结果。该发明虽然在牺牲掉一小部分组合逻辑电路的面积,但能在长度自适应的同时快速的实现椭圆曲线模乘算法。
相应的,图3示出了本发明实施例中的ECC模乘运算器功能原理结构示意图,主要包括一个控制状态机、1个寄存器组、2个零位检测模块以及乘法位数选择模块、数据选择模块、64位KOA并行乘法器模块。本发明主要利用状态机来控制整个算法的计算流程,通过零位检测模块来判断输入数据的位数,根据输入数据位数,利用乘法位数选择模块来选择与输入数据位数相接近的档,并和数据选择模块共同利用控制状态机来控制当前模乘算法的执行,合理的跳出不需要执行的算法状态,通过寄存器和64位KOA并行乘法器暂存运算结果和计算。当运算结束后通过接口输出运算结果。
具体来说,零位检测器来判断输入位数,通过乘法位数选择模块和数据选择模块进行模乘算法运算的档的选择,根据档的选择,通过状态机调用64位KOA并行乘法器模块串行实现模乘算法,在位数不固定的情况下,每次都能合理选择串行乘法的位数,跳出后面无须执行的状态,实现长度自适应的快速模乘算法。
图4示出了本发明实施例中的512位KOA乘法器结构原理图,该64位KOA乘法器由9个16位乘法器构成。该64位KOA并行乘法器至少满足512位乘法运算。利用串并混合乘法器来实现,利用KOA算法原理,把乘法运算的位数进行分治,采用全并行的64位基础乘法器模块来实现。而对于这64位的基础乘法器模块,采用KOA的方法,将64位的乘法器由9个16位的乘法器构成,另外加上若干加法电路,就可以利用16位的乘法器来实现64位并行乘法器。为了满足模乘算法最高位512位的要求,实现的模乘器必须满足512位乘法运算,对于最高位情况,利用64位的基础乘法器,通过串行的方式来实现最高为512的乘法器。
在乘法器具体的实现过程中,定义wire类型的数组isZero[0..4],每一位反映宽度为64位的两个乘数的输入的数据段是否全为0,例如isZero[4]表示最高64位,由组合逻辑电路确定该数组的值。用wire类型的数组isSkip[0..4]表示宽度为64位的两个乘数部分计算可否跳过。则有,当isSkip[i+1]为1且isZero[i]为1时,isSkip[i]为1。此处组合逻辑电路大约占整个乘法器面积的1/20,不会太影响乘法器的面积。完成整个乘法器的计算需要一个小状态机,用来控制数据流程。在设计中,我们将状态机的计算顺序加以优化,使得状态机可以根据isSkip的值正确的跳过一些状态操作。例如,若isZero[0..4]=01111,也就是说,输入的两个乘数最高256位都为0,192-256位不全为0,isSkip[0..4]=01111当前乘法器最佳长度为256位。状态机经过多次状态转换后,会根据isSkip的值,跳过后面所有状态的操作,输出运算结果。其状态流程图如图5所示。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的在ECC中实现位数自适应模乘运算的方法及模乘运算器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (6)

1.一种在ECC中实现位数自适应模乘运算的方法,其特征在于,所述方法包括如下步骤:
基于零位检测模块获取输入数据的位数;
根据输入数据的位数选择与输入数据相接近的模乘运算档位;
基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算;所述64位KOA并行乘法器包括至少两个串并在一起的64位KOA乘法器。
2.如权利要求1所述的在ECC中实现位数自适应模乘运算的方法,其特征在于,所述64位KOA乘法器由9个16位乘法器构成。
3.如权利要求2所述的ECC中实现位数自适应模乘运算的方法,其特征在于,所述64位KOA并行乘法器至少满足512位乘法运算。
4.一种ECC模乘运算器,其特征在于,包括:
零位检测模块,用于获取输入数据的位数;
模乘运算档位选择模块,用于根据输入数据的位数选择与输入数据相接近的模乘运算档位;
模乘运算模块,用于基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算;所述64位KOA并行乘法器包括至少两个串并在一起的64位KOA乘法器。
5.如权利要求4所述的ECC模乘运算器,其特征在于,所述64位KOA乘法器由9个16位乘法器构成。
6.如权利要求5所述的ECC模乘运算器,其特征在于,所述64位KOA并行乘法器至少满足512位乘法运算。
CN201410191201.4A 2014-05-07 2014-05-07 在ecc中实现位数自适应模乘运算的方法及模乘运算器 Active CN103970504B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410191201.4A CN103970504B (zh) 2014-05-07 2014-05-07 在ecc中实现位数自适应模乘运算的方法及模乘运算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410191201.4A CN103970504B (zh) 2014-05-07 2014-05-07 在ecc中实现位数自适应模乘运算的方法及模乘运算器

Publications (2)

Publication Number Publication Date
CN103970504A CN103970504A (zh) 2014-08-06
CN103970504B true CN103970504B (zh) 2017-03-29

Family

ID=51240055

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410191201.4A Active CN103970504B (zh) 2014-05-07 2014-05-07 在ecc中实现位数自适应模乘运算的方法及模乘运算器

Country Status (1)

Country Link
CN (1) CN103970504B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113114462B (zh) * 2021-03-31 2022-10-04 南京航空航天大学 一种应用于ecc安全硬件电路的小面积标量乘电路

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1702613A (zh) * 2004-03-02 2005-11-30 三星电子株式会社 蒙哥马利模乘法器
CN102184088A (zh) * 2011-03-23 2011-09-14 北京邮电大学 一种基于串并结合实现有限域乘法的方法及装置
CN102306091A (zh) * 2011-07-08 2012-01-04 西安电子科技大学 椭圆曲线点乘硬件快速实现方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7133889B2 (en) * 2001-09-20 2006-11-07 Stmicroelectronics, Inc. Flexible galois field multiplier

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1702613A (zh) * 2004-03-02 2005-11-30 三星电子株式会社 蒙哥马利模乘法器
CN102184088A (zh) * 2011-03-23 2011-09-14 北京邮电大学 一种基于串并结合实现有限域乘法的方法及装置
CN102306091A (zh) * 2011-07-08 2012-01-04 西安电子科技大学 椭圆曲线点乘硬件快速实现方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
一种16×32位多功能乘法器的设计;辜选琼 等;《第十三届计算机工程与工艺会议论文集》;20091231;第201-205页 *
基于分治算法的ECC乘法器结构及实现;罗鹏 等;《计算机工程》;20090731;第35卷(第13期);第153-155页 *
基于改进KOA方法的模2域多项式乘法器的实现;黄小苑 等;《计算机工程与科学》;20071231;第29卷(第3期);第70-73页 *
有限域乘法算法的分析和比较;刘峰山;《伺服控制》;20111231(第4期);第10-72页 *

Also Published As

Publication number Publication date
CN103970504A (zh) 2014-08-06

Similar Documents

Publication Publication Date Title
CN105849690A (zh) 使用第一和第二子运算的分路融合乘积-累加运算
CN104679474A (zh) 有限域gf(2^227)上的乘法器及模乘算法
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN109426484A (zh) 一种数据排序装置、方法及芯片
CN102306141B (zh) 一种描述动态可重构阵列配置信息的方法
CN102945224A (zh) 基于fpga的高速可变点fft处理器及其处理方法
CN110222871A (zh) 用于电力负荷预测的相似日的选择方法及装置
CN103984560A (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN109992866A (zh) 负荷预测模型的训练方法、装置、可读介质及电子设备
CN105426918B (zh) 归一化相关图像模板匹配高效实现方法
CN109117595A (zh) 一种热负荷预测方法、装置、可读介质及电子设备
CN104090737B (zh) 一种改进型部分并行架构乘法器及其处理方法
CN101894229A (zh) 一种兼容三种sha标准的装置及其实现方法
CN102360281B (zh) 用于微处理器的多功能定点乘加单元mac运算装置
CN102736888B (zh) 与数据流同步的数据检索电路
CN102375721A (zh) 一种矩阵乘法运算方法、图形处理器和电子设备
CN109190413A (zh) 一种基于fpga和md5加密的串行通信系统
CN101630244B (zh) 一种流水线型椭圆曲线双标量乘法系统及方法
CN103970504B (zh) 在ecc中实现位数自适应模乘运算的方法及模乘运算器
CN109271137A (zh) 一种基于公钥加密算法的模乘装置及协处理器
GB2525648A (en) Approximating functions
CN107092462B (zh) 一种基于fpga的64位异步乘法器
CN102063284A (zh) 一种除法运算方法及装置
CN110890120B (zh) 基于阻变存储器的通用区块链应用处理加速方法及系统
CN104572012A (zh) 一种基于aop的多项式基gf(2227)高速模乘法器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant