CN110138542A - 一种sm3密码杂凑算法中消息填充的硬件实现方法 - Google Patents
一种sm3密码杂凑算法中消息填充的硬件实现方法 Download PDFInfo
- Publication number
- CN110138542A CN110138542A CN201910225840.0A CN201910225840A CN110138542A CN 110138542 A CN110138542 A CN 110138542A CN 201910225840 A CN201910225840 A CN 201910225840A CN 110138542 A CN110138542 A CN 110138542A
- Authority
- CN
- China
- Prior art keywords
- message
- time
- register
- filling
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于安全技术领域,提出一种SM3密码杂凑算法中消息填充的硬件实现方法。本方法采用硬件描述语言构建消息填充状态机和基本运算单元,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元,并且使用了乒乓操作完成数据的无缝缓冲与处理。本发明利用硬件处理速度快的特点,相比传统软件处理方法,减少了时间,并且模块利用率高,节省了硬件资源。
Description
技术领域
本发明属于安全技术领域,特别涉及一种SM3密码杂凑算法中消息填充的硬件实现方法。
背景技术
SM3密码杂凑算法是我国自主研制的一种哈希算法,可以把长度小于264的消息经过分组迭代后,转化成一个256比特的杂凑值。SM3密码杂凑算法适用于各种数字签名和消息验证,广泛应用于国内商用密码产品。
国家密码管理局于2010年12月公布的SM3密码杂凑算法中,制定了SM3密码杂凑算法的计算步骤和方法。
SM3密码杂凑算法的消息填充的步骤如下所示:
首先假设消息m的长度为k比特,k小于264。首先将比特“1”添加到消息的末尾,再添加n个“0”,n是满足k+1+n≡448mod 512的最小的非负整数。然后在最后再添加一个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)中的步骤进行填充,直到完成最后一次消息填充;
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (4)
1.一种SM3密码杂凑算法中消息填充的硬件实现方法,其特征在于,包括如下步骤:
(1)采用硬件描述语言构建消息填充状态机和和基本运算单元,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元;
(2)所述消息填充状态机按照算法流程,通过调用移位运算单元、异或运算单元、比较单元,硬件实现了SM3密码杂凑算法中的消息填充。
2.根据权利要求1所述的消息填充的硬件实现方法,其特征在于,所述硬件描述语言为Verilog。
3.根据权利要求1所述的消息填充的硬件实现方法,其特征在于,所述消息填充的硬件实现方法的流程按照如下三个阶段进行实施:
第一阶段:初始化赋值阶段,该阶段把相关消息赋值给寄存器u,v;
第二阶段:第一次消息输入后的填充阶段,该阶段通过状态机来调用基本运算单元完成消息的填充,并根据是否有第二次消息输入来决定下一步的操作;
第三阶段:第二次消息输入后的填充阶段,该阶段通过状态机来调用基本运算单元完成消息的填充,如果有第三次消息输入,则返回第二阶段,第三阶段输入此时可以等效于第一次消息输入。
4.根据权利要求3所述的消息填充的硬件实现方法,其特征在于,所述的第一、第二、第三阶段按如下步骤实施:
第一阶段:
定义两个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清零;第三次输入的消息可以看作第一次输入消息,重复第一阶段中的步骤进行填充,直到完成最后一次消息填充。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910225840.0A CN110138542A (zh) | 2019-03-25 | 2019-03-25 | 一种sm3密码杂凑算法中消息填充的硬件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910225840.0A CN110138542A (zh) | 2019-03-25 | 2019-03-25 | 一种sm3密码杂凑算法中消息填充的硬件实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110138542A true CN110138542A (zh) | 2019-08-16 |
Family
ID=67568907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910225840.0A Pending CN110138542A (zh) | 2019-03-25 | 2019-03-25 | 一种sm3密码杂凑算法中消息填充的硬件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110138542A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2890044A2 (en) * | 2013-12-27 | 2015-07-01 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US20170141914A1 (en) * | 2015-11-12 | 2017-05-18 | Intel Corporation | Hybrid sm3 and sha acceleration processors |
CN106817223A (zh) * | 2017-01-11 | 2017-06-09 | 电子科技大学 | 一种基于SoPC的动态可配置密钥认证系统 |
CN107579811A (zh) * | 2017-07-28 | 2018-01-12 | 广州星海集成电路基地有限公司 | 一种基于sm3密码杂凑算法的硬件优化方法 |
-
2019
- 2019-03-25 CN CN201910225840.0A patent/CN110138542A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2890044A2 (en) * | 2013-12-27 | 2015-07-01 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US20170141914A1 (en) * | 2015-11-12 | 2017-05-18 | Intel Corporation | Hybrid sm3 and sha acceleration processors |
CN106817223A (zh) * | 2017-01-11 | 2017-06-09 | 电子科技大学 | 一种基于SoPC的动态可配置密钥认证系统 |
CN107579811A (zh) * | 2017-07-28 | 2018-01-12 | 广州星海集成电路基地有限公司 | 一种基于sm3密码杂凑算法的硬件优化方法 |
Non-Patent Citations (4)
Title |
---|
AO TIANYONG ECT.: "A Compact Hardware Implementation of SM3", 《AUTHORIZED LICENSED USE LIMITED TO: NORTHEASTERN UNIVERSITY》 * |
于永鹏等: ""SM3算法高速ASIC设计及实现"", 《微电子学与计算机》 * |
刘宗斌等: "SM3哈希算法的硬件实现与研究", 《信息网络安全》 * |
武迪,徐同阁,王子钰,刘建伟: "集成消息填充的SM3算法硬件设计与实现", 《武汉大学学报》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104270247B (zh) | 适用于量子密码系统的高效泛Hash函数认证方法 | |
CN110198233B (zh) | 基于可信执行环境和有向无环图的区块链共识方法及系统 | |
WO2024078347A1 (zh) | 加速设备、计算系统及加速方法 | |
CN108052805B (zh) | 一种数据加解密方法和装置 | |
CN108959168B (zh) | 基于片上内存的sha512全流水电路及其实现方法 | |
CN108768656B (zh) | 一种基于哈希算法的数据校验方法 | |
CN106603222A (zh) | 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法 | |
CN109190413B (zh) | 一种基于fpga和md5加密的串行通信系统 | |
CN109145624A (zh) | 一种基于Hadoop平台的多混沌文本加密算法 | |
CN114221766A (zh) | 数据加密方法、解密方法及装置 | |
CN107612969B (zh) | 基于B-Tree布隆过滤器的云存储数据完整性审计方法 | |
CN113078996A (zh) | Sm4密码算法的fpga优化实现方法、系统及应用 | |
WO2024078428A1 (zh) | 加速设备、计算系统及加速方法 | |
CN101399667A (zh) | 产生快速安全哈希函数的步函数装置和消息扩展方法 | |
CN102546293B (zh) | 基于哈希比特串复用的高速网络流量网络地址测量方法 | |
CN113641664A (zh) | 一种适用于图式区块链的轻量化数据存储装置及方法 | |
CN110138542A (zh) | 一种sm3密码杂凑算法中消息填充的硬件实现方法 | |
CN115834062B (zh) | 一种用于数据托管服务的企业数据传输加密方法 | |
CN105930104B (zh) | 数据存储方法和装置 | |
CN107612891A (zh) | 一种数据压缩加密电路 | |
CN100449986C (zh) | 一种提高键入-散列法运算速度的方法 | |
CN103942106B (zh) | 一种分布式加密方法 | |
CN110336658A (zh) | 基于aes算法的加密方法、用户设备、存储介质及装置 | |
CN116318660A (zh) | 一种消息扩展与压缩方法及相关装置 | |
CN112104449B (zh) | 一种用于哈希算法的sdk |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190816 |