CN104699452A - 一种素域gf(p)下实现位宽可变的模乘法器 - Google Patents
一种素域gf(p)下实现位宽可变的模乘法器 Download PDFInfo
- Publication number
- CN104699452A CN104699452A CN201510105468.1A CN201510105468A CN104699452A CN 104699452 A CN104699452 A CN 104699452A CN 201510105468 A CN201510105468 A CN 201510105468A CN 104699452 A CN104699452 A CN 104699452A
- Authority
- CN
- China
- Prior art keywords
- module
- word length
- data
- bit wide
- modular
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种素域GF(P)下实现位宽可变的模乘法器,实现了P-224、P-256两种不同档位的底层模乘运算。包括:一个整数乘法模块和一个快速模约减模块。本发明针对传统加密算法特别是素域加密算法中基本计算单元之一的模乘法器只能计算特定位宽的缺点,设计了电路可复用的硬件结构单元,根据输入的位宽选择信号,配置硬件电路结构,适应不同的位宽情况,节省硬件电路面积,具有较高的运算速度,更具实用性,适用于在FPGA中实现。
Description
技术领域
本发明涉及椭圆曲线加密算法的硬件实现领域,具体涉及一种素域下实现位宽可变的底层模乘法器。
背景技术
在信息安全领域中,越来越多的信息在公开的媒体中进行交流,为了确保信息交流的安全性和保密性,各种密码学随之诞生,并广泛运用在无线网络通信领域中。目前,常用的公钥密码算法是RSA(Rivest Shamir Adleman)和椭圆曲线密码算法(ECC,Elliptic CurveCryptosystem)。椭圆曲线密码算法的安全基础建立在椭圆曲线离散对数问题的困难之上,具有完全指数级的计算复杂度。并且,160位的ECC可提供相当1024位RSA密码的安全强度,从而在保证安全强度的前提下,ECC的计算量和存储空间更小,在实际应用中加解密速度更快,节省功耗、带宽和存储空间。
相似的原因,椭圆曲线密码算法非常适合应用于移动通信工具、PDA、无线网络、智能卡等计算资源受限的小型嵌入式设备上。网络服务器、数字认证中心等高端应用领域的大型设备,为了提供高速的数字签名和签名认证服务,也倾向于选用ECC公钥体制。因此,ECC被公认为代表了公钥密码未来的发展方向。
模乘法器是椭圆曲线加密算法的基本运算功能模块之一,在许多模块中得到调用,它的速度和效率直接影响整个ECC处理器的速度、面积和功耗,对模乘法器的设计显得尤为重要。随着ECC算法的广泛应用,算法实现的位数需要也不一样,为了保证安全模块的广泛使用性,并且在保证高速运算的前提下,就需要在底层的模乘法器中实现位宽可变。可重构技术是解决以上问题的关键途径,在进行运算之前,针对应用需求的不同,对处理单元进行配置,重构出相应的电路结构,完成运算。
因此,位宽可变的模乘法器可以在保持较高性能的前提下具备一定的灵活性,以适应不同位数的ECC加密算法。
发明内容
本发明的目的是提出一种针对椭圆曲线密码算法的实现不同位宽的模乘法器,能够满足素域GF(P)下P-224和P-256两种位宽需求,保证高速运算的前提下能够根据需求配置相应的硬件电路,降低硬件成本,提高适用性。
本发明为实现上述发明目的,设计了一种位宽可变的模乘法器,用于计算模乘式C=(A·B)modF,其中A,B,F都是位宽为l的二进制无符号数,包括整数乘法模块、快速模约减模块;
所述整数乘法模块输入端为2个字长为l的二进制无符号数A,B,输出端连接到快速模约减模块的输入端,做快速模约减操作,得到字长为l的二进制无符号数C,作为输出。包括数据左移模块、数据右移模块1、部分积模块和累加模块;
所述数据左移模块输入为l字长的A,每个周期向左移动lM位,输出最高的lM位,连接到部分积模块的输入端;
所述数据右移模块1输入为l字长的B,每个周期向右移动lM位,输出nM个字长为lM的数据到部分积模块的输入端;
所述部分积模块为nM个完成乘法累加操作的DSP模块,每个DSP模块的输入端为两个字长为lM的二进制无符号数Ai,Bi,输出端为最大字长为lACC的Si,连接到累加模块的输入端;
所述累加模块为2个完成加法操作的DSP模块,输入端为计算完成的Si,得到最大字长为2l的C;
所述快速模约减模块,包括数据右移模块2、模约减模块和校正模块;
所述数据右移模块2输入为2l字长的C,输出k个lM字长的数据,连接到模约减模块的
输入端;
所述模约减模块为8个完成加法或减法操作的DSP和一个预估计逻辑块(LAL),做快速模约减操作和预估计操作,输出端连接到校正模块;
所述校正模块为2个完成加法或减法操作的DSP和1个ROM,输入端为模约减模块的输出数据,得到字长为l的二进制无符号数C,作为输出;
而且,本发明采用数字串行的计算方式,用状态机实现控制,根据给定的模乘位宽选择信号,配置相应硬件电路,在满足高效高速实现模乘运算的要求下,能够实现P-224、P-256两种字长位宽的模乘算法。
本发明采用上述技术方案,具有以下有益效果:采用串并行方式完成模乘运算,牺牲一定电路面积,能够取得高速运算的性能,同两个实现固定位宽的模乘法器相比,该模乘器面积更小。可重构的配置方式能够满足不同的位宽要求,具有一定的扩展性,且适合于FPGA中实现。
附图说明
为了清楚地说明本发明实施例或现有技术中的技术方案,下面对实施例或现有技术描述中所需要使用的附图作简单地介绍说明。
图1是本发明实现位宽可变模乘法器的整体硬件结构示意图;
图2是本发明实现位宽可变模乘法器的整数乘法模块硬件结构示意图;
图3是本发明实现位宽可变模乘法器的并行乘法器操作流程示意图;
图4是本发明实现位宽可变模乘法器的快速模约减模块硬件结构示意图;
具体实施方式
下面参照附图与具体实施方式对本发明进行更加全面的描述和说明:
图1是本发明位宽可变模乘法器的整体硬件结构示意图,所述模乘法器包括数据左移模块、数据右移模块1、整数乘法模块和一个快速模约减模块。
模乘一般表示为:
C=A·B)modP,0≤A,B≤P
其中A,B,P都是字长为l的二进制无符号大数。模乘法器由两部分运算组成,先对A和B作乘法运算,然后再模以P。
我们把两个字长为l的A,B分解成nM=[l/lM]个表达方式为的数据,分别记作A0,A1,…,An-1,An和B0,B1,…,Bn-1,Bn,根据的数学表达式计算得到字长为2l的模乘结果C。对这个数据进行模约减操作,最终得到字长为l的数据C。
参照图2,所述整数乘法模块完成A·B的乘法运算,主要由数据左移模块、数据右移模块1、部分积模块和累加模块组成。
所述数据左移模块输入l字长的A,每次向左移动lM位,输出数据最高的lM位到nM个DSP模块。
所述数据右移模块1输入l字长的B,每次向右移动lM位,输出nM个字长为lM位的数据到nM个DSP模块。
所述部分积模块主要为完成乘法累加操作的DSP模块,nM个DSP模块并行操作,完成(其中)的运算。所有的DSP模块都以MACC(Multiply-and-Accumulate mode)的方式进行操作,相应的中间值可以保存在DSP模块中直到部分积Si完成全部运算。
参照图3,nM个DSP模块并行操作,每个DSP完成Ai·Bi-j的运算,到最后一个Ai·Bi-j完成运算后,则DSP模块会对所有暂存的中间值做累加操作,得到部分积Si。但每个Si并非等长,最大字长为所以所有的Si需要输入到累加模块,经过转换操作得到最终字长为2lM的部分积Ci。
所述累加模块为2个完成累加操作的DSP模块,利用部分积累加算法进行操作,得到部分积
部分积累加算法如下:
输入:Si≤lACC
输出:部分积
1.S-1→0,C-1→0
2.i由0到2nM-2,增2循环
3.di→ADD(Si-1[lACC-1,…,lM],Si[lACC…0])
4.Ci→ADD(di[lACC,…,lM],(Si+1[lM…0]|Ci-13lM…2lM]))
5.返回
所述快速模约减模块完成对字长为2l的C做快速模约减操作,包括。
P-224的快速模约减算法如下所示:
输入:C=(C13,C12,…,C2,C1,C0)为232进制整数,0≤C≤P-2242
输出:CmodP-224
1.z1=(C6,C5,C4,C3,C2,C1,C0),z2=(C10,C9,C8,C7,0,0,0),z3=(0,C13,C12,C11,0,0,0),
z4=0,0,0,0,C13,C12,C11,z5=C13,C12,C11,C10,C9,C8,C7
2.C=(z1+z2+z3-z4-z5)
P-256的快速模约减算法如下所示:
输入:C=(C15,C14,…,C2,C1,C0)为232进制整数,0≤C≤P-2562
输出:CmodP-256
1.z1=(C7,C6,C5,C4,C3,C2,C1,C0),z2=(C15,C14,C13,C12,C11,0,0,0)
z3=(0,C15,C14,C13,C12,0,0,0),z4=(C15,C14,0,0,0,C10,C9,C8)
z5=C8,C13,C15,C14,C13,C11,C10,C9,z6=C10,C8,0,0,0,C13,C12,C11
z7=C11,C9,0,0,C15,C14,C13,C12,z8=C12,0,C10,C9,C8,C15,C14,C13
z9=C13,0,C11,C10,C9,0,C15,C14.
2.C=(z1+2z2+2z3+z4+z5-z6-z7-z8-z9)
参照图4,所述快速模约减模块包括数据右移模块2、模约减模块和校正模块。
所述快速模约减模块输入2l字长的C到数据右移模块2,每次向右移动lM位,输出到8个DSP模块中。每个DSP模块完成加法或减法操作,结果暂存在寄存器之中,输出连接到下一级的DSP模块,数据流水线的操作方式。同时,一个独立的DSP模块用来进行预估计运算,提前运算模乘累加可能的溢出值,避免等待周期。预估计模块(LAL,Look-Ahead Logic)的输出值将决定选择合适的存放在ROM里的数据(0,…,5P)输出到校正模块对模约减得到的数据进行校正补偿。
所述校正模块由两个完成加减操作的DSP模块组成,输入数据为模约减操作得到的数据和由预估计模块控制的ROM的补偿数据,最终输出得到一个字长为l的数据C作为A,B模乘后约减的结果。
现在许多FPGA都集成了DSP模块,比如Xilinx Virtex-4和Virtex-5等等,DSP模块作为专用算术硬核,可以完成基础的运算,尤其是无符号或有符号数的加法、减法和乘法。本发明有效利用了FPGA上的集成DSP模块,加速算术运算,有效提高效率,且同时减小了面积,因此本发明适合在FPGA上实现。
从原理上看,本发明的模乘算法有严格的数学证明,并且从测试结果也得到了证明。本发明实现了不同位宽的模乘运算,这种电路在应用的灵活性方面优于固定结构、固定参数的模乘法器,运算速度也相对较快,为签名验证算法的快速执行奠定了基础,适应于不同位宽需求的环境下。
本发明中所描述的具体实施例仅仅是对本发明精神作举例说明。在不脱离本发明原理的情况下,本领域的技术人员还可作出许多变形和改进,这些也应属于本发明的保护范围。
Claims (4)
1.一种素域GF(P)下实现位宽可变的模乘法器,用于计算模乘式C=(A·B)modF,其中A,B,F都是位宽为l的二进制无符号数;其特征在于:所述模乘法器包括:整数乘法模块、快速模约减模块;
所述整数乘法模块输入端为2个字长为l的二进制无符号数A,B,输出端连接到所述快速模约减模块的输入端,做快速模约减操作,得到字长为l的二进制无符号数C,作为输出。
2.如权利要求1所述的模乘法器,其特在在于,所述整数乘法模块包括:数据左移模块、数据右移模块1、部分积模块和累加模块;
所述数据左移模块输入为l字长的A,每个周期向左移动lM位,输出最高的lM位,连接到部分积模块的输入端;
所述数据右移模块1输入为l字长的B,每个周期向右移动lM位,输出nM个字长为lM的数据到部分积模块的输入端;
所述部分积模块为nM个完成乘法累加操作的DSP模块,每个DSP模块的输入端为两个字长为lM的二进制无符号数Ai,Bi,输出端为最大字长为lACC的Si,连接到累加模块的输入端;
所述累加模块为2个完成加法操作的DSP模块,输入端为计算完成的Si,得到最大字长为2l的C。
3.如权利要求1所述的模乘法器,其特征在于,所述快速模约减模块包括数据右移模块2、模约减模块和校正模块;
所述数据右移模块2输入为2l字长的C,输出k个lM字长的数据,连接到模约减模块的输入端;
所述模约减模块为8个完成加法或减法操作的DSP模块和一个预估计逻辑模块LAL,做模约减操作和预估计操作,输出端连接到校正模块;
所述校正模块为2个完成加法或减法操作的DSP和1个ROM,输入端为模约减模块的输出数据,得到字长为l的二进制无符号数C,作为输出。
4.如权利要求1所述的模乘法器,其特征在于:在数字串行计算的方式下,采用状态机实现控制,能够分别实现P-224、P-256的模乘运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510105468.1A CN104699452A (zh) | 2015-03-10 | 2015-03-10 | 一种素域gf(p)下实现位宽可变的模乘法器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510105468.1A CN104699452A (zh) | 2015-03-10 | 2015-03-10 | 一种素域gf(p)下实现位宽可变的模乘法器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104699452A true CN104699452A (zh) | 2015-06-10 |
Family
ID=53346629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510105468.1A Pending CN104699452A (zh) | 2015-03-10 | 2015-03-10 | 一种素域gf(p)下实现位宽可变的模乘法器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104699452A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484366A (zh) * | 2016-10-17 | 2017-03-08 | 东南大学 | 一种二元域位宽可变模乘运算器 |
CN107066643A (zh) * | 2015-11-30 | 2017-08-18 | 想象技术有限公司 | 模硬件生成器 |
CN107463354A (zh) * | 2017-07-12 | 2017-12-12 | 东南大学 | 一种面向ECC的双域并行度可变的Montgomery模乘电路 |
WO2019120066A1 (zh) * | 2017-12-20 | 2019-06-27 | 云图有限公司 | 一种适合sm2算法的快速模约减方法和介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077005A (zh) * | 2013-01-08 | 2013-05-01 | 武汉大学 | 一种串并结合的素域GF(p)大数模乘器电路 |
-
2015
- 2015-03-10 CN CN201510105468.1A patent/CN104699452A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077005A (zh) * | 2013-01-08 | 2013-05-01 | 武汉大学 | 一种串并结合的素域GF(p)大数模乘器电路 |
Non-Patent Citations (3)
Title |
---|
K.C.CINNATI LOI等: "High Performance Scalable Elliptic Curve Cryptosystem Processor in GF(2^m)", 《CIRCUITS AND SYSTEMS,2013 IEEE INTERNATIONAL SYMPOSIUM》 * |
王艳: "参数可配置的素域椭圆曲线密码算法的设计与实现", 《中国优秀硕士学位全文数据库 信息科技辑》 * |
胡滟 等: "基于大素数域的椭圆曲线密码设计与实现", 《计算机应用与软件》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066643A (zh) * | 2015-11-30 | 2017-08-18 | 想象技术有限公司 | 模硬件生成器 |
CN107066643B (zh) * | 2015-11-30 | 2021-11-09 | 想象技术有限公司 | 模硬件生成器 |
CN106484366A (zh) * | 2016-10-17 | 2017-03-08 | 东南大学 | 一种二元域位宽可变模乘运算器 |
CN106484366B (zh) * | 2016-10-17 | 2018-12-14 | 东南大学 | 一种二元域位宽可变模乘运算器 |
CN107463354A (zh) * | 2017-07-12 | 2017-12-12 | 东南大学 | 一种面向ECC的双域并行度可变的Montgomery模乘电路 |
CN107463354B (zh) * | 2017-07-12 | 2020-08-21 | 东南大学 | 一种面向ECC的双域并行度可变的Montgomery模乘电路 |
WO2019120066A1 (zh) * | 2017-12-20 | 2019-06-27 | 云图有限公司 | 一种适合sm2算法的快速模约减方法和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mclvor et al. | Fast Montgomery modular multiplication and RSA cryptographic processor architectures | |
KR101326078B1 (ko) | 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템 | |
Bhaskar et al. | An efficient hardware model for RSA Encryption system using Vedic mathematics | |
CN104699452A (zh) | 一种素域gf(p)下实现位宽可变的模乘法器 | |
CN106951211A (zh) | 一种可重构定浮点通用乘法器 | |
CN102231101B (zh) | 一种除法器及除法处理方法 | |
CN102184161A (zh) | 基于余数系统的矩阵求逆装置及方法 | |
Hossain et al. | FPGA-based efficient modular multiplication for Elliptic Curve Cryptography | |
Tian et al. | Efficient software implementation of the SIKE protocol using a new data representation | |
Rashidi | Efficient hardware implementations of point multiplication for binary Edwards curves | |
Ghoreishi et al. | High speed RSA implementation based on modified Booth's technique and Montgomery's multiplication for FPGA platform | |
Panjwani | Scalable and parameterized hardware implementation of elliptic curve digital signature algorithm over prime fields | |
Sghaier et al. | $ Area-Time $ Efficient Hardware Implementation of Elliptic Curve Cryptosystem | |
Mahapatra et al. | RSA cryptosystem with modified Montgomery modular multiplier | |
CN115270155A (zh) | 一种获取大数拓展最大公约数的方法及硬件架构 | |
Verma et al. | FPGA implementation of RSA based on carry save Montgomery modular multiplication | |
Thampi et al. | Montgomery multiplier for faster cryptosystems | |
Kadu et al. | Hardware implementation of efficient elliptic curve scalar multiplication using vedic multiplier | |
CN108228138A (zh) | 一种sidh中特殊域快速模乘的方法 | |
Rezai et al. | Algorithm design and theoretical analysis of a novel CMM modular exponentiation algorithm for large integers | |
Nadjia et al. | High throughput parallel montgomery modular exponentiation on FPGA | |
Brar et al. | Design and implementation of block method for computing NAF | |
Zhang et al. | An implementation of montgomery modular multiplier based on KO-3 multiplication | |
Prema et al. | Enhanced high speed modular multiplier using Karatsuba algorithm | |
Moayedi et al. | Design and evaluation of novel effective Montgomery modular multiplication architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150610 |