【技术实现步骤摘要】
基于流水线的SM3算法FPGA实现方法及系统
本公开属于通信密码算法硬件实现
,涉及一种基于流水线的SM3算法FPGA实现方法及系统。
技术介绍
本部分的陈述仅仅是提供了与本公开相关的
技术介绍
信息,不必然构成在先技术。近年来国际通用密码算法频频传出被破解的消息,“芯片断供”等事件频发,国家和行业对技术自主、可控的需求上升到了新的台阶。国产密码算法是保障我国网络安全自主可控的重要基础。SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,在金融、区块链等领域得到了广泛的应用。使用SM3算法替代国际通用的杂凑算法,不仅提高了安全性,还实现了在核心技术上的自主可控的目的。SM3算法的执行过程可以概括成三个步骤:消息填充、消息扩展、迭代压缩。但是SM3密码算法由于其运算的复杂性,如果在软件层面上进行实现,其性能难以满足大量告诉应用场景的需求,限制了国密算法的应用范围。FPGA(FieldProgrammableGateArray:现场可编 ...
【技术保护点】
1.一种基于流水线的SM3算法FPGA实现方法,其特征是:包括以下步骤:/n对不同消息分别进行消息填充和数据分组;/n设计多级流水,将SM3算法中每一轮的迭代计算利用一级流水实现,每一轮迭代计算中的哈希值及后续内容分别进行存储;/n将SM3算法中的迭代压缩进行循环展开,将每一轮计算的输出作为下一轮的输入,继续计算,直到当前哈希值无剩下的内容需要继续计算,输出计算的最终哈希值;/n将存储的每一轮迭代计算中的哈希值及后续内容分别独立进行内容赋值填充并存储。/n
【技术特征摘要】
1.一种基于流水线的SM3算法FPGA实现方法,其特征是:包括以下步骤:
对不同消息分别进行消息填充和数据分组;
设计多级流水,将SM3算法中每一轮的迭代计算利用一级流水实现,每一轮迭代计算中的哈希值及后续内容分别进行存储;
将SM3算法中的迭代压缩进行循环展开,将每一轮计算的输出作为下一轮的输入,继续计算,直到当前哈希值无剩下的内容需要继续计算,输出计算的最终哈希值;
将存储的每一轮迭代计算中的哈希值及后续内容分别独立进行内容赋值填充并存储。
2.一种基于流水线的SM3算法FPGA实现系统,其特征是:包括:
输入缓存模块,包括多个寄存器,用于接收sm3_data端口的数据,存储需要进行哈希计算的数据;
内容赋值缓存模块,包括多个子模块,用于接收输入缓存模块的输出,将接收的数据进行保存、运算,完成消息扩展;
数据生成模块,包括多个单轮数据生成模块,用于压缩函数中的多轮循环,将SM3算法中每一轮的迭代计算利用一级流水实现,将SM3算法中的迭代压缩进行循环展开,将每一轮计算的输出作为下一轮的输入,继续计算,直到当前哈希值无剩下的内容需要继续计算;
数据缓存模块,用于存储每一轮迭代计算中的哈希值及后续内容分别进行存储;
输出缓存模块,用于输出最终哈希值,与sm3_result端口连接。
3.如权利要求2所述的一种基于流水线的SM3算法FPGA实现系统,其特征是:输入缓存模块包括64个多位寄存器,从sm3_data端口接收数据,把需要哈希计算的64个数据进行存储,其输出作为内容赋值缓存的输入。
4.如权利要求2所述的一种基于流水线的SM3算法FPGA实现系统,其特征是:所述内容赋值缓存模块,包括16个子模块,每个子模块的输入均来自于输入缓存模块的寄存器输出,将接收的数据分别放到16个子模块作为W0,W1,…,W15,然后将其输入到运算电路中,重复进行运算,完成消息扩展,其输出作为数据生成模块的输入,每一个输出要经过一个数据分配器,该数据分配器用于决定把相应的值输送到第几个单轮数据生成器中。
<...
【专利技术属性】
技术研发人员:杨宇涵,申兆岩,王新宇,鞠雷,魏普文,
申请(专利权)人:山东大学,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。