CN112988235B - 一种高效率第三代安全散列算法的硬件实现电路及方法 - Google Patents
一种高效率第三代安全散列算法的硬件实现电路及方法 Download PDFInfo
- Publication number
- CN112988235B CN112988235B CN202110175906.7A CN202110175906A CN112988235B CN 112988235 B CN112988235 B CN 112988235B CN 202110175906 A CN202110175906 A CN 202110175906A CN 112988235 B CN112988235 B CN 112988235B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- register unit
- theta
- arithmetic
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7878—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种高效率SHA‑3算法的硬件实现电路及方法,属于信息安全算法的电路实现领域。该电路包括:填充模块、运算模块、控制模块、截取模块;填充模块根据SHA‑3标准规定的“pad10*1”填充规则对输入数据进行填充;运算模块用于实现SHA‑3的轮函数,轮函数依次执行θ、ρ、π、χ、ι五个运算步骤,运用了展开因子为2的结构,缩短了运算所需周期,运用了两级流水线、两级子流水线的结构,提高了系统的最大频率;控制模块用于产生运算模块所需控制信号;截取模块用于截取所需长度的摘要进行输出。本发明的电路和实现方法能在较少的额外资源消耗下,极大地提高电路的吞吐量,从而达到高效率的SHA‑3硬件实现的目的。
Description
技术领域
本发明属于信息安全算法电路实现领域,更具体地,涉及一种高效率第三代安全散列算法(Secure Hash Algorithm-3,以下称为SHA-3)的硬件实现电路及方法。
背景技术
随着信息时代的快速发展,信息技术与产业正处于空前繁荣的时代,随之而来的,是人们对信息安全越来越多的关注。密码学作为一种研究如何隐秘地传递信息的学科,已经成为保障信息安全的重要手段。作为密码学的一个重要分支,哈希函数是一种将任意长度的消息输入转换为固定长度的摘要输出且不可逆的单向密码体制。由于哈希函数具有易算性、均匀性、抗碰撞性等优点,被广泛应用于消息认证、数字签名、身份验证等领域,由哈希函数构造的各种通信协议构成了保证现代社会信息安全的基石。
常见的哈希函数有MD4、MD5、RIPEMD、SHA-1、SHA-2、SHA-3等。2004年以来,MD4、MD5、RIPEMD、SHA-1算法相继受到了攻击,这些算法的安全性被严重动摇,由于SHA-2系列和SHA-1有着相似的结构,因此SHA-2也不再可靠。2007年,NIST面向全球发起了新Hash标准的竞赛活动,经过三轮的评选,2012年Keccak算法从候选的64个算法中脱颖而出成为新一代的哈希函数标准,并命名为SHA-3。
自从SHA-3标准确定以来,考虑到算法在未来设备中应用的易实现性,设计出低资源开销、高吞吐量、高效率的SHA-3硬件电路就是一个值得深入研究的问题。从目前已公开的文献来看,在针对SHA-3高效实现的研究中,大部分仅单独使用简单的流水线(在运算步骤θ或π后插入流水线)或者展开的结构,在增加了额外电路资源消耗的同时,效率的提升并不明显。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种高效率的SHA-3硬件实现电路及方法,旨在增加较少硬件资源开销的情况下,大幅提升电路的吞吐量和效率。
一方面,本发明提供了一种高效率SHA-3算法的硬件实现电路,包括:
填充模块,用于根据SHA-3标准规定的“pad10*1”填充规则对输入数据进行填充,获得预定长度的待处理数据;
运算模块,用于对所述待处理数据进行SHA-3的轮函数处理,获取处理结果数据;其中,所述运算模块运用了两级流水线和两级子流水线的结构;
控制模块,用于产生所述运算模块所需的控制信号;
截取模块,用于根据输出需求从所述处理结果数据中截取对应位数的输出摘要进行输出。
可选的,所述运算模块包括:第一运算单元、第二运算单元、第一寄存器单元和第二寄存器单元;所述第一运算单元的输入端与所述填充模块相连、输出端与所述第一寄存器单元的输入端相连;所述第二运算单元的输入端与所述第一寄存器单元的输出端相连、输出端与所述第二寄存器单元的输入端相连;所述第二寄存器单元的输出端与所述截取模块相连;
所述第一运算单元用于执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,并将运算结果输出至所述第一寄存器单元进行缓存,实现第一级流水线;
所述第二运算单元用于执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,从所述第一寄存器单元读取数据进行运算处理,并将运算结果输出至所述第二寄存器单元进行缓存,实现第二级流水线。
可选的,所述运算模块还包括:第三寄存器单元和第四寄存器单元;所述第一运算单元包括第一运算子单元和第二运算子单元;所述第三寄存器单元的输入端和输出端分别连接所述第一运算子单元和所述第二运算子单元;所述第二运算单元包括第三运算子单元和第四运算子单元;所述第四寄存器单元的输入端和输出端分别连接所述第三运算子单元和所述第四运算子单元;
所述轮函数的θ运算步骤包括:θ1、θ2、θ3三个子运算步骤;
所述第一运算子单元用于执行步骤θ1、θ2,并将运算结果输出至所述第三寄存器单元进行缓存,实现第一级子流水线;
所述第二运算子单元用于执行步骤θ3、ρ、π、χ、ι,从所述第三寄存器单元读取数据进行处理,并将运算结果输出至所述第一寄存器单元进行缓存;
所述第三运算子单元用于执行步骤θ1、θ2,并将运算结果输出至所述第四寄存器单元进行缓存,实现第二级子流水线;
所述第四运算子单元用于执行步骤θ3、ρ、π、χ、ι,从所述第四寄存器单元读取数据进行处理,并将运算结果输出至所述第二寄存器单元进行缓存。
可选的,所述硬件实现电路还包括:数据选择器和数据分配器;所述数据选择器的三个输入端分别与所述填充模块、所述数据分配器、所述控制模块相连,且所述数据选择器的输出端与所述运算模块相连;所述数据分配器的两个输入端分别与所述运算模块、所述控制模块相连,且所述数据分配器的两个输出端分别与所述数据选择器、所述截取模块相连;
所述数据选择器,用于在所述控制模块的控制下,选择所述填充模块的输出数据或所述数据分配器的输出数据作为所述运算模块的输入数据;
所述数据分配器,用于在控制模块的控制下,选择将所述运算模块的运算结果输出至所述数据选择器或所述截取模块。
可选的,所述控制模块用于产生第一控制信号、第二控制信号和第三控制信号;其中:
所述第一控制信号用于控制所述数据选择器选择所述填充模块的输出数据或所述数据分配器的输出数据作为所述运算模块的输入数据;
所述第二控制信号用于控制所述数据分配器选择将所述运算模块的运算结果输出至所述数据选择器或所述截取模块;
所述第三控制信号用于计算所述运算模块的运算周期数,并根据计算的周期数选择对应的参数配置到所述运算模块中参与运算。
另一方面,本发明提供了一种高效率SHA-3算法的硬件实现方法,包括以下步骤:
S1、当获取到输入数据时,填充模块根据SHA-3标准规定的“pad10*1”填充规则对输入数据进行填充,获得预定长度的待处理数据;S2、在控制模块的控制下,运算模块对所述待处理数据进行SHA-3轮函数处理,获取处理结果数据;其中,所述运算模块运用了两级流水线和两级子流水线的结构;
S3、截取模块根据输出需求从所述处理结果数据中截取对应位数的输出摘要进行输出。
可选的,在执行步骤S1之后且执行步骤S2之前,所述硬件实现方法还包括步骤:按照预设分组长度对所述待处理数据进行分组,并在分组后的数据后面添加若干比特0,使各组数据长度都为1600比特,以便所述运算模块对分组后的待处理数据进行SHA-3的轮函数处理。
可选的,所述运算模块包括:第一运算单元、第二运算单元、第一寄存器单元和第二寄存器单元;所述步骤S2具体包括以下子步骤:
S21、所述第一运算单元执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,并将运算结果输出至所述第一寄存器单元进行缓存;
S22、所述第二运算单元执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,从所述第一寄存器单元读取数据进行处理,并将运算结果输出至所述第二寄存器单元进行缓存。
可选的,所述运算模块还包括:第三寄存器单元和第四寄存器单元;所述第一运算单元包括第一运算子单元和第二运算子单元;所述第二运算单元包括第三运算子单元和第四运算子单元;所述轮函数的θ运算步骤包括:θ1、θ2、θ3三个子运算步骤;
所述步骤S21包括:
所述第一运算子单元执行步骤θ1、θ2,并将运算结果输出至所述第三寄存器单元进行缓存;
所述第二运算子单元执行步骤θ3、ρ、π、χ、ι,从所述第三寄存器单元读取数据进行处理,并将运算结果输出至所述第一寄存器单元进行缓存;
所述步骤S22包括:
所述第三运算子单元执行步骤θ1、θ2,并将运算结果输出至所述第四寄存器单元进行缓存;
所述第四运算子单元执行步骤θ3、ρ、π、χ、ι,从所述第四寄存器单元读取数据进行处理,并将运算结果输出至所述第二寄存器单元进行缓存。
可选的,所述硬件实现方法还包括:
控制模块产生第一控制信号控制数据选择器选择所述填充模块的输出数据或数据分配器的输出数据作为所述运算模块的输入数据;
控制模块产生第二控制信号控制数据分配器选择将所述运算模块的运算结果输出至所述数据选择器或所述截取模块;
控制模块产生第三控制信号计算运算模块的运算周期数,并根据计算的周期数选择对应的参数配置到所述运算模块中参与运算。
与现有技术相比,本发明所构思的以上技术方案,通过展开结构,将系统运算所需的时钟周期减小了一半,采用流水线及子流水线的结构,实现了关键步骤的精准切割,提高了系统的最大频率。本发明方法从减小时钟周期和提高最大频率两个方面极大提高了吞吐量,在增加较少硬件资源开销的情况下,大幅提升了电路的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其它的附图。
图1是本发明实施例提供的第一种高效率SHA-3算法的硬件实现电路结构示意图;
图2是本发明实施例提供的第二种高效率SHA-3算法的硬件实现电路结构示意图;
图3是本发明实施例提供的第三种高效率SHA-3算法的硬件实现电路结构示意图;
图4是本发明实施例提供的SHA-3算法的硬件实现电路中运算模块的第一运算单元的运算步骤分解示意图;
图5是本发明实施例提供的SHA-3算法的硬件实现电路中运算模块的第二运算单元的运算步骤分解示意图;
图6是本发明实施例提供的SHA-3算法的硬件实现电路中运算模块的内部硬件结构示意图;
图7是本发明实施例提供的一种高效率SHA-3算法的硬件实现方法的流程图;
图8是本发明实施例提供的另一种高效率SHA-3算法的硬件实现方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间不构成冲突就可以相互组合。
实施例一
请参考图1,本发明实施例提供的一种高效率SHA-3硬件实现方法的电路,包括:填充模块1、运算模块2、控制模块3和截取模块4;填充模块1用于根据SHA-3标准规定的“pad10*1”填充规则对输入数据进行填充,获得预定长度的待处理数据;接着,按照预设分组长度对所述待处理数据进行分组,最后,在分组后的数据后面添加若干比特0,使各组数据长度都为1600比特;运算模块2用于对分组后的待处理数据依次进行SHA-3的轮函数处理,获取处理结果数据;其中,运算模块2运用了两级流水线和两级子流水线的结构;控制模块3用于产生运算模块2所需的控制信号;截取模块4用于根据输出需求从所述处理结果数据中截取对应位数的输出摘要进行输出。
具体地,填充模块1采用的“pad10*1”填充规则即为:在输入数据的末尾先添加一比特1,之后添加若干比特0,最后再添加一比特1,中间添加0的比特数满足填充完成后的消息长度为分组长度的最小整数倍。其中,SHA3-224、SHA3-256、SHA3-384、SHA3-512对应的分组大小分别为1152比特,1088比特,832比特和576比特。
进一步地,运算模块2用于实现SHA-3的轮函数,轮函数的输入输出数据长度为1600比特,需要在控制模块3的控制下重复24轮,每一轮都包含keccak算法规定的五个运算步骤θ、ρ、π、χ、ι。在具体实施过程中,请参考图2,运算模块2包括:第一运算单元21、第二运算单元22、第一寄存器单元23和第二寄存器单元24;第一运算单元21的输入端与填充模块1相连、输出端与第一寄存器单元23的输入端相连;第二运算单元22的输入端与第一寄存器单元23的输出端相连、输出端与第二寄存器单元24的输入端相连;第二寄存器单元24的输出端与截取模块4相连。
第一运算单元21用于执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,并将运算结果输出至第一寄存器单元23进行缓存,实现第一级流水线;第二运算单元22用于执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,从第一寄存器单元23读取数据进行运算处理,并将运算结果输出至第二寄存器单元24进行缓存,实现第二级流水线。
可见,运算模块2采用展开的结构,展开因子为2,即包含第一、第二两个运算单元,将一周期轮函数的计算量从1轮提高到2轮,当轮函数的总运算周期数为24时,将轮函数执行所需周期数从24个缩短到12个。在第一运算单元21和第二运算单元22之间插入一级流水线,在第二运算单元22后插入一级流水线,两个运算单元实现两级流水线结构,提高了系统的最大频率。
进一步,请参考图3,运算模块2还包括:第三寄存器单元25和第四寄存器单元26;第一运算单元21包括第一运算子单元211和第二运算子单元212;第三寄存器单元25的输入端和输出端分别连接第一运算子单元211和第二运算子单元212;第二运算单元22包括第三运算子单元221和第四运算子单元222;第四寄存器单元26的输入端和输出端分别连接第三运算子单元221和第四运算子单元222。
所述轮函数的θ运算步骤包括:θ1、θ2、θ3三个子运算步骤。请参考图4和图3,第一运算子单元211用于执行步骤θ1、θ2,并将运算结果输出至第三寄存器单元25进行缓存,实现第一级子流水线;第二运算子单元212用于执行步骤θ3、ρ、π、χ、ι,从第三寄存器单元25读取数据进行处理,并将运算结果输出至第一寄存器单元23进行缓存。接着,请参考图5和图3,第三运算子单元221用于执行步骤θ1、θ2,并将运算结果输出至第四寄存器单元26进行缓存,实现第二级子流水线;第四运算子单元222用于执行步骤θ3、ρ、π、χ、ι,从第四寄存器单元26读取数据进行处理,并将运算结果输出至第二寄存器单元24进行缓存。
可见,第一运算单元21和第二运算单元22内部将运算步骤θ拆分为三个部分θ1、θ2和θ3,并在θ2后插入流水线,使步骤θ1和θ2合并为一级子流水线,步骤θ3、ρ、π、χ和ι合并为一级子流水线,第一运算单元21和第二运算单元22内部用两级子流水线结构实现了运算步骤的精准切割,进一步提高了最大频率。
各个运算步骤的数学表达式为:
运算模块2内部的硬件结构图分别如图6所示,1600比特数据分成25路,每路64比特,插入流水线的位置在步骤θ2后。可以看出单比特数据从步骤θ1到步骤θ2经过了5个异或门(符号标记为),从步骤θ3到步骤ι最多经过了3个异或门(符号标记为),1个与门(符号标记为D)以及1个非门(符号标记为);即第一级子流水线包含了5个门电路,第二级子流水线同样包含了5个门电路,从而在第一运算单元21和第二运算单元22内部用两级子流水线结构实现了运算步骤的精准切割,进一步提高了最大频率。
在具体实施过程中,仍请参考图2和图3,所述的SHA-3算法的硬件实现电路还包括:数据选择器5和数据分配器6;数据选择器5的三个输入端分别与填充模块1、数据分配器6、控制模块3相连,且数据选择器5的输出端与运算模块2相连;数据分配器6的两个输入端分别与运算模块2、控制模块3相连,且数据分配器6的两个输出端分别与数据选择器5、截取模块4相连;数据选择器5,用于在控制模块3的控制下,选择填充模块1的输出数据或数据分配器6的输出数据作为运算模块2的输入数据;数据分配器6,用于在控制模块3的控制下,选择将运算模块2的运算结果输出至数据选择器5或截取模块4。
具体的,控制模块3用于控制电路各功能模块的运行,控制模块3用于产生第一控制信号、第二控制信号和第三控制信号;其中:所述第一控制信号用于控制数据选择器5选择填充模块1的输出数据或数据分配器6的输出数据作为运算模块2的输入数据;所述第二控制信号用于控制数据分配器6选择将运算模块2的运算结果输出至数据选择器5或截取模块4;所述第三控制信号用于计算运算模块2的运算周期数,并根据计算的周期数选择对应的参数配置到运算模块2中参与运算。
在具体电路实现中,控制模块3产生第一控制信号sel、第二控制信号ready、第三控制信号cnt。sel位宽为2比特,用于控制数据选择器5的数据选择,第1个周期选择填充后的数据进入第一运算单元21,之后11个周期选择数据分配器6产生的数据进入第一运算单元21。ready位宽为2比特,用于数据分配器6的数据分配,前11个周期将第二运算单元22产生的数据分配至数据选择器5,最后一个周期将数据分配至截取模块4。cnt位宽为4比特,用于从0至11对周期数进行计数,并根据所计算的周期数选择对应的轮常数进入到第一运算单元21和第二运算单元22中参与步骤ι的运算。如图4和图5所示,第一个周期,cnt选择的第一运算单元21和第二运算单元22中对应的轮常数分别为轮常数0和轮常数1;第二个周期,cnt选择的第一运算单元21和第二运算单元22中对应的轮常数分别为轮常数2和轮常数3;以此类推,第十二个周期,cnt选择的第一运算单元21和第二运算单元22中对应的轮常数分别为轮常数22和轮常数23。
结合图2和图3对本实施例SHA-3算法的硬件实现电路的工作原理进行梳理:
填充模块1通过data_in数据线接受外部输入消息,通过数据选择器5与第一运算单元21连接;第一运算单元21通过第一寄存器单元23与第二运算单元22连接;第二运算单元22通过第二寄存器单元24与数据分配器6连接;数据分配器6的两个输出端分别与数据选择器5及截取模块4连接;控制模块3通过sel信号线与数据选择器5连接,通过ready信号线与数据分配器6连接,通过cnt信号线与第一运算单元21和第二运算单元22连接,通过start信号线显示输入消息有效,通过valid信号线显示输出摘要有效;截取模块4通过data_out数据线输出产生的摘要。
截取模块4将运算产生的1600比特数据截取所需对应位数的输出摘要。SHA3-224、SHA3-256、SHA3-384、SHA3-512对应的截取位数分别是224比特,256比特,384比特和512比特。
总而言之,本发明所构思的以上技术方案,通过展开结构,将系统运算所需的时钟周期减小了一半,采用流水线及子流水线的结构,实现了关键步骤的精准切割,提高了系统的最大频率。本发明方法从减小时钟周期和提高最大频率两个方面极大提高了吞吐量,在增加较少硬件资源开销的情况下,大幅提升了电路的效率。
实施例二
基于同一发明构思,本发明实施例还提供了一种高效率SHA-3算法的硬件实现方法,应用于实施例一所述的硬件实现电路中。如图7所示,该方法包括以下步骤:
S1、当获取到输入数据时,填充模块1根据SHA-3标准规定的“pad10*1”填充规则对输入数据进行填充,获得预定长度的待处理数据;
S2、在控制模块3的控制下,运算模块2对所述待处理数据进行SHA-3轮函数处理,获取处理结果数据;其中,运算模块2运用了两级流水线和两级子流水线的结构;
S3、截取模块4根据输出需求从所述处理结果数据中截取对应位数的输出摘要进行输出。
在具体实施过程中,在执行步骤S1之后且执行步骤S2之前,所述硬件实现方法还包括步骤:按照预设分组长度对所述待处理数据进行分组,以使运算模块2对分组后的待处理数据进行SHA-3的轮函数处理。
进一步,结合实施例一中的图2,所述运算模块2包括:第一运算单元21、第二运算单元22、第一寄存器单元23和第二寄存器单元24;请参考图8,所述步骤S2具体包括以下子步骤:
S21、第一运算单元21执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,并将运算结果输出至第一寄存器单元23进行缓存;
S22、第二运算单元22执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,从第一寄存器单元23读取数据进行处理,并将运算结果输出至第二寄存器单元24进行缓存。
进一步,运算模块2还包括:第三寄存器单元25和第四寄存器单元26;第一运算单元21包括第一运算子单元211和第二运算子单元212;第三寄存器单元25的输入端和输出端分别连接第一运算子单元211和第二运算子单元212;第二运算单元22包括第三运算子单元221和第四运算子单元222;第四寄存器单元26的输入端和输出端分别连接第三运算子单元221和第四运算子单元222;所述轮函数的θ运算步骤包括:θ1、θ2、θ3三个子运算步骤;所述步骤S21包括:
第一运算子单元211执行步骤θ1、θ2,并将运算结果输出至第三寄存器单元25进行缓存;
第二运算子单元212执行步骤θ3、ρ、π、χ、ι,从所述第三寄存器单元25读取数据进行处理,并将运算结果输出至第一寄存器单元23进行缓存。
所述步骤S22包括:
第三运算子单元221执行步骤θ1、θ2,并将运算结果输出至第四寄存器单元26进行缓存;
第四运算子单元222执行步骤θ3、ρ、π、χ、ι,从第四寄存器单元26读取数据进行处理,并将运算结果输出至第二寄存器单元24进行缓存。
在具体实施过程中,所述硬件实现方法还包括:
通过控制模块3产生第一控制信号控制数据选择器5选择所述填充模块1的输出数据或数据分配器6的输出数据作为运算模块2的输入数据;
通过控制模块3产生第二控制信号控制数据分配器6选择将所述运算模块2的运算结果输出至所述数据选择器5或所述截取模块4;
通过控制模块3产生第三控制信号计算运算模块2的运算周期数,并根据计算的周期数选择对应的参数配置到所述运算模块2中参与运算。
具体地,所述方法实施过程如下:
步骤一、输入消息数据进入填充模块1,填充模块1根据“pad10*1”填充规则对数据进行填充,填充完成后的数据按照对应的分组长度进行分组,分组数据连接若干比特0组成1600比特数据后通过数据选择器5进入到运算模块2中。
步骤二、运算模块2包括第一运算单元21和第二运算单元22两个运算单元,数据依次通过第一运算单元21、第一寄存器单元23、第二运算单元22、第二寄存器单元24,然后通过数据分配器6输出,整个过程算作是2轮计算。
步骤三、从数据分配器6输出的数据通过数据选择器5再次进入到运算模块2中,重复步骤二,在控制模块3的控制下重复24轮计算。
步骤四、24轮计算完成后数据通过数据分配器6进入到截取模块4中,截取模块4将运算产生的1600比特数据截取所需对应位数的输出摘要。
根据上面的描述,上述SHA-3算法的硬件实现方法应用于上述SHA-3算法的硬件实现电路中,所以,该方法与上述电路的一个或多个实施例一致,在此就不再一一赘述了。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种高效率SHA-3算法的硬件实现电路,其特征在于,包括:
填充模块,用于根据SHA-3标准规定的“pad10*1”填充规则对输入数据进行填充,获得预定长度的待处理数据;
运算模块,用于对所述待处理数据进行SHA-3的轮函数处理,获取处理结果数据;其中,所述运算模块运用了两级流水线和两级子流水线的结构;
控制模块,用于产生所述运算模块所需的控制信号;
截取模块,用于根据输出需求从所述处理结果数据中截取对应位数的输出摘要进行输出;
所述运算模块包括:第一运算单元、第二运算单元、第一寄存器单元和第二寄存器单元;所述第一运算单元的输入端与所述填充模块相连、输出端与所述第一寄存器单元的输入端相连;所述第二运算单元的输入端与所述第一寄存器单元的输出端相连、输出端与所述第二寄存器单元的输入端相连;所述第二寄存器单元的输出端与所述截取模块相连;
所述第一运算单元用于执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,并将运算结果输出至所述第一寄存器单元进行缓存,实现第一级流水线;
所述第二运算单元用于执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,从所述第一寄存器单元读取数据进行运算处理,并将运算结果输出至所述第二寄存器单元进行缓存,实现第二级流水线;
所述运算模块还包括:第三寄存器单元和第四寄存器单元;所述第一运算单元包括第一运算子单元和第二运算子单元;所述第三寄存器单元的输入端和输出端分别连接所述第一运算子单元和所述第二运算子单元;所述第二运算单元包括第三运算子单元和第四运算子单元;所述第四寄存器单元的输入端和输出端分别连接所述第三运算子单元和所述第四运算子单元;
所述轮函数的θ运算步骤包括:θ1、θ2、θ3三个子运算步骤;
所述第一运算子单元用于执行步骤θ1、θ2,并将运算结果输出至所述第三寄存器单元进行缓存,实现第一级子流水线;
所述第二运算子单元用于执行步骤θ3、ρ、π、χ、ι,从所述第三寄存器单元读取数据进行处理,并将运算结果输出至所述第一寄存器单元进行缓存;
所述第三运算子单元用于执行步骤θ1、θ2,并将运算结果输出至所述第四寄存器单元进行缓存,实现第二级子流水线;
所述第四运算子单元用于执行步骤θ3、ρ、π、χ、ι,从所述第四寄存器单元读取数据进行处理,并将运算结果输出至所述第二寄存器单元进行缓存。
2.如权利要求1所述的SHA-3算法的硬件实现电路,其特征在于,所述硬件实现电路还包括:数据选择器和数据分配器;所述数据选择器的三个输入端分别与所述填充模块、所述数据分配器、所述控制模块相连,且所述数据选择器的输出端与所述运算模块相连;所述数据分配器的两个输入端分别与所述运算模块、所述控制模块相连,且所述数据分配器的两个输出端分别与所述数据选择器、所述截取模块相连;
所述数据选择器,用于在所述控制模块的控制下,选择所述填充模块的输出数据或所述数据分配器的输出数据作为所述运算模块的输入数据;
所述数据分配器,用于在控制模块的控制下,选择将所述运算模块的运算结果输出至所述数据选择器或所述截取模块。
3.如权利要求2所述的SHA-3算法的硬件实现电路,其特征在于,所述控制模块用于产生第一控制信号、第二控制信号和第三控制信号;其中:
所述第一控制信号用于控制所述数据选择器选择所述填充模块的输出数据或所述数据分配器的输出数据作为所述运算模块的输入数据;
所述第二控制信号用于控制所述数据分配器选择将所述运算模块的运算结果输出至所述数据选择器或所述截取模块;
所述第三控制信号用于计算所述运算模块的运算周期数,并根据计算的周期数选择对应的参数配置到所述运算模块中参与运算。
4.一种高效率SHA-3算法的硬件实现方法,其特征在于,包括以下步骤:
S1、当获取到输入数据时,填充模块根据SHA-3标准规定的“pad10*1”填充规则对输入数据进行填充,获得预定长度的待处理数据;
S2、在控制模块的控制下,运算模块对所述待处理数据进行SHA-3轮函数处理,获取处理结果数据;其中,所述运算模块运用了两级流水线和两级子流水线的结构;
S3、截取模块根据输出需求从所述处理结果数据中截取对应位数的输出摘要进行输出;
所述运算模块包括:第一运算单元、第二运算单元、第一寄存器单元和第二寄存器单元;所述步骤S2具体包括以下子步骤:
S21、所述第一运算单元执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,并将运算结果输出至所述第一寄存器单元进行缓存;
S22、所述第二运算单元执行SHA-3的轮函数的θ、ρ、π、χ、ι五个运算步骤,从所述第一寄存器单元读取数据进行处理,并将运算结果输出至所述第二寄存器单元进行缓存;
所述运算模块还包括:第三寄存器单元和第四寄存器单元;所述第一运算单元包括第一运算子单元和第二运算子单元;所述第二运算单元包括第三运算子单元和第四运算子单元;所述轮函数的θ运算步骤包括:θ1、θ2、θ3三个子运算步骤;
所述步骤S21包括:
所述第一运算子单元执行步骤θ1、θ2,并将运算结果输出至所述第三寄存器单元进行缓存;
所述第二运算子单元执行步骤θ3、ρ、π、χ、ι,从所述第三寄存器单元读取数据进行处理,并将运算结果输出至所述第一寄存器单元进行缓存;
所述步骤S22包括:
所述第三运算子单元执行步骤θ1、θ2,并将运算结果输出至所述第四寄存器单元进行缓存;
所述第四运算子单元执行步骤θ3、ρ、π、χ、ι,从所述第四寄存器单元读取数据进行处理,并将运算结果输出至所述第二寄存器单元进行缓存。
5.如权利要求4所述的SHA-3算法的硬件实现方法,其特征在于,在执行步骤S1之后且执行步骤S2之前,所述硬件实现方法还包括步骤:按照预设分组长度对所述待处理数据进行分组,以使所述运算模块对分组后的待处理数据进行SHA-3的轮函数处理。
6.如权利要求4~5任一权项所述的SHA-3算法的硬件实现方法,其特征在于,所述硬件实现方法还包括:
控制模块产生第一控制信号控制数据选择器选择所述填充模块的输出数据或数据分配器的输出数据作为所述运算模块的输入数据;
控制模块产生第二控制信号控制数据分配器选择将所述运算模块的运算结果输出至所述数据选择器或所述截取模块;
控制模块产生第三控制信号计算运算模块的运算周期数,并根据计算的周期数选择对应的参数配置到所述运算模块中参与运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110175906.7A CN112988235B (zh) | 2021-02-06 | 2021-02-06 | 一种高效率第三代安全散列算法的硬件实现电路及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110175906.7A CN112988235B (zh) | 2021-02-06 | 2021-02-06 | 一种高效率第三代安全散列算法的硬件实现电路及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988235A CN112988235A (zh) | 2021-06-18 |
CN112988235B true CN112988235B (zh) | 2022-06-14 |
Family
ID=76392498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110175906.7A Active CN112988235B (zh) | 2021-02-06 | 2021-02-06 | 一种高效率第三代安全散列算法的硬件实现电路及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988235B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114189324B (zh) * | 2021-11-12 | 2024-03-22 | 湖南遥昇通信技术有限公司 | 一种消息安全签名方法、系统、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894229A (zh) * | 2010-06-30 | 2010-11-24 | 华南理工大学 | 一种兼容三种sha标准的装置及其实现方法 |
CN104917680A (zh) * | 2014-03-10 | 2015-09-16 | 帕洛阿尔托研究中心公司 | 数据流上的并行散列和子散列 |
CN107666387A (zh) * | 2016-07-27 | 2018-02-06 | 北京计算机技术及应用研究所 | 低功耗并行哈希计算电路 |
CN109559122A (zh) * | 2018-12-07 | 2019-04-02 | 北京瑞卓喜投科技发展有限公司 | 区块链数据传输方法及区块链数据传输系统 |
CN109905228A (zh) * | 2017-12-07 | 2019-06-18 | 北京智云芯科技有限公司 | 一种实现哈希运算的专用计算电路 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6139859B2 (ja) * | 2012-10-31 | 2017-05-31 | キヤノン株式会社 | ハッシュ値生成装置およびハッシュ値生成方法 |
US10038550B2 (en) * | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
US10097345B2 (en) * | 2015-04-14 | 2018-10-09 | PeerNova, Inc. | Secure hash algorithm in digital hardware for cryptographic applications |
US10020934B2 (en) * | 2015-11-05 | 2018-07-10 | Intel Corporation | Hardware accelerator for cryptographic hash operations |
US11222127B2 (en) * | 2019-12-10 | 2022-01-11 | Intel Corporation | Processor hardware and instructions for SHA3 cryptographic operations |
-
2021
- 2021-02-06 CN CN202110175906.7A patent/CN112988235B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894229A (zh) * | 2010-06-30 | 2010-11-24 | 华南理工大学 | 一种兼容三种sha标准的装置及其实现方法 |
CN104917680A (zh) * | 2014-03-10 | 2015-09-16 | 帕洛阿尔托研究中心公司 | 数据流上的并行散列和子散列 |
CN107666387A (zh) * | 2016-07-27 | 2018-02-06 | 北京计算机技术及应用研究所 | 低功耗并行哈希计算电路 |
CN109905228A (zh) * | 2017-12-07 | 2019-06-18 | 北京智云芯科技有限公司 | 一种实现哈希运算的专用计算电路 |
CN109559122A (zh) * | 2018-12-07 | 2019-04-02 | 北京瑞卓喜投科技发展有限公司 | 区块链数据传输方法及区块链数据传输系统 |
Non-Patent Citations (1)
Title |
---|
可重构的SHA-3算法流水线结构优化及实现;周雍浩等;《现代计算机》;20200425;参见第15-20页及图1-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN112988235A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102137956B1 (ko) | 블록 마이닝 방법 및 장치 | |
CN111464308B (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
CN111612622B (zh) | 用于执行散列算法的电路和方法 | |
CN113300831B (zh) | 一种安全散列算法的实现方法、系统、介质及设备 | |
CN112136134B (zh) | 具有组合的函数的加密asic | |
CN111600699A (zh) | 用于实现散列算法的电路和方法 | |
CN113078996B (zh) | Sm4密码算法的fpga优化实现方法、系统及应用 | |
CN106656459A (zh) | 一种针对sm3‑hmac的侧信道能量分析方法和装置 | |
CN109190413B (zh) | 一种基于fpga和md5加密的串行通信系统 | |
CN112988235B (zh) | 一种高效率第三代安全散列算法的硬件实现电路及方法 | |
Van Hieu et al. | Hardware implementation for fast block generator of Litecoin blockchain system | |
JP2004054128A (ja) | 暗号化装置 | |
Zhao et al. | An efficient ASIC implementation of QARMA lightweight algorithm | |
CN110493003B (zh) | 一种基于四基二进制底层模运算的快速加密系统 | |
CN109039608B (zh) | 一种基于双S核的8-bitAES电路 | |
Ao et al. | A compact hardware implementation of SM3 hash function | |
CN109033847B (zh) | Aes加密运算单元、aes加密电路及其加密方法 | |
CN116155481A (zh) | 一种sm3算法的数据加密实现方法和装置 | |
KR102587719B1 (ko) | 해시 알고리즘을 수행하는 회로, 컴퓨팅 칩, 데이터 처리 장치 및 방법 | |
CN212231468U (zh) | 用于执行散列算法的电路以及执行比特币挖矿算法的装置 | |
Konstantopoulou et al. | Design and implementation of a lightweight cryptographic module, for wireless 5G communications and beyond | |
CN114978473A (zh) | 一种sm3算法的处理方法、处理器、芯片及电子设备 | |
JP2004078053A (ja) | 暗号化装置 | |
CN114510450A (zh) | 加密算法的加速计算方法、装置和阵列单元算子系统 | |
CN113505383A (zh) | 一种ecdsa算法执行系统及方法 |
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 |