一种SM3杂凑加密系统的制作方法

文档序号:12133495阅读:521来源:国知局
一种SM3杂凑加密系统的制作方法与工艺

本发明涉及加密技术领域,特别涉及一种SM3杂凑加密系统。



背景技术:

SM3密码杂凑算法是国密局在2010年底公布的一种加密算法,能够适用于商用密码应用中的数字签名和验证、消息认证码的生成与检验以及随机数的生成,可以满足多种密码应用的安全需求。

在目前SM3密码杂凑算法的应用过程中,主要是基于Java语言或C语言开发出相应的SM3加密模块,然后利用这个加密模块实现对数据的加密。

然而,基于Java语言或C语言开发的SM3加密模块只能在软件平台上实现加密,而无法在硬件平台上实现加密,从而限制了SM3密码杂凑算法的应用范围。

综上所述可以看出,如何在硬件平台上实现SM3加密是目前还有待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种SM3杂凑加密系统,能够在硬件平台上实现SM3加密。其具体方案如下:

一种SM3杂凑加密系统,为基于硬件描述语言创建的加密系统,包括控制模块、消息扩展模块、消息压缩模块和加密数据读取模块;其中,

所述消息扩展模块,用于在所述控制模块的控制下,获取待加密消息,并对所述待加密消息进行消息扩展,得到包括132个字的扩展后消息;

所述消息压缩模块,用于在所述控制模块的控制下,对所述扩展后消息进行压缩处理,得到相应的杂凑值,并将所述杂凑值保存至预设的结果寄存器;

所述加密数据读取模块,用于在所述控制模块的控制下,对保存在所述结果寄存器中的所述杂凑值进行输出处理。

可选的,所述控制模块为采用标准的三段式FSM设计得到的功能模块。

可选的,所述消息扩展模块,包括:

第一扩展子模块,用于在前4个时钟周期的每个时钟周期内,均分别计算第一组迭代过程的一个迭代值,得到所述第一组迭代过程中的前4个迭代值;

第二扩展子模块,用于在后64个时钟周期的每个时钟周期内,均分别计算所述第一组迭代过程的一个迭代值和第二组迭代过程的一个迭代值,得到所述第一组迭代过程中的后64个迭代值以及所述第二组迭代过程中的全部64个迭代值;

合并子模块,用于将所述第一组迭代过程中的全部68个迭代值和所述第二迭代过程中的全部64个迭代值进行合并,得到所述扩展后消息。

可选的,所述第二扩展子模块,包括:

迭代嵌套单元,用于在第k个时钟周期内,利用从预设的迭代值寄存器中提取出的所述第一组迭代过程中的第k个迭代值和第k-4个迭代值,计算所述第二组迭代过程中的第k个迭代值;其中,k为大于4,并且小于或等于68的整数。

可选的,所述结果寄存器为256位的寄存器。

可选的,所述加密数据读取模块,具体用于在所述控制模块的控制下,以32位的形式读取并输出保存在所述结果寄存器中的所述杂凑值。

可选的,所述硬件描述语言为Verilog HDL语言。

本发明中,SM3杂凑加密系统,为基于硬件描述语言创建的加密系统,包括控制模块、消息扩展模块、消息压缩模块和加密数据读取模块;其中,消息扩展模块,用于在控制模块的控制下,获取待加密消息,并对待加密消息进行消息扩展,得到包括132个字的扩展后消息;消息压缩模块,用于在控制模块的控制下,对扩展后消息进行压缩处理,得到相应的杂凑值,并将杂凑值保存至预设的结果寄存器;加密数据读取模块,用于在控制模块的控制下,对保存在结果寄存器中的杂凑值进行输出处理。

由上可知,本发明基于硬件描述语言来来创建上述SM3杂凑加密系统,其中,该SM3杂凑加密系统包括控制模块、消息扩展模块、消息压缩模块和加密数据读取模块,其中,上述消息扩展模块、消息压缩模块和加密数据读取模块在控制模块的控制下,依次实现消息扩展、压缩和数据读取。本发明基于硬件描述语言创建的SM3杂凑加密系统可直接在硬件平台上实现SM3加密,由此也拓宽了SM3密码杂凑算法的应用范围。

附图说明

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

图1为本发明实施例公开的一种SM3杂凑加密系统结构示意图;

图2为本发明实施例公开的一种SM3杂凑加密系统控制模块状态机图。

具体实施方式

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

本发明实施例公开了一种SM3杂凑加密系统,为基于硬件描述语言创建的加密系统,参见图1所示,该加密系统包括控制模块11、消息扩展模块12、消息压缩模块13和加密数据读取模块14;其中,

消息扩展模块12,用于在控制模块11的控制下,获取待加密消息,并对待加密消息进行消息扩展,得到包括132个字的扩展后消息;其中,上述132个字中的每个字均是32位的字。

消息压缩模块13,用于在控制模块11的控制下,对扩展后消息进行压缩处理,得到相应的杂凑值,并将杂凑值保存至预设的结果寄存器;

加密数据读取模块14,用于在控制模块11的控制下,对保存在结果寄存器中的杂凑值进行输出处理。

具体的,上述硬件描述语言可以为Verilog HDL语言(HDL,即Hardware Description Language)。

本实施例中,上述结果寄存器为256位的寄存器。

另外,本实施例中,上述控制模块11具体可以为采用标准的三段式FSM(即Finite State Machine,状态机)设计得到的功能模块。

由上可知,本发明实施例基于硬件描述语言来来创建上述SM3杂凑加密系统,其中,该SM3杂凑加密系统包括控制模块、消息扩展模块、消息压缩模块和加密数据读取模块,其中,上述消息扩展模块、消息压缩模块和加密数据读取模块在控制模块的控制下,依次实现消息扩展、压缩和数据读取。本发明实施例基于硬件描述语言创建的SM3杂凑加密系统可直接在硬件平台上实现SM3加密,由此也拓宽了SM3密码杂凑算法的应用范围。

本发明实施例公开了一种具体的SM3杂凑加密系统,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

上一实施例中,SM3杂凑加密系统需要通过消息扩展模块对待加密消息进行消息扩展处理,以得到包括132个字的扩展后消息。

本实施例中,上述消息扩展模块,具体可以包括第一扩展子模块、第二扩展子模块和合并子模块;其中,

第一扩展子模块,用于在前4个时钟周期的每个时钟周期内,均分别计算第一组迭代过程的一个迭代值,得到第一组迭代过程中的前4个迭代值;

第二扩展子模块,用于在后64个时钟周期的每个时钟周期内,均分别计算第一组迭代过程的一个迭代值和第二组迭代过程的一个迭代值,得到第一组迭代过程中的后64个迭代值以及第二组迭代过程中的全部64个迭代值;

合并子模块,用于将第一组迭代过程中的全部68个迭代值和第二迭代过程中的全部64个迭代值进行合并,得到扩展后消息。

也即,本发明实施例只需在68个时钟周期内便可得到132个迭代值,也即得到132个32位的字。其中,在前4个时钟周期内,获取第一组迭代过程的前4个迭代值,而在后64个时钟周期的每个时钟周期之内,均分别获取第一组迭代过程中的一个迭代值以及获取第二组迭代过程中的一个迭代值,从而在后64个时钟周期之内一共获取到第一组迭代过程的后64个迭代值以及第二组迭代过程的全部64个迭代值,再加上在前4个时钟周期内获取到的第一组迭代过程中的前4个迭代值,从而在68个时钟周期之内便可获取到第一组迭代过程中的全部68个迭代值以及第二组迭代过程中的全部64个迭代值,由此得到132个迭代值,其中,每个迭代值均是32位的字,也即经过上述消息扩展处理之后,得到了包括132个字的扩展后消息。

另外,上述第二扩展子模块,具体可以包括:

迭代嵌套单元,用于在第k个时钟周期内,利用从预设的迭代值寄存器中提取出的第一组迭代过程中的第k个迭代值和第k-4个迭代值,计算第二组迭代过程中的第k个迭代值;其中,k为大于4,并且小于或等于68的整数。

由上可见,本发明实施例将第二组迭代过程嵌入到了第一组迭代过程中,这样一方面节省了迭代过程所需的时间,提高了迭代效率,同时也会减少相关寄存器的个数,从而减少硬件电路板上由于寄存器所带来的面积开销和功耗开销。

更具体的,上一实施例中的加密数据读取模块,具体可以用于在控制模块的控制下,以32位的形式读取并输出保存在结果寄存器中的杂凑值。

在前述实施例的基础上,本发明实施例公开了一种更具体的SM3杂凑加密系统。参见图2所示,在本实施例中,SM3杂凑加密系统中的控制模块采用标准的三段式FSM结构设计,为其他功能模块产生和提供相关的控制信号:ctrl信号、finish信号、count_out信号。其中,与上述控制模块相关的硬件描述语言源代码如下:

其中,上述ctrl信号输出4个状态,分别是idle、write、encryption、read。这4个状态控制SM3杂凑加密系统中的其他功能模块完成哈希运算。

在idle状态下,所有的控制参数都为零,停止一切运算。每加密完成一个512bit数据时,如果没有R=1信号,就会返回到idle状态;每输出一次256bit数据时,都会返回到idle状态。

在write状态下,消息扩展模块读入待加密的随机数,一次最多读入512bits。

在encryption状态下,进行消息扩展和压缩函数的计算。每次计算后判断R状态值决定写出结果还是继续下一轮加密计算。

在read状态下,输出加密后的数据,输出后直接进入idle状态等待下一轮加密。

在图2中,finish信号置高输出表示消息扩展和压缩函数的计算完成,等待进入下个状态;count_out信号为实际输出的计数器控制信号,用来控制其他模块和整个加密的迭代进程;count信号为内部计数器,控制状态的转移和控制信号的生成。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种SM3杂凑加密系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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