一种SM3密码杂凑算法中消息填充的硬件实现方法技术

技术编号:21898875 阅读:127 留言:0更新日期:2019-08-17 18:23
本发明专利技术属于安全技术领域,提出一种SM3密码杂凑算法中消息填充的硬件实现方法。本方法采用硬件描述语言构建消息填充状态机和基本运算单元,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元,并且使用了乒乓操作完成数据的无缝缓冲与处理。本发明专利技术利用硬件处理速度快的特点,相比传统软件处理方法,减少了时间,并且模块利用率高,节省了硬件资源。

A Hardware Implementation of Message Filling in SM3 Password Hash Algorithms

【技术实现步骤摘要】
一种SM3密码杂凑算法中消息填充的硬件实现方法
本专利技术属于安全
,特别涉及一种SM3密码杂凑算法中消息填充的硬件实现方法。
技术介绍
SM3密码杂凑算法是我国自主研制的一种哈希算法,可以把长度小于264的消息经过分组迭代后,转化成一个256比特的杂凑值。SM3密码杂凑算法适用于各种数字签名和消息验证,广泛应用于国内商用密码产品。国家密码管理局于2010年12月公布的SM3密码杂凑算法中,制定了SM3密码杂凑算法的计算步骤和方法。SM3密码杂凑算法的消息填充的步骤如下所示:首先假设消息m的长度为k比特,k小于264。首先将比特“1”添加到消息的末尾,再添加n个“0”,n是满足k+1+n≡448mod512的最小的非负整数。然后在最后再添加一个64位比特串,该比特串是长度k的二进制表示。填充后的消息m’的比特长度为512的倍数。
技术实现思路
现有的SM3密码杂凑算法中的消息填充主要是通过软件来实现的,本专利技术提供一种硬件实现SM3密码杂凑算法中消息填充的方法,用以提高SM3密码杂凑模块的吞吐量,减少软件处理以及和硬件交互的时间。其具体方案如下:定义两个512比特的寄存器u和v,用来存储初始消息以及消息填充过程中的中间消息和处理完成的消息;定义每次输入消息的长度最多为256比特,如果超过256比特则分次输入,每次输入的消息长度为k;(1)将输入的消息存入寄存器u的高256位,将1比特“1”存入寄存器v的最高位,此时可分为两种情况:第一次输入消息即为全部消息,则把v右移k位,然后把u、v与k进行异或操作,其结果存储在寄存器u中。此时寄存器u中的值就是填充后的512比特消息;第一次输入消息不为全部消息,说明消息长度为256,则把第二次输入的消息存入u的低256位,后续处理见(2)、(3)、(4);(2)如果第二次的输入是最后一次消息,并且消息长度小于192,同时说明第二次的输入是最后一次消息,则把v右移k位,然后把u的低256位、v的高256位与k异或,其结果存储在寄存器u的低256位中。此时寄存器u中的值就是填充后的512比特消息;(3)如果第二次的输入是最后一次消息,并且消息长度大于192,则把v右移k位,然后把u的低256位与v的高256位异或,其结果存储在寄存器u的低256位中;把v的低64位与k异或,其结果存储在寄存器v的低64位中。此时寄存器u和v即为填充后的两个512比特消息;(4)如果第二次的输入不是最后一次消息,说明消息长度为256,此时寄存器u中的512比特消息是符合填充要求的第一个512比特消息,将其存入寄存器v中送入SM3密码杂凑算法中进行计算,并将寄存器u清零。后续处理见(5);第三次输入的消息可以看作第一次输入消息,重复(2)中的步骤进行填充,直到完成最后一次消息填充;本专利技术的优点主要包括:1.消息填充速度快,主要运算均组合逻辑,计算延迟小;2.本专利技术运算资源高效可复用,可以应对可能出现的所有情况,极大的节省了硬件资源;3.本专利技术采用了乒乓操作完成数据的无缝缓冲与处理。附图说明图1为本专利技术的硬件结构示意图;图2为消息填充硬件实现的基本流程图。具体实施方式为了使本专利技术更便于理解,以下结合附图和具体实施方式来对本专利技术做进一步说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术实例公开了一种SM3密码杂凑算法中消息填充的硬件实现方法。采用硬件描述语言构建消息填充状态机和基本运算单元。如图1所示,是本专利技术的硬件结构示意图,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元,并且使用了乒乓操作完成数据的无缝缓冲与处理;如图2所示,是本专利技术硬件实现的流程图,所述消息填充状态机按照消息填充流程,通过调用基本运算单元完成消息的填充,最后根据不同情况会输出不同值。详述如下:定义两个512比特的寄存器u和v,用来存储初始消息以及消息填充过程中的中间消息和处理完成的消息;定义每次输入消息的长度最多为256比特,如果超过256比特则分次输入,每次输入的消息长度为k;(1)将输入的消息存入寄存器u的高256位,将1比特“1”存入寄存器v的最高位,此时可分为两种情况:第一次输入消息即为全部消息,则把v右移k位,然后把u、v与k进行异或操作,其结果存储在寄存器u中。此时寄存器u中的值就是填充后的512比特消息;第一次输入消息不为全部消息,说明消息长度为256,则把第二次输入的消息存入u的低256位,后续处理见(2)、(3)、(4);(2)如果第二次的输入是最后一次消息,并且消息长度小于192,同时说明第二次的输入是最后一次消息,则把v右移k位,然后把u的低256位、v的高256位与k异或,其结果存储在寄存器u的低256位中。此时寄存器u中的值就是填充后的512比特消息;(3)如果第二次的输入是最后一次消息,并且消息长度大于192,则把v右移k位,然后把u的低256位与v的高256位异或,其结果存储在寄存器u的低256位中;把v的低64位与k异或,其结果存储在寄存器v的低64位中。此时寄存器u和v即为填充后的两个512比特消息;(4)如果第二次的输入不是最后一次消息,说明消息长度为256,此时寄存器u中的512比特消息是符合填充要求的第一个512比特消息,将其存入寄存器v中送入SM3密码杂凑算法中进行计算,并将寄存器u清零。后续处理见(5);(5)第三次输入的消息可以看作第一次输入消息,重复(2)中的步骤进行填充,直到完成最后一次消息填充;以上所述,仅是本专利技术的较佳实施例而已,并非对本专利技术作任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本专利技术技术方案范围情况下,都可利用上述揭示的方法和
技术实现思路
对本专利技术技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本专利技术技术方案的内容,依据本专利技术的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本专利技术技术方案保护的范围内。本文档来自技高网
...

【技术保护点】
1.一种SM3密码杂凑算法中消息填充的硬件实现方法,其特征在于,包括如下步骤:(1)采用硬件描述语言构建消息填充状态机和和基本运算单元,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元;(2)所述消息填充状态机按照算法流程,通过调用移位运算单元、异或运算单元、比较单元,硬件实现了SM3密码杂凑算法中的消息填充。

【技术特征摘要】
1.一种SM3密码杂凑算法中消息填充的硬件实现方法,其特征在于,包括如下步骤:(1)采用硬件描述语言构建消息填充状态机和和基本运算单元,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元;(2)所述消息填充状态机按照算法流程,通过调用移位运算单元、异或运算单元、比较单元,硬件实现了SM3密码杂凑算法中的消息填充。2.根据权利要求1所述的消息填充的硬件实现方法,其特征在于,所述硬件描述语言为Verilog。3.根据权利要求1所述的消息填充的硬件实现方法,其特征在于,所述消息填充的硬件实现方法的流程按照如下三个阶段进行实施:第一阶段:初始化赋值阶段,该阶段把相关消息赋值给寄存器u,v;第二阶段:第一次消息输入后的填充阶段,该阶段通过状态机来调用基本运算单元完成消息的填充,并根据是否有第二次消息输入来决定下一步的操作;第三阶段:第二次消息输入后的填充阶段,该阶段通过状态机来调用基本运算单元完成消息的填充,如果有第三次消息输入,则返回第二阶段,第三阶段输入此时可以等效于第一次消息输入。4.根据权利要求3所述的消息填充的硬件实现方法,其特征在于,所述的第一、第二、第三阶段按如下步骤实施:第一阶段:定义两个512比特的寄存器u和v,用来存储初始消息以及消息填充过程中的中间消息和处理完成的消息;定义每次输入消息的长度最多为256比特,如果超过256比特则分次输入,每次输入的消息长度...

【专利技术属性】
技术研发人员:李威赵周程筱舒王忆文
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川,51

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

1