CN103970504A - 在ecc中实现位数自适应模乘运算的方法及模乘运算器 - Google Patents
在ecc中实现位数自适应模乘运算的方法及模乘运算器 Download PDFInfo
- Publication number
- CN103970504A CN103970504A CN201410191201.4A CN201410191201A CN103970504A CN 103970504 A CN103970504 A CN 103970504A CN 201410191201 A CN201410191201 A CN 201410191201A CN 103970504 A CN103970504 A CN 103970504A
- Authority
- CN
- China
- Prior art keywords
- modular multiplication
- koa
- input data
- ecc
- multipliers
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000003044 adaptive effect Effects 0.000 claims description 18
- 238000004364 calculation method Methods 0.000 abstract description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 238000001514 detection method Methods 0.000 abstract 3
- 238000010586 diagram Methods 0.000 description 4
- 230000000155 isotopic effect Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005498 polishing Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种在ECC中实现位数自适应模乘运算的方法,包括:基于零位检测模块获取输入数据的位数;根据输入数据的位数选择与输入数据相接近的模乘运算档位;基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。本发明还公开了一种ECC模乘运算器,包括:零位检测模块,用于获取输入数据的位数;模乘运算档位选择模块,用于根据输入数据的位数选择与输入数据相接近的模乘运算档位;模乘运算模块,用于基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。通过本发明实施例,在原始的KOA算法进行改进,使其自动的根据输入乘数的位数进行计算调整,以达到最优的计算效果。
Description
技术领域
本发明涉及椭圆曲线加密算法(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,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的在ECC中实现位数自适应模乘运算的方法及模乘运算器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种在ECC中实现位数自适应模乘运算的方法,其特征在于,所述方法包括如下步骤:
基于零位检测模块获取输入数据的位数;
根据输入数据的位数选择与输入数据相接近的模乘运算档位;
基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。
2.如权利要求1所述的在ECC中实现位数自适应模乘运算的方法,其特征在于,所述64位KOA并行乘法器包括至少两个或者以上串并在一起的64位KOA乘法器。
3.如权利要求2所述的在ECC中实现位数自适应模乘运算的方法,其特征在于,所述64位KOA乘法器由9个16位乘法器构成。
4.如权利要求3所述的ECC中实现位数自适应模乘运算的方法,其特征在于,所述64位KOA并行乘法器至少满足512位乘法运算。
5.一种ECC模乘运算器,其特征在于,包括:
零位检测模块,用于获取输入数据的位数;
模乘运算档位选择模块,用于根据输入数据的位数选择与输入数据相接近的模乘运算档位;
模乘运算模块,用于基于模乘运算档位所关联的64位KOA并行乘法器对所述输入数据进行运算。
6.如权利要求5所述的ECC模乘运算器,其特征在于,所述64位KOA并行乘法器包括至少两个或者以上串并在一起的64位KOA乘法器。
7.如权利要求6所述的ECC模乘运算器,其特征在于,所述64位KOA乘法器由9个16位乘法器构成。
8.如权利要求7所述的ECC模乘运算器,其特征在于,所述64位KOA并行乘法器至少满足512位乘法运算。
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 true CN103970504A (zh) | 2014-08-06 |
CN103970504B 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113114462A (zh) * | 2021-03-31 | 2021-07-13 | 南京航空航天大学 | 一种应用于ecc安全硬件电路的小面积标量乘电路 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030135530A1 (en) * | 2001-09-20 | 2003-07-17 | Stmicroelectronics, Inc. | Flexible galois field multiplier |
CN1702613A (zh) * | 2004-03-02 | 2005-11-30 | 三星电子株式会社 | 蒙哥马利模乘法器 |
CN102184088A (zh) * | 2011-03-23 | 2011-09-14 | 北京邮电大学 | 一种基于串并结合实现有限域乘法的方法及装置 |
CN102306091A (zh) * | 2011-07-08 | 2012-01-04 | 西安电子科技大学 | 椭圆曲线点乘硬件快速实现方法 |
-
2014
- 2014-05-07 CN CN201410191201.4A patent/CN103970504B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030135530A1 (en) * | 2001-09-20 | 2003-07-17 | Stmicroelectronics, Inc. | Flexible galois field multiplier |
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)
Title |
---|
刘峰山: "有限域乘法算法的分析和比较", 《伺服控制》 * |
罗鹏 等: "基于分治算法的ECC乘法器结构及实现", 《计算机工程》 * |
辜选琼 等: "一种16×32位多功能乘法器的设计", 《第十三届计算机工程与工艺会议论文集》 * |
黄小苑 等: "基于改进KOA方法的模2域多项式乘法器的实现", 《计算机工程与科学》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113114462A (zh) * | 2021-03-31 | 2021-07-13 | 南京航空航天大学 | 一种应用于ecc安全硬件电路的小面积标量乘电路 |
CN113114462B (zh) * | 2021-03-31 | 2022-10-04 | 南京航空航天大学 | 一种应用于ecc安全硬件电路的小面积标量乘电路 |
Also Published As
Publication number | Publication date |
---|---|
CN103970504B (zh) | 2017-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9081634B1 (en) | Digital signal processing block | |
CN108694038A (zh) | 专用处理块中的混合精度浮点运算电路 | |
CN102197369B (zh) | 用于执行simd乘法-累积运算的装置及方法 | |
CN106484366B (zh) | 一种二元域位宽可变模乘运算器 | |
CN104579656A (zh) | 一种椭圆曲线公钥密码sm2算法的硬件加速协处理器 | |
CN110262773A (zh) | 一种计算机数据处理方法及装置 | |
CN109426484A (zh) | 一种数据排序装置、方法及芯片 | |
CN102945224A (zh) | 基于fpga的高速可变点fft处理器及其处理方法 | |
CN102301325A (zh) | 具有预加法器级的数字信号处理块 | |
CN103049710B (zh) | 用于sm2数字签名验证算法的fpga芯片 | |
CN101894229A (zh) | 一种兼容三种sha标准的装置及其实现方法 | |
CN104238995A (zh) | 一种非线性反馈移位寄存器 | |
CN101295237A (zh) | 求商和余数的高速除法器 | |
GB2554167B (en) | Approximating functions | |
US10620914B2 (en) | Method and system for performing division/multiplication operations in digital processors, corresponding device and computer program product | |
CN106066784A (zh) | 用于实现伽罗华域约简的电路和方法 | |
CN103279323A (zh) | 一种加法器 | |
CN102307090B (zh) | 基于ⅱ型最优正规基的椭圆曲线密码协处理器 | |
CN103970504A (zh) | 在ecc中实现位数自适应模乘运算的方法及模乘运算器 | |
CN101630244A (zh) | 一种流水线型椭圆曲线双标量乘法系统及方法 | |
CN102063284A (zh) | 一种除法运算方法及装置 | |
JP3506753B2 (ja) | 除算方法および除算装置 | |
US7590235B2 (en) | Reduction calculations in elliptic curve cryptography | |
CN111190571B (zh) | 一种基于二元扩域的模乘电路及其控制方法 | |
CN113050919A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |