CN112202546A - Sm3密码杂凑算法消息扩展串行优化系统与方法 - Google Patents
Sm3密码杂凑算法消息扩展串行优化系统与方法 Download PDFInfo
- Publication number
- CN112202546A CN112202546A CN202011057950.XA CN202011057950A CN112202546A CN 112202546 A CN112202546 A CN 112202546A CN 202011057950 A CN202011057950 A CN 202011057950A CN 112202546 A CN112202546 A CN 112202546A
- Authority
- CN
- China
- Prior art keywords
- address
- cryptographic hash
- hash algorithm
- special register
- fixed
- 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.)
- Granted
Links
Images
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
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种SM3密码杂凑算法消息扩展串行优化系统与方法,该系统包括固定存储区域、第一专用寄存器、第二专用寄存器及运算单元;所述的第一专用寄存器、第二专用寄存器可对固定存储区域进行读写操作,运算单元对第一专用寄存器、第二专用寄存器的数值进行运算处理。本发明具有使用寄存器少、功耗消耗低等特点。同时可以缩短运算时间及减少实现面积,即缩减运算轮数以及减少存储器的使用。
Description
技术领域
本发明涉及信息安全技术领域,具体涉及一种国密SM3密码杂凑算法中对消息扩展的串行优化方法与系统。
背景技术
作为应用最广泛的一类密码算法,密码杂凑(Hash)函数在生产生活中扮演了极其重要的角色,主要应用在对数据进行杂凑运算、数字签名以及消息认证码等许多安全领域,是密码实施、安全协议的重要组成部分。国内外常用的密码杂凑函数有美国国家标准与技术研究所(NIST)发布的SHA-1算法、SHA-2系列算法、SHA-3算法以及国内的SM3密码杂凑算法等。由于杂凑函数密码经常使用在涉及到大量数据处理的场景中,因此对实现的速度及面积、功耗有着很高的要求。
SM3由国家密码管理局于2010年12月17日发布并公开。相关标准为“GM/T 0004-2012《SM3密码杂凑算法》”。在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当。SM3也是目前中国商用密码标准体系中唯一的密码杂凑函数,是SM2公钥密码算法、SSL VPN协议等商用密码标准中的关键组成部分。但现有的国密SM3密码杂凑算法需要大量的中间存储值、运算效率低。现有国密SM3密码杂凑算法的实现过程中,通常会采用大量寄存器或存储单元,对消息扩展运算过程中产生的W0-W67,W0’-W63‘进行预计算存储,这样会导致大量寄存器或存储单元利用率低下的问题。本申请从提高存储空间利用率角度出发,将压缩函数中的循环与消息扩展运算有机结合,实现“现用现算,不用不占”的存储方案。并将使用到的存储单元与专用寄存器数量压缩到最小。
发明内容
本发明涉及一种国密SM3密码杂凑算法中对消息扩展的串行优化系统与方法。该方法通过采用固定存储器与专用寄存器结合的存储方式,对SM3密码杂凑算法中的消息扩展过程中的Wj和Wj’进行串行化运算。
SM3密码杂凑算法消息扩展串行优化系统,包括固定存储区域、第一专用寄存器、第二专用寄存器及运算单元;所述的第一专用寄存器、第二专用寄存器可对固定存储区域进行读写操作,运算单元对第一专用寄存器、第二专用寄存器的数值进行运算处理。
存储区域可定义为非易失性存储器((Non-Volatile Memory,NVM)或寄存器,亦或为软件实现时的全局变量、局部变量,以下简称为固定存储区域,第一专用寄存器、第二专用寄存器及为32位寄存器,每个地址的存储单元为32比特,运算单元用于实现“”异或运算及“<<<”循环左移运算。
优选的,所述的固定存储区域分为两部分,第一部分包含16个存储单元,地址编号为0-15,用来对初始消息分组B划分出来的16个字W0至W15以及后续64轮运算中产生的W16至W67、W′0至W′63中间值进行存储;第一部分包含2个存储单元,地址编号为16和17,用来存储后续压缩函数步骤中TT1和TT2所分别用到的W′j和Wj,即运算结果。
SM3密码杂凑算法消息扩展串行优化方法,包括如下步骤:
步骤一、将消息分组B划分的16个字W0至W15按照地址顺序写入固定存储区域地址编号为0-15的16个存储单元;
步骤二、在64轮压缩函数的循环中,分为两路进行计算,一路为W′j的计算,从W′0开始,另一路为Wj的计算,从W16开始;根据SM3密码杂凑算法协议,
将计算得到的W′j写回TT1地址的固定存储单元;将计算得到的Wj写回TT2地址的固定存储单元。
本发明中的方法与结构通过对运算的串行化处理,可极大的减少对中间值的存储,其原理为利用循环中的迭代特性,以达到对存储区域的复用。另外通过本发明中的方法,可将原本67轮的循环迭代缩减至64轮。因此本方法可极大的提高运算效率,减小实现面积,广泛适用于使用SM3密码杂凑算法参与的软件或硬件环境中,尤其是对功耗和实现面积有要求的金融IC智能卡及可信计算中的可信密码模块(Trusted Cryptography Module,TCM)和可信平台控制模块(Trusted Platform Control Model,TPCM)。
本发明具有使用寄存器少、功耗消耗低等特点。同时可以缩短运算时间及减少实现面积,即缩减运算轮数以及减少存储器的使用。
附图说明
图1为SM3密码杂凑算法消息扩展串行优化系统总体架构图;
图2为SM3密码杂凑算法消息扩展串行优化系统存储单元地址映射图。
NVM/Register:固定存储单元。
0_00:固定存储单元的地址。
ALU:运算单元。
<<<:循环左移运算。
Reg1:第一专用寄存器。
Reg2:第二专用寄存器。
具体实施方式
在SM3密码杂凑算法中,消息扩展按照如下定义:将消息分组B(i)按以下方法扩展生成132个字W0,W1,…W67,W’0,W’1,…W’63,用于压缩函数CF:
A)将消息分组B(i)划分为16个字W0,W1,…W15。
For j=16 To 67
B)End For
For j=0 To 63
C)End For
其中,符号及字符释义为:
B(i):第i个消息分组
CF:压缩函数
字(word):长度为32的比特串
式中的X为字
<<<k:循环左移k比特运算
根据以上定义,通常在对SM3密码杂凑算法进行实现的过程中,需要先计算16-67轮的Wj需要52轮运算,再计算W’j需要64轮运算。另外,需要使用132个字的存储器对W0,W1,…W67,W’0,W’1,…W’63计算结果进行存储,运算轮数太多导致运算时间太长,对结果数据的存储导致实现面积过大。
本发明涉及一种国密SM3密码杂凑算法中对消息扩展的串行优化系统与方法。该方法通过采用固定存储器与专用寄存器结合的存储方式,对SM3密码杂凑算法中的消息扩展过程中的Wj和Wj’进行串行化运算。
如图1所示,SM3密码杂凑算法消息扩展串行优化系统,包括固定存储区域、第一专用寄存器、第二专用寄存器及运算单元;所述的第一专用寄存器、第二专用寄存器可对固定存储区域进行读写操作,运算单元对第一专用寄存器、第二专用寄存器的数值进行异或运算及左移运算。
所述的固定存储区域分为两部分,18个存储单元,第一部分包含16个存储单元,地址编号为0-15,用来对初始消息分组B划分出来的16个字W0至W15以及后续64轮运算中产生的W16至W67、W′0至W′63中间值进行存储;第一部分包含2个存储单元,地址编号为16和17,用来存储后续压缩函数步骤中TT1和TT2所分别用到的W′j和Wj,即运算结果。
SM3密码杂凑算法消息扩展串行优化系统进行优化的方法,包括如下步骤:
步骤一、将消息分组B划分的16个字W0至W15按照地址顺序写入固定存储区域地址编号为0-15的16个存储单元;
步骤二、在64轮压缩函数的循环中,分为两路进行计算,一路为W′j的计算,从W′0开始,另一路为Wj的计算,从W16开始;根据SM3密码杂凑算法协议,
将计算得到的W′j写回TT1地址的固定存储单元;将计算得到的Wj写回TT2地址的固定存储单元。
进一步,所述步骤二中计算W′j的具体过程为:从地址为rd_addr′1存储单元中读取Wj到第一专用寄存器Reg1,从地址为rd_addr′2存储单元中读取Wj+4到第二专用寄存器Reg2,然后由Reg1和Reg2进行相异或操作,得到的结果W’j写回TT1地址的固定存储单元。
W’j计算过程如下:
(1)reg1=Wj
(2)reg2=Wj+4
(4)W’j←TT1
进一步,所述步骤二中计算Wj的具体过程为:
(2)从地址为rd_addr(Wj-3)读取Wj-3的值到Reg1并进行循环移位操作后,与TT2地址的值进行异或操作,得到的结果写回TT2地址的存储单元中;
(4)从地址为rd_addr(Wj-13)、rd_addr(Wj-6)的存储单元分别读取Wj-13、Wj-6的值到Reg1和Reg2,运算结果与TT2地址数据进行异或,得到结果即为Wj并写回TT2地址的存储单元中。
Wj计算过程如下:
(1)reg1=Wj-16
(2)reg2=Wj-9
(4)reg1=Wj-3<<<15
(5)reg2=TT2
(7)reg1=TT2<<<15
(8)reg1=TT2<<<23
(8)reg1=Wj-13<<<7
(10)reg1=Wj-6
(12)Wj←TT2
对Wj和W’j的计算进行进一步说明,如图2所示,本发明中,由于在开始循环计算W’j时,Wj从W16开始计算,这样在后面计算W’j用到W16-W67时,W16-W67的计算结果已经写入固定存储单元中了,因此本发明将原本整体需要116轮的运算缩减至64轮。
进一步,所述64轮压缩函数循环中,将循环分为四个阶段进行计算:
(1)一阶段为j=0-15,计算W’0-W’15,每个计算结果保存在固定存储区域的TT1地址单元中;计算W16-W31,每个计算结果保存在固定存储区域的0_00-0_0F地址单元中;需要注意的是,在j=12时,里面所用到的W16在j=0时已经计算完毕并保存在地址为0_00的固定存储单元中。
(2)二阶段为j=16-31,计算W’16-W’31,每个计算结果保存在固定存储区域的TT1地址单元中;计算W32-W47,每个计算结果保存在固定存储区域的0_00-0_0F地址单元中;
(3)三阶段为j=32-47,计算W’32-W’47,每个计算结果保存在固定存储区域的TT1地址单元中;计算W48-W63,每个计算结果保存在固定存储区域的0_00-0_0F地址单元中;
(4)四阶段为j=48-63,计算W’48-W’63,每个计算结果保存在固定存储区域的TT1地址单元中;计算W64-W67,每个计算结果保存在固定存储区域的0_00-0_03地址单元中。
最终完成64轮运算过后,结束计算,完成消息扩展过程。
根据以上描述,这样就把本应116轮计算的消息扩展步骤,缩减为64轮运算,大大减少运算的时间与功耗。
Claims (8)
1.SM3密码杂凑算法消息扩展串行优化系统,其特征在于:包括固定存储区域、第一专用寄存器、第二专用寄存器及运算单元;所述的第一专用寄存器、第二专用寄存器可对固定存储区域进行读写操作,运算单元对第一专用寄存器、第二专用寄存器的数值进行运算处理。
2.根据权利要求1所述的SM3密码杂凑算法消息扩展串行优化系统,其特征在于:所述的固定存储区域包含18个存储单元。
3.根据权利要求1所述的SM3密码杂凑算法消息扩展串行优化系统,其特征在于:所述的运算单元用于实现异或运算及循环左移运算。
4.根据权利要求2所述的SM3密码杂凑算法消息扩展串行优化系统,其特征在于:所述的固定存储区域分为两部分,第一部分包含16个存储单元,地址编号为0-15,用来对初始消息分组B划分出来的16个字W0至W15以及后续64轮运算中产生的W16至W67、W′0至W′63中间值进行存储;第一部分包含2个存储单元,地址编号为16和17,用来存储后续压缩函数步骤中TT1和TT2所分别用到的W'j和Wj,即运算结果。
6.根据权利要求5所述的SM3密码杂凑算法消息扩展串行优化方法,其特征在于,所述步骤二中计算W'j的具体过程为:从地址为rd_addr1'存储单元中读取Wj到第一专用寄存器Reg1,从地址为rd_addr'2存储单元中读取Wj+4到第二专用寄存器Reg2,然后由Reg1和Reg2进行相异或操作,得到的结果W'j写回TT1地址的固定存储单元。
7.根据权利要求5所述的SM3密码杂凑算法消息扩展串行优化方法,其特征在于,所述步骤二中计算Wj的具体过程为:
(2)从地址为rd_addr(Wj-3)读取Wj-3的值到Reg1并进行循环移位操作后,与TT2地址的值进行异或操作,得到的结果写回TT2地址的存储单元中;
(4)从地址为rd_addr(Wj-13)、rd_addr(Wj-6)的存储单元分别读取Wj-13、Wj-6的值到Reg1和Reg2,运算结果与TT2地址数据进行异或,得到结果即为Wj并写回TT2地址的存储单元中。
8.根据权利要求5所述的SM3密码杂凑算法消息扩展串行优化方法,其特征在于,所述64轮压缩函数循环中,将循环分为四个阶段进行计算:
(1)一阶段为j=0-15,计算W’0-W’15,每个计算结果保存在固定存储区域的TT1地址单元中;计算W16-W31,每个计算结果保存在固定存储区域的0_00-0_0F地址单元中;
(2)二阶段为j=16-31,计算W’16-W’31,每个计算结果保存在固定存储区域的TT1地址单元中;计算W32-W47,每个计算结果保存在固定存储区域的0_00-0_0F地址单元中;
(3)三阶段为j=32-47,计算W’32-W’47,每个计算结果保存在固定存储区域的TT1地址单元中;计算W48-W63,每个计算结果保存在固定存储区域的0_00-0_0F地址单元中;
(4)四阶段为j=48-63,计算W’48-W’63,每个计算结果保存在固定存储区域的TT1地址单元中;计算W64-W67,每个计算结果保存在固定存储区域的0_00-0_03地址单元中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011057950.XA CN112202546B (zh) | 2020-09-29 | 2020-09-29 | Sm3密码杂凑算法消息扩展串行优化系统与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011057950.XA CN112202546B (zh) | 2020-09-29 | 2020-09-29 | Sm3密码杂凑算法消息扩展串行优化系统与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112202546A true CN112202546A (zh) | 2021-01-08 |
CN112202546B CN112202546B (zh) | 2023-06-23 |
Family
ID=74007116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011057950.XA Active CN112202546B (zh) | 2020-09-29 | 2020-09-29 | Sm3密码杂凑算法消息扩展串行优化系统与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112202546B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113300829A (zh) * | 2021-05-20 | 2021-08-24 | 深圳智微电子科技有限公司 | Sm3算法的硬件实现装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230581A (zh) * | 2016-09-09 | 2016-12-14 | 杭州华为数字技术有限公司 | Sm3消息处理方法和装置 |
CN106603222A (zh) * | 2016-09-27 | 2017-04-26 | 江冠成 | 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法 |
CN106850189A (zh) * | 2017-02-10 | 2017-06-13 | 广东工业大学 | 一种减少sm3密码杂凑算法中运算量的方法及装置 |
CN107579811A (zh) * | 2017-07-28 | 2018-01-12 | 广州星海集成电路基地有限公司 | 一种基于sm3密码杂凑算法的硬件优化方法 |
CN108768620A (zh) * | 2018-03-26 | 2018-11-06 | 海光信息技术有限公司 | 一种数据处理方法及装置 |
CN110086602A (zh) * | 2019-04-16 | 2019-08-02 | 上海交通大学 | 基于gpu的sm3密码散列算法的快速实现方法 |
-
2020
- 2020-09-29 CN CN202011057950.XA patent/CN112202546B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230581A (zh) * | 2016-09-09 | 2016-12-14 | 杭州华为数字技术有限公司 | Sm3消息处理方法和装置 |
CN106603222A (zh) * | 2016-09-27 | 2017-04-26 | 江冠成 | 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法 |
CN106850189A (zh) * | 2017-02-10 | 2017-06-13 | 广东工业大学 | 一种减少sm3密码杂凑算法中运算量的方法及装置 |
CN107579811A (zh) * | 2017-07-28 | 2018-01-12 | 广州星海集成电路基地有限公司 | 一种基于sm3密码杂凑算法的硬件优化方法 |
CN108768620A (zh) * | 2018-03-26 | 2018-11-06 | 海光信息技术有限公司 | 一种数据处理方法及装置 |
CN110086602A (zh) * | 2019-04-16 | 2019-08-02 | 上海交通大学 | 基于gpu的sm3密码散列算法的快速实现方法 |
Non-Patent Citations (2)
Title |
---|
刘恒等: "多种哈希算法的可重构硬件架构设计", 《计算机工程与科学》 * |
苗佳: "《杂凑算法SM3/SHA256/SHA3的硬件设计与实现》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113300829A (zh) * | 2021-05-20 | 2021-08-24 | 深圳智微电子科技有限公司 | Sm3算法的硬件实现装置 |
CN113300829B (zh) * | 2021-05-20 | 2023-06-09 | 深圳智微电子科技有限公司 | Sm3算法的硬件实现装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112202546B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11218320B2 (en) | Accelerators for post-quantum cryptography secure hash-based signing and verification | |
US11841981B2 (en) | Low cost cryptographic accelerator | |
CN101149709B (zh) | 存储卡的加密处理器和使用其进行数据读写的方法 | |
US20160112200A1 (en) | Cryptographic hashing circuitry having improved scheduling efficiency | |
CN112202547B (zh) | 一种轻量级分组密码gfcs实现方法、装置及可读存储介质 | |
US10536264B2 (en) | Efficient cryptographically secure control flow integrity protection | |
US10146701B2 (en) | Address-dependent key generation with a substitution-permutation network | |
US20120288089A1 (en) | System and method for device dependent and rate limited key generation | |
US20220006611A1 (en) | Side-channel robust incomplete number theoretic transform for crystal kyber | |
US8184804B2 (en) | Hash function using a piling-up process | |
US20190319802A1 (en) | Parallel processing techniques for hash-based signature algorithms | |
US20120166773A1 (en) | Hash processing using a processor | |
US11899829B2 (en) | Memory systems and devices including examples of generating access codes for memory regions using authentication logic | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
US11704297B2 (en) | Collision-free hashing for accessing cryptographic computing metadata and for cache expansion | |
US9602281B2 (en) | Parallelizable cipher construction | |
Cao et al. | An efficient full hardware implementation of extended Merkle signature scheme | |
CN112202546B (zh) | Sm3密码杂凑算法消息扩展串行优化系统与方法 | |
Têtu et al. | A standalone FPGA-Based miner for Lyra2REv2 cryptocurrencies | |
CN103246494A (zh) | 一种抵抗能量分析和错误攻击的安全模幂计算方法 | |
CN110034918B (zh) | 一种sm4加速方法和装置 | |
CN112054889B (zh) | 消息认证码的生成方法及生成装置、计算机可读存储介质 | |
WO2023000577A1 (zh) | 一种数据压缩方法、装置及电子设备和存储介质 | |
WO2023107775A1 (en) | Computation of xmss signature with limited runtime storage | |
CN114826560A (zh) | 一种轻量级分组密码cref实现方法及系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |