CN110022203A - 一种sm3加速方法和装置 - Google Patents
一种sm3加速方法和装置 Download PDFInfo
- Publication number
- CN110022203A CN110022203A CN201910196234.0A CN201910196234A CN110022203A CN 110022203 A CN110022203 A CN 110022203A CN 201910196234 A CN201910196234 A CN 201910196234A CN 110022203 A CN110022203 A CN 110022203A
- Authority
- CN
- China
- Prior art keywords
- message
- extension
- instruction
- register
- blocking
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- 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)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例涉及一种SM3加速方法与装置。方法包括:对输入的消息进行消息填充和分组,得到分组消息;将每个分组消息通进行消息扩展,生成扩展消息字组;将每个扩展消息字组进行压缩函数计算,得到计算结果;消息扩展和压缩函数计算中的至少其中之一通过扩展指令实现;存储计算结果到预设寄存器中。实施本发明实施例,采取软硬件结合的方式,有效提升SM3运算的效率并兼顾了成本,达到资源的更佳配置。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种SM3加速方法和装置。
背景技术
SM3是国家密码管理局发布的一种密码杂凑算法(GM/T 0004-2012),对长度小于264比特的消息,SM3杂凑算法经过填充,迭代压缩和输出选裁,生成256比特的杂凑值。对于某些计算装置,如通用处理器,使用纯软件进行SM3杂凑运算时,往往出现效率低下以及长时间占用该装置的缺点,由此导致系统资源分配紧张和功耗的增加。而一些硬件解决方案,纯硬件实现SM3杂凑运算,又过多的增加了硬件成本。如何提升SM3运算的效率并兼顾成本,达到资源的更佳配置,是本领域亟待解决的问题。
发明内容
本发明实施例提供一种SM3加速方法和装置,可有效提升SM3运算的效率并兼顾成本,达到资源的更佳配置。
一方面,本发明实施例提供一种SM3加速方法,应用于设有内部寄存器的计算装置,方法包括:为所述计算装置增加预设数量的辅助寄存器;对输入的消息进行消息填充和分组,得到分组消息;将每个所述分组消息进行消息扩展,生成扩展消息字组;将每个所述扩展消息字组进行压缩函数计算,得到计算结果;所述进行消息扩展和所述进行压缩函数计算的至少其中之一,通过扩展指令实现;存储所述计算结果到预设寄存器中。
可选的,对输入的消息进行填充和分组,得到分组消息,具体包括:判断所述输入的消息长度是否是512比特的整数倍;若是,对所述消息以512比特进行分组,得到分组消息;若否,对所述消息填充至512比特的整数倍后,以512比特进行分组,得到分组消息。
可选的,将每个所述分组消息进行消息扩展得到扩展消息字组,通过扩展指令实现;所述扩展指令包括第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令;将每个所述分组消息进行消息扩展得到扩展消息字组,具体包括:将每个分组消息划分为16个消息字W0,W1,……,W15;通过第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令得到另外52个消息字W16,W17,……,W67;根据已产生的68个消息字W0,W1,……,W67,得出剩余64个消息字:W0′,W1′,……,W63′;如此每个扩展消息字组包括132个消息字。
可选的,通过第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令得到另外52个消息字W16,W17,……,W67的执行过程中:第一消息扩展加速指令的执行调用所述装置的内部寄存器;第二消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器;第三消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器。
可选的,将每个所述扩展消息字组进行压缩函数计算的执行,通过扩展指令实现,所述扩展指令包括消息压缩加速指令,调用所述装置的内部寄存器和所述辅助寄存器。
另一方面,本发明实施例还提供一种SM3加速装置,包括内部寄存器,其特征在于,还包括:预设数量的辅助寄存器;以及,填充分组计算单元,用于对输入的消息进行消息填充和分组,得到分组消息;扩展指令计算单元,用于将每个所述分组消息进行消息扩展,生成扩展消息字组;以及,将每个所述扩展消息字组进行压缩函数计算,得到计算结果;所述进行消息扩展和所述进行压缩函数计算的至少其中之一,通过扩展指令实现;存储单元,用于存储所述计算结果到预设寄存器中。
可选的,填充分组计算单元,具体用于:判断所述输入的消息长度是否是512比特的整数倍;若是,对所述消息以512比特进行分组,得到分组消息;若否,对所述消息填充至512比特的整数倍后,以512比特进行分组,得到分组消息。
可选的,扩展指令计算单元,将每个所述分组消息进行消息扩展,通过扩展指令实现;所述扩展指令包括第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令;将每个所述分组消息进行消息扩展得到扩展消息字组,具体包括:将每个所述分组消息划分为16个消息字W0,W1,……,W15;通过第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令得到另外52个消息字W16,W17,……,W67;根据已产生的68个消息字W0,W1,……,W67,得出剩余64个消息字:W0′,W1′,……,W63′;如此每个扩展消息字组包括132个消息字。
可选的,扩展指令计算单元,对所述第一消息扩展加速指令的执行调用所述装置的内部寄存器;对所述第二消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器;对所述第三消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器。
可选的,扩展指令计算单元,将每个所述扩展消息字组进行压缩函数计算,通过扩展指令实现;所述扩展指令包括消息压缩加速指令;所述消息压缩加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器。
本发明实施例中,在计算装置原有内部寄存器的基础上,增设辅助寄存器,对输入的消息进行消息填充和分组,得到分组消息;将每个分组消息通进行消息扩展,生成扩展消息字组;将每个扩展消息字组进行压缩函数计算,得到计算结果;消息扩展和压缩函数计算中的至少其中之一通过扩展指令实现;存储计算结果到预设寄存器中。实施本发明实施例,采取软硬件结合的方式,有效提升SM3运算的效率并兼顾了成本,达到资源的更佳配置。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图对应的是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的SM3加速方法实施例的流程图;
图2为本发明实施例提供的压缩函数计算示意图;
图3为本发明实施例提供的SM3加速装置示意图;
图4为本发明实施例提供的SM3加速装置结合执行流程的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
SM3杂凑算法的主要流程包括:消息填充,消息扩展和压缩函数。
请参阅图1,为本发明提供的SM3加速方法实施例的流程图;本实施例的方法应用于设有内部寄存器的计算装置,例如32位宽的通用处理器,包括步骤:
S101、为所述装置增加预设数量的辅助寄存器;
可选的,增加的辅助寄存器为10个,此处分别命名为smau0、smau1、smau30、smau31、smau32、smau33、smau34、smau35、smau36,smau37。这些命名是示例性的,且先后顺序不做限定;可以理解的是,增加辅助寄存器的数量可以根据实际需要做调整,在本发明实施例构思的基础上,对辅助寄存器的数量进行任何的调整均应属于本发明保护范围。
S102、对输入的消息进行消息填充和分组,得到分组消息;
具体的,判断所述输入的消息长度是否是512比特的整数倍;若是,对所述消息以512比特进行分组,得到分组消息;若否,对所述消息填充至512比特的整数倍后,以512比特进行分组,得到分组消息。
因SM3是一种基于块数据的运算,块数据长度为512比特,如果输入的消息不是512比特的整数倍,则需通过填充规则,补齐到512比特的整数倍。假设消息m的长度为l比特,先将比特‘1’添加到消息的末尾,再添加k个‘0’,k是满足l+1+k=448的最小非负整数,然后再添加一个64位比特串,该比特串是l的二进制表示。如此,填充后的消息m′即成为512比特的整数倍。再将m′按512比特进行分组,如m′=B0B1......Bn,Bn即填充后的其中一个长度为512比特的分组消息。
S103、将每个所述分组消息进行消息扩展,生成扩展消息字组;
该步骤通过扩展指令实现,扩展指令包括第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令。
具体的,每个扩展消息字组包括132个消息字W0,W1,……,W67;
首先,会将每个所述分组消息划分为16个消息字W0,W1,……,W15;此后的消息扩展,满足如下公式一:
Wj=P1(Wj-16XOR Wj-9XOR(Wj-3<<<15))XOR(Wj-13<<<7)XOR Wj-6
在公式一中,j可以为16至67之间的整数,含16与67;XOR为异或运算,<<<为循环左移运算。经公式一可以通过W0,W1,……,W15这16个消息字产生W16,W17,……,W67这52个消息字。
在本发明实施例中,第一消息扩展加速指令命名为SM3XORSHP1,其实现P1(Wj)函数功能,该指令只需要一个操作数,其汇编语言描述如:SM3XORSHP1%r0,其中,%r0为该计算装置的内部寄存器;
第二消息扩展加速指令命名为SM3XORSHW1,其实现XXOR(Y<<<7)XORZ功能。可以理解的是,此处X代入公式一中即P1(Wj)函数的计算结果P1(Wj-16XOR Wj-9XOR(Wj-3<<<15)),此处的Y代入公式一中即Wj-13<<<7,此处的Z代入公式一中即Wj-6。该指令需要三个操作数,X,Y可由计算装置的内部寄存器赋值,而Z可用专门的辅助寄存器赋值,此处命名为smau0。其汇编语言描述如:AUSR%r0,%smau0;其中AUSR为寄存器赋值指令,即将内部寄存器的值r0赋予smau0。SM3XORSHW1%r1,%r2;其中%r1,%r2为该计算装置的内部寄存器。
第三消息扩展加速指令命名为SM3XORSHW0,其实现X′XORY′XOR(Z′<<<15)功能。可以理解的是,此处X′代入公式一中即Wj-16,Y′代入公式一中即Wj-9,Z′代入公式一中即Wj-3;该指令需要三个操作数,X′和Y′可由该计算装置的内部寄存器赋值,Z′可用专门的辅助寄存器赋值,此处命名为smau1。其汇编语言描述如:AUSR%r0,%smau1;其中AUSR为寄存器赋值指令,即将内部寄存器的值r0赋予smau1。
SM3XORSHW1%r1,%r2;其中%r1,%r2为该计算装置的内部寄存器。
通过以上内容,已产生W0,W1,……,W67这68个消息字。
之后的消息扩展,满足公式二:
Wj′=Wj XOR Wj+4
在公式二中,j可以为0至63之间的整数,含0和63。XOR仍代表异或运算,因W0,W1,……,W67已经产生,通过公式二得到剩余的64个消息字:W0′,W1′,……,W63′;如其中一个分组消息通过消息扩展,生成的扩展消息字组包括的132个消息字产生。
S104、将每个所述扩展消息字组进行压缩函数计算,得到计算结果;
该步骤通过扩展指令实现,扩展指令包括消息压缩加速指令。
请参照图2,为本发明实施例提供的压缩函数计算示意图;具体的,将扩展消息字组中的其中一个消息字组Bi:W0,W1,……,W67,W0′,W1′,……,W63′和初始向量V输入到压缩函数,经过64轮计算后,产生256比特的杂凑值。令A,B,C,D,E,F,G,H为32比特的寄存器,Ass1,Ass2,Att1,Att2为32比特的中间变量,FF和GG为布尔函数;压缩函数Vi+1=CF(Vi,Bi),i为≥0且≤63的整数。
计算过程描述如下:先将256比特的V0赋予A,B,C,D,E,F,G,H这8个32比特的寄存器,以十六进制表示为7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aae38dee4d b0fb0e4e。
从以上描述及图2可以看出SM3压缩函数总共需要进行64轮运算,本发明实施例将每一轮压缩函数的运算用一条扩展指令,即消息压缩加速指令SM3CPR来实现,即重复执行64次SM3CPR指令可完成一个消息块的运算。SM3CPR一共有10个操作数,其中两个可用该计算装置的内部寄存器赋值,其他8个操作数需借助专门为此增加的8个辅助寄存器赋值,将此8个辅助寄存器分别命名为smau30,smau31,smau32,smau33,smau34,smau35,smau36,smau37。因此,对第一个512比特的消息块,64轮的压缩函数计算可表述如下:
smau30=7380166f
smau31=4914b2b9
smau32=172442d7
smau33=da8a0600
smau34=a96f30bc
smau35=163138aa
smau36=e38dee4d
smau37=b0fb0e4e
FOR i=0 TO 63
SM3CPR Wi,Wi+4
V1[255:224]=7380166f XOR smau30
V1[223:192]=4914b2b9 XOR smau31
V1[191:160]=172442d7 XOR smau32
V1[159:128]=da8a0600 XOR smau33
V1[127:96]=a96f30bc XOR smau34
V1[95:64]=163138aa XOR smau35
V1[63:32]=e38dee4d XOR smau36
V1[31:0]=b0fb0e4e XOR smau37
对下一个512比特的消息块,会将V1的值重新赋予smau30,smau31,smau32,smau33,smau34,smau35,smau36,smau37这8个辅助寄存器,重复以上运算过程。
S105、存储所述计算结果到预设寄存器中。
在本发明实施例中,4条可扩展指令SM3XORSHP1、SM3XORSHW1、SM3XORSHW0和SM3CPR复用计算装置原有的流水线,完成取指、译码、访存,执行、写回等操作,并且可以使用原有的内部寄存器作为操作数,在操作数超过两个时,会增加相应的辅助寄存器,协助完成指令操作,有效提升SM3运行效率。
在一些实施方式中,为减少辅助寄存器的数量,可以仅保留2个辅助寄存器,比如smau0和smau1;可扩展指令中,仅保留第一消息扩展加速指令SM3XORSHP1,第二消息扩展加速指令SM3XORSHW1和第三消息扩展加速指令SM3XORSHW0而对消息扩展进行加速。
在另一些实施方式中,为减少辅助寄存器的数量,可以保留8个辅助寄存器,比如smau30、smau31、smau32、smau33、smau34、smau35、smau36,smau37;可扩展指令中,仅保留消息压缩加速指令SM3CPR对压缩函数加速。
通过以上实施例,在消息扩展和压缩函数阶段均通过可扩展指令和辅助寄存器对SM3运算进行加速,采取这种软硬件结合的方式,有效提升了SM3运算的效率并兼顾了成本,达到资源的更佳配置。
可以理解的是,以上实施例是示例性质的,可扩展指令和辅助寄存器的数量也是示例性质的。本领域技术人员可以根据需要对可扩展指令和辅助寄存器的数量进行修改,以调整资源和效率的配比,在不超出本发明实施例思想的前提下,都应属于本发明的保护范围。
请参阅图3,为本发明实施例提供的SM3加速装置示意图。
SM3加速装置30包括:预设数量的辅助寄存器301,用以支持扩展指令,扩展指令包括4条SM3加速指令:第一消息扩展加速指令SM3XORSHP1、第二消息扩展加速指令SM3XORSHW1、第三消息扩展加速指令SM3XORSHW0和消息压缩加速指令SM3CPR。需要说明的是,图3中列出的一个辅助寄存器301是示例性的,具体实施中,辅助寄存器301的数量可根据需要调整,在本发明实施例中为10个,分别命名为smau0、smau1、smau30、smau31、smau32、smau33、smau34、smau35、smau36,smau37。
填充分组计算单元302,用于对输入的消息进行消息填充和分组,得到分组消息;具体的,判断所述输入的消息长度是否是512比特的整数倍;
若是,对所述消息以512比特进行分组,得到分组消息;若否,对所述消息填充至512比特的整数倍后,以512比特进行分组,得到分组消息。
扩展指令计算单元303,用于将每个所述分组消息进行消息扩展,生成扩展消息字组;将每个所述扩展消息字组进行压缩函数计算,得到计算结果;所述消息扩展和压缩函数计算的至少其中之一通过扩展指令实现。扩展指令可包括第一消息扩展加速指令SM3XORSHP1、第二消息扩展加速指令SM3XORSHW1、第三消息扩展加速指令SM3XORSHW0和消息压缩加速指令SM3CPR。需要说明的是,在本实施例中,以上四条扩展指令全部包括,但在一些其他可选的实施方式中,也可只包括其中的一部分扩展指令,对其中的一部分计算加速,也应属本发明实施例保护范围。
首先,将每个所述分组消息划分为16个消息字W0,W1,……,W15;再通过第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令得到另外52个消息字W16,W17,……,W67;之后,根据已产生的68个消息字W0,W1,……,W67,得出剩余64个消息字:W0′,W1′,……,W63′;如此每个扩展消息字组包括132个消息字。
其中,对所述第一消息扩展加速指令的执行调用所述装置的内部寄存器;对所述第二消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器;对所述第三消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器。
扩展指令计算单元303对所述消息压缩加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器。
存储单元304,用于存储所述计算结果到预设寄存器中。应当理解的是,此处的存储单元304是为功能性描述,在可选的实施例中,可以为寄存器本身或外部存储器。
本装置实施例中个单元工作过程中执行的方法在前述方法实施例中已有详细描述,此处不再赘述。
可以理解的是,本实施例中SM3加速装置30中的单元是为举例,以说明本发明实施例的主要特征,这些单元并非穷举,在具体实现中,还可能根据需要有其他的单元参与工作。
在本发明实施例中,4条可扩展指令SM3XORSHP1、SM3XORSHW1、SM3XORSHW0和SM3CPR复用计算装置原有的流水线,完成取指、译码、访存,执行、写回等操作,并且可以使用原有的内部寄存器作为操作数,在操作数超过两个时,会增加相应的辅助寄存器,协助完成指令操作,有效提升SM3运行效率。
通过以上实施例,在消息扩展和压缩函数阶段均可通过可扩展指令和辅助寄存器对SM3运算进行加速,采取这种软硬件结合的方式,有效提升了SM3运算的效率并兼顾了成本,达到资源的更佳配置。
请再参阅图4,为本发明实施例提供的SM3加速装置结合执行流程的示意图,以进一步阐明本发明实施例的工作方式。
在本发明实施例中,SM3加速装置包括取指控制单元401、指令译码单元402、内部寄存器403、,辅助寄存器404、外部存储器405、填充分组计算单元406、扩展指令计算单元407。在取指阶段,取指控制单元401取得指令;指令译码单元402在译码阶段对取指控制单元401取得的指令进行译码;在执行阶段,填充分组计算单元406调用该装置的内部寄存器403执行SM3中的消息填充分组;而扩展指令计算单元407则通过前述实施例中描述的可扩展指令:第一消息扩展加速指令SM3XORSHP1、第二消息扩展加速指令SM3XORSHW1、第三消息扩展加速指令SM3XORSHW0和消息压缩加速指令SM3CPR,调用内部寄存器403和辅助寄存器404,对SM3的消息填充和压缩函数过程加速执行;在写回过程中,将计算结果写回外部寄存器405,或写回存储于预设寄存器中,可以为辅助寄存器404或内部寄存器403。
可以理解的是,本发明中实施例图4中的内部寄存器403和辅助寄存器404的展示是为示意,并非是数量的限制。
图4中的梯形是为了示意步骤执行或数据的汇合,并非代表特别的模块或单元;下部带有三角形的矩形是为隔开方案执行的不同阶段,也并非代表特别的模块或单元。
通过以上实施例,在消息扩展和压缩函数阶段均通过可扩展指令和辅助寄存器对SM3运算进行了加速,采取这种软硬件结合的方式,有效提升了SM3运算的效率并兼顾了成本,达到资源的更佳配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
本发明实施例的方法的步骤顺序可以根据实际需要进行调整、合并或删减,且顺序不作为限制,对本发明方法实施例、系统实施例中步骤顺序的调整、步骤的合并或删减均应属于本发明的保护范围。
可以理解的是,本发明实施例装置中的单元描述是为举例,但具体实现方式可以根据实际需要进行整合、进一步划分或删减,任何整合、划分或删减均应属于本发明保护范围。
以上对本发明实施例公开的SM3加速方法和装置进行了详细的介绍,本文中应用了具体实例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,而不是对本发明的范围的限制。同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均可能会有改变之处,亦应属本发明保护范围。
Claims (10)
1.一种SM3加速方法,应用于设有内部寄存器的计算装置,其特征在于,所述方法包括:
为所述装置增加预设数量的辅助寄存器;
对输入的消息进行消息填充和分组,得到分组消息;
将每个所述分组消息进行消息扩展,生成扩展消息字组;
将每个所述扩展消息字组进行压缩函数计算,得到计算结果;
所述进行消息扩展和所述进行压缩函数计算的至少其中之一,通过扩展指令实现;
存储所述计算结果到预设寄存器中。
2.根据权利要求1所述的方法,其特征在于,所述对输入的消息进行填充和分组,得到分组消息,具体包括:
判断所述输入的消息长度是否是512比特的整数倍;
若是,对所述消息以512比特进行分组,得到分组消息;
若否,对所述消息填充至512比特的整数倍后,以512比特进行分组,得到分组消息。
3.根据权利要求1所述的方法,其特征在于,
将每个所述分组消息进行消息扩展得到扩展消息字组,通过扩展指令实现;所述扩展指令包括第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令;
所述将每个所述分组消息进行消息扩展得到扩展消息字组,具体包括:
将每个所述分组消息划分为16个消息字W0,W1,……,W15;
通过第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令得到另外52个消息字W16,W17,……,W67;
根据已产生的68个消息字W0,W1,……,W67,得出剩余64个消息字:W0′,W1′,……,W63′;
如此每个扩展消息字组包括132个消息字。
4.根据权利要求3所述的方法,其特征在于,所述通过第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令得到另外52个消息字W16,W17,……,W67的执行过程中:
所述第一消息扩展加速指令的执行调用所述装置的内部寄存器;
所述第二消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器;
所述第三消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器。
5.根据权利要求1所述的方法,其特征在于,所述将每个所述扩展消息字组进行压缩函数计算的执行,通过扩展指令实现,所述扩展指令包括消息压缩加速指令,调用所述装置的内部寄存器和所述辅助寄存器。
6.一种SM3加速装置,设有内部寄存器,其特征在于,包括:
预设数量的辅助寄存器;以及,
填充分组计算单元,用于对输入的消息进行消息填充和分组,得到分组消息;
扩展指令计算单元,用于将每个所述分组消息进行消息扩展,生成扩展消息字组;以及,将每个所述扩展消息字组进行压缩函数计算,得到计算结果;所述进行消息扩展和所述进行压缩函数计算的至少其中之一,通过扩展指令实现;
存储单元,用于存储所述计算结果到预设寄存器中。
7.根据权利要求6所述的装置,其特征在于,所述填充分组计算单元,具体用于:
判断所述输入的消息长度是否是512比特的整数倍;
若是,对所述消息以512比特进行分组,得到分组消息;
若否,对所述消息填充至512比特的整数倍后,以512比特进行分组,得到分组消息。
8.根据权利要求6所述的装置,其特征在于,
所述扩展指令计算单元,将每个所述分组消息进行消息扩展,通过扩展指令实现;所述扩展指令包括第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令;
将每个所述分组消息进行消息扩展得到扩展消息字组,具体包括:
将每个所述分组消息划分为16个消息字W0,W1,……,W15;
通过第一消息扩展加速指令、第二消息扩展加速指令以及第三消息扩展加速指令得到另外52个消息字W16,W17,……,W67;
根据已产生的68个消息字W0,W1,……,W67,得出剩余64个消息字:W0′,W1′,……,W63′;
如此每个扩展消息字组包括132个消息字。
9.根据权利要求8所述的装置,其特征在于,所述扩展指令计算单元,
对所述第一消息扩展加速指令的执行调用所述装置的内部寄存器;
对所述第二消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器;
对所述第三消息扩展加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器。
10.根据权利要求6所述的装置,其特征在于,所述扩展指令计算单元,将每个所述扩展消息字组进行压缩函数计算,通过扩展指令实现;所述扩展指令包括消息压缩加速指令;所述消息压缩加速指令的执行调用所述装置的内部寄存器和所述辅助寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910196234.0A CN110022203A (zh) | 2019-03-15 | 2019-03-15 | 一种sm3加速方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910196234.0A CN110022203A (zh) | 2019-03-15 | 2019-03-15 | 一种sm3加速方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110022203A true CN110022203A (zh) | 2019-07-16 |
Family
ID=67189569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910196234.0A Pending CN110022203A (zh) | 2019-03-15 | 2019-03-15 | 一种sm3加速方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110022203A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112217646A (zh) * | 2020-10-13 | 2021-01-12 | 天津津航计算技术研究所 | 用于实现sm3密码杂凑算法的装置及方法 |
CN112367158A (zh) * | 2020-11-06 | 2021-02-12 | 海光信息技术股份有限公司 | 一种加速sm3算法的方法、处理器、芯片及电子设备 |
CN113300829A (zh) * | 2021-05-20 | 2021-08-24 | 深圳智微电子科技有限公司 | Sm3算法的硬件实现装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092534A (zh) * | 2014-07-09 | 2014-10-08 | 昆腾微电子股份有限公司 | 实现sm3密码杂凑算法中的迭代压缩的方法 |
US20150186139A1 (en) * | 2013-12-27 | 2015-07-02 | Intel Corporation | Sm3 hash function message expansion processors, methods, systems, and instructions |
US20160070931A1 (en) * | 2014-09-04 | 2016-03-10 | Intel Corporation | Sm3 hash algorithm acceleration processors, methods, systems, and instructions |
-
2019
- 2019-03-15 CN CN201910196234.0A patent/CN110022203A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150186139A1 (en) * | 2013-12-27 | 2015-07-02 | Intel Corporation | Sm3 hash function message expansion processors, methods, systems, and instructions |
CN104092534A (zh) * | 2014-07-09 | 2014-10-08 | 昆腾微电子股份有限公司 | 实现sm3密码杂凑算法中的迭代压缩的方法 |
US20160070931A1 (en) * | 2014-09-04 | 2016-03-10 | Intel Corporation | Sm3 hash algorithm acceleration processors, methods, systems, and instructions |
CN106575215A (zh) * | 2014-09-04 | 2017-04-19 | 英特尔公司 | Sm3哈希算法加速处理器、方法、系统和指令 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112217646A (zh) * | 2020-10-13 | 2021-01-12 | 天津津航计算技术研究所 | 用于实现sm3密码杂凑算法的装置及方法 |
CN112367158A (zh) * | 2020-11-06 | 2021-02-12 | 海光信息技术股份有限公司 | 一种加速sm3算法的方法、处理器、芯片及电子设备 |
CN113300829A (zh) * | 2021-05-20 | 2021-08-24 | 深圳智微电子科技有限公司 | Sm3算法的硬件实现装置 |
CN113300829B (zh) * | 2021-05-20 | 2023-06-09 | 深圳智微电子科技有限公司 | Sm3算法的硬件实现装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110022203A (zh) | 一种sm3加速方法和装置 | |
Yildirim et al. | Application-level optimization of big data transfers through pipelining, parallelism and concurrency | |
JP2012189635A (ja) | 暗号演算装置 | |
US8411855B1 (en) | Size optimization for large elliptic curve cryptography scalar multiplication acceleration tables | |
CN108427575B (zh) | 全流水结构sha-2消息扩展优化方法 | |
JP4171835B2 (ja) | 並列マージソート処理装置及び方法並びにプログラム | |
JP2008233823A (ja) | 秘密分散装置、方法及びプログラム | |
CN111831254A (zh) | 图像处理加速方法、图像处理模型存储方法及对应装置 | |
CN107729147A (zh) | 流计算系统中的数据处理方法、控制节点及流计算系统 | |
KR102594657B1 (ko) | 비순차적 리소스 할당을 구현하는 방법 및 장치 | |
US10528325B2 (en) | Efficient modulo calculation | |
TW201716991A (zh) | 資料處理 | |
CN109547192A (zh) | Sm3密码杂凑算法的并行化优化方法 | |
CN105610879B (zh) | 数据处理方法和装置 | |
KR101387971B1 (ko) | 가상 머신 사이의 통신을 지원하기 위한 방법, 가상 머신, 시스템 및 컴퓨터 판독 가능한 기록 매체 | |
CN110034918A (zh) | 一种sm4加速方法和装置 | |
JP6961950B2 (ja) | 格納方法、格納装置および格納プログラム | |
CN110570309B (zh) | 用于更换区块链网络的领导者的方法和系统 | |
CN109951275A (zh) | 密钥生成方法、装置、计算机设备及存储介质 | |
JP5953808B2 (ja) | 乱数処理装置、乱数処理方法、及びプログラム | |
JP2010107947A (ja) | Shaアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置 | |
Lupascu et al. | Acceleration techniques for fully-homomorphic encryption schemes | |
US8331555B1 (en) | Hardware-implemented MD5 function | |
CN109375895B (zh) | 多项式乘法的加速方法及装置、ntru加解密加速方法及装置 | |
JP5744673B2 (ja) | 情報処理システム、情報処理方法、及びプログラム |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190716 |
|
RJ01 | Rejection of invention patent application after publication |