当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于处理SHA-2安全散列算法的方法和设备技术

技术编号:25050802 阅读:31 留言:0更新日期:2020-07-29 05:39
本发明专利技术涉及用于处理SHA‑2安全散列算法的方法和设备。一种处理器包括指令解码器,用于接收第一指令以处理安全散列算法2(SHA‑2)散列算法,第一指令具有与存储SHA‑2状态的第一存储位置相关联的第一操作数以及与存储多个消息和轮常数相关联的第二存储位置相关联的第二操作数。处理器还包括耦合到所述指令解码器的执行单元,用于对所述第一操作数指定的SHA‑2状态和所述第二操作数指定的多个消息和轮常数执行SHA‑2散列算法的一次或多次迭代。

【技术实现步骤摘要】
用于处理SHA-2安全散列算法的方法和设备本申请是针对分案申请201710073658.9再次提出的分案申请。分案申请201710073658.9是PCT国际申请号为PCT/US2012/031632、国际申请日为2012年3月30日、进入中国国家阶段的申请号为201280072066.0,题为“用于处理SHA-2安全散列算法的方法和设备”的申请的分案申请。
本专利技术的各实施例一般涉及指令处理设备。更具体而言,本专利技术的各实施例涉及处理SHA-2安全散列算法的指令处理设备。
技术介绍
SHA代表安全散列算法。它包括由国家安全局(NSA)设计且由国家标准和技术局(NIST)公布的五个散列函数。其中之一是SHA-2。SHA-2是一组安全散列函数,包括由NSA开发的SHA224、SHA256、SHA384和SHA512,旨在提供比SHA-1更高级别的安全性。SHA224和SHA256是基于32位字长度的类似算法,产生224和256位的摘要(digest)。SHA384和SHA512基于64位字且产生384和512位的摘要。SHA-2算法在计算上比SHA1更复杂,依赖于进位传播加法(propagateaddition)以及逻辑操作和循环移位(rotate)。用于一轮SHA-2操作的关键路径包括四个连续的传播加法,且加法器输入由复杂逻辑和循环移位函数确定。图1描述SHA-2算法的细节。A,B,C,D,E,F,G和H表示8个状态字(对于SHA224/256为32位,且对于SHA384/512为64位)。对于每次迭代执行以下的操作:对于SHA-512,按位的循环移位(bitwiserotation)使用不同的常数。在该示例中,给定的数用于SHA-256。可在该轮关键路径之前执行常数K加Wi消息输入加法。SHA-2算法的消息调度函数也比SHA-1更复杂,依赖于先前的消息输入的经循环移位的复本以形成消息输入:对于i从16至63s0:=(w[i-15]ROTR7)XOR(w[i-15]ROTR18)XOR(w[i-15]SHR3)s1:=(w[i-2]ROTR17)XOR(w[i-2]ROTR19)XOR(w[i-2]SHR10)w[i]:=w[i-16]+s0+w[i-7]+s1其中ROTR(也用作“>>>”)指示按位的循环右移(right-rotate)操作符,SHR指示按位的向右移位(right-shift)操作符,且XOR指示按位的异或操作符。对于SHA-256,如下地执行每次迭代:Σ0:=(aROTR2)XOR(aROTR13)XOR(aROTR22)maj:=(aANDb)XOR(aANDc)XOR(bANDc)t2:=Σ0+majΣ1:=(eROTR6)XOR(eROTR11)XOR(eROTR25)ch:=(eANDf)XOR((NOTe)ANDg)t1:=h+Σ1+ch+k[i]+w[i]h:=gg:=ff:=ee:=d+t1d:=cc:=bb:=aa:=t1+t2对于轮1至16,消息输入w[i]是32位x16=512位数据块。对于轮17至64的W[i]必须被导出。对于每一轮指定常数K,可在实际的轮迭代之前计算每轮的W[i]+K[i]值。可在FederalInformationProcessingStandardPublication(联邦信息处理标准公布)出版的安全散列标准(FIPSPUB180-3,2008年10月出版)中找到关于SHA-2规范的更详细的信息。使用标准指令的常规软件方案需要单独的指令用于实现诸如SHA256算法之类的SHA-2的轮和调度函数所需的每个加法和逻辑移位/循环移位指令。当前的用于SHA256的行业基准数据是每字节范围15个循环。SHA256的标准之类实现的限制潜在地接近每字节范围9个循环。缺少执行以上操作的有效方式。附图说明本专利技术的各实施例是作为示例说明的,而不仅限于各个附图的图形,在附图中,类似的参考编号表示类似的元件。图1描述SHA-2算法的细节。图2是根据本专利技术的一个实施例的处理器或处理器核心的执行流水线的框图。图3是示出根据一个实施例的SHA-2操作的框图。图4是示出根据一个实施例的SHA-256轮操作的过程的框图。图5是示出根据一个实施例执行SHA-2轮操作的方法的流程图。图6是示出根据一个实施例执行SHA-2消息调度操作的方法的流程图。图7是示出根据另一个实施例执行SHA-2消息调度操作的方法的流程图。图8A-8C是示出根据一个实施例的SHA-256轮操作的过程的伪代码。图9A示出根据本专利技术的一个实施例的示例性高级向量扩展(AVX)指令格式。图9B示出根据本专利技术的另一个实施例的示例性高级向量扩展(AVX)指令格式。图9C示出根据本专利技术的另一个实施例的示例性高级向量扩展(AVX)指令格式。图10A是示出根据本专利技术的实施例的通用向量友好指令格式及其A类指令模板的方框图。图10B是示出根据本专利技术的实施例的通用向量友好指令格式及其B类指令模板的方框图。图11A是示出根据本专利技术的一个实施例的示例性专用向量友好指令格式的框图。图11B是示出根据本专利技术的另一个实施例的通用向量友好指令格式的框图。图11C是示出根据本专利技术的另一个实施例的通用向量友好指令格式的框图。图11D是示出根据本专利技术的另一个实施例的通用向量友好指令格式的框图。图12是根据本专利技术的一个实施例的寄存器架构的框图。图13A是示出根据本专利技术的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图13B是示出根据本专利技术的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的方框图。图14A是根据本专利技术的一个实施例的处理器核的框图。图14B是根据本专利技术的另一个实施例的处理器核的框图。图15是根据本专利技术的实施例的处理器的框图。图16是根据本专利技术一个实施例的系统的框图。图17是根据本专利技术的实施例的更具体的示例性系统的框图。图18是根据本专利技术的另一个实施例的更具体的示例性系统的框图。图19是根据本专利技术的实施例的SoC的框图。图20是根据本专利技术的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。各实施例的描述下面将参考下面所讨论的细节来描述本专利技术的各实施例并各方面,各个附图将示出各实施例。下面的描述和图形只是本专利技术的说明,而不作为对本专利技术的限制。描述了很多具体细节,以便全面地理解本专利技术的各实施例。然而,在某些实例中,没有描述已知的或常规的细节,以便提供本文档来自技高网...

【技术保护点】
1.一种处理器,包括:/n多个128位单指令多数据SIMD寄存器;/n解码单元,用于解码指令,所述指令包括:用于执行消息调度的第一部分的第一安全散列算法SHA 256消息调度指令,用于在所述消息调度的所述第一部分之后执行所述消息调度的第二部分的第二SHA 256消息调度指令,以及用于执行与两个SHA 256轮相关联的操作的SHA 256两轮指令,/n所述第一SHA 256消息调度指令用于将所述多个128位SIMD寄存器中的第一128位SIMD寄存器指示为第一操作数的源,并且用于将所述多个128位SIMD寄存器中的第二128位SIMD寄存器和存储器位置中的任一个指示为第二操作数的源,所述第一操作数用于包括位[31:0]中的第一32位数据元素、位[63:32]中的第二32位数据元素、位[95:64]中的第三32位数据元素和位[127:96]中的第四32位数据元素,所述第二操作数用于包括位[31:0]中的第五32位数据元素、位[63:32]中的第六32位数据元素、位[95:64]中的第七32位数据元素和位[127:96]中的第八32位数据元素;以及/n执行单元,与所述解码单元耦合,并且与所述多个128位SIMD寄存器耦合,所述执行单元用于执行所述第一SHA 256调度指令以:/n生成结果,所述结果用于包括:/n第一32位结果数据元素,等于以下各项的和:a)所述第一32位数据元素;以及b)等于循环右移七位的所述第二32位数据元素、并且与循环右移十八位的所述第二32位数据元素异或、并且与向右移位三位的所述第二32位数据元素异或的值;/n第二32位结果数据元素,等于以下各项的和:a)所述第二32位数据元素;以及b)等于循环右移七位的所述第三32位数据元素、并且与循环右移十八位的所述第三32位数据元素异或、并且与向右移位三位的所述第三32位数据元素异或的值;/n第三32位结果数据元素,等于以下各项的和:a)所述第三32位数据元素;以及b)等于循环右移七位的所述第四32位数据元素、并且与循环右移十八位的所述第四32位数据元素异或、并且与向右移位三位的所述第四32位数据元素异或的值;以及/n第四32位结果数据元素,等于以下各项的和:a)所述第四32位数据元素;以及b)等于循环右移七位的所述第五32位数据元素、并且与循环右移十八位的所述第五32位数据元素异或、并且与向右移位三位的所述第五32位数据元素异或的值;以及/n将所述结果存储在所述第一128位SIMD寄存器中,其中所述第一32位结果数据元素存储在位[31:0]中、所述第二32位结果数据元素存储在位[63:32]中、所述第三32位结果数据元素存储在位[95:64]中、并且所述第四32位结果数据元素存储在位[127:96]中。/n...

【技术特征摘要】
1.一种处理器,包括:
多个128位单指令多数据SIMD寄存器;
解码单元,用于解码指令,所述指令包括:用于执行消息调度的第一部分的第一安全散列算法SHA256消息调度指令,用于在所述消息调度的所述第一部分之后执行所述消息调度的第二部分的第二SHA256消息调度指令,以及用于执行与两个SHA256轮相关联的操作的SHA256两轮指令,
所述第一SHA256消息调度指令用于将所述多个128位SIMD寄存器中的第一128位SIMD寄存器指示为第一操作数的源,并且用于将所述多个128位SIMD寄存器中的第二128位SIMD寄存器和存储器位置中的任一个指示为第二操作数的源,所述第一操作数用于包括位[31:0]中的第一32位数据元素、位[63:32]中的第二32位数据元素、位[95:64]中的第三32位数据元素和位[127:96]中的第四32位数据元素,所述第二操作数用于包括位[31:0]中的第五32位数据元素、位[63:32]中的第六32位数据元素、位[95:64]中的第七32位数据元素和位[127:96]中的第八32位数据元素;以及
执行单元,与所述解码单元耦合,并且与所述多个128位SIMD寄存器耦合,所述执行单元用于执行所述第一SHA256调度指令以:
生成结果,所述结果用于包括:
第一32位结果数据元素,等于以下各项的和:a)所述第一32位数据元素;以及b)等于循环右移七位的所述第二32位数据元素、并且与循环右移十八位的所述第二32位数据元素异或、并且与向右移位三位的所述第二32位数据元素异或的值;
第二32位结果数据元素,等于以下各项的和:a)所述第二32位数据元素;以及b)等于循环右移七位的所述第三32位数据元素、并且与循环右移十八位的所述第三32位数据元素异或、并且与向右移位三位的所述第三32位数据元素异或的值;
第三32位结果数据元素,等于以下各项的和:a)所述第三32位数据元素;以及b)等于循环右移七位的所述第四32位数据元素、并且与循环右移十八位的所述第四32位数据元素异或、并且与向右移位三位的所述第四32位数据元素异或的值;以及
第四32位结果数据元素,等于以下各项的和:a)所述第四32位数据元素;以及b)等于循环右移七位的所述第五32位数据元素、并且与循环右移十八位的所述第五32位数据元素异或、并且与向右移位三位的所述第五32位数据元素异或的值;以及
将所述结果存储在所述第一128位SIMD寄存器中,其中所述第一32位结果数据元素存储在位[31:0]中、所述第二32位结果数据元素存储在位[63:32]中、所述第三32位结果数据元素存储在位[95:64]中、并且所述第四32位结果数据元素存储在位[127:96]中。


2.如权利要求1所述的处理器,其特征在于,所述第一128位SIMD寄存器是源/目的地寄存器。


3.如权利要求1所述的处理器,其特征在于,所述多个128位SIMD寄存器是XMM寄存器。


4.如权利要求1所述的处理器,其特征在于,所述执行单元用于执行微代码以执行所述第一SHA256消息调度指令。


5.如权利要求1所述的处理器,其特征在于,所述处理器是复杂指令集计算CISC处理器。


6.一种处理器,包括:
多个128位单指...

【专利技术属性】
技术研发人员:K·S·雅普G·M·沃尔里齐J·D·吉尔福德V·戈帕尔E·奥兹图科S·M·格尔雷W·K·费格哈利M·G·迪克森
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

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

1