一种SM4加速方法和装置与流程

文档序号:18226302发布日期:2019-07-19 23:28阅读:553来源:国知局
一种SM4加速方法和装置与流程

本发明实施例涉及计算机技术领域,尤其涉及一种sm4加速方法和装置。



背景技术:

sm4是国家密码管理局发布的一种分组密码算法(gmt0002-2012),该算法的分组长度和密钥长度均为128比特。加密算法和密钥扩展算法都采用32轮非线性迭代结构。加密和解密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。对于某些计算装置,如通用处理器,使用纯软件进行sm4杂凑运算时,往往出现效率低下以及长时间占用该装置的缺点,由此导致系统资源分配紧张和功耗的增加。而一些硬件解决方案,纯硬件实现sm4杂凑运算,又过多的增加了硬件成本。如何提升sm4运算的效率并兼顾成本,达到资源的更佳配置,是本领域亟待解决的问题。



技术实现要素:

本发明实施例提供一种sm4加速方法和装置,可有效提升sm4运算的效率并兼顾成本,达到资源的更佳配置。

第一方面,本发明实施例提供一种sm4加速方法,应用于设有内部寄存器的计算装置,方法包括:为所述装置增加预设数量的辅助寄存器;对加密密钥进行轮密钥扩展计算以生成轮密钥;以所述轮密钥处理输入的消息;所述轮密钥扩展计算和以所述轮密钥处理输入的消息中的至少其中之一,通过扩展指令实现;将所述计算产生的轮密钥和处理结果存入预设寄存器。

可选的,输入的消息具体为消息明文或消息密文;所述以所述轮密钥处理输入的消息,具体为以所述轮密钥加密消息明文的计算或以所述轮密钥解密消息密文的计算。

可选的,扩展指令既调用所述内部寄存器,也调用所述辅助寄存器。

可选的,扩展指令包括6个操作数,其中2个操作数由所述装置内部寄存器赋值,其中4个操作数由所述辅助寄存器赋值。

可选的,所述装置为32位宽的装置。

另一方面,本发明实施例还提供一种sm4加速装置,设有内部寄存器,包括:预设数量的辅助寄存器;扩展指令计算单元,用于对加密密钥进行轮密钥扩展计算以生成轮密钥,以及,以所述轮密钥处理输入的消息;所述扩展指令计算单元,对所述轮密钥扩展计算的执行和以所述轮密钥处理输入的消息的执行中的至少其中之一,通过扩展指令实现;存储单元,用于将所述计算产生的轮密钥和处理结果存入预设寄存器。

可选的,输入的消息具体为消息明文或消息密文;以所述轮密钥处理输入的消息,具体为以所述轮密钥加密所述消息明文的计算或以所述轮密钥解密所述消息密文的计算。

可选的,扩展指令既调用所述内部寄存器,也调用所述辅助寄存器。

可选的,扩展指令包括6个操作数,其中2个操作数由所述装置内部寄存器赋值,其中4个操作数由所述辅助寄存器赋值。

可选的,所述装置为32位宽的装置。

本发明实施例中,在计算装置原有内部寄存器的基础上,增设辅助寄存器,对加密密钥进行轮密钥扩展计算以生成轮密钥,以轮密钥处理输入的消息;轮密钥扩展计算和以所述轮密钥处理输入的消息中的至少其中之一,通过扩展指令实现;将所述计算产生的轮密钥和处理结果存入预设寄存器,实施本发明实施例。通过软硬结合的方式提升sm4运算的效率并兼顾成本,达到资源的更佳配置。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图对应的是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的sm4加速方法实施例的流程图;

图2为本发明实施例提供的sm4轮密钥扩展示意图;

图3为本发明实施例提供的sm4以轮密钥加密输入消息的示意图;

图4为本发明实施例提供的sm4加速装置示意图;

图5为本发明实施例提供的sm4加速装置结合执行流程的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

sm4杂凑算法的主要流程包括:消息填充,消息扩展和压缩函数。

请参阅图1,为本发明提供的sm4加速方法实施例的流程图;本实施例的方法应用于设有内部寄存器的计算装置,例如32位宽的通用处理器,包括步骤:

s101、为所述装置增加预设数量的辅助寄存器;

可选的,增加的辅助寄存器为4个,此处分别命名为smau40、smau41、smau42、smau43。这些命名是示例性的,且先后顺序不做限定;可以理解的是,增加辅助寄存器的数量可以根据实际需要做调整,在本发明实施例构思的基础上,对辅助寄存器的数量进行任何的调整均应属于本发明保护范围。

s102、对加密密钥进行轮密钥扩展计算以生成轮密钥;

sm4是一种基于128比特长度分组的密码运算,加密密钥长度是128比特。sm4密码运算需要进行32轮,每一轮均需要一个不同的轮密钥。轮密钥是由加密密钥通过密钥扩展算法产生的。轮密钥扩展如图2所示。

图中为异或运算;

mk0、mk1、mk2、mk3为128比特加密密钥的分解,均为32比特;

fk0、fk1、fk2、fk3均为固定常数,用十六进制表示为:

fk0=a3b1bac6,fk1=56aa3350,fk2=677d9197,fk3=b27022dc。

ckn也是固定常数,n为≥0且≤31的整数,在32轮中,每一轮数值都不同,ck0、ck1、……ck31用十六进制表示分别为:

00070e15,1c232a31,383f464d,545b6269,70777e85,8c939aa1,a8afb6bd,c4cbd2d9,e0e7eef5,fc030a11,181f262d,343b4249,50575e65,6c737a81,888f969d,a4abb2b9,c0c7ced5,dce3eaf1,f8ff060d,141b2229,30373e45,4c535a61,686f767d,848b9299,a0a7aeb5,bcc3cad1,d8dfe6ed,f4fb0209,10171e25,2c333a41,484f565d,646b7279。

x0、x1、x2、x3、x4、……x32、x33、x34、x35为计算过程中产生的32比特变量。

s为s盒,其实质为非线性变换,可通过查找表的方式实现,本发明实施例不再一一列举,具体可见gmt0002-2012标准。

标记为a的矩形框,之前的计算结果是32比特的,标记为a的矩形框表示将32比特的数分成四个8比特的数,然后分别输入s盒中。

l′-layer为线性变换,满足公式:l′(x)=xxor(x<<<13)xor(x<<<23),其中,xor为异或运算,<<<为循环左移运算。

每经过一轮计算,会产生一个轮密钥,比如第一轮计算完成后,产生的x4即第一轮的轮密钥rk0,第二轮计算完成后,产生的x5即为第二轮的轮密钥rk1,以此类推,第32轮计算完成后,产生的x35即为第32轮的轮密钥rk31。

本实施例中,轮密钥扩展计算可通过扩展指令实现,该扩展指令命名为sm4crpt。sm4crpt一共有六个操作数,其中两个可用该计算装置的内部寄存器赋值,其他四个操作数需借助前述四个辅助寄存器smau40、smau41、smau42、smau43。初始化完这四个辅助寄存器后,可使用以下方式调用sm4crpt:sm4crpt%r0,%r1,%r2;其中r1和r2为源寄存器,r1=128+n,因n为≥0且≤31的整数,n即为轮数;r2=0,r0为目标寄存器,即轮密钥会放在r0中;

轮密钥的计算可表述如下:

smau40=mk0

smau41=mk1

smau42=mk2

smau43=mk3

forn=0to31

sm4cpr%r0,128+n,0

rkn=r0

s103、以所述轮密钥处理输入的消息;

可以理解的是,输入的消息具体为消息明文或消息密文;所述以所述轮密钥处理输入的消息,具体为以所述轮密钥加密消息明文的计算或以所述轮密钥解密消息密文的计算。因为解密与加密流程相同,解密的轮密钥是加密轮密钥的逆序,即解密第一轮的轮密钥为加密第32轮的轮密钥,所以,以下仅以加密为例做阐述。

请参见图3,为本发明实施例提供的sm4以轮密钥加密输入消息的示意图;输入消息为128比特明文,故在图3中,p0,p1,p2,p3为128比特明文的分解,均为32比特。l-layer为线性变换,满足公式:

l(x)=xxor(x<<<2)xor(x<<<10)xor(x<<<18)xor(x<<<24)

s为s盒,其实质为非线性变换,可通过查找表的方式实现,本发明实施例不再一一列举,具体可见gmt0002-2012标准。

标记为a的矩形框,之前的计算结果是32比特的,标记为a的矩形框表示将32比特的数分成四个8比特的数,然后分别输入s盒中。

经过32轮计算后,产生的x32、x33、x34、x35即作为密文c3、c2、c1、c0输出。

加密所输入消息的计算也可通过前述扩展指令sm4crpt来实现,再加密所述输入消息的计算过程中,可使用以下方式调用sm4crpt:sm4crpt%r0,%r1,%r2;其中r1和r2为源寄存器,r1=n,因n为≥0且≤31的整数,n即为轮数;r2=rkn,即轮密钥,r0为目标寄存器,即加密结果会存入r0中。

对一个128比特的输入消息块,32轮的加密计算可表述如下:

smau40=p0

smau41=p1

smau42=p2

smau43=p3

forn=0to27

sm4cpr%r0,n,rkn

sm4cpr%r0,28,rk28

c3=r0

sm4cpr%r0,29,rk29

c2=r0

sm4cpr%r0,30,rk30

c1=r0

sm4cpr%r0,31,rk31

c0=r0

s104、将所述计算产生的轮密钥和处理结果存入预设寄存器。

在s102和s103的描述中,已经描述过将轮密钥和加密结果存入目标寄存器r0中,此处不再赘述。在本实施例中,目标寄存器r0即预设寄存器。

需要说明的是,在本发明实施例中,在轮密钥计算和输入消息处理过程中均通过扩展指令实现,是为了详尽的描述扩展指令实现的方式,在具体实施中,技术人员可根据需要或具体情况选择在轮密钥计算和输入消息处理过程中择一选择通过扩展指令实现的方式,均应属于本发明实施例的保护范围。

在本发明实施例中,可扩展指令sm4crpt复用计算装置原有的流水线,完成取指、译码、访存,执行、写回等操作,并且可以使用原有的内部寄存器作为操作数,在操作数超过两个时,会增加相应的辅助寄存器,协助完成指令操作,有效提升sm4运行效率。

通过本发明实施例,在计算装置原有内部寄存器的基础上,增设辅助寄存器,对加密密钥进行轮密钥扩展计算以生成轮密钥,以轮密钥处理输入的消息;轮密钥扩展计算和以所述轮密钥处理输入的消息中的至少其中之一,通过扩展指令实现;将所述计算产生的轮密钥和处理结果存入预设寄存器。通过软硬结合的方式提升sm4运算的效率并兼顾成本,达到资源的更佳配置。

请参阅图4,为本发明实施例提供的sm4加速装置示意图。

sm4加速装置40,为32位宽的装置,设有内部寄存器,还包括:预设数量的辅助寄存器401,用以支持扩展指令,扩展指令命名为sm4crpt。sm4crpt一共有六个操作数,其中两个可用该计算装置的内部寄存器赋值,其他四个操作数需借助前述四个辅助寄存器smau40、smau41、smau42、smau43。图4中列出的一个辅助寄存器401是示例性的,具体实施中,辅助寄存器401的数量可以根据需要调整。

扩展指令计算单402,用于对加密密钥进行轮密钥扩展计算以生成轮密钥,以及,以所述轮密钥处理输入的消息;扩展指令计算单402在进行轮密钥扩展计算的执行和以轮密钥处理输入消息的执行中的至少其中之一,通过扩展指令sm4crpt实现。输入的消息具体为所述输入的消息具体为消息明文或消息密文;对应的,以所述轮密钥处理输入的消息,具体为以所述轮密钥加密所述消息明文的计算或以所述轮密钥解密所述消息密文的计算。正如前面所述的,扩展指令sm4crpt既调用内部寄存器,也调用辅助寄存器。扩展指令sm4crpt一共有六个操作数,其中两个可用该计算装置的内部寄存器赋值,其他四个操作数需借助前述四个辅助寄存器smau40、smau41、smau42、smau43。

存储单元403,用于将扩展指令计算单元计算产生的轮密钥和处理结果存入预设寄存器。本装置实施例中个单元工作过程中执行的方法在前述方法实施例中已有详细描述,此处不再赘述。

可以理解的是,本实施例中sm4加速装置40中的单元是为举例,以说明本发明实施例的主要特征,这些单元并非穷举,在具体实现中,还可能根据需要有其他的单元参与工作,也可根据需要将部分单元删减,比如存储单元403,为功能性的描述,在一些实施方式中,其具体可以指寄存器或外部存储器。

在本发明实施例中,扩展指令sm4crpt复用计算装置原有的流水线,完成取指、译码、访存,执行、写回等操作,并且可以使用原有的内部寄存器作为操作数,在操作数超过两个时,会增加相应的辅助寄存器,协助完成指令操作,有效提升sm4运行效率。

通过以上实施例,在轮密钥扩展计算和以轮密钥处理输入的消息这两个阶段均通过可扩展指令和辅助寄存器对sm4运算进行了加速,也可根据具体情况择一进行加速,采取这种软硬件结合的方式,有效提升了sm4运算的效率并兼顾了成本,达到资源的更佳配置。

请再参阅图5,为本发明实施例提供的sm4加速装置结合执行流程的示意图,以进一步阐明本发明实施例的工作方式。

在本发明实施例中,sm4加速装置包括取指控制单元501、指令译码单元502、内部寄存器503、,辅助寄存器504、外部存储器505、计算单元506、扩展指令计算单元507。在取指阶段,取指控制单元501取得指令;指令译码单元502在译码阶段对取指控制单元501取得的指令进行译码;在执行阶段,计算单元506执行其他的计算;而扩展指令计算单元507则通过前述实施例中描述的扩展指令sm4crpt,调用内部寄存器503和辅助寄存器504,对sm4的轮密钥扩展计算和输入消息的处理加速执行;在写回过程中,将轮密钥扩展计算产生的轮密钥以及对输入的消息进行处理后的结果(指明文或密文)写回至外部存储器505、内部寄存器503或辅助寄存器504。

可以理解的是,本发明中实施例附图中的内部寄存器503和辅助寄存器504的展示是为示意,并非是数量的限制。

图5中的梯形是为了示意步骤执行或数据的汇合,并非代表特别的模块或单元;下部带有三角形的矩形是为隔开方案执行的不同阶段,也并非代表特别的模块或单元。在本发明实施例中,可扩展指令sm4crpt复用装置原有的流水线,完成取指、译码、访存,执行、写回等操作,并且可以使用原有的内部寄存器作为操作数,在操作数超过两个时,会增加相应的辅助寄存器,协助完成指令操作,有效提升sm4运行效率。

通过以上实施例,在轮密钥扩展计算和以轮密钥处理输入的消息这两个阶段均通过可扩展指令和辅助寄存器对sm4运算进行了加速,也可根据具体情况择一进行加速,采取这种软硬件结合的方式,有效提升了sm4运算的效率并兼顾了成本,达到资源的更佳配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

本发明实施例的方法的步骤顺序可以根据实际需要进行调整、合并或删减,且顺序不作为限制,对本发明方法实施例、系统实施例中步骤顺序的调整、步骤的合并或删减均应属于本发明的保护范围。

可以理解的是,本发明实施例装置中的单元描述是为举例,但具体实现方式可以根据实际需要进行整合、进一步划分或删减,任何整合、划分或删减均应属于本发明保护范围。

以上对本发明实施例公开的sm4加速方法和装置进行了详细的介绍,本文中应用了具体实例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,而不是对本发明的范围的限制。同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均可能会有改变之处,亦应属本发明保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1