当前位置: 首页 > 专利查询>北京大学专利>正文

一种SM3杂凑算法的硬件加速方法技术

技术编号:38874311 阅读:12 留言:0更新日期:2023-09-22 14:08
本发明专利技术公开了一种SM3杂凑算法的硬件加速方法,具体是设计消息填充模块来完成对输入消息的填充和分组,设计同步FIFO模块解决消息填充分组和消息迭代压缩速率不一致的问题,设计压缩模块完成消息的扩展和迭代压缩。为提高杂凑算法执行效率,本发明专利技术将消息扩展和迭代压缩进行并行处理。通过组合逻辑复用的方法,将SM3算法中压缩函数的效率提高了一倍。本发明专利技术以较低的电路开销实现了一种高性能的SM3杂凑算法加速电路,在12nm工艺库下频率达到2.5GHZ,吞吐率达到2557.72GB/s,适用于SM3杂凑算法运算速度要求较高的应用场景。速度要求较高的应用场景。速度要求较高的应用场景。

【技术实现步骤摘要】
一种SM3杂凑算法的硬件加速方法


[0001]本专利技术涉及信息安全加密以及数字芯片设计领域,尤其涉及一种国产杂凑算法SM3的硬件加速方法。

技术介绍

[0002]目前信息安全技术已融入到社会经济、生活以及国家安全等方方面面,已经成为整个社会稳定运行的保障。随着半导体技术的飞速发展,以ASIC芯片或FPGA的形式对信息安全算法的加速方法已经广泛运用于各种信息安全产品中。相比于信息安全算法在通用处理器上使用软件方法实现,硬件实现运行速度更快、安全性更高。现代密码学是网络信息安全的理论基础,而密码杂凑算法在现代密码学中起着重要的作用。密码杂凑算法可以将任意长度的消息压缩成固定的字符串输出。在商业密码中主要应用于数据的完整性校验,身份认证,秘钥推导和随机数生成器等方面,常用的杂凑算法有SHA

1、SHA

2、MD5等。国家密码局在2010年发布国产杂凑算法SM3,该算法在SHA

256的基础上改进实现。SM3算法由于运算复杂,其运算速度瓶颈主要在迭代压缩的过程,在通用处理器上使用软件实现运行效率较低。本专利技术提出一种硬件加速方法,通过逻辑复用的方法,减少迭代压缩过程耗费的周期数,适用于SM3算法在FPGA上的实现和ASIC实现。

技术实现思路

[0003]本专利技术的技术目的是:
[0004]为了提高SM3算法的运算速度和数据吞吐量,同时保持芯片面积和功耗在一个较低的水平,为SM3杂凑算法提供一种高性能的硬件加速方案,解决SM3算法压缩效率低的问题,以满足杂凑速率较高的应用需求。
[0005]本专利技术实现的技术方案:
[0006]SM3算法对输入消息的处理过程如下:
[0007]1.在消息数据m末尾加上1比特数据1,再添加若干个0。将输入消息长度用64比特数表示填充到消息末尾,使得填充完毕的消息长度可以被512整除。
[0008]2.将填充完的消息m

分成n个512比特的分组m

=B(0)B(1)

B(n

1),将B(i)分成16个字W0,W1,

,W15。使用扩展函数将16个分组扩展为132个分组,W0,W1,

,W67,W0

,W1



,W63


[0009]3.对消息分组进行压缩,其中B(i)是以扩展后132个字的形式输入。
[0010]FOR i=0 TO n
‑1[0011]V(i+1)=CF(V(i);B(i))
[0012]ENDFOR
[0013]本专利技术的硬件顶层模块图如图1所示。输入数据位宽为32比特,输出数据位宽为256比特,分为消息填充模块msg_padding,同步FIFO模块fifo_syn,和压缩模块compression三个部分。SM3算法中消息扩展的步骤,在压缩函数模块中实现,即消息扩展步
骤和迭代压缩步骤并行运算。本专利技术消息输入接口使用类似AMBA总线的valid/ready握手协议,新增start和last信号表示输入消息的开始和结尾,支持任意长度的消息输入。
[0014]消息填充模块完成对输入消息的分组和填充,输入消息为32比特,需要产生的分组为512比特。设计状态机对分组合和填充过程进行控制,状态图如图2所示。当last信号为0时,对消息进行复制整合成512比特的分组,按分组输出,同时对接收的消息计数。当last信号为1时,表示此时消息输入结束。根据最后一个分组已经接收的数据量的不同情况,进行对消息的填充。当最后一个分组接收数据量小于447比特时,在消息末尾填充1比特数据1,再填充若干个0,最后填充64比特的消息长度值。当最后一个分组接收数据量等于447比特时,填充1比特1和消息长度值。当分组接收数据量大于447比特时,此时需要填充1比特数据1,填充若干个0到该分组的第512比特,并扩展出一个分组继续填充0,直至填充到扩展分组的448比特,再填充64比特的消息长度值。消息输出到同步FIFO,同时将同步FIFO的almost_full信号取非,用作为消息输入接口的ready信号,即当同步FIFO的almost_full信号为1时,反压上游消息输入。当消息输入停止时,由状态机控制的消息填充过程可能产生额外的一个分组,因此使用同步FIFO的almost的信号,使FIFO中还剩余一定的空间来保证数据分组不丢失。
[0015]同步FIFO模块数据位宽为514,保存消息分组,以及第一个分组和最后一个分组标志位。FIFO深度设置为2,当FIFO中数据量为1时,almost_full输出1,留有的空间余量为1。
[0016]压缩模块compression完成消息扩展和迭代压缩,在SM3算法中每个数据分组需要迭代压缩的次数为64,本设计通过复用压缩函数电路以及消息扩展电路的方式,每周期压缩两次,将迭代压缩的周期数降低为32个。消息扩展过程将512比特的分组分为16个字,将16个字扩展出132个字。实现过程如图3所示。首先将数据分组输入到16单元,每个单元32比特的移位寄存器,在迭代压缩的过程中,生成4个字的数据输入到压缩函数模块compression_block、扩展出两个32比特的新数据。每周期移位寄存器移动两个单元,将扩展生成的新数据输入到最左边。压缩函数模块调用两个压缩单元模块compression_cell来实现,一个压缩单元模块完成算法中的一次循环压缩。将消息扩展产生的4个字分别输入到两个压缩单元模块,如图4所示。压缩单元模块compression_cell为纯组合电路,电路结构如图5所示。本专利技术根据压缩单元模块的结构分析关键路径,在关键路径上,通过使用低延迟加法器,来提高电路频率。压缩控制状态机如图6所示。状态机在IDLE状态等待第一个消息分组的输入,在START状态进行压缩初始化。在COMP状态下完成一个分组的压缩,完成后状态机进入START状态读取新的分组数据。当输入数据分组有间断时,同步FIFO为空,最后一个消息分组未到达,状态机进入到WAIT状态等待。当最后一个分组压缩结束后,依次进入到DONE0状态和DONE1状态,完成杂凑结果的输出。
[0017]本专利技术的主要技术优势在于:
[0018](1)支持任意长度的消息输入,具有良好的兼容性
[0019](2)通过将消息扩展过程和迭代压缩过程并行处理,动态生成扩展数据,降低了电路的面积。
[0020](3)对同一个分组循环压缩的过程中,一个周期完成两次压缩,将压缩次数从64降低到32。提高了杂凑模块的数据吞吐率。本设计在台积电12nm工艺库下综合,频率可达2.5GHz,面积为5944.64平方微米,数据吞吐率为2557.72GB/s。相比于每周期只执行一次压
缩运算的实现方法,数据压缩速率提高为两倍。
附图说明
[0021]图1设计顶层结构本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种SM3杂凑算法的硬件加速方法,主要是实现计算输入消息杂凑值的功能,其特征在于:硬件设计模块划分为消息填充和分组模块、同步FIFO模块、消息扩展和迭代压缩并行处理模块。2.如权利要求1所述的一种SM3杂凑算法的硬件加速方法,其特征在于,数据输入接口满足如下要求,存在握手信号,以获取足够大的输入带宽,又可以在后续模块忙碌时反压数据输入。存在足够大的总线位宽,存在指示信号表示数据总线中的字节的有效性,存在开始和结束信号对一段输入数据进行标识。3.如权利要求2所述的握手信号、总线位宽、指示信号和开始和结束信号,其特征在于,握手信号使用valid/ready握手协议。只有当valid和ready信号同时为高,数据才能成功传输。模块在处理数据忙碌时可以通过ready信号反压数据输入。总线位宽为32比特,指示信号probe为4比特,从高到低分别对应数据总线中的4个字节。开始和结束信号为start和last,分别在数据输入有效的第一个周期和最后一个周期为高电平。4.如权利要求1所述的消息填充和分组模块,其特征在于,使用FSM完成对消息填充和分组控制,使用数据缓存区完成对数据输入缓存,使用计数器记录缓存区中有效数据量。每个分组的大小为512比特。当数据last信号到...

【专利技术属性】
技术研发人员:冯建华邢琦齐观平李春昊马思孔
申请(专利权)人:北京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1