CN107667499A - 带密钥散列消息认证码处理器、方法、系统和指令 - Google Patents

带密钥散列消息认证码处理器、方法、系统和指令 Download PDF

Info

Publication number
CN107667499A
CN107667499A CN201680030047.XA CN201680030047A CN107667499A CN 107667499 A CN107667499 A CN 107667499A CN 201680030047 A CN201680030047 A CN 201680030047A CN 107667499 A CN107667499 A CN 107667499A
Authority
CN
China
Prior art keywords
instruction
key information
key
processor
mac
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
Application number
CN201680030047.XA
Other languages
English (en)
Other versions
CN107667499B (zh
Inventor
V·戈帕尔
J·W·勃兰特
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107667499A publication Critical patent/CN107667499A/zh
Application granted granted Critical
Publication of CN107667499B publication Critical patent/CN107667499B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Computing Systems (AREA)

Abstract

本发明的一方面的处理器包括解码单元,所述解码单元用于对带密钥散列消息认证码指令进行解码。所述带密钥散列消息认证码指令用于指示消息、用于指示用来表示密钥信息和密钥指示信息中的至少一项的至少一个值并且用于指示目的地地存储位置。执行单元与所述解码单元耦合。所述执行单元响应于所述带密钥散列消息认证码指令而用于将与所述消息相对应的消息认证码存储在所述目的地存储位置中。所述消息认证码将与将使用密码散列算法的带密钥散列消息认证码算法一致。所述消息认证码将基于与所述至少一个值相关联的密码密钥。公开了其他处理器、方法、系统和指令。

Description

带密钥散列消息认证码处理器、方法、系统和指令
背景技术
技术领域
本文描述的实施例总体上涉及处理器。具体地,本文描述的实施例总体上涉及处理器中的密码术。
技术背景
在通信和计算中,经常期望能够检查通过不可靠介质传输的和/或存储在不可靠介质中的信息的数据完整性。这可以有助于确保在这种传输或存储期间信息未被损坏或改变。还经常期望能够检查通过不可靠介质传输的和/或存储在不可靠介质中的信息的真实性。这可以有助于确保信息来自可靠或可认证的来源。
附图说明
可以通过参考以下用于展示实施例的描述和附图来最佳地理解本发明。在附图中:
图1是可操作用于执行具有混淆密钥信息的带密钥散列MAC指令(keyed-hash MACwith obfuscated key information instruction)的实施例的处理器的实施例的框图。
图2是执行具有混淆密钥信息的带密钥散列MAC指令的实施例的方法的实施例的方框流程图。
图3是执行具有混淆密钥信息的带密钥散列MAC指令的实施例的详细方法的示例实施例的方框流程图。
图4是用于执行具有混淆密钥的带密钥散列MAC指令的执行单元的更详细示例实施例的框图。
图5是可操作用于响应于具有加密密钥信息的带密钥散列MAC指令(keyed-hashMAC with encrypted key information instruction)而从加密密钥信息中确定密钥信息的执行单元的实施例的框图。
图6是可操作用于响应于具有密钥信息指示值的带密钥散列MAC指令(keyed-hashMAC with a key information indication value instruction)而从密钥信息指示值中确定密钥信息的执行单元的实施例的框图。
图7是可操作用于响应于具有可认证密钥信息的带密钥散列MAC指令(keyed-hashMAC with authenticatable key information instruction)而从可认证密钥信息中确定经认证秘密密钥信息的执行单元的实施例的框图。
图8是具有混淆密钥信息的带密钥散列MAC指令的示例实施例的框图。
图9A是框图,展示了有序流水线的实施例和寄存器重命名无序发出/执行流水线的实施例。
图9B是处理器核的实施例的框图,所述处理器核包括耦合至执行引擎单元的前端单元,并且所述前端单元和执行引擎单元两者都耦合至存储器单元。
图10A是单个处理器核的实施例连同其与管芯上互连网络的连接以及连同其2级(L2)高速缓存的本地子集的框图。
图10B是图10A的处理器核的一部分的展开视图的实施例的框图。
图11是可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的实施例的框图。
图12是计算机架构的第一实施例的框图。
图13是计算机架构的第二实施例的框图。
图14是计算机架构的第三实施例的框图。
图15是计算机架构的第四实施例的框图。
图16是根据本发明的实施例的使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文公开了带密钥散列消息认证码(MAC)指令、用于执行所述指令的处理器、由所述处理器在处理或执行所述指令时执行的方法、以及结合用于处理或执行所述指令的一个或多个处理器的系统。在一些实施例中,所述指令可以是具有密钥信息的带密钥散列MAC指令。这些指令可以有助于加速对带密钥散列MAC算法的实施。在其他实施例中,指令是具有混淆密钥信息的带密钥散列MAC指令。这些指令还可以有助于加速对带密钥散列MAC算法的实施。另外,这些指令使密钥信息混淆,这有助于使密钥信息保持秘密或机密。在以下描述中,阐述了许多具体细节(例如,具体指令操作、数据格式、处理器配置、微架构细节、操作序列等)。然而,可以在没有这些具体细节的情况下实践实施例。在其他实例中,未详细示出公知的电路、结构和技术以避免模糊对本说明书的理解。
图1是可操作用于执行具有混淆密钥信息的带密钥散列MAC指令101的实施例的处理器100的实施例的框图。在一些实施例中,所述处理器可以是通用处理器(例如,在台式计算机、膝上型计算机或其他计算机中使用的类型的通用微处理器或中央处理单元(CPU))。可替代地,所述处理器可以是专用处理器。合适的专用处理器的示例包括但不限于:密码处理器、通信处理器、网络处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。所述处理器可以具有以下架构中的任何架构:各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构,或者具有不同架构的组合(例如,不同的核可以具有不同的架构)。
在操作期间,处理器可以接收具有混淆密钥信息的带密钥散列MAC指令101。例如,可以通过总线或其他互连从存储器接收指令。所述指令可表示宏指令、汇编语言指令、机器代码指令或者处理器的指令集的其他指令或控制信号。
具有混淆密钥信息的带密钥散列MAC指令101可对应于并且可用于实施带密钥散列MAC算法。带密钥散列MAC算法表示可操作用于基于秘密密码密钥和密码散列算法两者来计算MAC的MAC算法类型。计算出的MAC可以表示可用于检查或确保数据(例如,通过不可靠介质传输的和/或存储在不可靠介质中的数据)的完整性和真实性两者的密码校验和。确保数据的完整性可以有助于确保数据不被损坏或改变,因为MAC是被计算出来的(例如,当数据通过不可靠介质传输时)。对数据进行认证可以有助于确保数据是由可靠且可认证的来源传输或以其他方式提供的。由于秘密密码密钥用于认证,因此通常应使其保持秘密或机密,从而使得仅数据的预期用户知道秘密密码密钥并且可以互相对彼此进行认证。
代表性地,在一个说明性使用示例中,指令101可被消息发送方用于执行带密钥散列MAC算法以便基于秘密密码密钥和密码散列函数来计算消息的MAC。消息连同MAC可以发送到消息接收方。消息接收方可以使用指令101的另一实例来对接收到的消息执行同一带密钥散列MAC算法,以便基于同一秘密密码密钥和同一密码散列函数来重新计算MAC。可以将重新计算出的MAC与从消息发送方接收到的MAC进行比较。如果MAC相匹配,则可以推断,消息被完整地接收并且消息是从经认证来源接收到的。这只是一个说明性示例。在另一说明性使用示例中,指令101可以在质询-响应识别协议中用于执行带密钥散列MAC算法以便计算对质询消息的响应。
不同类型的带密钥散列MAC算法适合于不同的实施例。在一些实施例中,带密钥散列MAC算法可以与符合2008年7月发布的《联邦信息处理标准(FIPS)出版物198-1》的MAC相同或者至少可以计算出所述MAC。可替代地,带密钥散列MAC算法可以与符合以下各项的MAC相同或者至少可以计算出所述MAC:所述标准的修订版本、所述标准的替代标准、所述标准的衍生标准、具有与所述标准类似的特征的标准、或者本文公开的实施例将会对其有用的任何其他标准或带密钥散列MAC算法。《FIPS出版物198-1》中描述的带密钥散列MAC通常被简单地称为HMAC。HMAC通常通过如下等式1或等式2表示:
HMAC(K,m)=H((K XOR opad)|H((K XOR ipad)|m)) 等式1
HMAC(K,m)=H(K1|H(K2|m)) 等式2
在这个等式中,H表示迭代型密码散列算法,K表示在右侧利用额外的零填充至散列算法的输入块大小的秘密密码密钥或原始密钥(如果比块大小更长)的散列,m是待认证的消息,符号“|”表示连结,“XOR”表示逻辑异或,opad表示具有一个块长的十六进制常数值(0x5c5c5c5c…5c)的外部填充,并且ipad表示具有一个块长的十六进制常数值(0x363636…3636)的内部填充。
其他带密钥散列MAC算法也适合,但是其可能不提供与HMAC相同的安全性。通过示例的方式,带密钥散列MAC算法可以属于如下等式3至等式5中的任何等式的形式:
MAC(K,m)=H(K|m) 等式3
MAC(K,m)=H(m|K) 等式4
MAC(K,m)=H(K|m|K) 等式5
再次参考图1,所述处理器包括解码单元或解码器102。所述解码单元可以接收具有混淆密钥信息的带密钥散列MAC指令101并对其进行解码。所述解码单元可以输出反映、表示和/或导出自具有混淆密钥信息的相对较高级带密钥散列MAC指令的一个或多个相对较低级指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、解码指令或控制信号等)。在一些实施例中,所述解码单元可以包括用于接收指令的一个或多个输入结构(例如,(多个)端口、(多个)互连、接口)、与所述输入结构耦合用于对指令进行识别和解码的指令识别和解码逻辑、以及与所述指令识别和解码逻辑耦合用于输出(多个)较低级指令或(多个)控制信号的一个或多个输出结构(例如,(多个)端口、(多个)互连、接口)。所述解码单元可以使用各种不同的机制来实现,包括但不限于:微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、以及适合于实现解码单元的其他机制。
在一些实施例中,不是将具有混淆密钥信息的带密钥散列MAC指令直接提供给解码单元,而是可以可选地使用指令仿真器、转译器、变形器、解释器或其他指令转换模块。可以在软件、硬件、固件或其组合中实现各种类型的指令转换模块。在一些实施例中,指令转换模块可以被定位在处理器外部,如例如,在分开的管芯上和/或在存储器(例如,静态、动态或运行时间仿真模块)中。通过示例的方式,指令转换模块可以接收具有混淆密钥信息的带密钥散列MAC指令(其可以属于第一指令集),并且可以对具有混淆密钥信息的带密钥散列MAC指令进行仿真、转译、变形、解释或以其他方式转换成一个或多个相应的中间指令或控制信号(其可以属于不同的第二指令集)。可将第二指令集的一个或多个中间指令或控制信号提供给解码单元(例如,解码单元102),所述解码单元可以将其解码成可由处理器的本机硬件(例如,一个或多个执行单元)执行的一个或多个较低级指令或控制信号。
在一些实施例中,具有混淆密钥信息的带密钥散列MAC指令101可以明确地指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐式地指示)通常被称为消息112的数据、混淆密钥信息111以及将响应于和/或作为所述指令的结果而存储消息认证码(MAC)114的目的地存储位置(例如,打包数据寄存器113)。作为一个示例,所述指令可以具有源和/或目的地操作数指定字段用于指定寄存器、存储器位置或可以具有这些操作数或者可以存储用于指示这些操作数的数据的其他存储位置。可替代地,这些操作数中的一个或多个可以可选地对所述指令隐式(例如,存储位置可以对所述指令的操作码隐式)。
如所示出的,在一些实施例中,处理器100在部署和/使用期间可操作用于与存储器110耦合或以其他方式与其通信。如所示出的,在一些实施例中,消息112可以可选地存储在存储器中的某个位置处,并且混淆密钥信息111可以可选地存储在存储器中的一个或多个位置处。在一些实施例中,具有混淆密钥信息的带密钥散列MAC指令可以指定或以其他方式指示一组通用寄存器107中可以可选地具有对所述消息的指示(例如,有效地址、指针或对存储所述消息的存储器位置的其他指示)的第一通用寄存器。在一些实施例中,具有混淆密钥信息的带密钥散列MAC指令可以指定或以其他方式指示可以可选地具有对混淆密钥信息的指示(例如,有效地址、指针或对存储混淆密钥信息的存储器位置的其他指示)的第二通用寄存器。可替代地,所述消息和/或混淆密钥信息可以可选地存储在寄存器、处理器的专用流缓冲器、所述结构的一个或多个高速缓存、或其他存储位置中。如所示出的,在一些实施例中,可选地,目的地存储位置可以是一组打包数据寄存器中的打包数据寄存器113。可替代地,其他寄存器、存储器110中的位置或另一个存储位置可以可选地用于目的地存储位置。此外,在一些实施例中,用于所述消息和/或混淆密钥信息的存储位置可以可选地重新用作MAC的目的地存储位置。
通用寄存器107和打包数据寄存器113可以表示可操作用于存储数据的管芯上存储位置。通用寄存器通常用于存储标量数据,而打包数据寄存器用于存储打包数据、向量数据或单指令多数据(SIMD)数据。寄存器可以表示软件和/或编程器可见的架构上可见或架构寄存器,和/或是由处理器的指令集的用于标识操作数的指令指示的寄存器。这些架构寄存器与给定微架构中的其他非架构寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)形成对照。打包数据寄存器可以在不同的微架构中以不同的方式实现,并且不限于任何特定类型的设计。合适类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。
消息112应被广义地解释为各种不同类型的数据,将对所述数据执行带密钥散列MAC算法。尽管其被称为消息,但其无需是任何类型的通信消息,而可以是任何任意类型的数据。在一些实施例中,所述消息可以是可变长度消息。通常,可变长度消息可以具有范围为从千字节的十分之一到多个千字节的长度,但是本发明的范围不限于此。在一些实施例中,可选地,所述指令可以指定或以其他方式指示可变长度消息的长度。例如,所述指令可以具有用于指示消息中块(或字节或位)的数量的立即数或其他字段。可替代地,固定长度消息(例如,固定数量的消息块)可以可选地对所述指令隐式(例如,对所述指令的操作码隐式)。一方面,所述消息可以潜在地/可选地已从网络接口、通信设备或其他不可靠介质接收,但是本发明的范围不限于此。
在一些实施例中,混淆密钥信息111可以有助于向带密钥散列MAC中使用的用于生成MAC 114的密钥信息提供保密性、机密性或保护。混淆密钥信息本身并非所述MAC所基于的密钥信息。也就是说,MAC如果利用指示的消息和混淆密钥信息被估算出来则可能与带密钥散列MAC算法不一致。在一些实施例中,混淆密钥信息可以表示各种不同类型信息中的任何类型信息,如果处理器可用但软件(例如,甚至操作系统、虚拟机器监视器或其他特权级系统软件)不可访问或至少不可读的秘密(例如,秘密104)是未知的,则密钥信息(MAC 114基于所述密钥信息)无法(极端困难的情况下除外)或者也许甚至可行地从所述信息中确定。然而,如果秘密(例如,秘密104)是已知的,则密钥信息(MAC 114基于所述密钥信息)可以从混淆密钥信息中确定。通过将混淆密钥信息而非密钥信息本身用作输入,软件(例如,甚至是恶意的或损坏的特权级系统软件)可能不能导出或确定带密钥散列MAC中使用的用于生成MAC的密钥信息。将混淆密钥信息整体转换成将在带密钥散列MAC中的用于生成MAC的密钥信息可以完全在处理器的内部构件的界限内执行并且可对软件永不可见。具有混淆密钥信息指令的带密钥散列MAC指令可用于执行“密钥锁定”带密钥散列MAC,其中,用于MAC的密钥信息在架构上对软件或编程器永远不可见。有利的是,这可以有助于允许极安全的带密钥散列MAC操作。在秘密密钥极有价值(例如,比单个会话中受保护的数据更有价值)的使用情况下,这往往可能是特别可估值的。
再次参考图1,执行单元103与解码单元102、通用寄存器107以及打包数据寄存器113耦合。执行单元可以接收表示和/或导出自带密钥散列MAC指令101的一个或多个被解码的或以其他方式被转换的指令或控制信号。执行单元还可以接收消息112以及用于表示密钥信息和密钥指示信息中的至少一者的混淆密钥信息111。执行单元响应于和/或作为带密钥散列MAC指令的结果(例如,响应于从所述指令解码的一个或多个指令或控制信号)而可操作用于将与指示的消息112相对应的消息认证码(MAC)114存储在由所述指令指示的目的地存储位置(例如,打包数据寄存器113)中。所述MAC可表示所述指令的结果。在一些实施例中,可选地,指令可指定或以其他方式指示将用于MAC的长度,并且执行单元可将MAC截短到指定的或以其他方式指示的长度。例如,所述指令可以可选地具有用于提供指示MAC的长度的值的立即数或其他字段。可替代地,可以可选地使用固定长度MAC(例如,如由底层散列算法使用的)。
执行单元包括秘密104、与所述秘密耦合的密钥信息去混淆单元105以及与所述密钥信息去混淆单元耦合的带密钥散列MAC单元106。所述秘密对处理器可用,但对软件(例如,甚至操作系统、虚拟机器监视器或其他特权级系统软件)不可访问。秘密104在本文中应被广义地解释为各种不同类型的信息、逻辑或信息和逻辑的组合中可以从其中根据混淆密钥信息确定密钥信息(MAC 114基于所述密钥信息)的任何一项。可能秘密的示例包括但不限于:秘密地存储在管芯上但软件不可访问的密码密钥或密钥信息,在运行时间期间在管芯上秘密地生成但软件不可访问的密码密钥或密钥信息,存储在管芯上但软件不可访问的秘密信息,在运行时间期间在管芯上生成但软件不可访问的秘密信息,管芯上的秘密,密码的、数学的或其他变换逻辑等、及其各种组合。所述秘密不可由软件访问或至少不可由软件读取。在一些实施例中,所述秘密可以表示较早软件存储在处理器中随后软件不能读取的信息,但是本发明的范围不限于此。密钥信息去混淆单元105可操作用于使用所述秘密和混淆密钥信息来确定密钥信息并且可以向带密钥散列MAC单元提供密钥信息。带密钥散列MAC单元106可操作用于根据密钥信息和消息112来生成MAC 114。
带密钥散列MAC单元106可以使用各种不同的迭代密码散列算法中的任何迭代密码散列算法。合适密码散列算法的示例包括但不限于:MD5消息-摘要算法、SHA-1安全散列算法、SHA-2安全散列算法以及RACE原始完整性校验消息摘要(RIPEMD)密码散列算法。SHA-2安全散列算法可以是以下六个散列函数中的任一项:具有224位散列值的SHA-224、具有256位散列值的SHA-256、具有384位散列值的SHA-384、或具有512位散列值的SHA-512、具有512位或224位散列值的SHA-512/224、以及具有512位或256位散列值的SHA-512/256。在IPsec协议和TLS协议中使用了SHA1和MD5。在一些实施例中,指令101的操作码可以可选地对多个密码散列算法(例如,上述散列算法的任何组合)不可知,并且指令101可以可选地具有用于指示或选择待使用的多个支持密码散列算法之一的字段。
在一些实施例中,可在同一单个具有混淆密钥信息的带密钥散列MAC指令101的执行界限内基于整个消息112生成MAC 114。例如,大小范围为可选地从千字节的十分之几到约数十个千字节的消息可以利用同一单个指令进行处理,而不需要使用多个这样的指令来处理消息的寄存器大小为128位、256位或512位的部分,每个部分用不同的指令来处理。一个潜在优点为:这有助于避免暴露可能被分析以便揭示所述消息和/或密码密钥的密码处理部分或中间结果。相反地,在一些实施例中,所有这样的中间结果可以保持在带密钥散列MAC单元106内和/或以其他方式保持在执行单元103内,而不存储在架构上可见寄存器(例如,寄存器107和/或113)中。
执行单元和/或处理器可以包括可操作用于执行带密钥散列MAC指令和/或响应于带密钥散列MAC指令和/或作为其结果(例如,响应于从带密钥散列MAC指令解码的一个或多个指令或控制信号)而存储MAC的具体或特定逻辑(例如,晶体管、集成电路系统或可能与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的其他硬件)。通过示例的方式,执行单元可以包括密码单元、用于执行密码操作的数字电路等。通过示例的方式,执行单元可以包括微代码引擎、状态机等,用于执行带密钥散列MAC算法的操作(例如,链接散列算法的处于不同消息块上的不同应用之间的状态等)。在一些实施例中,执行单元可以包括用于接收所述消息和至少一个值的一个或多个输入结构(例如,(多个)端口、(多个)互连、接口)、与所述输入结构耦合用于接收和处理所述消息和所述至少一个值并生成MAC的电路系统或逻辑、以及与所述电路系统或逻辑耦合用于输出所述MAC的一个或多个输出结构(例如,(多个)端口、(多个)互连、接口)。
为了避免模糊本说明书,示出和描述了相对较简单的处理器。然而,可选地,处理器可以包括其他处理器组件。例如,各个不同实施例可以包括针对图9至图11中的任一者而示出和描述的组件的各种不同组合和配置。处理器的组件中的所有组件可以耦合在一起以便允许其根据预期进行操作。
图2是执行具有混淆密钥信息的带密钥散列MAC指令的实施例的方法220的实施例的方框流程图。在各个实施例中,所述方法可由处理器、指令处理装置或其他数字逻辑设备来执行。在一些实施例中,方法220可由图1的处理器100来执行和/或在其内执行。可选地,本文针对处理器100而描述的组件、特征和具体可选的细节也适用于方法220。可替代地,方法220可由不同的处理器或装置来执行和/或在其内执行。此外,处理器100可执行不同于方法220的方法。
所述方法包括:在框221处,接收具有混淆密钥信息的带密钥散列MAC指令。所述指令可以对应于并且可以用于实施使用密码散列算法的带密钥散列MAC算法。在各个方面,可以在处理器或其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收所述指令。在各个方面,可以从处理器外和/或管芯外的来源(例如,从存储器、互连等)、或者从处理器上和/或管芯上的来源(例如,从指令缓存、指令队列等)接收所述指令。带密钥散列MAC指令可以指定或以其他方式指示消息、混淆密钥信息以及目的地存储位置。
在框222处,响应于具有混淆密钥信息的带密钥散列MAC指令和/或作为其结果而将与指示的消息相对应的消息认证码(MAC)存储在指示的目的地存储位置中。在一些实施例中,混淆密钥信息可以是使得如果秘密(例如,所述秘密对处理器可用但对软件不可访问)是未知的则无法(极端困难的情况下除外)或甚至可行地确定密钥信息(MAC基于所述密钥信息)。在一些实施例中,混淆密钥信息可以包括密码密钥信息的加密或由其组成(例如,将用于带密钥散列MAC算法的加密密钥)。在其他实施例中,混淆密钥信息可以包括密钥信息指示值或信息或者由其组成。例如,密钥信息指示值可以是将用于带密钥散列MAC算法的密钥的索引或标识符。
展示的方法涉及架构操作(例如,从软件角度可见的操作)。在其他实施例中,可选地,所述方法可以包括一项或多项微架构操作。通过示例的方式,可以对所述指令进行获取、解码、无序调度,可以访问源操作数,执行单元可以执行微架构操作以便实施所述指令,等等。在一些实施例中,用于实施所述指令的微架构操作可以可选地包括针对图3至图7中任一者而示出和描述的任何一个微架构操作,包括针对其而提及的变型。
图3是执行具有混淆密钥信息的带密钥散列MAC指令的实施例的详细方法330的示例实施例的方框流程图。在各个实施例中,所述方法可由处理器、指令处理装置或其他数字逻辑设备来执行。在一些实施例中,方法330可由图1的处理器100来执行和/或在其内执行。可选地,本文针对处理器100而描述的组件、特征和具体可选的细节也适用于方法330。可替代地,方法330可由不同的处理器或装置来执行和/或在其内执行。此外,处理器100可执行不同于方法330的方法。
所述方法包括:在框331处,接收具有混淆密钥信息的带密钥散列MAC指令。所述指令可以指定或以其他方式指示混淆密钥信息、消息以及目的地存储位置。
然后,在框332处,可以通过对由所述指令指示的混淆密钥信息进行去混淆来确定密钥信息。在一些实施例中,这可以包括使用处理器的对处理器可用但对软件不可访问的秘密。例如,在一些实施例中,这可以包括使用处理器的对软件完全隐藏的秘密密码密钥来对可以是密钥信息的加密的混淆密钥信息进行解密。作为另一个示例,在一些实施例中,这可以包括使用混淆密钥信息来查找存储在管芯上或在管芯上生成并对软件完全隐藏的秘密密钥信息。可替代地,可以可选地使用本文公开的各种其他方法。
在框333处,在一些实施例中,如果去混淆密钥信息是MAC将基于的去混淆密码密钥,则去混淆密码密钥可被处理以便确定将在带密钥散列MAC算法中使用的经预处理的密钥(K)。例如,如果去混淆密钥的长度小于输入到密码散列算法的块大小(B),则去混淆密钥可以零扩展到块大小(B)以获得经预处理的密钥(K)。或者,如果去混淆密钥的长度大于块大小(B),则去混淆密钥可以先被散列到较短长度,并且然后可以被零扩展到块大小(B)以获得经预处理的密钥(K)。或者,如果去混淆密钥的长度等于块大小(B),则可能不需要任何这样的处理并且可以直接将去混淆密钥用作经预处理的密钥(K)。在替代性实施例中,可能不需要对去混淆密钥进行这样的处理来获得经预处理的密钥(K)。例如,可选地,可以预先进行这一点(例如,可以对已预处理的密钥进行加密并且作为框332处的去混淆的一部分而对其进行解密)。作为另一个示例,如将在下文进一步解释的,如果框332处的去混淆产生IV1估值和IV2估值,则这通常是不需要的。因此,框333处的处理是可选的并且不是必需的。
在框334处,可以在开始结合消息的块之前执行对涉及初始状态(IV)、密钥(K)和内部填充值(ipad)的第一初始状态密码散列(IV1)的估值的结合。带密钥散列MAC算法可以具有初始状态(IV)。例如,初始状态(IV)可以是取决于特定算法的常数。可以对密钥(K)和内部填充值(ipad)执行逻辑异或(XOR)。ipad可以取决于特定算法。在HMAC算法的情况下,ipad可以是多次重复字节x’36’的块大小(B)(例如,一个块长的十六进制常数0x363636…3636)。可以利用初始状态(IV)以及密钥(K)与ipad的异或来对密码散列算法(H)进行估值以获得第一初始状态密码散列(IV1)。这表示开始状态(state)。IV1可以表示带密钥散列MAC算法的涉及密码密钥(K)的中间部分的估值。
在框335处,所述方法可以迭代地结合消息的块。带密钥散列MAC算法使用将消息划分为一系列大小相等的块的迭代方式,并且使用密码散列算法的单向压缩函数依次对所述块进行操作或压缩。消息块的大小可以因密码散列算法而不同。通过示例的方式,MD5和SHA-1对大小为512位的块进行操作。这可能用于允许对可选地可变长度消息进行处理。
在框336处,将消息块计数器(i)初始化为零。在框337处,将所述状态更新为包括利用先前状态和当前块计数器(i)的消息块估来估值的密码散列算法(H)。密码散列算法(H)的每次调用都可以执行针对一个块的散列计算。例如,在SHA-1的情况下,其可以计算八十(80)轮。在框338处,作出对是否存在要结合的另一消息块的判定。如果存在要结合的另一消息块(即,“是”为判定结果),则所述方法可以前进到框339,,在所述框处,可以使块计数器(i)增量并且然后所述方法可以回到框337。可替代地,如果不存在要结合的另一消息块(即,“否”为判定结果),则所述方法前进到框340。
在框340处,可以通过使用长度扩展基于对最后一个消息块的结合对来自框338的结果状态进行填充来确定零填充的状态值(M)。这可以有助于提供附加的安全性。
在框341处,可以在结合所有消息块之后执行对涉及初始状态(IV)、密钥(K)和外部填充值(opad)的第二密码散列(IV2)的估值的结合。可以对密钥(K)和外部填充值(opad)执行异或。opad可以取决于特定算法。在HMAC算法的情况下,opad可以是多次重复字节x’5c’的块大小(B)(例如,一个块长的十六进制常数0x5c5c5c…5c5c)。可以利用初始状态(IV)以及密钥(K)与opad的异或来对密码散列算法(H)进行估值以获得第二初始状态密码散列(IV2)。这表示结束状态(state)。IV2可以表示带密钥散列MAC算法的涉及密码密钥(K)的中间部分的第二估值。
在框342处,可以利用第二初始密码散列(IV2)和零填充的状态值(M)来对密码散列进行估值以产生最终状态(state)。这个最终状态表示带密钥散列MAC算法或MAC本身的结果。
在框343处,MAC可以存储在目的地存储位置中。最终MAC的大小可以与底层密码散列算法的大小相同。例如,MAC在MD5的情况下可以是128位,或者在SHA-1的情况下可以是160位。可替代地,在一些实施例中,如果期望的话,可以可选地截短MAC。在一些实施例中,所述指令可以可选地指示MAC要截短到的长度。
图4是用于执行具有混淆密钥的带密钥散列MAC指令的执行单元403的更详细示例实施例的框图。执行单元包括密钥信息去混淆单元405和秘密404。秘密对执行单元和/或其中包括有执行单元的处理器可用,但对软件不可访问。密钥信息去混淆单元可接收由指令指示的混淆密钥信息411,并且可对其进行去混淆以获得去混淆密钥信息445。通过示例的方式,去混淆单元可以可选地执行图3的框332,但是本发明的范围不限于此。执行单元还包括带密钥散列MAC单元406,所述带密钥散列MAC单元包括可选的初始状态单元446、消息单元448、长度填充单元449、最终化单元450以及密码散列单元447。
可选的初始状态单元446与密钥信息去混淆单元耦合并且可接收去混淆密钥信息445。初始状态单元还与密码散列单元447耦合。初始状态单元具有带密钥散列MAC算法的初始状态(IV)。例如,初始状态(IV)可以可选地存储在内部微架构寄存器中。作为另一示例,指令可以可选地指定或以其他方式指示存储初始状态的存储位置(例如,架构寄存器或存储器位置)。初始状态单元可以向密码散列单元提供密钥信息和初始状态(IV)。密码散列单元可以响应性地提供涉及初始状态(IV)、密钥(K)和内部填充值的第一初始状态密码散列(IV1)以及涉及初始状态(IV)、密钥(K)和外部填充值的第二初始状态密码散列(IV2)。通过示例的方式,初始状态单元和密码散列单元可以可选地一起执行图3的框334和框341,但是本发明的范围不限于此。可替代地,如将在下文解释的,可选地,可以经由去混淆密钥信息445来提供第一和第二初始状态密码散列(IV1,IV2),在此情况下,可选地,可以省略初始状态单元446。
执行单元还包括消息单元448。可以向消息单元提供第一初始状态密码散列(IV1)。消息块412也可以输入到消息单元。消息单元与密码散列单元耦合。消息单元可以向密码散列单元提供当前状态(例如在第一估值从其输出端再循环到其输入端之后)和当前消息块。密码散列单元可以提供回所产生的更新后状态,所述更新后状态基于对当前状态和当前消息块执行的散列。类似地,消息单元可以以此方式结合或压缩所有消息块。通过示例的方式,消息单元和密码散列单元可以可选地一起执行图3的框335,但是本发明的范围不限于此。
长度填充单元449与消息单元448的输出端耦合。长度填充单元可以使用长度扩展对由于最后一个消息块被结合而产生的状态进行零填充。这可以有助于提供附加的安全性。通过示例的方式,长度填充单元可以可选地执行图3的框340,但是本发明的范围不限于此。
最终化单元450与长度填充单元449的输出端耦合。最终化单元与初始状态单元耦合或以其他方式可操作用于接收第二初始状态密码散列(IV2)。最终化单元还与密码散列单元耦合。最终化单元可以向密码散列单元提供第二初始状态密码散列(IV2)以及从长度填充单元接收到的零填充的长度扩展状态。密码散列单元可以对其执行密码散列并且返回最终状态。通过示例的方式,最终化单元和密码散列单元可以可选地一起执行图3的框342,但是本发明的范围不限于此。可选地,最终状态可或者被截短或者不被截短并被存储到目的地存储位置作为MAC 451。
图5是可操作用于响应于具有加密密钥信息的带密钥散列MAC指令而从加密密钥信息511中确定密钥信息545的执行单元503的实施例的框图。加密密钥信息是混淆密钥信息的示例。加密密钥信息存储在可由指令指定或以其他方式指示的存储位置510(例如,寄存器或存储器位置)中。执行单元包括解密单元505。执行单元和/或解密单元可以被耦合用于接收加密密钥信息。解密单元和/或执行单元还可以被耦合用于接收秘密密码密钥504。秘密密码密钥对解密单元和/或执行单元可访问且可用,但对软件555(例如,特权级系统软件)不可访问或者不可用或至少不可读。在一些实施例中,秘密密码密钥可能已被写入或存储到处理器中,但随后,软件555可能不能够读取所述秘密密码密钥。在展示的实施例中,秘密密码密钥是执行单元的一部分。在其他实施例中,秘密密码密钥反而可以与执行单元分离,而与执行单元和/或解密单元耦合。解密单元可以接收秘密密码密钥并且可操作用于使用秘密密码密钥来将加密密钥信息解密为解密密钥信息545。本领域中已知的各种不同的解密算法是合适的,如例如,高级加密标准(AES)、数据加密标准(DES)、三重DES(3DES)、李维斯特加密4(Rivest Cipher 4,RC4)以及其他块/流加密。带密钥散列MAC单元506与解密单元耦合,并且可以接收解密密钥信息。如在本文其他地方描述的,带密钥散列MAC单元可以使用解密密钥信息来计算消息的MAC。所述MAC可以与密钥信息一致但不与加密密钥信息一致。有利的是,密钥信息545可以由执行单元和/或其处理器响应于指令而生成,但是密钥信息可能永远不驻留在处理器的架构寄存器、或存储器位置、或任何其他架构上可见的存储位置中,从而使得其对软件555永远不可用或不可访问。相反地,软件可以能够查看加密密钥信息511,但是如果不可行,则由于加密提供的安全保护,软件要从加密密钥信息中确定密钥信息545可能极其困难。
不同类型的加密密钥信息适合于不同的实施例。在一些实施例中,加密密钥信息可以包括将在带密钥散列MAC算法中用于计算MAC的密码密钥的加密。
下文在伪代码中展示了被命名为HMAC_LOCKED_K的合适的具有加密密码密钥的带密钥散列MAC指令的一个具体示例实施例。这个指令可以生成与FIPS-198-1一致的MAC或其未来版本。
HMAC_LOCKED_K{
//输入
Src1r64//寄存器将指针存储到具有加密密钥的存储器位置
Src2r64//寄存器将指针存储到具有消息m的存储器位置
Src3r64//寄存器按块存储消息长度
//输出
Dst r512//打包数据寄存器将存储MAC
K=decrypt_with_processor_key(src1)//可选地,如果解密失败,则引起错误
State=H(IV,(K XOR ipad));//计算IV1
For(i=0;i<Src3;i++)
state=H(state,Src2[i]);
M=pad(state);//使用长度扩展来形成单个0填充的块进
State=H(IV,(K XOR opad));//计算IV2
State=H(state,M);
Return Dst=state;//可选地,截短MAC值
}
HMAC_LOCKED_K指令可以明确地指定或隐式地指示用于存储有效地址、指针、或对存储器中用于存储将是加密密钥的第一源操作数(SRC1)的位置的其他指示的第一64位通用寄存器(r64)。可替代地,可选地,另一加密密钥可以存储在指定的或指示的打包数据寄存器或其他存储位置中。
所述指令还可以明确地指定或隐式地指示用于存储有效地址、指针、或对存储器中用于存储将是消息(m)的第二源操作数(SRC2)的位置的其他指示的第二64位通用寄存器(r64)。可替代地,可以以不同方式指示消息的位置。
所述指令还可以明确地指定或隐式地指示用于存储第三源操作数(SRC3)的第三64位通用寄存器(r64),所述第三源操作数用于指定或以其他方式指示消息的长度。在一些实施例中,可将消息的长度指示块数。可替代地,可以可选地使用字节、位或其他粒度。在其他实施例中,可以可选地在大小不同的寄存器中提供消息的长度,或者所述指令的立即数或其他字段可以可选地用于指示消息的长度。在仍其他实施例中,固定长度可以可选地是隐式的(例如,对指令的操作码隐式),而长度不是灵活或可变的。
所述指令还可以明确地指定或隐式地指示与将存储结果MAC的目的地存储位置(Dst)相对应的打包数据寄存器(r512)。在展示的伪代码中,使用了512位打包数据寄存器(r512),但是可替代地,可以使用其他大小的打包数据寄存器(例如,128位、256位等)。如果一个寄存器放不下散列,则可选地可以组合使用两个或更多个寄存器。作为另一选项,目的地存储位置可以是存储器位置。
在执行所述指令时,第一、第二和第三源操作数可由执行单元来接收。执行单元可以利用秘密或机密密钥(“处理器_密钥”)对加密密钥进行解密以获得将用于带密钥散列MAC算法的密钥(K)。所述秘密或机密密钥(“处理器_密钥”)可以对处理器可用,但对软件不可用或不可访问。在一些实施例中,如果处理器不能够正确地对可认证密钥(K)进行解密或确定,则可能可选地引起错误。
然后,执行单元可以通过对初始状态(IV)以及解密密钥(K)与内部填充(ipad)的异或来执行与用于生成散列值的密码散列算法(H)一致的操作来计算状态(State)。代表性地,ipad可以是散列函数的输入的多次重复字节x’36’的块大小(单位为字节)。在各种不同的实施例中,散列算法可以是MD5、SHA-1、SHA-2、RIPEMD或用于HMAC的另一合适散列算法中的任何一种。
然后,执行单元可以对每个消息块来执行循环(例如,根据第三源操作数中指示的消息长度)。在伪代码中,“i”表示当前消息块的循环计数器。在每个循环中,执行单元可以通过基于先前状态(例如,针对循环i-1)和当前块(例如,消息块i)执行用于生成散列值的密码散列算法(H)的操作来计算更新后状态(例如,基于消息块i)。
在已经将所有消息块结合为运行的散列值中之后,执行单元可以通过在将最后一个消息块结合到消息中之后对结果状态进行填充来生成填充状态(M)。例如,执行单元可以使用长度扩展来形成单个零填充的块。
执行单元可以通过对初始状态(IV)以及解密密钥(K)与外部填充(opad)的异或来执行与用于生成散列值的密码散列算法(H)一致的操作来计算状态(State)。代表性地,opad可以是散列函数的输入的多次重复字节x’5c’的块大小(单位为字节)。
执行单元可以通过由对外部填充(opad)与填充状态(M)进行的散列而产生的状态执行用于生成最终散列的散列算法(H)来计算最终状态(State)。在一些实施例中,执行单元可以可选地截短最终散列值。执行单元可以将可选截短的最终散列值作为HMAC值或MAC值存储在目的地存储位置(Dst)中。
对密码密钥进行加密的一个可能优点是:加密数据的总量通常相当小。例如,通常,密码密钥的加密可以是大约128位到256位。这可以有助于:如果加密密码密钥在存储器中,则允许利用较少总线带宽,如果加密密码密钥存储在处理器寄存器中,则允许使用较小寄存器,等等。
在其他实施例中,可以可选地使用带密钥散列MAC算法的涉及MAC将基于的密码密钥的已估值部分的加密。例如,在一些实施例中,可选地,可将先前提及的IV1和/或IV2中的至少一者的加密用作具有加密密钥信息的带密钥散列MAC指令的输入。回顾一下,IV1是涉及初始状态(IV)以及密钥(K)与内部填充值(ipad)的异或的第一初始状态密码散列的估值。IV2是对涉及初始状态(IV)以及密钥(K)与外部填充值(opad)的异或的第二初始状态密码散列的估值。图3在框334中示出了IV1并且在框341中示出了IV2。初始状态(IV)和密钥(K)可表示常数。因此,IV1和IV2可以预先被计算一次,并且被可选地/可能再次使用多次。有利的是,这可以有助于避免需要计算针对通过带密钥散列MAC算法处理的每个消息的IV1和IV2,并且因此可以有助于改善性能。这往往可能在处理多个小消息时特别有用,其中,IV1和IV2的估值将会以其他方式表示所述算法的整体处理的相对较大百分比。因此,在其他实施例中,加密密钥信息可以包括IV1的加密和/或IV2的加密(例如,IV1和IV2的连结的加密)。
下文紧接着以伪代码展示了被命名为HMAC_LOCKED_IVs的合适的具有加密IV1和IV2的带密钥散列MAC指令的一个具体示例实施例。这个指令可以生成与FIPS-198-1一致的MAC或其未来版本。
HMAC_LOCKED_IVs{
//输入
Src1r64//寄存器将指针存储到具有加密IV1和IV2的存储器位置
Src2r64//寄存器将指针存储到具有消息m的存储器位置
Src3r64//寄存器按块存储消息长度
//输出
Dst r512//打包数据寄存器将存储MAC
IV1||IV2=decrypt_with_processor_key(Src1)//可选地,如果解密失败,则引起错误
State=IV1;//由于IV1被预先计算出来,因此不需要对其进行重新计算
For(i=0;i<Src3;i++)
state=H(state,Src2[i]);
M=pad(state);//使用长度扩展来形成单个0填充的块进
State=IV2;//由于IV2被预先计算出来,因此不需要对其进行重新计算
State=H(state,M);
Return Dst=state;//可选地,截短MAC值
}
HMAC_LOCKED_IVs指令类似于先前描述的HMAC_LOCKED_K指令。为了避免模糊本说明书,将在不重复可选地可能相同的所有特征的情况下描述不同的或附加特征。然而,应理解,对HMAC_LOCKED_K指令的先前描述也适用于HMAC_LOCKED_IVs指令,包括提及的变型和替代方案。
对于HMAC_LOCKED_IVs指令,不是第一源操作数(SRC1)具有加密密钥,而是其可以具有IV1和IV2的加密组合。例如,IV1和IV2可以按照任一顺序连结并且然后进行加密。在执行所述指令时,执行单元可以利用秘密或机密密钥(“处理器_密钥”)对加密的IV1和IV2进行解密以获得IV1和IV2。如所示出的,开始状态(State)可以等于IV1。有利的是,可能不需要执行计算来计算IV1(例如,先前执行了对密码散列和异或的估值并且因此不需要再次执行)。类似地,不需要重新计算IV2。相反地,IV2可以直接结合到具有填充的以及长度扩展的状态(M)的散列中。
图6是可操作用于响应于具有密钥信息指示值的带密钥散列MAC指令而从密钥信息指示值611中确定密钥信息645的执行单元603的实施例的框图。密钥信息指示值是混淆密钥信息的示例。密钥信息指示值存储在可由指令指定或以其他方式指示的存储位置610(例如,寄存器或存储器位置)中。执行单元包括密钥信息确定单元605。执行单元和/或密钥信息确定单元可以被耦合用于接收密钥信息指示值。密钥信息确定单元和/或执行单元还可以被耦合到不同秘密密钥信息集合604。不同秘密密钥信息集合表示对密钥信息确定单元和/或执行单元可访问且可用但对软件655(例如,特权级系统软件)不可访问且不可用的秘密。在各个实施例中,不同秘密密钥信息集合可以包括不同的密码密钥、基于不同密钥的不同IV1和IV2对、或其他不同密码密钥信息集合。在展示的实施例中,不同秘密密钥信息集合是执行单元的一部分。在其他实施例中,不同秘密密钥信息集合可以反而可以与执行单元分离,而与执行单元和/或解密单元耦合。
密钥信息确定单元可操作用于使用密钥信息指示值来从不同秘密密钥信息集合604中获得秘密密钥信息645。通过示例的方式,秘密密钥信息可以包括密码密钥、IV1和IV2对、或涉及密钥信息的另一估值。设想了使用密钥信息指示值611来确定秘密密钥信息645的不同方法。密钥信息指示值将在本文中应被广泛地解释为可用于选择、标识或以其他方式指示密钥信息的各种不同类型信息中的任何信息。
在一些实施例中,密钥信息指示值本身可以不包括任何密钥信息,或至少可以仅包括足够小的密钥信息集合以至于不损害针对特定实施方式所期望的安全水平。在一些实施例中,不同秘密密钥信息集合604可以按照列表、表格、阵列或其他有序排列进行排序。密钥信息指示值可以表示用于选择或指示有序安排的秘密密钥信息的特定集合的索引、偏移、编号或其他指示符。
在其他实施例中,密钥信息指示值可以是标识符。不同秘密密钥信息集合不一定按照任何特定顺序安排。然而,不同秘密密钥信息集合中的每个集合可以具有不同的相应唯一标识符。例如,第一集合可以具有标识符“00000000”,第二集合可以具有标识符“10111101”,第三集合可以具有标识符“11110100”等。密钥信息指示值中的标识符可以与密钥信息集合的标识符相匹配,以便选择或指示所述密钥信息。例如,密钥信息指示值可以包括用于指示第一密钥信息集合的标识符“00000000”。这些仅仅是几个说明性示例。使用密钥信息指示值来指示一个或多个密钥信息集合的其他方法对得益于本公开的本领域技术人员而言将是显而易见的。
带密钥散列MAC单元606与密钥信息确定单元605耦合,并且可以接收秘密密钥信息645。如在本文其他地方描述的,带密钥散列MAC单元可以使用秘密密钥信息来计算消息的MAC。所述MAC可以与秘密密钥信息一致而不与密钥信息指示值611一致。有利的是,秘密密钥信息645可以由执行单元和/或其处理器响应于指令而生成,但是秘密密钥信息可以永不对软件655可用或可访问。
图7是可操作用于响应于具有可认证密钥信息的带密钥散列MAC指令而从可认证密钥信息711中确定经认证秘密密钥信息745的执行单元703的实施例的框图。可认证密钥信息是混淆且可认证密钥信息的示例。可认证密钥信息存储在可由指令指定或以其他方式指示的存储位置710(例如,寄存器或存储器位置)中。执行单元包括密钥信息确定及认证单元605。执行单元和/或密钥信息确定及认证单元可以被耦合用于接收可认证密钥信息。密钥信息确定及认证单元和/或执行单元还可以耦合到对密钥信息确定及认证单元和/或执行单元可访问且可用但对软件755(例如,特权级系统软件)不可访问且不可用的秘密704。在展示的实施例中,不同秘密密钥信息集合是执行单元的一部分。在其他实施例中,不同秘密密钥信息集合可以反而可以与执行单元分离,而与执行单元和/或解密单元耦合。
密钥信息确定及认证单元可操作用于使用可认证密钥信息来获得经认证秘密密钥信息745。通过示例的方式,经认证秘密密钥信息可以包括密码密钥、IV1和IV2对、或涉及密钥信息的另一估值。密钥信息确定及认证单元可对可认证密钥信息711执行完整性检查。在一些实施例中,可认证密钥信息可以包括密钥信息的加密且可认证版本(例如,用于MAC的密钥、基于用于MAC的所述密钥的IV1和IV2等)。认证单元可操作用于使用可包括秘密的或隐藏的密码密钥的秘密704对可认证密钥信息进行解密和认证。通过示例的方式,可认证密钥信息可以包括除加密密钥信息之外的额外认证信息(例如,额外位)。解密单元可操作用于使用这些额外位来对解密密钥进行认证以确保其是真实可信的。
通过示例的方式,在一些实施例中,其中包括有执行单元的处理器在其指令集中可以具有编码密钥指令。可以利用用于带密钥散列MAC的密钥或涉及这样的密钥的IV1和IV2来执行编码密钥指令。处理器可以执行编码密钥指令来生成可认证密钥信息加上附加认证信息。可替代地,密钥封装算法可以可选地用于提供加密且可认证密钥或者一个或多个数学估值的集合。
如果生成的实际密钥并非期望的密钥,则认证可能错误(例如,认证信息的额外位指示缺乏真实性)。在一些实施例中,如果尝试认证可认证密钥信息未成功,则执行单元可以用信号用信号表示(signal)错误756。例如,所述错误可以递送到软件(例如,操作系统的错误处理程序)。在这样的情况下,将不会计算出任何输出。
带密钥散列MAC单元706与密钥信息确定及认证单元705耦合,并且可以接收认证秘密密钥信息745。如在本文其他地方描述的,带密钥散列MAC单元可以使用经认证秘密密钥信息来计算消息的MAC。所述MAC可以与经认证秘密密钥信息一致但不与可认证密钥信息711一致。有利的是,经认证秘密密钥信息745可以由执行单元和/或其处理器响应于指令而生成,但是可认证秘密密钥信息可以永不对软件755可用或可访问。
执行具有混淆密钥信息的单个带密钥散列MAC指令可能花费大量的处理器时钟周期。例如,处理消息的每个块可能花费大约100个周期或更多,这取决于实施其的特定算法和架构。另外,消息可以具有可能相当多的消息块。因此,有可能指令可以在其完成之前可能被中断。在具有混淆密钥信息的指令的情况下,在一些实施例中,若干不同方法中的至少一种方法可以可选地用于帮助确保可从中导出实际密钥的部分状态并未变得对软件可见。
一种可能方法是:利用对软件不可访问的处理器的秘密密钥对与带密钥散列MAC指令的执行相关联的中间状态进行加密,并且然后将所加密的中间状态保存到存储位置。在解决中断之后,可以对所加密的中间状态进行检索、解密,并且所述算法可以以中间状态重新开始。另一种可能方法是:扔掉或丢弃与带密钥散列MAC指令的执行相关联的中间状态。在解决中断之后,带密钥散列MAC算法可以在不使用中间状态的情况下重新开始。又另一种可能方法是所述指令用于将消息限制为给定数量的消息块。例如,一个可能限制是大约几千(例如,<5000)字节,从而使得消息将更不可能中断。
在其他实施例中,可能不期望特定实施方式保护密钥信息。例如,密钥可以是仅用于单个消息或多个消息的短寿命密钥,并且所述消息可能并不是极其重要的,等等。在这样的情况下,可能不需要使密钥信息混淆。其他实施例涉及具有未被混淆的密钥信息的带密钥散列MAC指令。这些指令可以类似于本文公开的其他指令,除了其可以指示实际密钥信息而不是指示混淆密钥信息之外。实际密钥信息可以存储在存储器位置或对软件可访问的其他存储位置中。合适密钥信息的示例包括在本文中其他地方公开的类型的密钥信息,如例如,用于带密钥散列MAC算法的密码密钥、涉及这样的密钥的IV1和IV2等。可能不需要对密钥信息进行解密或以其他方式进行解释,因为其并未被混淆,相反地,其可直接用于带密钥散列MAC算法中。
下文在伪代码中展示了被命名为HMAC_LOCKED_K的合适的具有加密密码密钥的带密钥散列MAC指令的一个具体示例实施例。这个指令可以生成与FIPS-198-1一致的MAC或其未来版本。
HMAC_NOT_LOCKED_K{
//输入
Src1r64//寄存器将指针存储到具有密钥(K)的存储器位置
Src2r64//寄存器将指针存储到具有消息m的存储器位置
Src3r64//寄存器按块存储消息长度
//输出
Dst r512//打包数据寄存器将存储MAC
K=load(Src1)//不需要任何解密或其他去混淆
State=H(IV,(K XOR ipad));//计算IV1
For(i=0;i<Src3;i++)
state=H(state,Src2[i]);
M=pad(state);//使用长度扩展来形成单个0填充的块进
State=H(IV,(K XOR opad));//计算IV2
State=H(state,M);
Return Dst=state;//可选地,截短MAC值
}
HMAC_NOT_LOCKED_K指令类似于先前描述的HMAC_LOCKED_K指令。为了避免模糊本说明书,将在不重复可选地可能相同的所有特征的情况下描述不同的或附加特征。然而,应理解,对HMAC_LOCKED_K指令的先前描述也适用于HMAC_NOT_LOCKED_K指令,包括提及的变型和替代方案,除了涉及密钥不被加密的方面外。在HMAC_NOT_LOCKED_K指令中,第一源操作数(Src1)具有HMAC算法中所使用的实际密码密钥。其未被加密。不需要对其进行解密。具有未被混淆的密钥信息的带密钥散列MAC指令的另一个实施例是指示具有结果MAC将基于的且一致的未加密IV1和IV2的存储位置的指令。
图8是具有混淆密钥信息的带密钥散列MAC指令801的示例实施例的框图。所述指令包括操作代码或操作码860。操作码可表示可操作用于标识即将执行的指令和/或操作(例如,带密钥散列MAC操作)的多个位或一个或多个字段。所述指令还包括用于指示消息位置的消息指示字段808、用于指示混淆密钥信息的位置的混淆密钥信息指示字段809、用于指示要存储MAC的目的地存储位置的可选目的地存储位置指示字段861。通过示例的方式,这些字段中的每个字段可以包括用于指定相关联的操作数的寄存器地址、存储器位置或其他存储位置的位。可替代地,可选地,这些存储位置中的一个或多个可以对指令(例如,操作码)隐式或固有,而不是被指定。作为另一示例,在一些实施例中,不是目的地指定字段,而是用于消息和/或混淆密钥信息的存储位置可选地可以隐式地重新用于目的地操作数。在一些实施例中,所述指令还可以可选地具有用于指示指令和/或操作码所支持的多个不同散列算法之一的散列算法指示字段862。在一些实施例中,所述指令还可以可选地具有用于指示消息的块数的块数指示字段863。在一些实施例中,所述指令还可以可选地具有用于指示即将存储的MAC的长度(例如,MAC要截短的长度)的MAC长度指示字段864。字段862至864是可选的并非必需的。替代性实施例可以包括展示的字段的子集和/或可以添加附加字段。所述字段的所展示的安排不是必需的,而是所述字段可以以各种方式重新安排。此外,所述字段中的每个字段可以由连续位集合组成,或者可以包括在逻辑上表示字段的非连续的或分离的位。
示例性核架构、处理器以及计算机架构
处理器核能够以不同的方式实现,用于不同的目的地以及在不同的处理器中。例如,这种核的实施方式可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实施方式可以包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这种不同处理器导致不同计算机系统架构,其可以包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中的分开管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在这种情况下,这种协处理器有时被称为专用逻辑,比如,集成图形和/或科学(吞吐量)逻辑或专用核);以及4)芯片上的系统,所述系统可以包括在相同裸片上的所描述的CPU(有时称为(多个)应用核或(多个)应用处理器)、上述协处理器以及附加功能。接下来描述示例性核架构,之后是对示例性处理器和计算机架构的描述。
示例性核架构
有序和无序核框图
图9A是框图,展示了根据本发明的实施例的示例性有序流水线和示例性寄存器重命名无序发出/执行流水线两者。图9B是框图,展示了根据本发明的实施例的将包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名无序发出/执行架构核两者。图9A和图9B中的实线框展示了有序流水线和有序核,而虚线框的可选添加展示了寄存器重命名无序发出/执行流水线和核。假定有序方面是无序方面的子集,将描述无序方面。
在图9A中,处理器流水线900包括获取阶段902、长度解码阶段904、解码阶段906、分配阶段908、重命名阶段910、调度(也被称为分派或发出)阶段912、寄存器读取/存储器读取阶段914、执行阶段916、回写/存储器写入阶段918、异常处理阶段922以及提交阶段924。
图9B示出了处理器核990,所述处理器核包括耦合至执行引擎单元950的前端单元930,并且所述执行引擎单元和前端单元两者都耦合至存储器单元970。核990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又另一个选项,核990可以是专用核,如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元930包括耦合至指令高速缓存单元934的分支预测单元932,所述指令高速缓存单元耦合至指令转换后备缓冲器(TLB)936,所述指令转换后备缓冲器耦合至指令获取单元938,所述指令获取单元耦合至解码单元940。解码单元940(或解码器)可以对指令进行解码并且生成从原始指令解码出的、或以其他方式反映原始指令或从原始指令衍生出的作为输出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号。解码单元940可以使用各种不同的机制来实施。合适机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990包括微代码ROM或存储用于某些宏指令的微代码的其他介质(例如,在解码单元940中或者在前端单元930内)。解码单元940耦合至执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括耦合至引退单元954的重命名/分配器单元952和一组一个或多个调度器单元956。(多个)调度器单元956表示任何数量的不同调度器,包括保留站、中央指令窗口等。(多个)调度器单元956耦合至(多个)物理寄存器堆单元958。(多个)物理寄存器单元958各自表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,比如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为有待执行的下一指令的地址的指令指针)等。在一个实施例中,(多个)物理寄存器堆单元958包括向量寄存器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、以及通用寄存器。(多个)物理寄存器堆单元958与引退单元954重叠以说明可实施寄存器重命名和无序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用将来的(多个)堆、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。引退单元954和(多个)物理寄存器堆单元958耦合至(多个)执行群集960。(多个)执行群集960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可以执行各种运算(例如,移位、加法、减法、乘法)以及对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行。尽管一些实施例可包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元956、(多个)物理寄存器堆单元958、以及(多个)执行集群960被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实现了其中只有所述流水线的执行集群具有(多个)存储器访问单元964的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是无需发出/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元964耦合至存储器单元970,所述存储器单元包括耦合至数据高速缓存单元974的数据TLB单元972,所述数据高速缓存单元耦合至2级(L2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可以包括各自耦合至存储器单元970中的数据TLB单元972的加载单元、存储地址单元、以及存储数据单元。指令高速缓存单元934进一步耦合至存储器单元970中的2级(L2)高速缓存单元976。L2高速缓存单元976耦合至一个或多个其他级的高速缓存并且最终耦合至主存储器。
通过示例的方式,示例性寄存器重命名无序发出/运行核架构可以实施流水线900如下:1)指令获取938执行获取和长度解码阶段902和904;2)解码单元940执行解码阶段906;3)重命名/分配器单元952执行分配阶段908和重命名阶段910;4)(多个)调度器单元956执行调度阶段912;5)(多个)物理寄存器堆单元958和存储器单元970执行寄存器读取/存储器读取阶段914;执行集群960执行执行阶段916;6)存储器单元970和(多个)物理寄存器堆单元958执行回写/存储器写入阶段918;7)各种单元可以涉及异常处理阶段922;以及8)引退单元954和(多个)物理寄存器堆单元958执行提交阶段924。
核990可以支持一个或多个指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,比如NEON)),包括本文所描述的(多个)指令。在一个实施例中,核990包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用打包数据来执行许多多媒体应用所使用的操作。
应当理解,核可以支持多线程化(执行两个或更多个并行的操作或线程集),并且可以以各种方式来完成多线程化,所述各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分获取和解码以及此后诸如超线程化技术中的同步多线程化)。
虽然在无序执行的上下文中描述了寄存器重命名,但应当理解的是,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还包括分开的指令和数据缓存单元934/974和共享的L2缓存单元976,但替代实施例可以具有用于指令和数据两者的单个内部缓存,例如一级(L1)内部缓存、或多级内部缓存。在一些实施例中,所述系统可以包括在所述核和/或处理器外部的内部高速缓存和外部高速缓存的组合。可替代地,所有高速缓存都可以在所述核和/或处理器的外部。
特定示例性有序核架构
图10A和图10B展示了更特定的示例性有序核架构的框图,所述核是芯片中的多个逻辑块(包括相同类型和/或不同类型的其他核)之一。根据应用,逻辑块通过具有某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑的高带宽互连网络(例如,环形网络)进行通信。
图10A是根据本发明的实施例的单个处理器核、连同其与管芯上互连网络1002的连接以及连同其2级(L2)高速缓存1004的本地子集的框图。在一个实施例中,指令解码器1000支持具有打包数据指令集扩展的x86指令集。L1高速缓存1006允许对标量和向量单元中的高速缓存存储器的低等待时间访问。虽然在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器组(分别为标量寄存器11012和向量寄存器1014),并且在它们之间传送的数据被写入存储器并且然后从1级(L1)高速缓存1006中回读,但本发明的替代实施例可以使用不同的途径(例如,使用单个寄存器组或者包括允许数据在两个寄存器堆之间传送而未被写入和回读的通信路径)。
L2高速缓存1004的局部子集是全局L2高速缓存的一部分,所述全局L2高速缓存被划分为多个分开的局部子集,每个处理器核一个。每个处理器核具有到其本身的L2高速缓存1004的局部子集的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集1004中并且可以被快速访问,与其他处理器核并行地访问其局部L2的高速缓存子集。由处理器核写入的数据被存储在其本身的L2高速缓存子集1004中,并且如果需要,则从其他子集划掉。环形网络确保共享数据的相干性。环形网络是双向的,允许诸如处理器核、L2高速缓存和其他逻辑块的媒介在芯片内彼此通信。每个环形数据路径在每个方向为1012位宽。
图10B是根据本发明的实施例的图10A中的处理器核的一部分的展开视图。图10B包括L1高速缓存1004的L1数据高速缓存1006A部分、以及关于向量单元1010和向量寄存器1014的更多细节。具体地,向量单元1010是16位宽向量处理单元(VPU)(参见16位宽ALU1028),所述向量处理单元执行整数、单精度浮点和双精度浮点指令中的一者或多者。VPU支持用混合单元1020对寄存器输入进行混合、用转换单元1022A和1022B进行数字转换、以及用复制单元1024对存储器输入进行复制。写入掩码寄存器1026允许预测结果向量写入。
具有集成存储器控制器和图形的处理器
图11是根据本发明的实施例的可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器1100的框图。图11中的实线框展示了具有单个核1102A、系统代理1110、一组一个或多个总线控制器单元1116的处理器1100,而虚线框的可选添加展示了具有多个核1102A至1102N、系统代理1110中的一组一个或多个集成存储器控制器单元1114以及专用逻辑1108的替代处理器1100。
因此,处理器1100的不同实施方式可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1108和作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核1102A至1102N的CPU;2)协处理器,其中核1102A至1102N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1102A至1102N是大量通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等。处理器可以在一个或多个芯片上实施。处理器1100可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS的多种加工技术中的任何一种技术在一个或多个衬底上实施。
存储器层级包括核内的一个或多个级别的高速缓存,一组一个或多个共享高速缓存单元1106、以及外部存储器(未示出),所述外部存储器耦合至所述一组集成存储器控制器单元1114。所述一组共享高速缓存单元1106可以包括一个或多个中级高速缓存,比如,2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存、终极高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环形的互连单元1112将集成图形逻辑1108、所述一组共享高速缓存单元1106、以及系统代理单元1110/(多个)集成存储器控制器单元1114互连,但替代实施例可以使用任何数量的用于互连这种单元的已知技术。在一个实施例中,在一个或多个高速缓存单元1106与核1102A至1102N之间保持相干性。
在一些实施例中,所述核1102A至1102N中的一个或多个核能够进行多线程。系统代理1110包括协调和操作核1102A至1102N的那些组件。系统代理单元1110可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核1102A至1102N和集成图形逻辑1108的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核1102A至1102N可以是同质的或异构的;也就是说,核1102A至1102N中的两个或更多个核能够执行相同的指令集,而其他的核能够仅执行那个指令集的子集或执行不同的指令集。
示例性计算机架构
图12至图21是示例性计算机架构的框图。本领域中已知的用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备和各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够纳入本文中所公开的处理器和/或其他执行逻辑的多个系统和电子设备一般都是合适的。
现在参照图12,示出了根据本发明的一个实施例的系统1200的框图。系统1200可以包括耦合至控制器中枢1220的一个或多个处理器1210、1215。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250(其可以在分开的芯片上);GMCH 1290包括存储器和图形控制器,存储器1240和协处理器1245被耦合到所述图形控制器;IOH 1250将输入/输出(I/O)设备1260耦合到GMCH1290。可替代地,存储器和图形控制器中的一者或两者被集成在处理器(如本文所述)内,存储器1240和协处理器1245通过IOH 1250直接耦合到单个芯片中的处理器1210和控制器中枢1220。
图12中用虚线表示附加处理器1215的可选特性。每个处理器1210、1215可以包括本文描述的一个或多个处理核,并且可以是处理器1100的某个版本。
存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器中枢1220经由多点总线(例如,前端总线(FSB)、如快速路径互连(QPI)等点对点接口或类似连接件1295)与(多个)处理器1210、1215通信。
在一个实施例中,协处理器1245是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。
在包括架构、微架构、热学、功率消耗特性等等的指标度量范围方面,在物理资源1210、1215之间可以存在各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。协处理器指令可以被嵌入在指令中。处理器1210将这些协处理器指令识别为属于应由附接的协处理器1245执行的类型。相应地,处理器1210将协处理器总线或其他互连上的这些协处理器指令(或表示协处理器指令的控制信号)发出到协处理器1245。(多个)协处理器1245接受并执行接收到的协处理器指令。
现在参照图13,示出了根据本发明的实施例的第一更具体示例性系统1300的框图。如图13所示,多处理器系统1300是点对点互连系统,并且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380各自可以是处理器1100的某个版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210、协处理器1245。
处理器1370和1380被示出为分别包括集成存储器控制器(IMC)单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(P-P)接口1376和1378;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可以使用P-P接口电路1378、1388通过点对点(P-P)接口1350交换信息。如图13所示,IMC 1372和1382将处理器耦合至对应存储器(即,存储器1332和存储器1334)上,所述存储器可以是主存储器的本地附接至对应处理器上的部分。
处理器1370、1380可以各自使用点对点接口电路1376、1394、1386、1398经由单独的P-P接口1352、1354来与芯片组1390交换信息。可选地,芯片组1390可以经由高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式下,则任一或两个处理器的本地高速缓存信息可以被存储在所述共享高速缓存中。
芯片组1390可以经由接口1396耦合至第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(PCI)总线,或如PCI Express总线或另一种第三代I/O互连总线等总线,尽管本发明的范围不限于此。
如图13所示,不同I/O设备1314可以连同总线桥接器1318耦合到第一总线1316,所述总线桥接器可以将第一总线1316耦合到第二总线1320。在一个实施例中,一个或多个附加处理器1315(例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、字段可编程门阵列、或任何其他处理器)被耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(LPC)总线。在一个实施例中,各个设备可以耦合至第二总线1320,所述设备包括例如键盘和/或鼠标1322、通信设备1327、以及可以包括指令/代码和数据1330的存储单元1328(比如,磁盘驱动器或者其他大容量存储设备)。进一步地,音频I/O 1324可以耦合至第二总线1320。注意,其他架构是可能的。例如,替代图13的点对点架构,系统可以实施多站式总线或其他这种架构。
现在参照图14,示出了根据本发明的实施例的第二更具体示例性系统1400的框图。图13和图14中的相同元件具有相同的参考数字,并且已经从图14中省略了图13的某些方面以避免使图14的其他方面模糊。
图14展示了处理器1370、1380可以分别包括集成存储器和I/O控制逻辑(“CL”)1372和1382。因此,CL 1372、1382包括集成存储器控制器单元并且包括I/O控制逻辑。图14展示了不仅存储器1332、1334被耦合至CL 1372、1382,而且I/O设备1414也被耦合至控制逻辑1372、1382。传统I/O设备1415被耦合至芯片组1390。
现在参照图15,示出了根据本发明的实施例的SoC 1500的框图。图11中的相似元件具有相同的参考数字。此外,虚线框是关于更先进的SoC的可选特征。在图15中,(多个)互连单元1502被耦合到:应用处理器1510,所述应用处理器包括一组一个或多个核142A-N和一个或多个共享缓存单元1106;系统媒介单元1110;(多个)总线控制器单元1116;(多个)集成存储器控制器单元1114;一组一个或多个协处理器1520,所述协处理器可以包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器访问(DMA)单元1532;以及显示单元1540,所述显示单元用于耦合至一个或多个外部显示器。在一个实施例中,(多个)协处理器1520是专用处理器,如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
可以在硬件、软件、固件或这种实施方式的组合中实施本文公开的机制的实施例。本发明的实施例可以被实施为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
如图13所示的代码1330等程序代码可以被应用于输入指令以执行本文所述的功能并且生成输出信息。输出信息能够以已知的方式应用于一个或多个输出设备。为了本申请的目的地,处理系统包括具有处理器的任何系统,如例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器。
程序代码可以以高级程序或面向对象的编程语言来实施以便与处理系统通信。如果期望的话,程序代码还可以以汇编或机器语言来实施。事实上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,所述语言可以是编译或解释语言。
可由机器可读介质上所存储的代表性指令实现至少一个实施例的一个或多个方面,所述指令表示处理器内的各种逻辑,所述指令当被机器读取时使所述机器制作用于执行本文描述的技术的逻辑。这种表示(被称为“IP核”)可以被存储在有形机器可读介质上并提供给各顾客或制造设施以加载到实际制作所述逻辑或处理器的制作机器中。
这种机器可读存储介质可以包括但不限于:由机器或设备制造或形成的物品的非暂态有形安排,包括如硬盘等存储介质;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(CD-ROM)、可重写致密盘(CD-RW)和磁光盘;半导体设备,比如,只读存储器(ROM);随机存取存储器(RAM),比如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM);可擦除可编程只读存储器(EPROM);闪存存储器;电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(比如,硬件描述语言(HDL))的非暂态有形机器可读介质,所述非暂态有形机器可读介质限定本文描述的结构、电路、设备、处理器和/或系统特征。这种实施例也可以被称为程序产品。
仿真(包括二进制转换、代码变形等)
在一些情况下,可以使用指令转换器将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、仿真、或以其他方式转换为有待由核处理的一个或多个其他指令。可以在软件、硬件、固件或其组合中实施指令转换器。指令转换器可以位于处理器上、处理器外、或者部分在处理器上并且部分在处理器外。
图16是框图,对照了根据本发明的实施例的对用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用。在所示实施例中,指令转换器是软件指令转换器,然而可替代地,可以在软件、固件、硬件或其各种组合中实施指令转换器。图16示出了可以使用x86编译器1604来编译高级语言1602的程序以生成x86二进制代码1606,所述x86二进制代码可以由具有至少一个x86指令集核的处理器1616本机执行。具有至少一个x86指令集核的处理器1616表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的因特尔处理器基本相同功能的任何处理器:(1)因特尔x86指令集核的指令集的实质部分、或(2)目标代码版本的应用或目标是在具有至少一个x86指令集核的因特尔处理器上运行的其他软件,以便实现与具有至少一个x86指令集核的因特尔处理器基本相同的结果。x86编译器1604表示可操作用于生成x86二进制代码1606(例如,目标代码)的编译器,所述x86二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核1616的处理器上执行。类似地,图16示出了可以使用替代指令集编译器1608来编译生成替代指令集二进制代码1610的高级语言1602的程序,可以由不具有至少一个x86指令集核1614的处理器(例如,具有执行加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的多个核的处理器)本机执行所述替代指令集二进制代码。指令转换器1612用于将x86二进制代码1606转换为可由不具有x86指令集核1614的处理器本机执行的代码。此经转换的代码不太可能与替代指令集二进制代码1610相同,因为很难制作能够实现这一点的指令转换器;然而,经转换的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1612表示通过仿真、模拟或任何其他进程允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。
对于图3至图8中任一者描述的组件、特征和细节也可以可选地应用于图1和图2中的任一者。此外,可选地,针对所述装置中的任一者描述的组件、特征和细节还可以适用于在实施例中可由和/或用这种装置执行的任何方法。本文所述处理器中的任一个可包括在本文(例如,图12至图15)公开的计算机系统中的任一个中。在一些实施例中,计算机系统可以包括动态随机存取存储器(DRAM)。可替代地,计算机系统可以包括某种类型的不需要刷新的易失性存储器或闪存。本文公开的指令可使用本文示出的在本文示出的系统中的任何系统上的具有本文示出的微架构中的任何微架构的处理器中的任何处理器来执行。
在说明书和权利要求书中,可能使用术语“耦合”和/或“连接”及其衍生词。这些术语并不旨在作为彼此的同义词。而是,在实施例中,“连接”可以用于指示两个或更多个元件直接物理和/或电气接触。“耦合”可以意指两个或更多个元件彼此直接物理和/或电气接触。然而,“耦合”还可以意指两个或更多个元件并非彼此直接接触,但仍彼此协作或交互。例如,执行单元可以通过一个或多个中间组件与寄存器和/或解码单元耦合。在附图中,箭头用于示出连接和耦合。
可能已使用术语“和/或”。如本文所使用的,术语“和/或”是指一个或另一个或两者(例如,A和/或B表示A或B或A和B两者)。
在以上说明中,阐述了许多特定细节以便提供对这些实施例的透彻理解。然而,可以在没有这些具体细节的一些具体细节的情况下实践其他实施例。本发明的范围不是通过上面提供的具体实施例来确定,而是由下面的权利要求来确定的。在其他情况下,已知的电路、结构、设备和操作已经以框图形式和/或没有细节地示出,以避免模糊对说明书的理解。在认为适当的情况下,参考数字或参考数字的终端部分已经在附图中重复,以指示相应的或类似的元件,可选地,所述元件可以具有相似或相同的特性,除非另有说明或清楚地显现。
某些操作可以由硬件组件执行、或者可以体现在机器可执行或电路可执行指令中,所述指令可以用于引起和/或导致机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等)编程有执行这些操作的指令。可选地,还可以通过硬件和软件的组合来执行操作。可以包括特定或具体电路或其他逻辑(例如,可能与固件和/或软件组合的硬件)的处理器、机器、电路或硬件可操作用于执行和/或处理指令并且响应于指令而存储结果。
一些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。介质可以包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可以提供或已经在其上存储有指令或指令序列,所述指令或指令序列如果和/或当被机器执行时可操作用于使所述机器执行和/或导致所述机器执行本文公开的一种或多种操作、方法或技术。
在一些实施例中,机器可读介质可以包括非暂态机器可读存储介质。例如,非暂态机器可读存储介质可以包括软盘、光存储介质、光盘、光数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、非暂态数据存储设备等。非暂态机器可读存储介质不由暂态传播信号组成。在一些实施例中,存储介质可以包括有形介质,所述有形介质包括固体物质。
适合机器的示例包括但不限于:通用处理器、专用处理器、数字逻辑电路、集成电路等。适合机器的其他示例包括:计算机系统或包括处理器、数字逻辑电路或集成电路的其他电子设备。这种计算系统或电子设备的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
在整个说明书中,引用“一个实施例”、“实施例”,“一个或多个实施例”、“一些实施例”例如指示特定特征可以在本发明的实践中被包括但未必是必须的。类似地,在说明书中,为了简化本公开并辅助理解各个发明性方面,各种特征有时在单个实施例、图或对其的描述中分组在一起。然而,本公开的方法并不被解释为反映本发明要求比每个权利要求中明确陈述的更多特征的意图。相反,正如以下的权利要求书所反映的,发明性方面在于少于单个公开的实施例的全部特征。因此,据此明确地将具体实施方式之后的权利要求结合到具体实施方式中,其中,每一项权利要求独立地代表本发明的单独实施例。
示例实施例
以下示例涉及进一步的实施例。可以在一个或多个实施例中的任何地方使用示例中的细节。
示例1是一种处理器,所述处理器包括解码单元,所述解码单元用于对与包括密码散列算法的带密钥散列消息认证码(MAC)算法相对应的具有混淆密钥信息的带密钥散列MAC指令进行解码。所述具有混淆密钥信息的带密钥散列MAC指令用于指示消息,用于指示混淆密钥信息并且用于指示目的地存储位置。执行单元与所述解码单元耦合。所述执行单元响应于所述具有混淆密钥信息的带密钥散列MAC指令而用于将与所指示的消息相对应的消息认证码(MAC)存储在所述目的地存储位置中。
示例2包括如示例1所述的处理器,其中,所述解码单元用于对用来指示所述混淆密钥信息的所述指令进行解码,在不使用所述处理器的不可由软件读取的秘密的情况下,无法从所述混淆密钥信息中导出所述MAC将基于的密码密钥。
示例3包括如示例1所述的处理器,其中,所述执行单元响应于所述指令而用于存储所述MAC,如果利用所述指示的消息和所述混淆密钥信息来对所述带密钥散列MAC算法进行估值,则所述MAC与所述带密钥散列MAC算法不一致。
示例4包括如示例1至3中任一项所述的处理器,其中,所述解码单元用于对用来指示所述混淆密钥信息的所述指令进行解码,所述混淆密钥信息包括密钥信息的加密,其中,所述密钥信息被用于生成所述MAC。
示例5包括如示例4所述的处理器,其中,所述密钥信息的所述加密包括密码密钥的加密。
示例6包括如示例4所述的处理器,其中,所述密钥信息的所述加密包括所述带密钥散列MAC算法的涉及密码密钥一部分的至少一个估值的加密。
示例7包括如示例6所述的处理器,其中,所述带密钥散列MAC算法的涉及所述密码密钥的所述部分的所述估值的所述加密包括以下各项中的至少一项:(1)利用所述带密钥散列MAC算法的初始状态以及所述密码密钥与内部填充值的异或(XOR)两者对所述密码散列算法的估值的加密;以及(2)利用所述带密钥散列MAC算法的所述初始状态以及所述密码密钥与外部填充值的异或两者对所述密码散列算法的估值的加密。
示例8包括如示例4至7中任一项所述的处理器,进一步包括不可由软件访问的秘密密钥,并且其中,所述执行单元包括解密单元,所述解密单元响应于所述指令而用于使用所述秘密密钥来对所述密钥信息的所述加密进行解密。
示例9包括如示例1至3中任一项所述的处理器,其中,所述解码单元用于对用来指示所述混淆密钥信息的所述指令进行解码,所述混淆密钥信息将包括密钥信息指示值。
示例10包括如示例9所述的处理器,其中,所述密钥信息指示值将是密钥信息索引、密钥信息编号和密钥信息标识符之一。
示例11包括如示例1至3中任一项所述的处理器,其中,所述解码单元用于对用来指示所述混淆密钥信息的所述指令进行解码,所述混淆密钥信息包括可认证密钥信息,并且其中,所述执行单元可操作用于:(1)尝试认证所述可认证密钥信息;以及(2)如果所述尝试认证所述可认证密钥信息未成功,则用信号表示错误。
示例12包括如示例1至11中任一项所述的处理器,其中,所述执行单元响应于具有混淆密钥信息的第二带密钥散列MAC指令而用于:(1)在中断之后停止执行所述具有混淆密钥信息的第二带密钥散列MAC指令;(2)利用所述处理器的不可由软件读取的秘密密钥对与所述第二带密钥散列MAC指令的执行相关联的中间状态进行加密;以及(3)将所加密的中间状态存储在存储位置中。
示例13包括如示例1至11中任一项所述的处理器,其中,所述执行单元响应于具有混淆密钥信息的第二带密钥散列MAC指令而用于:(1)在中断之后停止执行所述具有混淆密钥信息的第二带密钥散列MAC指令;以及(2)丢弃与对所述第二带密钥散列MAC指令的执行相关联的中间状态。
示例14包括如示例1至13中任一项所述的处理器,其中,所述密码散列算法将是MD5、SHA-1、SHA-2和RIPEMD之一。
示例15包括如示例14所述的处理器,其中,所述密码散列算法将是所述MD5和所述SHA-1之一。
示例16包括如示例1至15中任一项所述的处理器,其中,所述解码单元用于对将具有用来指示所述密码散列算法为多种不同密码散列算法中的任一种密码散列算法的字段的所述指令进行解码。
示例17包括如示例1至16中任一项所述的处理器,其中,所述解码单元用于对用来指示所述消息的长度的所述指令进行解码。
示例18包括如示例1至17中任一项所述的处理器,其中,所述解码单元用于对用来指示将存储在所述目的地存储位置中的所述MAC的长度的所述指令进行解码。
示例19包括如示例1至18中任一项所述的处理器,进一步包括多个通用寄存器和多个打包数据寄存器。所述解码单元用于对可选地用来指示所述多个通用寄存器中的通用寄存器的所述指令进行解码,所述通用寄存器将具有对存储器中的用于存储所述消息的位置的指示,并且其中,所述指令用于将所述多个打包数据寄存器中的打包数据寄存器可选地指示为所述目的地存储位置。
示例20是一种在处理器中的方法,所述方法包括接收与使用密码散列算法的带密钥散列消息认证码(MAC)算法相对应的具有混淆密钥信息的带密钥散列MAC指令。所述具有混淆密钥信息的带密钥散列MAC指令指示消息,指示混淆密钥信息并且指示目的地存储位置。所述方法还包括响应于所述具有混淆密钥信息的带密钥散列MAC指令而将与所指示的消息相对应的消息认证码(MAC)存储在所指示的目的地存储位置中。
示例21包括如示例20所述的方法,其中,接收包括接收指示所述混淆密钥信息的所述指令,在不使用所述处理器的不可由软件读取的秘密的情况下,无法从所述混淆密钥信息中导出所述MAC所基于的密码密钥。
示例22包括如示例20所述的方法,其中,接收包括接收指示所述混淆密钥信息的所述指令,所述混淆密钥信息包括密钥信息的加密。
示例23包括如示例20所述的方法,其中,接收包括接收指示所述混淆密钥信息的所述指令,所述混淆密钥信息包括指示密钥信息的密钥信息指示值但是不包括密钥信息并且不包括密钥信息的加密。
示例24是一种用于处理指令的系统,所述系统包括互连、与所述互连相耦合的处理器、以及与所述互连相耦合的动态随机存取存储器(DRAM)。所述处理器用于接收与包括密码散列算法的带密钥散列MAC算法相对应的具有混淆密钥信息的带密钥散列消息认证码(MAC)指令。所述具有混淆密钥信息的带密钥散列MAC指令用于指示消息,用于指示混淆密钥信息并且用于指示目的地存储位置。所述处理器响应于所述具有混淆密钥信息的带密钥散列MAC指令而用于将与所指示的消息相对应的消息认证码(MAC)存储在所述目的地存储位置。
示例25包括如示例24所述的系统,其中,所述指令用于指示包括对密钥信息进行加密的所述混淆密钥信息,其中,所述密钥信息用于生成所述MAC。
示例26是一种制品,所述制品包括非暂态机器可读存储介质。所述非暂态机器可读存储介质存储具有混淆密钥信息的带密钥散列消息认证码(MAC)指令。所述具有混淆密钥信息的带密钥散列MAC指令将与将使用密码散列算法的带密钥散列MAC算法相对应。所述具有混淆密钥信息的带密钥散列MAC指令用于指示消息,用于指示混淆密钥信息并且用于指示目的地存储位置。所述具有混淆密钥信息的带密钥散列MAC指令如果被机器执行则用于使所述机器执行操作,所述操作包括将与所指示的消息相对应的消息认证码(MAC)存储在所指示的目的地存储位置中。
示例27包括如示例26所述的制品,其中,所述指令用于指示包括密钥信息指示值的所述混淆密钥信息。
示例28包括如示例1至19中任一项所述的处理器,所述处理器进一步包括:可选的分支预测单元,用于对分支进行预测;以及可选的指令预取单元,与所述分支预测单元耦合,所述指令预取单元用于预取包括所述指令的指令。可选地,所述处理器还可以包括可选的1级(L1)指令高速缓存,与所述指令预取单元耦合,所述L1指令高速缓存用于存储指令;可选的L1数据高速缓存,用于存储数据;以及可选的2级(L2)高速缓存,用于存储数据和指令。所述处理器还可以可选地包括指令获取单元,所述指令获取单元与所述解码单元、所述L1指令高速缓存和所述L2高速缓存耦合以便在一些情况下从所述L1指令高速缓存和所述L2高速缓存之一中获取所述指令并且向所述解码单元提供所述指令。所述处理器还可以可选地包括:寄存器重命名单元,用于对寄存器进行重命名;可选的调度器,用于对已经从所述指令中解码出的一项或多项操作进行调度以供执行;以及可选的提交单元,用于提交所述指令的执行结果。
示例29是一种用于执行或可操作用于执行如示例20至23中任一项所述的方法的处理器或其他装置。
示例30是一种包括用于执行如示例20至23中任一项所述的方法的装置的处理器或其他设备。
示例31是一种包括可选地非暂态机器可读介质的制品,所述非暂态机器可读介质可选地存储或以其他方式提供指令,所述指令如果和/或当被处理器、计算机系统、电子设备或其他机器执行时可操作用于使所述机器执行如示例20至23中任一项所述的方法。
示例32是一种基本上如本文描述的处理器或其他装置。
示例33是一种可操作用于执行基本如本文所述的任一方法的处理器或其他装置。
示例34是一种用于执行基本上如本文描述的任何指令的处理器或其他装置(例如,其具有用于执行所述指令的组件或其可操作用于执行所述指令)。
示例35是一种计算机系统或其他电子设备,其包括处理器,所述处理器具有解码单元,所述解码单元用于对第一指令集的指令进行解码。所述处理器还具有一个或多个执行单元。所述电子设备还包括与所述处理器耦合的存储设备。所述存储设备用于存储第一指令,所述第一指令可以是基本上如本文公开的指令中的任何指令,并且所述第一指令将属于第二指令集。所述存储设备还用于存储用于将所述第一指令转换成所述第一指令集的一个或多个指令的指令。所述第一指令集的所述一个或多个指令当由所述处理器执行时将使所述处理器仿真所述第一指令。

Claims (25)

1.一种处理器,包括:
解码单元,所述解码单元用于对与包括密码散列算法的带密钥散列消息认证码(MAC)算法相对应的具有混淆密钥信息的带密钥散列MAC指令进行解码,所述具有混淆密钥信息的带密钥散列MAC指令指示消息、指示混淆密钥信息并且指示目的地存储位置;以及
执行单元,所述执行单元与所述解码单元耦合,所述执行单元响应于所述具有混淆密钥信息的带密钥散列MAC指令而用于将与所指示的消息相对应的消息认证码(MAC)存储在所述目的地存储位置中。
2.如权利要求1所述的处理器,其中,所述解码单元用于对指示所述混淆密钥信息的所述指令进行解码,在不使用所述处理器的不可由软件读取的秘密的情况下,无法从所述混淆密钥信息中导出所述MAC将基于的密码密钥。
3.如权利要求1所述的处理器,其中,所述执行单元响应于所述指令而用于存储所述MAC,在不使用在所述处理器内受到保护且不可由软件读取的秘密的情况下,无法使用所述混淆密钥信息从所述消息中导出所述MAC。
4.如权利要求1所述的处理器,其中,所述解码单元用于对用来指示所述混淆密钥信息的所述指令进行解码,所述混淆密钥信息包括密钥信息的加密,其中,所述密钥信息将被用于生成所述MAC。
5.如权利要求4所述的处理器,其中,所述密钥信息的所述加密包括密码密钥的加密。
6.如权利要求4所述的处理器,其中,所述密钥信息的所述加密包括所述带密钥散列MAC算法的涉及密码密钥的一部分的至少一个估值的加密。
7.如权利要求6所述的处理器,其中,所述带密钥散列MAC算法的涉及所述密码密钥的所述部分的所述估值的所述加密包括以下各项中的至少一项:
利用所述带密钥散列MAC算法的初始状态以及所述密码密钥与内部填充值的异或(XOR)两者对所述密码散列算法的估值的加密;以及
利用所述带密钥散列MAC算法的所述初始状态以及所述密码密钥与外部填充值的异或两者对所述密码散列算法的估值的加密。
8.如权利要求4所述的处理器,进一步包括不可由软件读取的秘密密钥,并且其中,所述执行单元包括解密单元,所述解密单元响应于所述指令而用于使用所述秘密密钥来对所述密钥信息的所述加密进行解密。
9.如权利要求1所述的处理器,其中,所述解码单元用于对指示所述混淆密钥信息的所述指令进行解码,所述混淆密钥信息包括密钥信息指示值。
10.如权利要求9所述的处理器,其中,所述密钥信息指示值将是密钥信息索引、密钥信息编号和密钥信息标识符之一。
11.如权利要求1所述的处理器,其中,所述解码单元用于对用来指示所述混淆密钥信息的所述指令进行解码,所述混淆密钥信息包括可认证密钥信息,并且其中,所述执行单元可操作用于:
尝试认证所述可认证密钥信息;以及
如果所述尝试认证所述可认证密钥信息未成功,则用信号表示错误。
12.如权利要求1至11中任一项所述的处理器,其中,所述执行单元响应于具有混淆密钥信息的第二带密钥散列MAC指令而用于:
在中断之后停止执行所述具有混淆密钥信息的第二带密钥散列MAC指令;
利用所述处理器的不可由软件读取的秘密密钥对与所述第二带密钥散列MAC指令的执行相关联的中间状态进行加密;以及
将所加密的中间状态存储在存储位置中。
13.如权利要求1至11中任一项所述的处理器,其中,所述执行单元响应于具有混淆密钥信息的第二带密钥散列MAC指令而用于:
在中断之后停止执行所述具有混淆密钥信息的第二带密钥散列MAC指令;以及
丢弃与所述第二带密钥散列MAC指令的执行相关联的中间状态。
14.如权利要求1至11中任一项所述的处理器,其中,所述密码散列算法将是MD5、SHA-1、SHA-2和RIPEMD之一。
15.如权利要求14所述的处理器,其中,所述密码散列算法将是所述MD5和所述SHA-1之一。
16.如权利要求1至11中任一项所述的处理器,其中,所述解码单元用于对将具有用来指示所述密码散列算法为多种不同密码散列算法中的任一种密码散列算法的字段的所述指令进行解码。
17.如权利要求1至11中任一项所述的处理器,其中,所述解码单元用于对用来指示所述消息的长度的所述指令进行解码。
18.如权利要求1至11中任一项所述的处理器,其中,所述解码单元用于对指示将被存储在所述目的地存储位置中的所述MAC的长度的所述指令进行解码。
19.一种在处理器中的方法,所述方法包括:
接收与使用密码散列算法的带密钥散列消息认证码(MAC)算法相对应的具有混淆密钥信息的带密钥散列MAC指令,所述具有混淆密钥信息的带密钥散列MAC指令指示消息、指示混淆密钥信息并且指示目的地存储位置;以及
响应于所述具有混淆密钥信息的带密钥散列MAC指令而将与所指示的消息相对应的消息认证码(MAC)存储在所指示的目的地存储位置中。
20.如权利要求19所述的方法,其中,接收包括接收指示所述混淆密钥信息的所述指令,在不使用所述处理器的不可由软件读取的秘密的情况下,无法从所述混淆密钥信息中导出所述MAC所基于的密码密钥。
21.如权利要求19所述的方法,其中,接收包括接收指示所述混淆密钥信息的所述指令,所述混淆密钥信息包括密钥信息的加密。
22.如权利要求19所述的方法,其中,接收包括接收指示所述混淆密钥信息的所述指令,所述混淆密钥信息包括指示密钥信息的密钥信息指示值但是不包括密钥信息并且不包括密钥信息的加密。
23.一种设备,包括用于执行如权利要求19至22中任一项所述的方法的装置。
24.一种包括非暂态机器可读介质的制品,所述非暂态机器可读介质存储有指令,所述指令如果被机器执行则可操作用于使所述机器执行如权利要求19至22中的任一项所述的方法。
25.一种电子设备,包括互连、与所述互连相耦合的如权利要求1至11中任一项所述的处理器、以及与所述互连相耦合的动态随机存取存储器(DRAM)。
CN201680030047.XA 2015-06-26 2016-05-26 带密钥散列消息认证码处理器、方法、系统和指令 Active CN107667499B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/751,881 US10313129B2 (en) 2015-06-26 2015-06-26 Keyed-hash message authentication code processors, methods, systems, and instructions
US14/751,881 2015-06-26
PCT/US2016/034396 WO2016209536A1 (en) 2015-06-26 2016-05-26 Keyed-hash message authentication code processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
CN107667499A true CN107667499A (zh) 2018-02-06
CN107667499B CN107667499B (zh) 2021-11-23

Family

ID=57586201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680030047.XA Active CN107667499B (zh) 2015-06-26 2016-05-26 带密钥散列消息认证码处理器、方法、系统和指令

Country Status (5)

Country Link
US (1) US10313129B2 (zh)
EP (1) EP3314811B1 (zh)
CN (1) CN107667499B (zh)
TW (1) TWI705352B (zh)
WO (1) WO2016209536A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111771353A (zh) * 2018-02-16 2020-10-13 北欧半导体公司 保护加密密钥数据
CN111914248A (zh) * 2020-08-18 2020-11-10 科大讯飞股份有限公司 密码输入方法、装置、设备及存储介质
CN112385175A (zh) * 2018-06-18 2021-02-19 皇家飞利浦有限公司 一种用于数据加密和完整性的设备
CN112395651A (zh) * 2019-08-14 2021-02-23 旺宏电子股份有限公司 存储器装置及用于操作存储器装置的方法
CN112436935A (zh) * 2019-08-26 2021-03-02 英飞凌科技股份有限公司 密码设备、操作密码设备的方法、车辆和存储介质
CN113302877A (zh) * 2018-11-13 2021-08-24 皇家飞利浦有限公司 用于提供适合用于短消息的消息认证码的方法和设备
CN113704791A (zh) * 2021-09-01 2021-11-26 北京兆芯电子科技有限公司 处理器、以及哈希信息认证码编码方法
CN113796045A (zh) * 2019-03-25 2021-12-14 美光科技公司 确认车辆的电子控制单元
CN114629633A (zh) * 2020-12-14 2022-06-14 国际商业机器公司 密钥块增强封装
CN114830110A (zh) * 2019-11-07 2022-07-29 美光科技公司 单次使用密码产生

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10403173B2 (en) * 2013-08-13 2019-09-03 Fiske Software, Llc NADO cryptography using one-way functions
US10313129B2 (en) 2015-06-26 2019-06-04 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions
US10089500B2 (en) 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions
US10742419B2 (en) * 2016-03-15 2020-08-11 Visa International Service Association Validation cryptogram for transaction
US10270598B2 (en) 2016-08-26 2019-04-23 Intel Corporation Secure elliptic curve cryptography instructions
US10783279B2 (en) * 2016-09-01 2020-09-22 Atmel Corporation Low cost cryptographic accelerator
US10637648B2 (en) * 2017-03-24 2020-04-28 Micron Technology, Inc. Storage device hash production
GB2564878B (en) * 2017-07-25 2020-02-26 Advanced Risc Mach Ltd Parallel processing of fetch blocks of data
JP6735926B2 (ja) * 2017-09-01 2020-08-05 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム
US10944568B2 (en) * 2017-10-06 2021-03-09 The Boeing Company Methods for constructing secure hash functions from bit-mixers
EP3506558A1 (en) 2017-12-28 2019-07-03 Koninklijke Philips N.V. Whitebox computation of keyed message authentication codes
JP2021517409A (ja) * 2018-03-23 2021-07-15 マイクロン テクノロジー,インク. ストレージデバイスの認証修正
US10785028B2 (en) 2018-06-29 2020-09-22 Intel Corporation Protection of keys and sensitive data from attack within microprocessor architecture
GB2582900A (en) * 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
US11188681B2 (en) * 2019-04-08 2021-11-30 International Business Machines Corporation Malware resistant computer
KR20200130539A (ko) * 2019-05-08 2020-11-19 삼성전자주식회사 강력한 보안 기능을 제공하는 스토리지 장치 및 그 스토리지 장치를 포함하는 전자 장치
US11917067B2 (en) 2019-12-28 2024-02-27 Intel Corporation Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data
US11216366B2 (en) 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
CN111953488A (zh) * 2020-08-28 2020-11-17 南方电网科学研究院有限责任公司 一种hmac-sm3算法的密钥获取方法、装置、设备和存储介质
US11706039B2 (en) 2020-12-26 2023-07-18 Intel Corporation ISA accessible physical unclonable function
US11700135B2 (en) * 2020-12-26 2023-07-11 Intel Corporation ISA accessible physical unclonable function
US20220207155A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Instruction support for saving and restoring key information
US11570010B2 (en) * 2020-12-26 2023-01-31 Intel Corporation ISA accessible physical unclonable function
CN112818415A (zh) * 2020-12-31 2021-05-18 杭州趣链科技有限公司 基于APSoC的国密计算方法、系统及介质
US11972126B2 (en) 2021-03-26 2024-04-30 Intel Corporation Data relocation for inline metadata
US11954045B2 (en) 2021-09-24 2024-04-09 Intel Corporation Object and cacheline granularity cryptographic memory integrity

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103780397A (zh) * 2014-02-25 2014-05-07 中国科学院信息工程研究所 一种多屏多因子便捷web身份认证方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8704883D0 (en) * 1987-03-03 1987-04-08 Hewlett Packard Co Secure information storage
US6226742B1 (en) * 1998-04-20 2001-05-01 Microsoft Corporation Cryptographic technique that provides fast encryption and decryption and assures integrity of a ciphertext message through use of a message authentication code formed through cipher block chaining of the plaintext message
US7028184B2 (en) * 2001-01-17 2006-04-11 International Business Machines Corporation Technique for digitally notarizing a collection of data streams
US7356710B2 (en) * 2003-05-12 2008-04-08 International Business Machines Corporation Security message authentication control instruction
JP4765262B2 (ja) 2004-04-28 2011-09-07 富士電機株式会社 電子データ保管装置、プログラム
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US20070180539A1 (en) * 2004-12-21 2007-08-02 Michael Holtzman Memory system with in stream data encryption / decryption
US8200960B2 (en) 2006-10-20 2012-06-12 Oracle America, Inc. Tracking of resource utilization during cryptographic transformations
US8375205B2 (en) * 2007-09-28 2013-02-12 Intel Corporation Techniques for communicating information over management channels
US8261074B2 (en) * 2008-05-27 2012-09-04 Fujitsu Semiconductor Limited Verifying a cipher-based message authentication code
JP5376663B2 (ja) 2009-11-26 2013-12-25 イーパーセル株式会社 暗号化データ配送のための送信装置、受信装置、及び管理サーバ、並びに暗号化データ配送のための送信プログラム、受信プログラム、及び管理プログラム、並びに暗号化データ配送システム、並びに暗号化データの配送方法
JP2011254440A (ja) * 2010-06-04 2011-12-15 Toshiba Corp 情報処理装置
US9851969B2 (en) * 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US9135450B2 (en) 2011-12-21 2015-09-15 Intel Corporation Systems and methods for protecting symmetric encryption keys
US9065632B2 (en) 2013-02-20 2015-06-23 Qualcomm Incorporated Message authentication using a universal hash function computed with carryless multiplication
JP2014209677A (ja) 2013-04-16 2014-11-06 株式会社東芝 データ管理装置、電力使用量計算システム、データ管理方法、及びデータ管理プログラム
US9425953B2 (en) 2013-10-09 2016-08-23 Intel Corporation Generating multiple secure hashes from a single data buffer
US10313129B2 (en) 2015-06-26 2019-06-04 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103780397A (zh) * 2014-02-25 2014-05-07 中国科学院信息工程研究所 一种多屏多因子便捷web身份认证方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PERITO DANIELE: "TrustworthCode Execution on Embedded Devices", 《UNIVERSITE DE GRENOBLE》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111771353B (zh) * 2018-02-16 2024-06-04 北欧半导体公司 保护加密密钥数据
CN111771353A (zh) * 2018-02-16 2020-10-13 北欧半导体公司 保护加密密钥数据
CN112385175A (zh) * 2018-06-18 2021-02-19 皇家飞利浦有限公司 一种用于数据加密和完整性的设备
CN112385175B (zh) * 2018-06-18 2024-04-09 皇家飞利浦有限公司 一种用于数据加密和完整性的设备
CN113302877A (zh) * 2018-11-13 2021-08-24 皇家飞利浦有限公司 用于提供适合用于短消息的消息认证码的方法和设备
CN113796045A (zh) * 2019-03-25 2021-12-14 美光科技公司 确认车辆的电子控制单元
CN112395651A (zh) * 2019-08-14 2021-02-23 旺宏电子股份有限公司 存储器装置及用于操作存储器装置的方法
CN112436935A (zh) * 2019-08-26 2021-03-02 英飞凌科技股份有限公司 密码设备、操作密码设备的方法、车辆和存储介质
US11728982B2 (en) 2019-11-07 2023-08-15 Micron Technology, Inc. Single-use password generation
CN114830110A (zh) * 2019-11-07 2022-07-29 美光科技公司 单次使用密码产生
CN114830110B (zh) * 2019-11-07 2023-08-11 美光科技公司 单次使用密码产生
CN111914248B (zh) * 2020-08-18 2023-10-27 科大讯飞股份有限公司 密码输入方法、装置、设备及存储介质
CN111914248A (zh) * 2020-08-18 2020-11-10 科大讯飞股份有限公司 密码输入方法、装置、设备及存储介质
CN114629633A (zh) * 2020-12-14 2022-06-14 国际商业机器公司 密钥块增强封装
CN113704791B (zh) * 2021-09-01 2024-03-15 北京兆芯电子科技有限公司 处理器、以及哈希信息认证码编码方法
CN113704791A (zh) * 2021-09-01 2021-11-26 北京兆芯电子科技有限公司 处理器、以及哈希信息认证码编码方法

Also Published As

Publication number Publication date
US10313129B2 (en) 2019-06-04
EP3314811A4 (en) 2019-02-20
EP3314811B1 (en) 2020-05-13
US20160380772A1 (en) 2016-12-29
TWI705352B (zh) 2020-09-21
TW201717098A (zh) 2017-05-16
CN107667499B (zh) 2021-11-23
WO2016209536A1 (en) 2016-12-29
EP3314811A1 (en) 2018-05-02

Similar Documents

Publication Publication Date Title
CN107667499A (zh) 带密钥散列消息认证码处理器、方法、系统和指令
CN104484284B (zh) 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN104620254B (zh) 用于低开销的存储器重播保护的并行化的计数器攀树
CN105095772B (zh) 用于安全地保存并恢复计算平台状态的方法和装置
CN104850777B (zh) 使用认证的清单来实现对多处理器平台的外部确认
TWI712887B (zh) 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體
CN105224865B (zh) 中断和恢复分页的指令及相关方法、系统、处理器和介质
CN104951697B (zh) 来自过程指令的返回-目标限制性返回、处理器、方法及系统
CN110661767A (zh) 在微处理器架构内保护密钥和敏感数据免受攻击
CN105051743B (zh) 用于处理安全哈希算法的指令处理器、方法、和系统
CN104781803B (zh) 用于架构不同核的线程迁移支持
CN107683480A (zh) 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令
CN110659244A (zh) 内联编码能力
CN109284185A (zh) 用于区块链交易加速的装置、方法和系统
CN109508555A (zh) 使用可信域在虚拟化系统中提供隔离
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
CN109690552A (zh) 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令
CN107209722A (zh) 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑
CN107094369A (zh) 用于提供simd sm3密码散列函数的指令和逻辑
CN106575215A (zh) Sm3哈希算法加速处理器、方法、系统和指令
CN110233720A (zh) Sm4加速处理器、方法和系统
CN107250993A (zh) 向量缓存行写回处理器、方法、系统和指令
CN105302522B (zh) 提供通用gf(256)simd密码算法功能性的指令和逻辑
CN108369516A (zh) 用于加载-索引和预取-分散操作的指令和逻辑
CN109479003B (zh) 用于安全椭圆曲线密码指令的处理器、系统、方法和设备

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