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

用于处理安全哈希算法的指令处理器、方法、和系统技术方案

技术编号:19480780 阅读:22 留言:0更新日期:2018-11-17 10:37
一种方法的一方面包括接收指令。所述指令指示包括了针对安全哈希算法2(SHA2)哈希算法的当前轮(i)的状态数据元素ai、bi、ei和fi的第一紧缩数据的第一源。所述指令指示第二紧缩数据的第二源。所述第一紧缩数据具有的比特宽度小于SHA2哈希算法的八个状态数据元素ai、bi、ci、di、ei、fi、gi、hi的组合的比特宽度。所述方法还包括响应于所述指令,在由所述指令指示的目的地中存储结果。所述结果包括已经通过至少一轮的所述SHA2哈希算法从相对应的状态数据元素ai、bi、ei、和fi而更新的已更新的状态数据元素ai+、bi+、ei+、和fi+。

【技术实现步骤摘要】
用于处理安全哈希算法的指令处理器、方法、和系统本申请是申请日为2013年6月18日、申请号为201380062069.0的同名专利申请的分案申请。
实施例涉及指令处理装置。具体地,实施例涉及用于处理安全哈希算法的指令处理装置和指令。
技术介绍
安全哈希标准(SHS)(FIPSPUB180-3),联邦信息处理标准公告,是由国家标准和技术研究所在2008年10月发布的。SHS标准指定了安全哈希算法SHA-224、SHA-256、SHA-384、以及SHA-512。在本申请中这四个算法还统称为SHA2哈希算法、SHA2算法、SHA2哈希等。这些SHA2哈希算法允许计算代表被称为消息的输入数据的浓缩表示的消息摘要。当长度小于2^64比特(对于SHA-224以及SHA-256)或小于2^128比特(对于SHA-384以及SHA-512)的消息被输入到哈希算法时,输出被称为消息摘要的结果。有时,消息摘要也被称为摘要或哈希。消息摘要对于SHA-224是224比特,对于SHA-256是256比特,对于SHA-384是384比特,或对于SHA-512是512比特。SHA-224和SHA-256是基于32比特字长的。SHA-384和SHA-512是基于64比特字长的。在该标准中指定的哈希算法被称为是安全的,这是因为对于给定的算法,认为1)找到与给定的消息摘要对应的消息,或2)找到产生相同的消息摘要的两个不同的消息在计算上是不可行的。这意味着对消息的任何改变将会(具有较高的可能性)导致不同的消息摘要。SHA2算法在电子设备中被广泛使用以用于认证、验证、识别、完整性检查、或其它目的。它们可以用于各种不同的目的。SHA2算法的一种常见使用是验证消息的完整性和/或验证所检测到的对消息的改变。例如,可以针对消息生成初始的消息摘要,且然后,可以针对该消息重新生成另一消息摘要且假定消息自身没有被改变的情况下,该另一消息摘要应该与初始的消息摘要相同。安全哈希函数的其它示例包括但不限于生成数字签名、消息认证码、验证文件或消息的完整性、识别文件或数据、以及伪随机生成和密钥衍生。图1示出了单轮的SHA2算法100的细节。类似于所示的该轮的总共64轮可以用于计算最后的消息摘要。八个状态字ai、bi、ci、di、ei、fi、gi和hi101被输入到该轮。这八个状态字在标准中也被称为八个工作变量。对于SHA-224和SHA-256,这些状态字中的每一个都是32比特。对于SHA-384和SHA-512,这些状态字中的每一个都是64比特。此外,到该轮的输入为到当前轮的消息输入(即,W(i))102以及到当前轮的常数输入(例如,K(i))103。针对每一轮执行一组SHA2操作104。该组操作包括多个模加法(由内部具有加号的方框示出),且对函数的计算被称为Ch、∑1、Maj、∑0。还存在对这些状态字的重映射。该轮的输出为八个已更新的状态字ai+1、bi+1、ci+1、di+1、ei+1、fi+1、gi+1和hi+1105。针对64轮中的每一个该组操作包括以下操作:∑0(a)=(aROTR2)XOR(aROTR13)XOR(aROTR22)∑1(e)=(eROTR6)XOR(eROTR11)XOR(eROTR25)Maj(a,b,c)=(aANDb)XOR(aANDc)XOR(bANDc)Ch(e,f,g)=(eANDf)XOR((NOTe)ANDg)T1=h+∑1(e)+Ch(e,f,g)+Ki+WiT2=∑0(a)+Maj(a,b,c)h=gg=ff=ee=d+T1d=cc=bb=aa=T1+T2在上文中,“ROTR”指定了逐位右旋转操作其右侧的比特数目,“XOR”指定了逻辑异或操作,“AND”指定了逻辑与操作,“NOT”指定了逻辑非操作。旋转量是对于SHA-256特定的。其它的SHA2算法使用不同的移位和旋转量。如可以看到的,SHA2算法的每一轮涉及大量的操作。此外,生成消息摘要涉及六十四轮这样的轮。一个巨大的挑战在于传统地实现SHA2算法涉及在处理器上执行大量的指令。通常,SHA2算法中的每一轮可能采用从若干到许多个指令。例如,在一个可能的实现中,在一轮内,单独的指令可以用于执行旋转、逻辑AND、XOR、和NOT操作、加法等中的一个。这与存在64轮的现实相结合,可以趋向于使得实现SHA2算法是非常计算密集的并且花费大量的时间。附图说明通过参考以下用于示出本专利技术实施例的描述和附图可以最佳地理解本专利技术。在附图中:图1示出了单轮安全哈希算法2(SHA2)哈希算法的细节。图2是具有包括对执行一个或多个SHA2算法有用的一个或多个指令的指令集的指令处理装置的框图。图3是具有SHA2执行逻辑的指令处理装置的实施例的框图,SHA2执行逻辑可操作以执行对处理SHA2安全哈希算法有用的指令的至少一个实施例。图4是处理对SHA2安全哈希算法有用的指令的方法的实施例的方框流程图。图5示出了一轮SHA2算法的一部分。图6是寄存器中的四个状态字或元素a、b、e和f的子集的实施例的框图。图7A是由SHA2输入指令的第一实施例执行的操作的框图。图7B是由SHA2两轮指令的实施例执行的操作的框图。图8A是由SHA2输入指令的第二实施例执行的操作的框图。图8B是由SHA2两轮低更新指令的实施例执行的操作的框图。图8C是由SHA2两轮高更新指令的实施例执行的操作的框图。图9是由SHA2128比特的两轮指令的实施例执行的操作的框图。图10是由SHA2256比特的两轮指令的实施例执行的操作的框图。图11是由SHA2128比特的四轮指令的实施例执行的操作的框图。图12是由SHA2512比特的四轮指令的实施例执行的操作的框图。图13A-C是合适的指令格式的框图。图14是适当组的紧缩数据寄存器的示例性实施例的框图。图15A示出了示例性的AVX指令格式,其包括VEX前缀、真实操作码字段、ModR/M字节、SIB字节、位移字段、以及IMM8。图15B示出了来自图15A的哪些字段组成了完整的操作码字段以及基础操作字段。图15C示出了来自图15A的哪些字段组成了寄存器索引字段1544。图16是根据本专利技术一个实施例的寄存器架构的框图。图17A是根据本专利技术实施例的示出了示例性有序管线和示例性寄存器重命名、乱序发布/执行管线两者的框图。图17B示出了处理器内核,其包括耦合到执行引擎单元的前端单元,且这两者都耦合到存储器单元。图18A是根据本专利技术实施例的单个处理器内核,连同到其管芯上互连网络的连接以及其级别2(L2)的本地子集一起的框图。图18B是根据本专利技术实施例的在图18A中的处理器内核的一部分的扩展图。图19是根据本专利技术实施例的处理器的框图,该处理器可以具有超过一个的内核、可以具有集成存储器控制器、且可以具有集成显卡。图20示出了根据本专利技术一个实施例的系统的框图。图21根据本专利技术一个实施例示出了第一更具体的示例性系统的框图。图22根据本专利技术一个实施例示出了第二更具体的示例性系统的框图。图23根据本专利技术一个实施例示出了SoC的框图。图24是根据本专利技术实施例的对比了使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。具体实施方式本申请中公开的是对执行SHA2哈希算本文档来自技高网...

【技术保护点】
1.一种装置,包括:多个128比特紧缩数据寄存器,包括第一128比特紧缩数据寄存器、第二128比特紧缩数据寄存器、以及第三128比特紧缩数据寄存器;解码单元,用于对指令进行解码,所述指令指示所述第一128比特紧缩数据寄存器、指示所述第二128比特紧缩数据寄存器、并且指示所述第三128比特紧缩数据寄存器,所述第一128比特紧缩数据寄存器和所述第二128比特紧缩数据寄存器用于存储针对安全哈希算法2(SHA2)哈希算法的一轮(i)的状态数据元素,所述第一128比特紧缩数据寄存器用于在比特[31:0]中存储状态数据元素hi、在比特[63:32]中存储状态数据元素gi、在比特[95:64]中存储状态数据元素di、并且在比特[127:96]中存储状态数据元素ci,所述第二128比特紧缩数据寄存器用于在比特[31:0]中存储状态数据元素fi、在比特[63:32]中存储状态数据元素ei、在比特[95:64]中存储状态数据元素bi、并且在比特[127:96]中存储状态数据元素ai,所述第三128比特紧缩数据寄存器用于在比特[31:0]中存储针对所述轮(i)的消息输入W(i)和常数输入K(i)的第一和、并且在比特[63:32]中存储针对所述轮(i)之后的一轮的消息输入W(i+1)和常数输入K(i+1)的第二和;以及执行单元,其与所述多个128位紧缩数据寄存器耦合并且与所述解码单元耦合,响应于对所述指令的解码,所述执行单元用于在所述第一128比特紧缩数据寄存器中存储结果,所述结果包括通过所述SHA2哈希算法的两轮而分别更新自所述状态数据元素fi、所述状态数据元素ei、所述状态数据元素bi、以及所述状态数据元素ai的位于比特[31:0]中的已更新状态数据元素fi+2、位于比特[63:32]中的已更新状态数据元素ei+2、位于比特[95:64]中的已更新状态数据元素bi+2、以及位于比特[127:96]中的已更新状态数据元素ai+2。...

【技术特征摘要】
2012.12.28 US 13/729,5021.一种装置,包括:多个128比特紧缩数据寄存器,包括第一128比特紧缩数据寄存器、第二128比特紧缩数据寄存器、以及第三128比特紧缩数据寄存器;解码单元,用于对指令进行解码,所述指令指示所述第一128比特紧缩数据寄存器、指示所述第二128比特紧缩数据寄存器、并且指示所述第三128比特紧缩数据寄存器,所述第一128比特紧缩数据寄存器和所述第二128比特紧缩数据寄存器用于存储针对安全哈希算法2(SHA2)哈希算法的一轮(i)的状态数据元素,所述第一128比特紧缩数据寄存器用于在比特[31:0]中存储状态数据元素hi、在比特[63:32]中存储状态数据元素gi、在比特[95:64]中存储状态数据元素di、并且在比特[127:96]中存储状态数据元素ci,所述第二128比特紧缩数据寄存器用于在比特[31:0]中存储状态数据元素fi、在比特[63:32]中存储状态数据元素ei、在比特[95:64]中存储状态数据元素bi、并且在比特[127:96]中存储状态数据元素ai,所述第三128比特紧缩数据寄存器用于在比特[31:0]中存储针对所述轮(i)的消息输入W(i)和常数输入K(i)的第一和、并且在比特[63:32]中存储针对所述轮(i)之后的一轮的消息输入W(i+1)和常数输入K(i+1)的第二和;以及执行单元,其与所述多个128位紧缩数据寄存器耦合并且与所述解码单元耦合,响应于对所述指令的解码,所述执行单元用于在所述第一128比特紧缩数据寄存器中存储结果,所述结果包括通过所述SHA2哈希算法的两轮而分别更新自所述状态数据元素fi、所述状态数据元素ei、所述状态数据元素bi、以及所述状态数据元素ai的位于比特[31:0]中的已更新状态数据元素fi+2、位于比特[63:32]中的已更新状态数据元素ei+2、位于比特[95:64]中的已更新状态数据元素bi+2、以及位于比特[127:96]中的已更新状态数据元素ai+2。2.一种处理器,包括:多个128比特紧缩数据寄存器;解码单元,用于对指令进行解码,所述指令指示第一128比特紧缩数据操作数、指示第二128比特紧缩数据操作数、并且指示第三128比特紧缩数据操作数,所述第一128比特紧缩数据操作数和所述第二128比特紧缩数据操作数包括针对安全哈希算法2(SHA2)哈希算法的一轮(i)的状态数据元素,所述第一128比特紧缩数据操作数包括位于比特[31:0]中的状态数据元素hi、位于比特[63:32]中的状态数据元素gi、位于比特[95:64]中的状态数据元素di、以及位于比特[127:96]中的状态数据元素ci,所述第二128比特紧缩数据操作数包括位于比特[31:0]中的状态数据元素fi、位于比特[63:32]中的状态数据元素ei、位于比特[95:64]中的状态数据元素bi、以及位于比特[127:96]中的状态数据元素ai,所述第三128比特紧缩数据操作数包括位于...

【专利技术属性】
技术研发人员:G·M·沃尔里克K·S·叶V·戈帕尔J·D·吉尔福德
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

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

1