CN114676448A - Sm3算法的实现电路、方法及电子设备 - Google Patents
Sm3算法的实现电路、方法及电子设备 Download PDFInfo
- Publication number
- CN114676448A CN114676448A CN202210423795.1A CN202210423795A CN114676448A CN 114676448 A CN114676448 A CN 114676448A CN 202210423795 A CN202210423795 A CN 202210423795A CN 114676448 A CN114676448 A CN 114676448A
- Authority
- CN
- China
- Prior art keywords
- register
- data
- intermediate variable
- carry
- data selector
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/10—Selecting, i.e. obtaining data of one kind from those record carriers which are identifiable by data of a second kind from a mass of ordered or randomly- distributed record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供一种SM3算法的实现电路、方法及电子设备,在SM3算法的实现电路中,设置了多个用于执行三参数加法运算和三参数异或运算的保留进位加法器,使压缩运算中的多参数运算均通过保留进位加法器来完成,因此,各类多逻辑运算如中间变量FF的计算和TT1的计算均可通过保留进位加法器实现,省去了现有的SM3算法实现电路中重复的逻辑结构,减少了SM3算法的实现电路所需的寄存器的数量,实现了SM3算法的实现电路的电路面积减少。
Description
技术领域
本发明涉及数据安全领域,尤其涉及一种SM3算法的实现电路、方法及电子设备。
背景技术
SM3算法,即SM3密码杂凑算法,SM3算法的计算需通过相应的计算电路来完成,而在SM3计算电路中,算法中的循环迭代步骤常设置为并行运算的方式,但并行的实现需采用较多的数据寄存器,因而导致SM3算法的实现电路的电路面积较大,难以满足当下的电路设计需要。
发明内容
有鉴于此,本发明提供一种SM3算法的实现电路、方法及电子设备,用于改善SM3算法的实现电路的电路面积较大的现状。
第一方面,本发明实施例提供一种SM3算法的实现电路,所述实现电路包括消息压缩单元,所述消息压缩单元包括第一预设数量个保留进位加法器;
所述第一预设数量个保留进位加法器用于执行SM3算法中的三参数加法运算和三参数异或运算。
可选的,在本发明实施例提供的一种实施方式中,所述消息压缩单元还包括第二预设数量个寄存器;
所述第二预设数量个寄存器用于配合所述第一预设数量个保留进位加法器计算中间变量,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1。
进一步的,在本发明实施例提供的一种实施方式中,所述第二预设数量个寄存器包括第一至第八寄存器,所述第一预设数量个保留进位加法器包括第一至第三保留进位加法器,所述消息压缩单元还包括异或运算器、加法运算器及第一至第六数据选择器;
第一寄存器和第五寄存器均与第一保留进位加法器连接,第一至第三数据选择器均与第二保留进位加法器连接,第四至第六数据选择器均与第三保留进位加法器连接,第一寄存器和第二保留进位加法器均与第一数据选择器连接,所述第一保留进位加法器通过异或运算器与所述第一数据选择器连接,第一寄存器和第二寄存器均与第二数据选择器连接,第三寄存器和第四寄存器均与第三数据选择器连接,第一保留进位加法器通过所述异或运算器和加法运算器与所述第四至第六数据选择器连接,第八寄存器的一端与所述第六数据选择器连接,另一端通过所述加法运算器与所述第四至第六数据选择器连接,第五至第七寄存器均与第五数据选择器连接;
所述第一保留进位加法器用于根据第一寄存器和第五寄存器中的数据,计算中间变量SS1;
所述第二保留进位加法器用于根据第一至第三数据选择器输入的数据,计算中间变量FF和中间变量TT1;
所述第三保留进位加法器用于根据第四至第六数据选择器输入的数据,计算中间变量TT2。
更进一步的,在本发明实施例提供的一种实施方式中,所述第二保留进位加法器还用于基于所述第四寄存器中的数据和所述中间变量FF计算第一和值,并将所述第一和值发送至所述第四寄存器,以使所述四寄存器中的数据更新;
所述第三保留进位加法器还用于基于所述第八寄存器中的数据和中间变量GG计算第二和值,并将所述第二和值发送至第八寄存器,以使所述第八寄存器中的数据更新。
可选的,在本发明实施例提供的一种实施方式中,SM3算法的实现电路还包括消息扩展单元,所述消息扩展单元包括异或运算器、第九寄存器及第九至第十三数据选择器;
所述消息扩展单元与所述消息压缩单元连接;
所述第九寄存器与第九数据选择器、第十数据选择器和第十一数据选择器均连接;
所述第十三数据选择器和第十数据选择器均与所述第九数据选择器连接;
第十一数据选择器与第十二数据选择器连接;
所述第十数据选择器、所述第十二数据选择器及所述第十三数据选择器均与所述异或运算器连接;
所述异或运算器与所述第九寄存器连接;
所述消息扩展单元输出中间变量P1的路径包括:中间变量Wj-16通过所述第十数据选择器输入至所述异或运算器,中间变量Wj-3通过所述第十数据选择器,且左移15位后,再通过所述第十二数据选择器输入至所述异或运算器,中间变量Wj-9通过所述第十三数据选择器输入至所述异或运算器,所述中间变量Wj-16、左移15位的中间变量Wj-3及所述中间变量Wj-9经过所述异或运算器得到对应的中间异或量,所述中间异或量通过所述第九寄存器和所述第十数据选择器输入至所述异或运算器,和通过所述第九寄存器,且左移23位后,通过所述第九数据选择器和所述第十三数据选择器输入至所述异或运算器,及通过所述第九寄存器和所述第十一数据选择器,且左移15位后,通过所述第十二数据选择器输入至所述异或运算器,所述中间异或量、左移23位的中间异或量及左移15后的中间异或量经过所述异或运算器得到中间变量P1;
消息扩展单元输出中间变量Wj的路径为:所述中间变量P1通过所述第九寄存器和所述第十数据选择器输入至所述异或运算器,存储在所述第九寄存器中的中间变量Wj-3左移7位后,通过所述第九数据选择器和所述第十三数据选择器输入至所述异或运算器,中间变量Wj-6通过所述第十二数据选择器输入至所述异或运算器,所述中间变量P1、左移7位的中间变量Wj-3及中间变量Wj-6经过所述异或运算器得到对应的中间变量Wj。
第二方面,本发明实施例提供一种SM3算法的实现方法,所述实现电路包括消息压缩单元,所述消息压缩单元包括第一预设数量个保留进位加法器;
利用所述第一预设数量个保留进位加法器执行SM3算法中的三参数加法运算和三参数异或运算。
可选的,在本发明实施例提供的一种实施方式中,所述消息压缩单元还包括第二预设数量个寄存器;
控制所述第二预设数量个寄存器配合所述第一预设数量个保留进位加法器以计算中间变量,其中,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1。
进一步的,在本发明实施例提供的一种实施方式中,所述第二预设数量个寄存器包括第一至第八寄存器,所述第一预设数量个保留进位加法器包括第一至第三保留进位加法器,所述消息压缩单元还包括第一至第六数据选择器;
所述控制所述第二预设数量个寄存器配合所述第一预设数量个保留进位加法器以计算中间变量,其中,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1,包括:
第一保留进位加法器根据第一寄存器和第五寄存器中的数据,计算中间变量SS1;
第二保留进位加法器根据第一至第三数据选择器输入的数据,计算中间变量FF和中间变量TT1;
第三保留进位加法器根据第四至第六数据选择器输入的数据,计算中间变量TT2。
更进一步的,在本发明实施例提供的一种实施方式中,所述方法还包括:
所述第二保留进位加法器基于第四寄存器中的数据和所述中间变量FF计算第一和值,并将所述第一和值发送至所述第四寄存器,以使所述四寄存器中的数据更新;
所述第三保留进位加法器基于所述第八寄存器中的数据和中间变量GG计算第二和值,并将所述第二和值发送至第八寄存器,以使所述第八寄存器中的数据更新。
第三方面,本发明实施例还提供一种电子设备,包括如第一方面中任一种所述的SM3算法的实现电路。
本发明实施例在SM3算法的实现电路中,设置了多个用于执行三参数加法运算和三参数异或运算的保留进位加法器,使得SM3算法中的三参数加法运算和三参数异或运算通过保留进位加法器来完成,进而无需设置多个寄存器来完成多参数运算,由此减少了SM3算法的实现电路所需的寄存器的数量,减少了SM3算法的实现电路的电路面积。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本发明实施例提供的SM3算法的实现电路的电路结构图;
图2示出了本发明实施例提供的消息压缩单元的电路结构图;
图3示出了本发明实施例提供的消息扩展单元的电路结构图;
图4示出了本发明实施例提供的SM3算法的实现方法的流程示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
为更好地说明本发明实施例提出的SM3算法的优化方法,首先给出现有技术中SM3算法和SM3算法的实现电路的简要说明。
SM3是一种单向的密码散列函数(Cryptographic hash function),单向即表示极其难以由输出结果回推输入数据。密码散列函数的输入数据,通常被称为消息(message),而输出结果常被称为消息摘要(message digest)或摘要(digest),也即杂凑值。
进一步的,SM3算法在将消息转换为杂凑值的过程中,首先需对消息进行填充。
具体的,即在消息的末尾添加一个1和多个0,直至填充后的消息的长度为448mod512的最小非负整数后,再在填充后的消息的末尾添加一个64位的比特串,比特串为未填充的消息的长度的二进制表示。最终,填充好的消息的比特长度为512的倍数。
接着,将消息填充后,将以512比特长度的分组大小,将填充后的消息划分为多个消息分组。
然后,对每个消息分组进行扩展,即针对任意一个消息分组,将消息分组划分为等长的16个字符串,即W0-W15。再根据W0-W15生成W16-W67,即52个字符串,最后根据W0-W64生成64个字符串,即W’0–W’63。
其中,根据W0-W15生成W16-W67的过程可参考以下公式。
式中,P1表示第一置换函数,符号“←”代表左向赋值。
根据W0-W64生成W’0–W’63的过程可参考以下公式。
得到132个字符串后,基于132个字符串和8个寄存器进行64次数据压缩,即利用W0-W63和W’0–W’63进行数据压缩。
具体而言,以一次数据压缩过程为例,设8个寄存器的编号为A、B、C……H,则首先利用向A-H写入压缩数据Vi,然后利用寄存器中的数据计算中间变量SS1、SS2、TT1以及TT2,并根据四个中间变量更新各个寄存器的数据,最后将8个寄存器中的数据作为下一次压缩的参数,即Vi+1=Vi。
中间变量SS1、SS2、TT1、TT2的计算,各个寄存器的数据的更新,以及Vi+1的获取均可参考以下公式。
ABCDEFGH←Vi
SS1←((A<<12)+E+(Tj<<j))<<7
TT1←FFj(A,B,C)+D+SS2+Wj′
TT2←GGj(E,F,G)+H+SS1+Wj
D←C
C←B<<9
B←A
A←TT1
H←G
G←F<<19
F←E
E←P0(TT2)
Vi+1←ABCDEFGH
式中,P0表示第二置换函数,Tj表示一个因j的大小而变化的常量,FFj和GGj均代表SM3算法中不同的布尔函数。
FFj和GGj的计算均可参考以下公式。
由此,在64次循环运算结束后,8个寄存器中的数据即代表消息对应的杂凑值。
需说明的是,上述内容仅为对现有技术的简要介绍,SM3计算过程以及SM3实现电路中的更多细节本发明将不再介绍。
基于此,参照图1,图1示出了本发明实施例提供的SM3算法的实现电路的电路结构图,所述实现电路包括消息压缩单元,所述消息压缩单元包括第一预设数量个保留进位加法器;
所述第一预设数量个保留进位加法器用于执行SM3算法中的三参数加法运算和三参数异或运算。
可以理解的是,本发明实施例中的保留进位加法器用于根据数据选择器发送的数据进行运算,保留进位加法器的输出包括进位值(Carry)与和值(Sum)。
还可以理解的是,现有技术中下的SM3算法实现电路中,除去编号为A、B、C……H的八个寄存器外,还需设置多个额外的寄存器以完成相应的运算。示范性的,中间变量TT1的计算过程为:寄存器A、寄存器B以及寄存器C均将数据发送至FF计算器;FF计算器根据寄存器A、寄存器B以及寄存器C中的数据计算中间变量FF,并将中间变量FF发送至第一额外寄存器;第一额外寄存器接收中间变量SS2和来自FF计算器输出的中间变量FF,并计算中间变量SS2和中间变量FF的和值,再将和值发送至第二额外寄存器;第二额外寄存器接收来自寄存器D中的数据和第一额外寄存器中的数据,并再次计算和值,再将和值发送至第三额外寄存器;第三额外寄存器接收Wj’和来自第二额外寄存器的数据,执行求和运算从而得到中间变量TT1。
以上现有的SM3算法实现电路中需设置多个额外寄存器来完成多参数加法/异或运算,导致SM3算法的实现电路的电路面积大,从而难以满足现阶段的电路设计要求。
由此,本发明实施例提供的SM3算法的实现电路,使压缩运算中的多参数运算均通过能执行三参数加法运算和三参数异或运算的保留进位加法器来完成,因此,各类多逻辑运算如中间变量FF的计算和TT1的计算均可通过保留进位加法器实现,省去了现有的SM3算法实现电路中重复的逻辑结构,减少了SM3算法的实现电路所需的寄存器的数量,实现了SM3算法的实现电路的电路面积减少。
此外,本发明实施例提供的SM3算法的实现电路中的寄存器和保留进位加法器的数量均可根据实际情况设置,图1仅用于说明本发明实施例提供的SM3算法的实现电路,并不用于限定电路结构。
进一步的,在本发明实施例提供的一种可行方式中,所述消息压缩单元还包括第二预设数量个寄存器;
所述第二预设数量个寄存器用于配合所述第一预设数量个保留进位加法器计算中间变量,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1。
具体地,本发明实施例将第二预设数量个寄存器与第一预设数量个保留进位加法器进行连接,进而使第二预设数量个寄存器配合第一预设数量个保留进位加法器完成中间变量SS1、中间变量FF以及中间变量TT1等中间变量的计算。
可以理解的是,消息压缩单元中寄存器和保留进位加法器的数量,寄存器和保留进位加法器的连接关系均可根据实际情况设置。
优选的,在本发明实施例提供的一种可行方式中,具体可参考图2,图2示出了本发明实施例提供的消息压缩单元的电路结构图,即在本发明实施例提供的一种实施方式中,所述第二预设数量个寄存器包括第一至第八寄存器,所述第一预设数量个保留进位加法器包括第一至第三保留进位加法器,所述消息压缩单元还包括异或运算器、加法运算器及第一至第六数据选择器;
第一寄存器和第五寄存器均与第一保留进位加法器连接,第一至第三数据选择器均与第二保留进位加法器连接,第四至第六数据选择器均与第三保留进位加法器连接,第一寄存器和第二保留进位加法器均与第一数据选择器连接,所述第一保留进位加法器通过异或运算器与所述第一数据选择器连接,第一寄存器和第二寄存器均与第二数据选择器连接,第三寄存器和第四寄存器均与第三数据选择器连接,第一保留进位加法器通过所述异或运算器和加法运算器与所述第四至第六数据选择器连接,第八寄存器的一端与所述第六数据选择器连接,另一端通过所述加法运算器与所述第四至第六数据选择器连接,第五至第七寄存器均与第五数据选择器连接;
所述第一保留进位加法器用于根据第一寄存器和第五寄存器中的数据,计算中间变量SS1;
所述第二保留进位加法器用于根据第一至第三数据选择器输入的数据,计算中间变量FF和中间变量TT1;
所述第三保留进位加法器用于根据第四至第六数据选择器输入的数据,计算中间变量TT2。
需说明的是,图2中的空心圆形代表异或运算器,空心梯形代表加法运算器。
还需说明的是,图2仅为本发明实施例提供的SM3算法的实现电路的一种可行的连接方式,在另一种可行方式中第五至第六寄存器可不通过寄存器GG连接至第五数据选择器,即第五至第六寄存器直接与第五数据选择器连接,进而中间变量GG通过第三保留进位加法器来进行计算。
此外,需理解的是,为更好地说明本发明实施例中各个寄存器、数据选择器以及保留进位加法器的连接关系,图2中隐藏了部分运算器/寄存器。
具体而言,第一保留进位加法器还与一个用于存储Tj的寄存器连接,进而第一保留进位加法器还用于接收常量Tj的输入;第一寄存器还通过一个位移运算器与第一保留进位加法器连接,以使第一寄存器中的数据在输入至第一保留进位加法器前已左移12位;第二数据选择器还用于接收Wj’;第三数据选择器还用于接收存储有32’b0的寄存器的输入,进而当第三数据选择器将接收到的32’b0输出,第一数据选择器输出中间变量SS1,第二数据选择器输出已左移12为的第一寄存器中的数据时,第二保留进位加法器将输出中间变量SS2;第四数据选择器还与一个用于存储Wj的寄存器连接,进而第四数据选择器还用于接收Wj;距离第一保留进位加法器最近的异或运算器还通过一个位移运算器与加法运算器连接,以在将数据发送至加法运算器前,已通过位移运算器将数据左移7位,进而完成中间变量SS1的计算;加法运算器通过一个用于将数据左移9位的位移运算器与第四数据选择器连接,还通过一个用于将数据左移17位的位移运算器与第六数据选择器连接。可以理解的是,隐藏的运算器/寄存器位置和作用均可根据本领域现有技术确定,故不再赘述。
基于此,本发明实施例通过保留进位加法器和与保留进位加法器相连的数据选择器,使得保留进位加法器将根据数据选择器的不同输入,完成不同中间变量的运算。示范性的,如第一保留进位加法器根据第一寄存器、第五寄存器以及常量Tj计算中间变量SS1,又如第二保留进位加法器根据第一数据选择器输出的第一寄存器中的数据、第二数据选择器输出的第二寄存器中的数据及第三数据选择器输出的第三寄存器中的数据,计算中间变量FF,再如第三保留进位加法器根据第四数据选择器输出的Wj、第五数据选择器输出的中间变量GG及第六数据选择器输出的中间变量SS1与第八寄存器中的数据的相加结果(SS1+H),计算中间变量TT2。
可以理解的是,第二保留进位加法器和第三保留进位加法器能输出的运算结果可根据实际情况设置,以图2为例,第二保留进位加法器将输出中间变量FF、中间变量TT1、中间变量SS1以及中间变量SS2中的至少一个,第三保留进位加法器至少用于输出中间变量TT2。还可以理解的是,各个数据的具体运算过程均可根据本领域现有技术和图2中各个器件的连接关系实现,故不再赘述。
此外,关于图2中的第七数据选择器,当Wj和Wj’的j小于等于15时,第二保留进位加法器根据第一寄存器中的数据、第二寄存器中的数据以及第三寄存器中的数据而输出的和值(sum)为中间变量FF,而当j不小于等于15时,进位值(Carry)为中间变量FF。因此,为保证用于存储中间变量FF的寄存器,即包括字母“FF”矩形框的寄存器能接收到正确的中间变量FF,故使第二保留进位加法器通过第七数据选择器与包括字母“FF”矩形框的寄存器连接,以使第七数据选择器在j小于等于15时将和值输出,在j不小于等于15时将进位值输出。
不难理解的是,若第二保留进位加法器可在计算中间变量FF的过程中,当j小于等于15时输出和值,在j不小于等于15时输出进位值,则第二保留进位加法器的输出端可直接与第一数据选择器连接。
进一步的,为进一步优化本发明实施例提供的SM3算法的实现电路,在本发明实施例提供的一种实施方式中,所述第二保留进位加法器还用于基于所述第四寄存器中的数据和所述中间变量FF计算第一和值,并将所述第一和值发送至所述第四寄存器,以使所述四寄存器中的数据更新;
所述第三保留进位加法器还用于基于所述第八寄存器中的数据和中间变量GG计算第二和值,并将所述第二和值发送至第八寄存器,以使所述第八寄存器中的数据更新。
可以理解的是,本申请实施例提供的SM3算法实现电路中的第四寄存器和第八寄存器分别需参与中间变量TT1和中间变量TT2的计算,且均在计算完成后被更新。
但需说明的是,相比于现有技术中SM3算法实现电路中的第四寄存器和第八寄存器,本发明实施例中的第四寄存器和第八寄存器还分别用于存储第一和值和第二和值,即第四寄存器和第八寄存器还用于存储计算过程中的过程量。
进一步的,以图2为例,当第一数据选择器的输出为中间变量FF,第二数据选择器的输出为Wj’,第三数据选择器的输出为第四寄存器中的数据时,第二保留进位加法器计算中间变量FF、第四寄存器中的数据(D)以及Wj’的和值,即(FF+D+Wj’),再将(FF+D+Wj’)发送至第四寄存器以使第四寄存器进行数据更新,即将(FF+D+Wj’)通过距离第三数据选择器最近的异或运算器发送至第四寄存器。进而,当第四寄存器将(FF+D+Wj’)发送至第三数据选择器以输入至第二保留进位加法器,第一数据选择器的输出为SS1,第二数据选择器的输出为已左移12位的第一寄存器中的数据时,第二保留进位加法器则将输出中间变量TT1。
类似的,当第三保留进位加法器计算中间变量GG、第八寄存器中的数据(H)以及Wj的和值,即(GG+H+Wj)时,第三保留进位加法器将(GG+H+Wj)发送距离第七数据选择器最近的异或运算器,此异或运算器再将(GG+H+Wj)发送至第八数据选择器,第八数据选择器将(GG+H+Wj)发送至第八寄存器以使第八寄存器进行更新,第八寄存器将数据发送至第三保留进位加法器上方最近的加法运算器,以使加法运算器计算(SS1+H),即(SS1+GG+H+Wj),由此得到中间变量TT2。
可以理解的是,第八数据选择器还用于输出第七寄存器中的数据。进一步的,当第八数据选择器输出第七寄存器中的数据时,第八寄存器将根据第八数据选择器的输出进行数据更新,即H←G。
由此,本发明实施例基于保留进位加法器,使得第四寄存器和第八寄存器得以复用,从而进一步减少了电路中的寄存器的数量,避免了还需通过额外的寄存器存储过程变量如(GG+H+Wj)的情况,进一步优化了SM3算法的实现电路的电路面积。
此外,在具体应用中,本发明实施例的SM3算法实现电路还包括消息扩展单元,消息压缩单元与消息扩展单元连接,消息扩展单元用于生成待压缩数据,如上述的W0-W67和W’0–W’63,消息压缩单元用于将接收到的待压缩数据进行压缩,进而得到待压缩数据对应的杂凑值。
在一些具体的实施例中,具体可参考图3,图3示出了本发明实施例提供的消息扩展单元的电路结构图,也即,本发明实施例中的消息扩展单元包括异或运算器、第九寄存器及第九至第十三数据选择器;
所述消息扩展单元与所述消息压缩单元连接;
所述第九寄存器与第九数据选择器、第十数据选择器和第十一数据选择器均连接;
所述第十三数据选择器和第十数据选择器均与所述第九数据选择器连接;
第十一数据选择器与第十二数据选择器连接;
所述第十数据选择器、所述第十二数据选择器及所述第十三数据选择器均与所述异或运算器连接;
所述异或运算器与所述第九寄存器连接;
所述消息扩展单元输出中间变量P1的路径包括:中间变量Wj-16通过所述第十数据选择器输入至所述异或运算器,中间变量Wj-3通过所述第十数据选择器,且左移15位后,再通过所述第十二数据选择器输入至所述异或运算器,中间变量Wj-9通过所述第十三数据选择器输入至所述异或运算器,所述中间变量Wj-16、左移15位的中间变量Wj-3及所述中间变量Wj-9经过所述异或运算器得到对应的中间异或量,所述中间异或量通过所述第九寄存器和所述第十数据选择器输入至所述异或运算器,和通过所述第九寄存器,且左移23位后,通过所述第九数据选择器和所述第十三数据选择器输入至所述异或运算器,及通过所述第九寄存器和所述第十一数据选择器,且左移15位后,通过所述第十二数据选择器输入至所述异或运算器,所述中间异或量、左移23位的中间异或量及左移15后的中间异或量经过所述异或运算器得到中间变量P1;
消息扩展单元输出中间变量Wj的路径为:所述中间变量P1通过所述第九寄存器和所述第十数据选择器输入至所述异或运算器,存储在所述第九寄存器中的中间变量Wj-3左移7位后,通过所述第九数据选择器和所述第十三数据选择器输入至所述异或运算器,中间变量Wj-6通过所述第十二数据选择器输入至所述异或运算器,所述中间变量P1、左移7位的中间变量Wj-3及中间变量Wj-6经过所述异或运算器得到对应的中间变量Wj。
可以理解的是,本发明实施例中的消息扩展单元可用于根据收到的中间变量W0至W15计算中间变量W16至W67。
在一种可行方式中,消息扩展单元首先完成中间变量W0至W15的计算,并将中间变量W0至W15存储至预设的存储器中。预设的存储器则按照消息扩展单元计算任意一个j≥16的中间变量Wj的需要,将对应的中间变量发送至消息扩展单元。且消息扩展单元亦将每个Wj存储至预设的存储器中,由此完成中间变量W16至W67的计算。
还可以理解的是,本发明实施例中的第十数据选择器还用于接收中间变量Wj-16,第十一数据选择器还用于接收中间变量Wj-3,第十二数据选择器还用于接收中间变量Wj-6,第十三数据选择器还用于接收中间变量Wj-9,异或运算器用于根据各个数据选择器的输入,完成中间变量P1和任意一个j≥16的中间变量Wj的计算,并将计算结果存储至第九寄存器,第九寄存器用于接收并存储各个数据。
基于此,本发明实施例通过消息扩展单元中与异或运算器连接的多个数据选择器,使得异或运算器得以同时完成多类逻辑运算如中间变量P1的运算,由此提高了异或运算器的使用率,避免了消息扩展单元中需设置多个运算器/寄存器的情况,从而进一步优化了本发明实施例提供的SM3算法实现电路的电路面积。
此外,需说明的是,为清楚的描述消息扩展单元中各个器件的连接关系,故隐藏了图3中的部分寄存器/运算器。具体而言,如第九寄存器还通过两个位移运算器与第九数据选择器连接,以使数据传输至第九数据选择器前,已左移7位或左移23位;又如第十一数据选择器还通过一位移运算器与第十二数据选择器连接,以使数据传输至第十二数据选择器前,已左移15位。可以理解的是,图3隐藏的寄存器/运算器均可根据本领域技术确定,故不再赘述。
可选的,为优化SM3算法的实现电路的电路面积,在本发明实施例提供的一种实施方式中,所述电路还包括数据填充单元,所述消息压缩单元和所述消息扩展单元均与所述数据填充单元连接;
所述消息扩展单元用于在将消息扩展得到第一预设数量条扩展消息后,将第二预设数量条扩展消息发送至所述消息压缩单元,并将第三预设数量条扩展消息发送至所述数据填充单元,所述第二预设数量和所述第三预设数量均小于所述第一预设数量;
所述数据填充单元用于在所述消息压缩单元完成所述第二预设数量条扩展消息的消息压缩后,将所述第三预设数量条扩展消息发送至所述消息压缩单元。
具体的,本发明实施例中的消息扩展单元获取到消息分组并生成消息分组对应的扩展消息,即68个Wj和64个Wj’,后,将其中一部分输入至消息压缩单元以进行消息压缩,将另一部分输入至数据填充单元以存储。基于数据填充单元的设置,使得消息压缩单元中无需设置额外寄存器来存储所有的扩展消息。
在一种可行的方式中,第二预设数量条扩展消息包括多个Wj和多个Wj’,第二预设数量条扩展消息的j的取值区间为[0,15];第三预设数量条扩展消息同样包括多个Wj和多个Wj’,但第三预设数量条扩展消息的j的取值区间为[16,64]。
而在另一种可行方式中,为进一步优化消息压缩单元的计算效率,数据填充单元在消息压缩单元完成第二预设数量条扩展消息的压缩后,将发送16条依次相连的扩展消息至消息压缩单元。示范性的,当消息压缩单元完成第0到第15个Wj和Wj’的压缩后,数据填充单元将发送第16至31个Wj和Wj’至消息压缩单元,以使消息压缩单元进行下一轮并行运算。
可选的,所述数据填充单元包括静态随机存取存储器。
与本发明实施例提供的SM3算法的实现电路对应的,本发明实施例还提供一种SM3算法的实现方法,具体可参考图4,图4示出了本发明实施例提供的SM3算法的实现方法的流程示意图,本发明实施例提供的所述SM3算法的实现方法应用于如图1示出的SM3算法的实现电路,所述实现电路包括消息压缩单元,所述消息压缩单元包括第一预设数量个保留进位加法器,所述方法包括:
S210,利用所述第一预设数量个保留进位加法器执行SM3算法中的三参数加法运算和三参数异或运算。
可选的,在本发明实施例提供的一种可行方式中,所述消息压缩单元还包括第二预设数量个寄存器,所述方法还包括:
控制所述第二预设数量个寄存器配合所述第一预设数量个保留进位加法器以计算中间变量,其中,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1。
进一步的,在本发明实施例提供的一种可行方式中,所述第二预设数量个寄存器包括第一至第八寄存器,所述第一预设数量个保留进位加法器包括第一至第三保留进位加法器,所述消息压缩单元还包括第一至第六数据选择器;
所述控制所述第二预设数量个寄存器配合所述第一预设数量个保留进位加法器以计算中间变量,其中,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1,包括:
第一保留进位加法器根据第一寄存器和第五寄存器中的数据,计算中间变量SS1;
第二保留进位加法器根据第一至第三数据选择器输入的数据,计算中间变量FF和中间变量TT1;
第三保留进位加法器根据第四至第六数据选择器输入的数据,计算中间变量TT2。
更进一步的,在本发明实施例提供的一种可行方式中,所述方法还包括:
所述第二保留进位加法器基于第四寄存器中的数据和所述中间变量FF计算第一和值,并将所述第一和值发送至所述第四寄存器,以使所述四寄存器中的数据更新;
所述第三保留进位加法器基于所述第八寄存器中的数据和中间变量GG计算第二和值,并将所述第二和值发送至第八寄存器,以使所述第八寄存器中的数据更新。
可选的,在本发明实施例提供的一种可行方式中,所述SM3算法的实现电路还包括消息扩展单元,消息扩展单元包括异或运算器、第九寄存器及第九至第十三数据选择器;
所述消息扩展单元输出中间变量P1的路径包括:中间变量Wj-16通过所述第十数据选择器输入至所述异或运算器,中间变量Wj-3通过所述第十数据选择器,且左移15位后,再通过所述第十二数据选择器输入至所述异或运算器,中间变量Wj-9通过所述第十三数据选择器输入至所述异或运算器,所述中间变量Wj-16、左移15位的中间变量Wj-3及所述中间变量Wj-9经过所述异或运算器得到对应的中间异或量,所述中间异或量通过所述第九寄存器和所述第十数据选择器输入至所述异或运算器,和通过所述第九寄存器,且左移23位后,通过所述第九数据选择器和所述第十三数据选择器输入至所述异或运算器,及通过所述第九寄存器和所述第十一数据选择器,且左移15位后,通过所述第十二数据选择器输入至所述异或运算器,所述中间异或量、左移23位的中间异或量及左移15后的中间异或量经过所述异或运算器得到中间变量P1;
消息扩展单元输出中间变量Wj的路径为:所述中间变量P1通过所述第九寄存器和所述第十数据选择器输入至所述异或运算器,存储在所述第九寄存器中的中间变量Wj-3左移7位后,通过所述第九数据选择器和所述第十三数据选择器输入至所述异或运算器,中间变量Wj-6通过所述第十二数据选择器输入至所述异或运算器,所述中间变量P1、左移7位的中间变量Wj-3及中间变量Wj-6经过所述异或运算器得到对应的中间变量Wj。
可以理解的是,本发明实施例公开的SM3算法的实现方法,用于根据图1示出的SM3算法的实现电路,执行如图4所示的流程步骤,SM3算法的实现电路中涉及的实施方案以及有益效果在SM3算法的实现方法中同样适用,在此不再赘述。
本申请实施例还公开了一种电子设备,所述电子设备包括如图1对应的电路实施例的SM3算法的实现电路。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种SM3算法的实现电路,其特征在于,所述实现电路包括消息压缩单元,所述消息压缩单元包括第一预设数量个保留进位加法器;
所述第一预设数量个保留进位加法器用于执行SM3算法中的三参数加法运算和三参数异或运算。
2.根据权利要求1所述的SM3算法的实现电路,其特征在于,所述消息压缩单元还包括第二预设数量个寄存器;
所述第二预设数量个寄存器用于配合所述第一预设数量个保留进位加法器计算中间变量,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1。
3.根据权利要求2所述的SM3算法的实现电路,其特征在于,所述第二预设数量个寄存器包括第一至第八寄存器,所述第一预设数量个保留进位加法器包括第一至第三保留进位加法器,所述消息压缩单元还包括异或运算器、加法运算器及第一至第六数据选择器;
第一寄存器和第五寄存器均与第一保留进位加法器连接,第一至第三数据选择器均与第二保留进位加法器连接,第四至第六数据选择器均与第三保留进位加法器连接,第一寄存器和第二保留进位加法器均与第一数据选择器连接,所述第一保留进位加法器通过所述异或运算器与所述第一数据选择器连接,第一寄存器和第二寄存器均与第二数据选择器连接,第三寄存器和第四寄存器均与第三数据选择器连接,第一保留进位加法器通过所述异或运算器和所述加法运算器与所述第四至第六数据选择器连接,第八寄存器的一端与所述第六数据选择器连接,另一端通过所述加法运算器与所述第四至第六数据选择器连接,第五至第七寄存器均与第五数据选择器连接;
所述第一保留进位加法器用于根据第一寄存器和第五寄存器中的数据,计算中间变量SS1;
所述第二保留进位加法器用于根据第一至第三数据选择器输入的数据,计算中间变量FF和中间变量TT1;
所述第三保留进位加法器用于根据第四至第六数据选择器输入的数据,计算中间变量TT2。
4.根据权利要求3所述的SM3算法的实现电路,其特征在于,所述第二保留进位加法器还用于基于所述第四寄存器中的数据和所述中间变量FF计算第一和值,并将所述第一和值发送至所述第四寄存器,以使所述四寄存器中的数据更新;
所述第三保留进位加法器还用于基于所述第八寄存器中的数据和中间变量GG计算第二和值,并将所述第二和值发送至第八寄存器,以使所述第八寄存器中的数据更新。
5.根据权利要求1所述的SM3算法的实现电路,其特征在于,所述SM3算法的实现电路还包括消息扩展单元,所述消息扩展单元包括异或运算器、第九寄存器及第九数据选择器至第十三数据选择器;
所述消息扩展单元与所述消息压缩单元连接;
所述第九寄存器与第九数据选择器、第十数据选择器和第十一数据选择器均连接;
所述第十三数据选择器和第十数据选择器均与第九数据选择器连接;
第十一数据选择器与第十二数据选择器连接;
所述第十数据选择器、所述第十二数据选择器及所述第十三数据选择器均与所述异或运算器连接;
所述异或运算器与所述第九寄存器连接;
所述消息扩展单元输出中间变量P1的路径包括:中间变量Wj-16通过所述第十数据选择器输入至所述异或运算器,中间变量Wj-3通过所述第十数据选择器,且左移15位后,再通过所述第十二数据选择器输入至所述异或运算器,中间变量Wj-9通过所述第十三数据选择器输入至所述异或运算器,所述中间变量Wj-16、左移15位的中间变量Wj-3及所述中间变量Wj-9经过所述异或运算器得到对应的中间异或量,所述中间异或量通过所述第九寄存器和所述第十数据选择器输入至所述异或运算器,和通过所述第九寄存器,且左移23位后,通过所述第九数据选择器和所述第十三数据选择器输入至所述异或运算器,及通过所述第九寄存器和所述第十一数据选择器,且左移15位后,通过所述第十二数据选择器输入至所述异或运算器,所述中间异或量、左移23位的中间异或量及左移15后的中间异或量经过所述异或运算器得到中间变量P1;
消息扩展单元输出中间变量Wj的路径为:所述中间变量P1通过所述第九寄存器和所述第十数据选择器输入至所述异或运算器,存储在所述第九寄存器中的中间变量Wj-3左移7位后,通过所述第九数据选择器和所述第十三数据选择器输入至所述异或运算器,中间变量Wj-6通过所述第十二数据选择器输入至所述异或运算器,所述中间变量P1、左移7位的中间变量Wj-3及中间变量Wj-6经过所述异或运算器得到对应的中间变量Wj。
6.一种SM3算法的实现方法,其特征在于,应用于如权利要求1所述的SM3算法的实现电路,所述实现电路包括消息压缩单元,所述消息压缩单元包括第一预设数量个保留进位加法器,所述方法包括;
利用所述第一预设数量个保留进位加法器执行SM3算法中的三参数加法运算和三参数异或运算。
7.根据权利要求6所述的SM3算法的实现方法,其特征在于,所述消息压缩单元还包括第二预设数量个寄存器,所述方法还包括:
控制所述第二预设数量个寄存器配合所述第一预设数量个保留进位加法器以计算中间变量,其中,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1。
8.根据权利要求7所述的SM3算法的实现方法,其特征在于,所述第二预设数量个寄存器包括第一至第八寄存器,所述第一预设数量个保留进位加法器包括第一至第三保留进位加法器,所述消息压缩单元还包括第一至第六数据选择器;
所述控制所述第二预设数量个寄存器配合所述第一预设数量个保留进位加法器以计算中间变量,其中,所述中间变量至少包括中间变量SS1、中间变量FF以及中间变量TT1,包括:
第一保留进位加法器根据第一寄存器和第五寄存器中的数据,计算中间变量SS1;
第二保留进位加法器根据第一至第三数据选择器输入的数据,计算中间变量FF和中间变量TT1;
第三保留进位加法器根据第四至第六数据选择器输入的数据,计算中间变量TT2。
9.根据权利要求8所述的SM3算法的实现方法,其特征在于,所述方法还包括:
所述第二保留进位加法器基于第四寄存器中的数据和所述中间变量FF计算第一和值,并将所述第一和值发送至所述第四寄存器,以使所述四寄存器中的数据更新;
所述第三保留进位加法器基于所述第八寄存器中的数据和中间变量GG计算第二和值,并将所述第二和值发送至第八寄存器,以使所述第八寄存器中的数据更新。
10.一种电子设备,其特征在于,包括如权利要求1至5中任一种所述的SM3算法的实现电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210423795.1A CN114676448A (zh) | 2022-04-21 | 2022-04-21 | Sm3算法的实现电路、方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210423795.1A CN114676448A (zh) | 2022-04-21 | 2022-04-21 | Sm3算法的实现电路、方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114676448A true CN114676448A (zh) | 2022-06-28 |
Family
ID=82079320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210423795.1A Pending CN114676448A (zh) | 2022-04-21 | 2022-04-21 | Sm3算法的实现电路、方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676448A (zh) |
-
2022
- 2022-04-21 CN CN202210423795.1A patent/CN114676448A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113676B2 (en) | Block mining methods and apparatus | |
CN111464308B (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
US6795553B1 (en) | Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method | |
JP5532560B2 (ja) | データ変換装置、およびデータ変換方法、並びにプログラム | |
US7486789B2 (en) | Device and method for calculation on elliptic curve | |
US11716076B2 (en) | Circuits and methods for performing hash algorithm | |
CN100442671C (zh) | 用于获得消息的循环冗余码的方法和装置 | |
CN113794552B (zh) | 一种基于simd的sm3并行数据加密运算方法及系统 | |
US8380683B2 (en) | Data conversion device, data conversion method, and program | |
US7849125B2 (en) | Efficient computation of the modulo operation based on divisor (2n-1) | |
JP3532860B2 (ja) | 剰余系表現を利用した演算装置及び方法及びプログラム | |
CN113721988B (zh) | 基于芯片的工作量证明方法和用于工作量证明的芯片 | |
US7346161B2 (en) | Method and apparatus for designing cipher logic, and a computer product | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
JP3302043B2 (ja) | 暗号通信方法及びそのシステム | |
CN114676448A (zh) | Sm3算法的实现电路、方法及电子设备 | |
US7257224B2 (en) | Cryptographical pseudo-random number generation apparatus and program | |
CN115270155A (zh) | 一种获取大数拓展最大公约数的方法及硬件架构 | |
EP1202488B1 (en) | Encryption sub-key generation circuit | |
CN213518334U (zh) | 执行哈希算法的电路、计算芯片和加密货币矿机 | |
US6275558B1 (en) | Circuit and method for arbitrarily shifting M-sequence | |
US8850213B2 (en) | Method for verifying an electronic signature and data processing device | |
KR100954843B1 (ko) | 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체 | |
JP4990843B2 (ja) | 暗号演算装置、その方法、及びプログラム | |
CN117879788A (zh) | 集成电路以及运算方法 |
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 |