全流水结构SHA-2消息扩展优化方法与流程

文档序号:15204860发布日期:2018-08-21 07:32阅读:470来源:国知局

本发明涉及哈希算法领域,具体涉及一种全流水结构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全流水结构中所需要总寄存器单元的数量:

同理,当输入数据m中包含常数比特时,同样可以采用硬连线的方法减少寄存器单元的数量。但此时,由于每个常数比特节省的寄存器数量与常数比特所属的“wi”有关,并且常数比特是随机分布在w1~w16中的,故而上述公式在这里并不适用。通过观察寄存器组结构可以发现,在wi中每个常数比特能节省的寄存器单元位数为i+1个,若将其记为lwi。同时将wi中包含的常数比特记为ni。这样,可计算出,当输入数据m中包含常数比特时,sha-2全流水结构中所需要总寄存器单元数量:

对于输入数据m中包含不频繁变化的比特时,其状况与包含常数比特相比,只需要保留输入级的16个32-bit寄存器,并在新数据到来时等待16个周期后更新的w1~w16即可。此时,对于wi而言,每个常数比特能节省的寄存器位数l′wi等于i。在这种情况下,当wi中包含ni个常数比特时,sha-2全流水结构中所需要总寄存器单元的数量可根据公式计算:

然而,对于这三种情况,在现有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传递至下级流水线的寄存器组;

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传递至下级流水线的寄存器组,在该部分所消耗的寄存器单元数量为:

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=16×16×32=256×32bits;

d)如图3所示,在第32~34级流水线,每级流水线均设有单消息字算子扩展器,在第35~49级流水线,每级流水线均设有双消息字算子扩展器,在第32~49级流水线共生成33个消息字,每级流水线对应的寄存器组写入该级流水线所生成的所有消息字,并排空与该级流水线对应的寄存器组中与最早使用的消息字,排空的消息字数量与生成的消息字数量相等,在该部分所消耗的寄存器单元数量为:

nreg_tsmp=18×16×32=272×32bits;

e)如图4所示,在第50~64级流水线,每级流水线消耗一个消息字,不再产生消息字,每级流水线对应的寄存器组逐级减少寄存器单元的数量,在该部分所消耗的寄存器单元数量为:

nreg_ops=(1+2+…+15)×32=120×32bits

综上,可以得到所提sha-224/256完整的消息拓展流水结构,消耗的总寄存器单元数量为904*32bits。

同时可以得到,当输入数据m长度固定为l时,sha-224/256全流水结构中消息字所需要总的寄存器单元数量为:

当输入数据m中包含常数比特或不频繁变化的比特时,lwi分别为i+1或i。此时,sha-224/256全流水结构中消息字所需要总的寄存器单元数量为:

当输入数据m中包含的常数比特或不频繁变化的比特从消息字w1开始逐位递增时,现有流水结构与所提结构所需寄存器单元占原有总寄存器单元的比例对比如图5所示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1