CN106100825A - 基于fpga的高吞吐量sha‑1算法 - Google Patents
基于fpga的高吞吐量sha‑1算法 Download PDFInfo
- Publication number
- CN106100825A CN106100825A CN201610372987.9A CN201610372987A CN106100825A CN 106100825 A CN106100825 A CN 106100825A CN 201610372987 A CN201610372987 A CN 201610372987A CN 106100825 A CN106100825 A CN 106100825A
- Authority
- CN
- China
- Prior art keywords
- data
- message
- message data
- algorithm
- 512bits
- 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
-
- 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Landscapes
- Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种基于FPGA的高吞吐量SHA‑1算法,包括以下步骤:S1、判断输入的消息数据的长度是否超过512bits;S2、如果输入的消息数据的长度超过512bits,对所述消息数据进行补位,补齐到长度为512的整数倍;S3、将补位后的消息数据分为多个数据块,每个数据块为512bits,并将每个数据块分为16个字,每个字为32bits;S4、将原始的迭代运算公式进行循环展开,形成循环展开结构;S5、确定流水线级数,由中间寄存器和所述循环展开结构构成流水线结构;S6、将每个字输入流水线结构,得到SHA‑1算法计算结果。本发明通过简化迭代运算,加入中间变量,达到缩短关键路径、提升计算速度的目的。并通过流水处理的方式,增大数据的处理量,进而提升吞吐量。
Description
技术领域
本发明属于加密算法领域,具体涉及一种基于FPGA的高吞吐量SHA-1算法。
背景技术
在信息安全领域中,对信息数据进行加密是一个常用的安全措施。消息认证用于证明消息数据的完整性和准确性,即防止消息数据被篡改。消息认证实际上是利用密钥对数据产生新的数据块并对数据块加密后,产生一个冗余的消息认证码,它对要保护的数据来说是唯一和一一对应的。消息摘要方案是一个常用的消息认证码产生方式,其利用单向散列函数(又称:单向Hash函数)将任意长度的消息数据作为输入,将压缩到某一固定长度的哈希值,或称为“数字指纹”作为输出。
由于散列函数具有单向性和抗碰撞性,使其常常被应用于信息安全领域。目前常用的单向Hash函数有:MD5、SHA-1、SHA-256等。
SHA-1(Secure Hash Algorithm)安全散列算法,是一种较新的散列算法,可对任意长度的数据运算产生一个160位的哈希值。但由于,SHA-1算法需要对512位的数据输入进行80轮的迭代运算,计算时间较长。如果按照传统的迭代运算方式,对数据的处理效率不高。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于FPGA的高吞吐量SHA-1算法,该基于FPGA的高吞吐量SHA-1算法可以很好地解决上述问题。
为达到上述要求,本发明采取的技术方案是:提供一种基于FPGA的高吞吐量SHA-1算法,该基于FPGA的高吞吐量SHA-1算法包括以下步骤:
S1、对输入的消息数据进行补位,并将补位后的消息数据分为多个512bits的数据块,将每个数据块分为16个32bits的字;
S2、将原始的迭代运算公式进行循环展开,形成循环展开结构,并确定流水线级数,由中间寄存器和所述循环展开结构构成流水线结构;
S3、将每个字输入所述流水线结构,得到SHA-1算法计算结果。
该基于FPGA的高吞吐量SHA-1算法具有的优点如下:
(1)采用循环展开结构,通过简化迭代运算,加入中间变量,减少每个数据块处理所需时钟周期,进而提高了SHA-1算法的计算速度;
(2)采用流水线结构,增大数据的处理量,进而提升吞吐量。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,在这些附图中使用相同的参考标号来表示相同或相似的部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示意性地示出了本申请的流程;
图2示意性地示出了本申请算法的流水结构;
图3示意性地示出了本申请算法的流水计算流程。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步地详细说明。
在以下描述中,对“一个实施例”、“实施例”、“一个示例”、“示例”等等的引用表明如此描述的实施例或示例可以包括特定特征、结构、特性、性质、元素或限度,但并非每个实施例或示例都必然包括特定特征、结构、特性、性质、元素或限度。另外,重复使用短语“根据本申请的一个实施例”虽然有可能是指代相同实施例,但并非必然指代相同的实施例。
为简单起见,以下描述中省略了本领域技术人员公知的某些技术特征。
根据本申请的一个实施例,提供一种基于FPGA的高吞吐量SHA-1算法,如图1所示,包括以下步骤:
S1、对输入的消息数据进行补位,并将补位后的消息数据分为多个512bits的数据块,将每个数据块分为16个32bits的字;具体包括如下步骤:
S11、判断输入的消息数据的长度是否超过512bits;
S12、如果输入的消息数据的长度超过512bits,对所述消息数据进行补位,补齐到长度为512的整数倍;
S13、将补位后的消息数据分为N个数据块M1、M2……MN,每个数据块为512bits,并将每个数据块分为16个字Mi 0、Mi 1……Mi 15,1≤i≤N,每个字为32bits。
补位的具体步骤如下:
S121、计算消息数据的长度对512取模后的余数,判断所述余数是否等于448;
S122、如果所述余数等于448,对消息数据补512bits;如果所述余数不等于448,对消息数据补xbits,所述x为448与所述余数的差值;在补位时,先补一个1,再补0,直至长度满足对512取模后的余数为448;
S123、对补位后的消息数据添加64bits的原消息长度。
S2、将原始的迭代运算公式进行循环展开,形成循环展开结构,并确定流水线级数,由中间寄存器和所述循环展开结构构成流水线结构,每级流水线间,采用中间寄存器寄存数据;
原始迭代运算公式:
T=ROTL5(A)+Ft(B,C,D)+E+Kt+Wt;
E=D;
D=C;
C=ROTL30(B);
B=A;
A=T。
将上述原始公式的两步运算合成一步运算,化简得到以下公式:
E=Ct-2;
D=ROTL30(Bt-2);
C=ROTL30(At-2);
B=ROTL5(At-2)+Ft(Bt-2,Ct-2,Dt-2)+Et-2+Kt-1+Wt-1;
A=RORL5(B)+Ft(At-2,ROTL30(Bt-2),Ct-2)+Dt-2+Kt+Wt。
推导之后的新公式,原本需要80轮迭代运算,现在只需要进行40轮,大大减少了计算过程中的周期数,从而缩短计算时间。经过新公式的推导后,最长的路径是A、B的计算,需要经过4级加法操作,但却将迭代次数减少了一半,代价是值得的。
为了增加计算的吞吐量,可增加同时处理的消息数据,为此,需采用流水设计。由于简化后的公式只需要进行40次的迭代结算,流水线可采用2级、4级、5级、8级、10级、20级、40级。流线级数越大,则可同时处理的消息数据越多,吞吐量越大。
本次设计中,结合实际应用场景,本文采用4级流水设计,如图2所示。在SHA-1计算模块中,可同时对4个不同消息的数据块同时进行处理,只有输入的第一个数据块需要等待40个时钟周期才能得到SHA-1的计算结果,后续的消息数据块只需要等待10个时钟周期,就能够得到160bits的哈希值。
在流水设计中,还设置指示位,指示位为2bits。由于可以同时进行4个消息的SHA-1计算,为此,通过2bits的指示位指示当前数据块属于哪个消息。同时,也指示了输出的HASH值属于哪个消息块。
还设置了流水线忙碌状态指示信号,当报文仍在第一级流水进行处理时,需要提供“Busy”信号,指示当前无法进行数据输入。
流水处理的核心为迭代运算,迭代计算的公式,按照简化后的公式进行计算,每级流水设计,只需10次迭代运算。
S3、将每个字输入所述流水线结构,得到SHA-1算法计算结果。
根据本实施例,假设现在有4个报文“abc”需要进行SHA-1计算,具体实现步骤如图3所示:
第一步:在第一流水线中,首先进行P1报文10次的迭代运算,需要消耗10个时钟周期。
第二步:P1报文进入第二级流水线进行处理;P2报文开始进入第一级流水线进行迭代运算;第二步消耗10个时钟周期。
第三步:P1报文进入第三级流水线进行处理;P2报文开始进入第二级流水线进行迭代运算;P3报文进入第一级流水线进行处理;第三步消耗10个时钟周期。
第四步:P1报文进入第四级流水线进行处理;P2报文开始进入第三级流水线进行迭代运算;P3报文进入第二级流水线进行处理;P4报文进入第一级流水线进行处理;第四步消耗10个时钟周期。
第五步:到达第五步时,已经经历了40个时钟周期,此时P1报文的HASH已经得到计算结果;P2报文开始进入第四级流水线进行迭代运算;P3报文进入第三级流水线进行处理;P4报文进入第二级流水线进行处理。
第六步:此时,输出P2报文的HASH计算结果;P3报文进入第四级流水线进行处理;P4报文进入第三级流水线进行处理。
第七步:此时,输出P3报文的HASH计算结果;P4报文进入第四级流水线进行处理。
第八步:此时,输出P4报文的HASH计算结果;完成4个报文的HASH计算。
由上述步骤可以,计算完四个报文的HASH结果,只需要80个时钟周期。如果按照原始的80迭代方式,需要进行4*80=320个时钟周期,才能够得到4个报文的HASH结果。由此可见,大大减少了运算时间。当有大量的报文输入时,只有第一个报文的HASH结果需要等待40个之中周期,后续每10个时钟周期就可输出一个HASH计算结果,提高了SHA-1的运算速度。
根据本申请的一个实施例,使用Verilog HDL语言实现本文中的SHA-1算法结构设计,并利用Modelsim在Altera元件库下进行仿真,输入的消息长度分别为小于448bits、等于448bits、大于448bits三种情况。利用这三种输入消息对Verilog代码进行功能仿真,得到的输出结果与标准输出完全一致。
本设计中,在Altera 5SGXEA7N2F45I3器件上实际运行,采用的系统时钟为100MHz,SHA-1计算达到的吞吐量为4096Mbps;系统时钟采用125MHz时,吞吐量可达到5120Mbps。
以上所述实施例仅表示本发明的几种实施方式,其描述较为具体和详细,但并不能理解为对本发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明保护范围。因此本发明的保护范围应该以所述权利要求为准。
Claims (6)
1.基于FPGA的高吞吐量SHA-1算法,其特征在于,包括以下步骤:
S1、对输入的消息数据进行补位,并将补位后的消息数据分为多个512bits的数据块,将每个数据块分为16个32bits的字;
S2、将原始的迭代运算公式进行循环展开,形成循环展开结构,并确定流水线级数,由中间寄存器和所述循环展开结构构成流水线结构;
S3、将每个字输入所述流水线结构,得到SHA-1算法计算结果。
2.根据权利要求1所述的算法,其特征在于,所述步骤S1具体为:
S11、判断输入的消息数据的长度是否超过512bits;
S12、如果输入的消息数据的长度超过512bits,对所述消息数据进行补位,补齐到长度为512的整数倍;
S13、将补位后的消息数据分为多个数据块,每个数据块为512bits,并将每个数据块分为16个字,每个字为32bits。
3.根据权利要求2所述的算法,其特征在于,所述补位的流程包括:
S121、计算消息数据的长度对512取模后的余数,判断所述余数是否等于448;
S122、如果所述余数等于448,对消息数据补512bits;如果所述余数不等于448,对消息数据补xbits,所述x为448与所述余数的差值;
S123、对补位后的消息数据添加64bits的原消息长度。
4.根据权利要求1所述的算法,其特征在于,还设置用于指示当前数据块属于哪个消息指示位。
5.根据权利要求1所述的算法,其特征在于,所述指示位为2bits。
6.根据权利要求1所述的算法,其特征在于,还设置有用于指示当前无法进行数据输入信号位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610372987.9A CN106100825A (zh) | 2016-05-31 | 2016-05-31 | 基于fpga的高吞吐量sha‑1算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610372987.9A CN106100825A (zh) | 2016-05-31 | 2016-05-31 | 基于fpga的高吞吐量sha‑1算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106100825A true CN106100825A (zh) | 2016-11-09 |
Family
ID=57229602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610372987.9A Pending CN106100825A (zh) | 2016-05-31 | 2016-05-31 | 基于fpga的高吞吐量sha‑1算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106100825A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427575A (zh) * | 2018-02-01 | 2018-08-21 | 深圳市安信智控科技有限公司 | 全流水结构sha-2消息扩展优化方法 |
CN108959128A (zh) * | 2018-06-04 | 2018-12-07 | 浙江大学 | Crypt-SHA512加密算法的加速装置与方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247233A (zh) * | 2008-03-24 | 2008-08-20 | 北京飞天诚信科技有限公司 | 一种生成消息摘要的方法 |
CN101872339A (zh) * | 2010-06-11 | 2010-10-27 | 南京邮电大学 | 一种基于复杂动态网络的Hash算法 |
US20120257742A1 (en) * | 2011-04-06 | 2012-10-11 | Certicom Corp. | Efficient Implementation of Hash Algorithm on a Processor |
WO2015077378A1 (en) * | 2013-11-19 | 2015-05-28 | Sunrise Tech Group, Llc | Block mining methods and apparatus |
-
2016
- 2016-05-31 CN CN201610372987.9A patent/CN106100825A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247233A (zh) * | 2008-03-24 | 2008-08-20 | 北京飞天诚信科技有限公司 | 一种生成消息摘要的方法 |
CN101872339A (zh) * | 2010-06-11 | 2010-10-27 | 南京邮电大学 | 一种基于复杂动态网络的Hash算法 |
US20120257742A1 (en) * | 2011-04-06 | 2012-10-11 | Certicom Corp. | Efficient Implementation of Hash Algorithm on a Processor |
WO2015077378A1 (en) * | 2013-11-19 | 2015-05-28 | Sunrise Tech Group, Llc | Block mining methods and apparatus |
Non-Patent Citations (2)
Title |
---|
孙楠楠 等: "一种基于循环展开结构的SHA-1算法实现", 《信息技术》 * |
孙楠楠: "面向可信计算平台的SHA_1协处理器研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427575A (zh) * | 2018-02-01 | 2018-08-21 | 深圳市安信智控科技有限公司 | 全流水结构sha-2消息扩展优化方法 |
CN108427575B (zh) * | 2018-02-01 | 2022-03-15 | 深圳市安信智控科技有限公司 | 全流水结构sha-2消息扩展优化方法 |
CN108959128A (zh) * | 2018-06-04 | 2018-12-07 | 浙江大学 | Crypt-SHA512加密算法的加速装置与方法 |
CN108959128B (zh) * | 2018-06-04 | 2023-03-31 | 浙江大学 | Crypt-SHA512加密算法的加速装置与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Courtois et al. | Optimizing sha256 in bitcoin mining | |
CN108885675B (zh) | 包括电路编码变换函数的加密asic | |
KR102137956B1 (ko) | 블록 마이닝 방법 및 장치 | |
CN107579811A (zh) | 一种基于sm3密码杂凑算法的硬件优化方法 | |
Zhao et al. | Novel way to research nonlinear feedback shift register | |
CN112152777B (zh) | 一种面向同态密码运算的密钥转换方法、系统、设备及可读存储介质 | |
CN103634102A (zh) | 一种侧信道攻击和故障攻击的防护方法 | |
Gaj | Challenges and rewards of implementing and benchmarking post-quantum cryptography in hardware | |
CN106100825A (zh) | 基于fpga的高吞吐量sha‑1算法 | |
CN101399667A (zh) | 产生快速安全哈希函数的步函数装置和消息扩展方法 | |
CN107885486B (zh) | 一种基于查找树的复合有限域求逆装置 | |
CN100449986C (zh) | 一种提高键入-散列法运算速度的方法 | |
CN1815948B (zh) | 基于复合非线性数字滤波器的混沌散列构造方法 | |
Hao et al. | Algebraic fault attack on the SHA-256 compression function | |
Zhang et al. | Meet-in-the-middle attack with splice-and-cut technique and a general automatic framework | |
US10291406B2 (en) | Lossy arithmetic | |
CN104298897A (zh) | 基于混沌技术的嵌入式版权认证方法及专用处理器 | |
Abdoun et al. | Hash function based on efficient chaotic neural network | |
Jiménez et al. | Power and area reduction of MD5 based on cryptoprocessor using novel approach of internal counters on the finite state machine | |
Chattopadhyay et al. | On the cost of asic hardware crackers: A sha-1 case study | |
CN110046875B (zh) | 一种siacoin挖矿算法的硬件实现方法及装置 | |
Kong et al. | Markov chain-based degree distributions of evolving networks | |
CN101202618A (zh) | 利用环迭代结构生成消息摘要的方法和装置 | |
CN105119595B (zh) | 基于预充电型puf电路的blake算法 | |
Goyal et al. | Simulation and Synthesis of SHA-256 Using Verilog HDL for Blockchain Applications |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161109 |