CN108427575B - 全流水结构sha-2消息扩展优化方法 - Google Patents

全流水结构sha-2消息扩展优化方法 Download PDF

Info

Publication number
CN108427575B
CN108427575B CN201810102786.6A CN201810102786A CN108427575B CN 108427575 B CN108427575 B CN 108427575B CN 201810102786 A CN201810102786 A CN 201810102786A CN 108427575 B CN108427575 B CN 108427575B
Authority
CN
China
Prior art keywords
message
stage
pipeline
message word
sha
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.)
Active
Application number
CN201810102786.6A
Other languages
English (en)
Other versions
CN108427575A (zh
Inventor
张寅�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Anxin Intelligent Control Technology Co ltd
Original Assignee
Shenzhen Anxin Intelligent Control Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Anxin Intelligent Control Technology Co ltd filed Critical Shenzhen Anxin Intelligent Control Technology Co ltd
Priority to CN201810102786.6A priority Critical patent/CN108427575B/zh
Publication of CN108427575A publication Critical patent/CN108427575A/zh
Application granted granted Critical
Publication of CN108427575B publication Critical patent/CN108427575B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Image Processing (AREA)

Abstract

本发明涉及哈希算法领域,公开了一种全流水结构SHA‑2消息扩展优化方法,方法依据的全流水结构SHA‑2消息扩展结构包括64级流水线和设置在流水线上用来存放消息字W1~W64的寄存器组Wt1~Wt64,每个寄存器组包括若干个寄存器单元,通过延长消息字W1~W16的生命周期、压缩消息字W17~W64的生命周期及采用双消息字并行拓展器结构以调整消息字生产速率以改变其生命周期。本发明全流水结构SHA‑2消息扩展优化方法,当输入数据的长度固定,或者包含常数比特位,或者包含不频繁变化的比特位时,通过对消息扩展流水进行重新设计,在不增加硬件资源和关键路径的前提下,能够将所需寄存器单元数量大幅度减少,从而降低SHA‑224/256全流水结构硬件实现的成本及功耗。

Description

全流水结构SHA-2消息扩展优化方法
技术领域
本发明涉及哈希算法领域,具体涉及一种全流水结构SHA-2消息扩展优化方法。
背景技术
SHA-2哈希算法是由美国国家标准技术研究所(NIST)和美国安全局(NSA)在2002年公布的一种单向散列算法,它可以将任意长度的消息映射成具有固定长度的信息摘要,主要应用于数字签名、HMAC认证、密码保护、数据完整性验证以及网络安全协议等领域。SHA-2可以在通用型设备上采用软件实现,也可以采用专用设备通过硬件实现。其中,软件实现具有资源消耗少、易用性好以及便于移植等特点。但是,随着通信技术的发展,加密算法需要处理的数据量呈爆炸式增长。在很多应用场合中,单纯的SHA-2软件实现已经逐渐不能满足系统的速度要求。为了提高系统运行的效率,许多系统开始选择采用SHA-2的专用硬件设备。这时,针对高数据吞吐率SHA-2的硬件设计就显得至关重要。
目前,为了提高SHA-2硬件实现的数据吞吐率,主要采用的方法是使用流水结构并对压缩运算单元进行优化和改进。其中,针对压缩运算单元进行优化和改进方案主要有:采用进位保留加法器,以加快关键路径运算速度;对压缩运算单元进行展开,插入平衡寄存器,以提高算法工作频率;利用数据依赖关系,提前计算压缩运算中的部分内容,以减少关键路径等等。这些方案都能够有效的提高SHA-2的数据吞吐率,但是同时也均存在着不足之处,主要体现在:引入了结构复杂的控制单元或者增加了硬件资源的消耗;提升某一方面性能的同时牺牲其他方面的特性;无法与其他优化方案兼容或者对工艺要求较高等等。
而作为SHA-2哈希算法的重要组成部分,消息扩展结构则很少被研究。消息扩展的运算虽然不是SHA-2的关键路径,对于提升哈希吞吐率没有贡献。但是,在SHA-2采用流水结构时,完成消息扩展所需要的寄存器数量,大约是压缩部分所需要数量的两倍。占用更多的资源,意味着更高的成本与功耗。因此,研究如何减少SHA-2流水结构中消息扩展所需要的寄存器数量将具有重要意义。
以SHA-224/256为例,现有SHA-2的全流水结构,其消息扩展部分由48个扩展器和64级流水线的寄存器组组成。由于其48个扩展器都分布在流水扩展的前48级,这样前48级流水每级寄存器组的大小都将维持在16*32bits,在后16级流水中,由于只有压缩器会在每级消耗一个消息字,每级流水寄存器组的大小将逐级递减32bits。这样,可以计算出现有SHA-2的全流水结构所需要的总寄存器单元数量为:
Wttotal-regs=48×16×32+(16+15+...+1)×32=904×32bits
这里值得注意的是,在很多应用场景中,需要加密的输入数据M具有长度固定或者包含常数比特或者包含不频繁变换的比特的特点。此时,SHA-2的全流水结构可针对这些特殊的比特位,可以采用硬连线或者输入寄存器存储的方法减少寄存器单元所需要的数量。
当输入数据M长度固定时,根据SHA-2的填充规则,填充的内容可以被预测出来。并且该部分内容不会随着输入输入数据M的变化而变化。这时,可以使用硬连线将这部分内容连接到对应的‘1’电平或‘0’电平,从而减少寄存器单元的使用。当输入数据M长度固定为‘length’时,根据公式可计算SHA-2全流水结构中所需要总寄存器单元的数量:
Figure GDA0003483101740000021
同理,当输入数据M中包含常数比特时,同样可以采用硬连线的方法减少寄存器单元的数量。但此时,由于每个常数比特节省的寄存器数量与常数比特所属的“Wi”有关,并且常数比特是随机分布在W1~W16中的,故而上述公式在这里并不适用。通过观察寄存器组结构可以发现,在Wi中每个常数比特能节省的寄存器单元位数为i+1个,若将其记为LWi。同时将Wi中包含的常数比特记为Ni。这样,可计算出,当输入数据M中包含常数比特时,SHA-2全流水结构中所需要总寄存器单元数量:
Figure GDA0003483101740000031
对于输入数据M中包含不频繁变化的比特时,其状况与包含常数比特相比,只需要保留输入级的16个32-bit寄存器,并在新数据到来时等待16个周期后更新的W1~W16即可。此时,对于Wi而言,每个常数比特能节省的寄存器位数L′Wi等于i。在这种情况下,当Wi中包含Ni个常数比特时,SHA-2全流水结构中所需要总寄存器单元的数量可根据公式计算:
Figure GDA0003483101740000032
然而,对于这三种情况,在现有SHA-2全流水结构中所减少的寄存器数,对于SHA-224/256而言,只能占到总寄存器数的0%~15.1%。这样,完成消息扩展所需要的寄存器数量仍然是非常巨大的。为了解决这一问题,同时更全面的探讨SHA-2的硬件实现方法,在综合考虑数据吞吐率、实施成本、硬件功耗以及兼容性等方面的因素,提出了一种全流水结构SHA-2消息扩展优化方法。
发明内容
本发明的目的就是针对上述技术的不足,提供一种全流水结构SHA-2消息扩展优化方法,当输入数据的长度固定,或者包含常数比特位,或者包含不频繁变化的比特位时,通过对消息扩展流水进行重新设计,在不增加硬件资源和关键路径的前提下,能够将所需寄存器单元数量大幅度减少,从而降低SHA-224/256全流水结构硬件实现的成本及功耗。
为实现上述目的,本发明所设计的全流水结构SHA-2消息扩展优化方法依据的全流水结构SHA-2消息扩展结构包括64级流水线和设置在所述流水线上用来存放消息字W1~W64的寄存器组Wt1~Wt64,每个所述寄存器组包括若干个寄存器单元,所述方法包括如下步骤:
A)从外部输入数据M直接获取所述消息字W1~W16,并将所述消息字W1~W16输入所述寄存器组Wt1
B)在第1~16级流水线,所述消息字W1~W16从第1级流水线寄存器组Wt1中逐级传递至第16级流水线寄存器组Wt16中;
C)在第17~31级流水线,每级所述流水线均设有单消息字算子扩展器,第n级所述流水线对应的单消息字算子扩展器扩展第n级流水线对应压缩器所需要的消息字Wn,并将所述寄存器组Wtn中最早使用的一个消息字Wn-16排空,将所述消息字Wn存入所述寄存器组Wtn,然后寄存器组Wtn将存储的消息字Wn-15~Wn传递至第n+1级流水线的寄存器组Wtn+1
D)在第32~49级流水线,采用生成一个消息字的单消息字算子扩展器和生成两个消息字的双消息字算子扩展器并行拓展的结构,在第32~49级流水线共生成33个消息字,每级所述流水线对应的寄存器组写入该级流水线所生成的所有消息字,并排空与该级流水线对应的寄存器组中最早使用的消息字,排空的消息字数量与生成的消息字数量相等;
E)在第49~64级流水线,每级所述流水线消耗一个消息字,不再产生消息字,每级流水线对应的寄存器组逐级减少寄存器单元的数量。
优选地,所述步骤D)中,在第32~34级流水线,每级所述流水线均设有单消息字算子扩展器,在第35~49级流水线,每级所述流水线均设有双消息字算子扩展器。
本发明与现有技术相比,具有以下优点:
1、本发明在不增加任何额外的硬件资源、不增加任何关键路径的前提下,通过对SHA-2消息扩展结构的全流水结构进行重新设计,对消息字W1~W16采用逐级传递和逐个退出的方式以延长消息字W1~W16的生命周期,采用双消息字算子扩展器加速产生W17~W64的方式以压缩W17~W64的生命周期,能够在保证关键路径延时不变和总最大所需寄存器单元数目不变的前提下,扩大输入数据M在整个全流水结构的时间跨度,进而在对M中的常数比特或不频繁变化的比特采用硬连线或者一级输入缓存实现的方式时,能够减小最终实际所需的寄存器单元数量,对于SHA-224/256而言,所能减少寄存器比例最高为43.3%,大大降低SHA-224/256全流水结构硬件实现的成本及功耗;
2、本发明从结构上对SHA-2全流水结构进行优化与改进,能够直接替换现有的全流水结构,同时由于本方法不影响压缩部分的运行且对压缩部分没有特殊要求,可与其他针对关键路径的优化方案复合使用,不引入任何额外负面效应。
附图说明
图1为本发明全流水结构SHA-2消息扩展优化方法中第1~16级流水线的结构示意图;
图2为本发明全流水结构SHA-2消息扩展优化方法中第17~31级流水线的结构示意图;
图3为本发明全流水结构SHA-2消息扩展优化方法中第32~49级流水线的结构示意图;
图4为本发明全流水结构SHA-2消息扩展优化方法中第50~64级流水线的结构示意图;
图5为本发明全流水结构SHA-2消息扩展优化方法中现有流水结构与所提结构所需寄存器单元占原有总寄存器单元的比例对比。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的详细说明。
一种全流水结构SHA-2消息扩展优化方法,方法依据的全流水结构SHA-2消息扩展结构包括64级流水线和设置在流水线上用来存放消息字W1~W64的寄存器组Wt1~Wt64,每个寄存器组包括若干个寄存器单元,方法包括如下步骤:
A)从外部输入数据M直接获取消息字W1~W16,并将消息字W1~W16输入寄存器组Wt1
B)如图1所示,在第1~16级流水线,所述消息字W1~W16从第1级流水线寄存器组Wt1中逐级传递至第16级流水线寄存器组Wt16中,在该部分所消耗的寄存器单元数量为:
Nreg_IPS=16×16×32=256×32bits;
C)如图2所示,在第17~31级流水线,每级流水线均设有单消息字算子扩展器,第n级流水线对应的单消息字算子扩展器扩展第n级流水线对应压缩器所需要的消息字Wn,并将寄存器组Wtn中最早使用的一个消息字Wn-16排空,将消息字Wn存入寄存器组Wtn,然后寄存器组Wtn将存储的消息字Wn-15~Wn传递至第n+1级流水线的寄存器组Wtn+1,直至第31级流水线,消息字W1~W16全部杯排空,在该部分所消耗的寄存器单元数量为:
Nreg_NPS=15×16×32=240×32bits;
D)如图3所示,在第32~34级流水线,每级流水线均设有单消息字算子扩展器,在第35~49级流水线,每级流水线均设有双消息字算子扩展器,在第32~49级流水线共生成33个消息字,每级流水线对应的寄存器组写入该级流水线所生成的所有消息字,并排空与该级流水线对应的寄存器组中最早使用的消息字,排空的消息字数量与生成的消息字数量相等,在该部分所消耗的寄存器单元数量为:
Nreg_TSMP=18×16×32=288×32bits;
E)如图4所示,在第50~64级流水线,每级流水线消耗一个消息字,不再产生消息字,每级流水线对应的寄存器组逐级减少寄存器单元的数量,在该部分所消耗的寄存器单元数量为:
Nreg_OPS=(1+2+…+15)×32=120×32bits
综上,可以得到所提SHA-224/256完整的消息拓展流水结构,消耗的总寄存器单元数量为904*32bits。
同时可以得到,当输入数据M长度固定为L时,SHA-224/256全流水结构中消息字所需要总的寄存器单元数量为:
Figure GDA0003483101740000071
当输入数据M中包含常数比特或不频繁变化的比特时,LWi分别为i+1或i。此时,SHA-224/256全流水结构中消息字所需要总的寄存器单元数量为:
Figure GDA0003483101740000072
当输入数据M中包含的常数比特或不频繁变化的比特从消息字W1开始逐位递增时,现有流水结构与所提结构所需寄存器单元占原有总寄存器单元的比例对比如图5所示。

Claims (2)

1.一种全流水结构SHA-2消息扩展优化方法,所述方法依据的全流水结构SHA-2消息扩展结构包括64级流水线和设置在所述流水线上用来存放消息字W1~W64的寄存器组Wt1~Wt64,每个所述寄存器组包括若干个寄存器单元,其特征在于:所述方法包括如下步骤:
A)从外部输入数据M直接获取所述消息字W1~W16,并将所述消息字W1~W16输入所述寄存器组Wt1
B)在第1~16级流水线,所述消息字W1~W16从第1级流水线寄存器组Wt1中逐级传递至第16级流水线寄存器组Wt16中;
C)在第17~31级流水线,每级所述流水线均设有单消息字算子扩展器,第n级所述流水线对应的单消息字算子扩展器扩展第n级流水线对应压缩器所需要的消息字Wn,并将所述寄存器组Wtn中最早使用的一个消息字Wn-16排空,将所述消息字Wn存入所述寄存器组Wtn,然后寄存器组Wtn将存储的消息字Wn-15~Wn传递至第n+1级流水线的寄存器组Wtn+1
D)在第32~49级流水线,采用生成一个消息字的单消息字算子扩展器和生成两个消息字的双消息字算子扩展器并行拓展的结构,在第32~49级流水线共生成33个消息字,每级所述流水线对应的寄存器组写入该级流水线所生成的所有消息字,并排空与该级流水线对应的寄存器组中最早使用的消息字,排空的消息字数量与生成的消息字数量相等;
E)在第50~64级流水线,每级所述流水线消耗一个消息字,不再产生消息字,每级流水线对应的寄存器组逐级减少寄存器单元的数量。
2.根据权利要求1所述全流水结构SHA-2消息扩展优化方法,其特征在于:所述步骤D)中,在第32~34级流水线,每级所述流水线均设有单消息字算子扩展器,在第35~49级流水线,每级所述流水线均设有双消息字算子扩展器。
CN201810102786.6A 2018-02-01 2018-02-01 全流水结构sha-2消息扩展优化方法 Active CN108427575B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810102786.6A CN108427575B (zh) 2018-02-01 2018-02-01 全流水结构sha-2消息扩展优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810102786.6A CN108427575B (zh) 2018-02-01 2018-02-01 全流水结构sha-2消息扩展优化方法

Publications (2)

Publication Number Publication Date
CN108427575A CN108427575A (zh) 2018-08-21
CN108427575B true CN108427575B (zh) 2022-03-15

Family

ID=63156418

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810102786.6A Active CN108427575B (zh) 2018-02-01 2018-02-01 全流水结构sha-2消息扩展优化方法

Country Status (1)

Country Link
CN (1) CN108427575B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109936441B (zh) * 2019-01-28 2022-07-05 湖北大学 一种基于数据存储的流水sha256硬件实现方法
CN111488627B (zh) * 2020-04-13 2023-04-07 杭州德旺信息技术有限公司 一种安全散列算法的消息拓展电路
CN111612622B (zh) * 2020-05-20 2021-03-23 深圳比特微电子科技有限公司 用于执行散列算法的电路和方法
CN111651402A (zh) 2020-07-16 2020-09-11 深圳比特微电子科技有限公司 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机
CN114648319A (zh) * 2020-12-18 2022-06-21 深圳比特微电子科技有限公司 执行哈希算法的电路、计算芯片、加密货币矿机和方法
CN114978473B (zh) * 2022-05-07 2024-03-01 海光信息技术股份有限公司 一种sm3算法的处理方法、处理器、芯片及电子设备
CN116094691B (zh) * 2022-12-26 2023-11-03 声龙(新加坡)私人有限公司 基于工作量证明的数据处理方法、装置及芯片

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030004771A (ko) * 2001-07-06 2003-01-15 최준림 Sha-1에 사용되는 중간값 생성회로
JP2004240299A (ja) * 2003-02-07 2004-08-26 Matsushita Electric Ind Co Ltd ハッシュ関数処理装置
CN101399667A (zh) * 2007-09-29 2009-04-01 索尼(中国)有限公司 产生快速安全哈希函数的步函数装置和消息扩展方法
CN106100825A (zh) * 2016-05-31 2016-11-09 深圳市风云实业有限公司 基于fpga的高吞吐量sha‑1算法
CN106230581A (zh) * 2016-09-09 2016-12-14 杭州华为数字技术有限公司 Sm3消息处理方法和装置
CN107094369A (zh) * 2014-09-26 2017-08-25 英特尔公司 用于提供simd sm3密码散列函数的指令和逻辑
CN107579811A (zh) * 2017-07-28 2018-01-12 广州星海集成电路基地有限公司 一种基于sm3密码杂凑算法的硬件优化方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030004771A (ko) * 2001-07-06 2003-01-15 최준림 Sha-1에 사용되는 중간값 생성회로
JP2004240299A (ja) * 2003-02-07 2004-08-26 Matsushita Electric Ind Co Ltd ハッシュ関数処理装置
CN101399667A (zh) * 2007-09-29 2009-04-01 索尼(中国)有限公司 产生快速安全哈希函数的步函数装置和消息扩展方法
CN107094369A (zh) * 2014-09-26 2017-08-25 英特尔公司 用于提供simd sm3密码散列函数的指令和逻辑
CN106100825A (zh) * 2016-05-31 2016-11-09 深圳市风云实业有限公司 基于fpga的高吞吐量sha‑1算法
CN106230581A (zh) * 2016-09-09 2016-12-14 杭州华为数字技术有限公司 Sm3消息处理方法和装置
CN107579811A (zh) * 2017-07-28 2018-01-12 广州星海集成电路基地有限公司 一种基于sm3密码杂凑算法的硬件优化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
High performance SHA-2 core using the Round Pipelined Technique;Manoj D Rote 等;《2015 IEEE International Conference on Electronics, Computing and Communication Technologies》;20160121;第1-6页 *
SM3杂凑算法的流水线结构硬件实现;蔡冰清;《微电子学与计算机》;20150131;第32卷(第1期);第15-18页 *

Also Published As

Publication number Publication date
CN108427575A (zh) 2018-08-21

Similar Documents

Publication Publication Date Title
CN108427575B (zh) 全流水结构sha-2消息扩展优化方法
US7249255B2 (en) Apparatus and method for a hash processing system using multiple hash storage areas
CN105531713A (zh) 从单个数据缓冲器生成多个安全散列
US8024551B2 (en) Pipelined digital signal processor
CN108959168B (zh) 基于片上内存的sha512全流水电路及其实现方法
CN105335331A (zh) 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统
US10140458B2 (en) Parallelized authentication encoding
Blaner et al. IBM POWER7+ processor on-chip accelerators for cryptography and active memory expansion
CN102495980A (zh) 一种可动态重构的可信密码模块
Nguyen-Hoang et al. Implementation of a 32-Bit RISC-V Processor with Cryptography Accelerators on FPGA and ASIC
CN117240601B (zh) 加密处理方法、加密处理电路、处理终端及存储介质
CN101399667A (zh) 产生快速安全哈希函数的步函数装置和消息扩展方法
US8930681B2 (en) Enhancing performance by instruction interleaving and/or concurrent processing of multiple buffers
CN110034918B (zh) 一种sm4加速方法和装置
WO2024098613A1 (zh) 一种hmac算法处理系统、方法、设备及非易失性可读存储介质
Tillich et al. Boosting AES performance on a tiny processor core
CN115952517A (zh) 一种杂凑值计算方法及系统
JP2010107947A (ja) Shaアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置
CN104636276A (zh) 一种保护内存存储器数据机密性和完整性的方法
JP6961950B2 (ja) 格納方法、格納装置および格納プログラム
CN113630236A (zh) 一种sm3的数据加密方法及相关装置
JP2004004784A (ja) ハッシュ・アルゴリズムを実装するためのシステム及び方法
Wang et al. Optimized implementations of stream cipher ZUC-256 algorithm
EP3273357B1 (en) Dma controller, implementation method and computer storage medium
CN118233081B (zh) 一种基于neon指令集的国密sm2底层模乘优化方法

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