CN109565438B - 混合加密算法的硬件加速器及其系统 - Google Patents

混合加密算法的硬件加速器及其系统 Download PDF

Info

Publication number
CN109565438B
CN109565438B CN201780047242.8A CN201780047242A CN109565438B CN 109565438 B CN109565438 B CN 109565438B CN 201780047242 A CN201780047242 A CN 201780047242A CN 109565438 B CN109565438 B CN 109565438B
Authority
CN
China
Prior art keywords
sbox
encryption algorithm
hardware accelerator
data
bit
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
CN201780047242.8A
Other languages
English (en)
Other versions
CN109565438A (zh
Inventor
V·苏瑞史
S·萨特帕西
S·马修
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 CN109565438A publication Critical patent/CN109565438A/zh
Application granted granted Critical
Publication of CN109565438B publication Critical patent/CN109565438B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)

Abstract

描述了混合AES‑SMS4硬件加速器。实现混合AES‑SMS4硬件加速器的芯片上系统可以包括处理器核和耦合至处理器核的单个硬件加速器,单个硬件加速器用于对数据加密或解密。单个硬件加速器可以包括用于根据第一加密算法对数据加密或解密的第一块密码和用于根据第二加密算法对数据加密或解密的第二块密码。加速器可以进一步包括组合的替换盒(Sbox),耦合至第一块密码和第二块密码,组合的Sbox包括用于执行伽罗瓦域(GF)乘法和逆计算的逻辑,其中逆计算对于第一块密码和第二块密码是公共的。

Description

混合加密算法的硬件加速器及其系统
本公开涉及处理器的领域,并且更具体地涉及混合AES-SMS4硬件加速器。
背景技术
高级加密标准(AES)是由美国国家标准与技术研究所(NIST)于2001年建立的电子数据加密规范。AES已经被美国政府采用,并且现在在全球范围内使用。它取代了1977年发布的数据加密标准(DES)。由AES描述的算法是对称密钥算法,意味着同一密钥用于对数据加密和解密两者。SMS4是中国的块密码标准,在中国使用以用于保护无线网络。
附图简述
通过下文给出的具体实施方式并通过本公开的各实施例的附图,将更完整地理解本公开的各实施例。然而,不应当认为这些附图将本公开限制为特定实现方式,而是这些附图仅用于说明和理解。
图1是示出根据一个实施例的实现混合AES-SMS4硬件加速器的计算系统的框图。
图2是示出根据一个实施例的AES加密/解密组合的Sbox的框图。
图3是示出根据一个实施例的具有融合双重仿射和映射的SMS4 Sbox的框图。
图4是示出根据一个实施例的混合AES-SMS4加密和解密轮Sbox的框图。
图5是示出根据一个实施例的混合AES-SMS4加密和解密密钥扩展Sbox的框图。
图6是示出根据一个实施例的各种多项式组合的混合Sbox面积的分布的示图。
图7是示出根据一个实施例的混合128位AES-SMS4加密和解密轮次计算数据路径的框图。
图8是示出根据一个实施例的混合128位AES-SMS4加密和解密密钥扩展数据路径的框图。
图9A是示出根据一个实施例的实现混合AES-SMS4操作的处理器的微架构的框图。
图9B是示出根据一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图10示出根据一个实施例的包括用于执行混合AES-SMS4操作的逻辑电路的处理器的微架构的框图。
图11是根据一个实施例的计算机系统的框图。
图12是根据另一实施例的计算机系统的框图。
图13是根据一个实施例的芯片上系统的框图。
图14示出根据一个实施例的计算系统的框图的另一实现方式。
图15示出根据一个实现方式的计算系统的框图的另一实现方式。
具体实施方式
高级加密标准(AES)是在全世界用作标准的一种对称密钥密码。SMS4是中国信息安全标准化技术委员会针对无线网络采用的相对最新的用于WAPI的块密码标准。SMS4在安全级别方面可能相当于AES-128,并且SMS4在中国被采用作为加密标准。虽然AES和SMS4密码都可以执行类似的替换盒(Sbox)操作,但是它们使用截然不同的伽罗瓦域(GF)GF(28)约分多项式。
在一个实施例中,Sbox是对称密钥算法的执行替换的基本组件。通常,Sbox可以采用一定数量的输入位m,并且将它们变换为一定数量的输出位n,其中n不一定等于m。在一个实施例中,具有pn个元素的有限域被标注为GF(pn)并且被称为伽罗瓦域。GF(p),其中p是素数,可以是整数对p取模的环。
AES可以使用GF(28)约分多项式x8+x4+x3+x+1,而SMS4可以使用GF(28)约分多项式x8+x7+x6+x5+x4+x2+1。对约分多项式的选择区分了用于伽罗瓦域乘法和逆计算的逻辑,因此需要使用分开的电路用于AES和SMS4硬件实现。为AES和SMS4实现分开的专用硬件加速器是笨拙且低效的,并且可能导致显著的面积和功率开销。
本文描述的实施例可以通过描述可以被重新配置以支持AES和/或SMS4加密和/或解密的完全可合成的混合硬件加速器来解决分开的AES和SMS硬件限制。AES和SMS4密码由三个主要部分组成:(1)向中间轮数据添加轮密钥;(2)替换盒(Sbox)操作;以及(3)使用XOR(异或)或混合列操作在字节边界处混合。除此之外,Sbox可以包括最面积和性能关键操作。在一个实施例中,用于AES的128位加密/解密数据路径包括用于轮次计算的16个Sbox模块和用于运行中密钥扩展的4个Sbox模块。在一个实施例中,对于运行中密钥扩展,可以与当前加密/解密轮并行地计算用于下一轮的密钥。用户和/或程序可以不提供用于每个轮的密钥;在收到初始密钥之后,加速器内部地执行扩展。128位SMS4数据路径包括用于轮次计算的4个Sbox模块和用于密钥扩展的4个Sbox模块。
本文描述的混合加密/解密硬件加速器相对于分开的AES/SMS4数据路径实现可以产生显著面积改善。通过使用常见的伽罗瓦域求逆电路(相对于分开的AES/SMS4 Sbox实现,其可以产生40%的Sbox面积减少)和复合伽罗瓦域算术(例如,选择适用于AES和SMS4计算的基本和扩展域多项式,其可以产生附加的16%的面积减少),可以实现面积节省。本文描述的混合AES-SMS4硬件加速器可以在任何逻辑器件中实现,包括但不限于,处理器、SoC和FPGA平台。
图1是示出根据一个实施例的实现混合AES-SMS4硬件加速器的计算系统的框图。计算系统100形成有包括存储器接口112的处理器110。计算系统100可以是任何设备或设备的组合,但是本文描述的各实施例的描述涉及处理设备和可编程逻辑器件。
系统100包括存储器接口112和存储器130。在一个实施例中,存储器接口112可以是用于从处理器110到存储器130的通信的总线协议。存储器130包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器130存储由数据信号表示的将由处理器110执行的指令和/或数据。处理器110经由处理器总线120耦合至存储器130。诸如存储器控制器中枢(MCH)的系统逻辑芯片可以耦合到处理器总线120和存储器130。MCH可提供至存储器130的高带宽存储器路径,用于指令和数据存储,以及用于存储图形命令、数据和纹理。例如,MCH可用于在处理器110、存储器130与系统100中的其他组件之间引导数据信号,并且用于在处理器总线120、存储器130与系统I/O之间桥接数据信号。MCH可通过存储器接口(例如,存储器接口112)耦合至存储器130。在一些实施例中,系统逻辑芯片可以提供用于通过加速图形端口(AGP)互连耦合到图形控制器的图形端口。系统100也可以包括I/O控制器中枢(ICH)。ICH可经由本地I/O总线来提供到某些I/O设备的直接连接。本地I/O总线是用于将外围设备连接到存储器130、芯片组以及处理器110的高速I/O总线。一些示例是音频控制器、固件中枢(闪存BIOS)、无线收发机、数据存储、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线(USB))以及网络控制器。数据存储设备可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,系统100执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的某个版本,不过也可使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本公开的各实施例不限于硬件电路和软件的任何特定组合。
本文描述的实施例不限于计算机系统。本公开的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的某些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或能够执行根据至少一个实施例的一条或多条指令的任何其他系统。
处理器110可以包括一个或多个执行单元。可在单处理器桌面或服务器系统的上下文中描述一个实施例,但是可将替代实施例包括在多处理器系统中。系统100可以是“中枢”系统架构的示例。计算机系统100包括用于处理数据信号的处理器110。作为一个说明性示例,处理器110包括例如,复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或任何其他处理器设备(诸如,数字信号处理器)。处理器110耦合到处理器总线120,该处理器总线120在处理器110与系统100中的其他组件之间传输数据信号。系统100的其他元件可以包括图形加速器、存储器控制器中枢、I/O控制器中枢、无线收发机、闪存BIOS、网络控制器、音频控制器、串行扩展端口、I/O控制器等。
在一个实施例中,处理器110包括第1级(L1)内部高速缓存存储器。取决于架构,处理器110可以具有单个的内部高速缓存或多级的内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存两者的组合,这取决于特定实现和需求。
对于系统的另一实施例,混合AES-SMS4硬件加速器可以被包括在芯片上系统(SoC)上。SoC的一个实施例包括处理器和存储器。SoC的存储器可以是闪存。闪存可以位于与处理器和其他系统组件相同的管芯上。另外,诸如存储器控制器或图形控制器的其他逻辑块也可以位于SoC上。
系统100包括可操作地耦合至处理器110的逻辑器件(LD)101。LD可以是可编程逻辑器件(PLD)或非可编程逻辑器件。在一个实施例中,LD 101可以是现场可编程门阵列(FPGA)。在其他实施例中,LD 101可以是复杂可编程逻辑器件、通用阵列逻辑、可编程逻辑阵列、或其他类型的LD。在一个实施例中,处理器110和LD 101可以被包括在单个电路板上,各自在它们相应的位置中。
LD 101是用于构建可重新配置和/或非可重新配置的数字电路的集成电路。LD101可以是与诸如处理器110的其他组件或其他集成电路结合使用的电子组件。通常,PLD在制造时可以具有未定义的功能,并且可以在使用之前被编程或重新配置。LD 101可以是逻辑器件和存储器设备的组合。LD 101的存储器可以存储在编程期间给予集成电路的模式。可以使用各种技术将数据存储在集成电路中,诸如反熔丝、静态随机存取存储器(SRAM)、EPROM单元、EEPROM单元、闪存等。LD 101可以使用任何类型的LD技术。
在一个实施例中,LD 101包括混合AES-SMS4硬件加速器111,用于通过选择适用于AES和SMS4的常见的基域和扩展域多项式来执行基域GF(24)(而不是GF(28))中的逆操作。这使得能够在两个密码之间共享面积和性能关键逆计算,从而产生紧凑的混合Sbox设计(例如,混合AES-SMS4硬件加速器111的设计)。参考图2-15描述了描述混合AES-SMS4硬件加速器111的布局和功能的进一步细节。
图2是示出根据一个实施例的AES加密/解密组合的Sbox的框图。在一个实施例中,AES加密/解密Sbox操作由仿射变换202、208、映射操作204、206、210、214和伽罗瓦域GF(28)中的逆计算208组成。逆计算在Sbox中可以是面积和性能关键的,构成超过70%的单元面积。为了降低逆计算的复杂度,可以将8位Sbox输入212从GF(28)映射到复合域GF(24)2,并且然后可以在GF(24)中执行逆计算。例如,在AES Sbox 200中,在加密期间,可以将Sbox_in[7:0]212映射204到复合域GF(24)2并且在GF(24)中进行逆计算208。然后可以将仿射变换212与逆映射210合并以将输出从GF(24)2映射到GF(28)。在解密期间,可以将逆仿射矩阵202与映射206合并以获得GF(24)2中的经变换的输出,并且可以将逆计算208的输出映射214回到域GF(28)。在一个实施例中,下列多项式可以用于AES Sbox 200:
GF(28)中的约分多项式:f(x)=x8+x4+x3+x+1
基域多项式:g(x)=x4+a3.x3+a2.x2+a1.x1+a0.1
扩展域多项式:p(x)=x2+α.x+βα,β€GF(24)
图3是示出根据一个实施例的具有融合双重仿射和映射的SMS4 Sbox的框图。在SMS4 Sbox 300中,融合双重仿射变换302、304执行域GF(28)与GF(24)2之间的映射和逆映射,从而实现复合域GF(24)中的逆计算306。SMS4中的Sbox操作对于加密和解密模式可以是相同的。
在一个实施例中,下列多项式可以用于SMS4 Sbox 300:
GF(28)中的约分多项式:f(x)=x8+x7+x6+x5+x4+x2+1
基域多项式:g(x)=x4+a3.x3+a2.x2+a1.x1+a0.1
扩展域多项式:p(x)=x2+α.x+βα,β€GF(24)
应当注意,AES和SMS4密码的约分多项式是不同的,因此GF(28)中的硬件实现是分开的。然而,复合域GF(24)中的逆计算允许选择相同的一对基域和扩展域多项式对以共享AES Sbox与SMS4 Sbox之间的逆计算。
图4是示出根据一个实施例的混合AES-SMS4加密和解密轮Sbox的框图。在逆计算404之前的2:1复用器402可以在操作中基于密码在AES或SMS4输入之间进行选择。类似地,附加的2:1复用器406可以选择最终的Sbox输出。由于逆计算404可以构成大约70%的Sbox面积,因此在混合Sbox 400中共享逆404相对于分开的AES和SMS4 Sbox可以产生实现的40%的面积改进。
在一个实施例中,可以根据以下内容将AES输入映射到GF(24)2(从而允许GF(24)中的逆计算):
从GF(28)映射/映射到GF(28):f(x)=x8+x4+x3+x+1
到/从GF(24)2:x4+x+1和x2+x+8
在另一实施例中,可以根据以下内容将SMS4输入映射到GF(24)2(从而允许GF(24)中的逆计算):
从GF(28)映射/映射到GF(28):f(x)=x8+x7+x6+x5+x4+x2+1
到/从GF(24)2:x4+x+1和x2+x+8
图5是示出根据一个实施例的混合AES-SMS4加密和解密密钥扩展Sbox的框图。对于密钥扩展,AES不需要逆仿射操作。结果,混合Sbox 500由用于AES的映射函数502和融合仿射/映射504以及用于SMS4的双重融合仿射/映射506、508组成。
图6是示出根据一个实施例的各种多项式组合的混合Sbox面积的分布的示图。用于从GF(28)到GF(24)2并且反之亦然的转换的映射矩阵可以通过根据基域多项式g(x)和扩展域多项式p(x)的根来表示约分多项式f(x)的根变化量来获得。在一个实施例中,基域多项式和扩展域多项式被优化为对于第一块密码和第二块密码的复合域GF(24)中的Sbox的公共计算。
在一个实施例中,在g(x)和p(x)的4096种可能组合中,360对满足不可约并且在基域中具有原根的条件。由于AES和SMS4的约分多项式对于给定的g(x)和p(x)是不同的,因此可能分别存在fAES(x)和fSMS4(x)的8个唯一的根,从而产生64种唯一的组合。这产生用于在两个域之间映射Sbox输入的总共360*64=23040个可能组合。对g(x)和p(x)的选择可能影响逆计算的面积和关键路径。对根的选择可能影响映射矩阵,并且因此影响融合仿射/映射逻辑。
图600示出跨23040种组合的多项式探索的面积跨度。取决于对基域和扩展域多项式以及AES和SMS4的根的选择,混合Sbox面积具有1.83倍的跨度。在一个实现方式中,对于分别具有8’hC3和8’h5F的AES和SMS4根的多项式x4+x+1(基域)和x2+x+8(扩展域),获得42.μm2的SBOX面积。与两个密码的分开的Sbox实现相比,这是50%的面积改进。在各种其他实施例中,可以使用其他基域和扩展域多项式。
图7是示出根据一个实施例的混合128位AES-SMS4加密和解密轮次计算数据路径的框图。在一个实施例中,128位混合AES/SMS4加密/解密数据路径由4个混合Sbox模块702和12个AES Sbox模块704组成。4个混合Sbox模块可以接收来自AES和SMS4逻辑的输入。输入可以被路由到相应的第一块密码操作(例如,将轮密钥加到中间轮数据712)。
可以将Sbox输出路由到相应的第二块密码(例如,移位行706和/或循环移位708)操作。在一个实施例中,组合的Sbox耦合到第一块密码和第二块密码,如图7所描绘。由于AES轮次计算700包括总共16个Sbox模块,因此其余的12个非混合Sbox设计可以遵循具有对应的多项式对的常规AES加密/解密Sbox配置。可以基于当前密码操作使用2:1复用器710来选择最终输出。
图8是示出根据一个实施例的混合128位AES-SMS4加密和解密密钥扩展数据路径的框图。由于AES和SMS4加密和解密密钥扩展仅利用4个Sbox模块,因此在不包括任何仅专用于AES或SMS4的Sbox模块的情况下,优化的混合密钥生成Sbox模块802可以用于共享逆计算。类似于轮次计算,可以使用128位2:1复用器804在两个密钥扩展数据路径之间选择最终轮密钥。此外,在轮次计算和密钥扩展中,128位中间工作寄存器和128位密钥寄存器可以在两个密码之间共享。与分开的实现相比,这可以减少总的连续面积和计时功率。
在一个实施例中,混合数据路径具有分别用于AES和SMS4的10个周期和32个周期的等待时间/吞吐量。具有对应的面积优化多项式的共享Sbox可以产生总共18%的单元面积减少。
图9A是示出根据一个实施例的实现混合AES-SMS4硬件加速器操作的处理器1000的微架构的框图。具体地,处理器1000描绘根据本公开的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。本文所述的混合AES-SMS4硬件加速器操作的实施例可以实现在处理器1000中。
处理器1000包括前端单元1030,该前端单元1030耦合至执行引擎单元1050,前端单元1030和执行引擎单元1050两者耦合至存储器单元1070。处理器1000可包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,处理器1000可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实施例中,处理器1000可以是多核处理器或可以是多处理器系统的部分。
前端单元1030包括耦合至指令高速缓存单元1034的分支预测单元1032,该指令高速缓存单元1034耦合至指令转换后备缓冲器(TLB)1036,该指令转换后备缓冲器1036耦合至指令取出单元1038,该指令取出单元1038耦合至解码单元1040。解码单元1040(也称为解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器1040可使用各种不同的机制来实现。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元1034进一步耦合至存储器单元1070。解码单元1040耦合至执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括重命名/分配器单元1052,该重命名/分配器单元1052耦合至引退单元1054和一个或多个调度器单元的集合1056。调度器单元1056表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元1056耦合至物理寄存器堆单元1058。物理寄存器堆单元1058中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等。(多个)物理寄存器堆单元1058与引退单元1054重叠以图示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种类型的寄存器是合适的,只要它们能够存储并提供本文所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元1054和物理寄存器堆单元1058耦合至执行集群1060。(多个)执行集群1060包括一个或多个执行单元1062的集合和一个或多个存储器访问单元1064的集合。执行单元1062可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
尽管一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元1056、(多个)物理寄存器堆单元1058和(多个)执行集群1060示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元1064的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元1064的集合耦合至存储器单元1070,该存储器单元1070可包括数据预取器1080、数据TLB单元1072、数据高速缓存单元(DCU)1074、第二级(L2)高速缓存单元1076,仅举数例。在一些实施例中,DCU1074也称为第一级数据高速缓存(L1高速缓存)。DCU1074可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它还支持维护高速缓存一致性。数据TLB单元1072是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元1064可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1070中的数据TLB单元1072。L2高速缓存单元1076可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器1080通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 1074。预取可以指在处理器实际需要数据之前将存储在存储器层级结构(例如,较低级别高速缓存或存储器)的一个存储器位置(例如,地方)的数据传送至更接近处理器的较高级别的存储器位置(例如,产生较低的访问等待时间)。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器的早期检取。
处理器1000可以支持一个或多个指令集(例如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如
Figure GDA0003825391670000121
超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代的实施例也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可在核和/或处理器的外部。
图9B是示出根据本公开的一些实施例的由图9A的处理器1000实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图9B中的实线框示出了有序流水线,而实线框结合虚线框示出了寄存器重命名、乱序发布/执行流水线。在图9B中,处理器流水线1001包括取出级1002、长度解码级1004、解码级1006、分配级1008、重命名级1010、调度(也称为分派或发布)级1012、寄存器读取/存储器读取级1014、执行级1016、写回/存储器写入级1018、异常处置级1022和提交级1024。在一些实施例中,级1002-1024的顺序可以与所示出的不同,并且不限于图9B中所示的特定顺序。
图10示出根据一个实施例的包括用于执行混合AES-SMS4硬件加速器操作的逻辑电路的处理器1100的微架构的框图。在一些实施例中,根据一个实施例的混合AES-SMS4硬件加速器操作指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端1101是处理器1100的部分,该有序前端1101取出将要被执行的指令并准备这些指令以供稍后在处理器流水线中使用。本文所公开的混合AES-SMS4硬件加速器操作的实施例可以实现在处理器1100中。
前端1101可包括若干单元。在一个实施例中,指令预取器1126从存储器取出指令,并将指令馈送至指令解码器1128,指令解码器1128随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为由微架构使用以执行根据一个实施例的操作的操作码和对应的数据及控制字段。在一个实施例中,跟踪高速缓存1130接受经解码的微操作,并将它们组装为微操作队列1134中的程序有序序列或踪迹,以用于执行。当跟踪高速缓存1130遇到复杂指令时,微代码ROM 1132提供完成操作所需的微操作。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器1128访问微代码ROM1132以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器1128处进行处理。在另一实施例中,如果需要数个微操作来完成操作,则可将指令存储在微代码ROM1132内。跟踪高速缓存1130参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 1132读取微代码序列以完成根据一个实施例的一条或多条指令。在微代码ROM 1132完成对于指令的微操作序列化之后,机器的前端1101恢复从跟踪高速缓存1130提取微操作。
乱序执行引擎1103是将指令准备好用于执行的地方。乱序执行逻辑具有数个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器1102、慢速/通用浮点调度器1104、以及简单浮点调度器1106)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器1102、1104、1106基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器1102可以在主时钟周期的每半个上进行调度,而其他调度器仅可以在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度用于执行的微操作。
寄存器堆1108和1110位于调度器1102、1104和1106以及执行块1111中的执行单元1112、1114、1116、1118、1120、1122和1124之间。存在分别用于整数和浮点操作的分开的寄存器堆1108、1110。一个实施例的每个寄存器堆1108、1110也包括旁路网络,该旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆1108和浮点寄存器堆1110也能够彼此传递数据。对于一个实施例,整数寄存器堆1108被划分为两个分开的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆1110具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块1111包括执行单元1112、1114、1116、1118、1120、1122、1124,在这些执行单元1112、1114、1116、1118、1120、1122、1124中实际执行指令。该区块包括寄存器堆1108、1110,寄存器堆1108、1110存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器1100包括多个执行单元:地址生成单元(AGU)1112、AGU 1114、快速ALU 1116、快速ALU 1118、慢速ALU 1120、浮点ALU 1122、浮点移动单元1124。对于一个实施例,浮点执行块1112、1114执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 1112包括64位除64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的诸个实施例,涉及浮点值的指令可使用浮点硬件来处置。
在一个实施例中,ALU操作进入高速ALU执行单元1116、1118。一个实施例的快速ALU 1116、1118可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 1110,因为慢速ALU 1110包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 1112、1114来执行。对于一个实施例,整数ALU 1116、1118、1120被描述为对64位数据操作数执行整数操作。在替代实施例中,ALU 1116、1118、1120可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元1112、1114可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元1112、1114可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器1102、1104、1106就分派依赖操作。因为在处理器1100中微操作被推测地调度和执行,所以处理器1100也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖操作。重放机制追踪使用错误数据的指令,并重新执行这些指令。仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计成用于捕捉用于文本串比较操作的指令序列。
根据一个实施例,处理器1100还包括用于实现混合AES-SMS4硬件加速器操作的逻辑。在一个实施例中,处理器1100的执行块1111可包括微控制器(MCU),以根据本文中的描述执行BIOS认证操作。
术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实施例的寄存器不限于意指特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并能够执行本文中所描述的功能。本文所描述的寄存器可以由处理器中的电路使用任何数量的不同技术来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文中的讨论,寄存器应被理解为设计成保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中也称为“mm”寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可以与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,整数和浮点可被包含在同一寄存器堆中,或被包含在不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
实施例可在许多不同的系统类型中实现。现在参照图11,其中示出了根据一个实现方式的多处理器系统1200的框图。如图11所示,多处理器系统1200是点对点互连系统,且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。如图11所示,处理器1270和1280中的每一个都可以是多核处理器,包括第一和第二处理器核,虽然潜在地更多核可以存在于处理器中。处理器各自可包括根据本公开的实施例的混合型写入模式逻辑。本文讨论的混合AES-SMS4硬件加速器操作可以实现在处理器1270、处理器1280或两者中。
虽然以两个处理器1270、1280来示出,但应理解本公开的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。
处理器1270和1280被示为分别包括集成存储器控制器单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1288;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可以经由使用点对点(P-P)接口电路1278、1288的P-P接口1250来交换信息。如图11所示,IMC 1272和1282将处理器耦合到相应的存储器,即存储器1232和存储器1234,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1270、1280可各自经由使用点对点接口电路1276、1294、1286、1298的各个P-P接口1252、1254来与芯片组1290交换信息。芯片组1290还可经由高性能图形接口1239来与高性能图形电路1238交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1290可经由接口1292耦合至第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图11所示,各种I/O设备1214可连同总线桥1218一起耦合到第一总线1216,总线桥1218将第一总线1216耦合到第二总线1220。在一个实施例中,第二总线1220可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线1220,包括例如,键盘和/或鼠标1222、通信设备1227以及可包括指令/代码和数据1230的存储单元1228(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 1224可被耦合至第二总线1220。注意,其他架构是可能的。例如,代替图11的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参照图12,所示出的是根据本公开的实施例的第三系统1300的框图。图10和11中的类似元件使用类似附图标记,且在图12中省略了图11的某些方面以避免使图12的其他方面模糊。
图12示出处理器1370、1380可分别包括集成存储器和I/O控制逻辑(“CL”)1372和1382。对于至少一个实施例,CL 1372、1382可包括如本文中所述的集成存储器控制器单元。此外,CL 1372、1382还可包括I/O控制逻辑。图13示出了存储器1332、1334耦合到CL 1372、1382,并且I/O设备1314也耦合到控制逻辑1372、1382。传统I/O设备1315耦合至芯片组1390。本文讨论的操作可以实现在处理器1370、处理器1380或两者中。
图13是可包括核1402中的一个或多个的示例性芯片上系统(SoC)1400。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
图13是根据本公开的实施例的SoC 1400的框图。虚线框是更先进的SoC上的特征。在图13中,互连单元1402耦合至:应用处理器1417,包括一个或多个核的集合1402A-N、高速缓存单元1404A-N以及共享高速缓存单元1406;系统代理单元1410;总线控制器单元1416;集成存储器控制器单元1414;一组或一个或多个媒体处理器1420,可包括集成图形逻辑1408、用于提供静态和/或视频照相功能的图像处理器1424、提供硬件音频加速的音频处理器1426以及提供视频编码/解码加速的视频处理器1428;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1432;以及显示单元1440,用于耦合至一个或多个外部显示器。本文讨论的混合AES-SMS4硬件加速器操作可以由SoC 1400实现。
接下来参考图14,描绘了根据本公开的各实施例的芯片上系统(SoC)设计的实施例。作为说明性示例,SoC 1500被包括在用户装备(UE)中。在一个实施例中,UE指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。UE可连接至基站或节点,该基站或节点本质上可对应于GSM网络中的移动站(MS)。本文讨论的混合AES-SMS4硬件加速器操作可以由SoC 1500实现。
在此,SoC 1500包括2个核——1506和1507。类似于上文的讨论,核1506和1507可符合指令集架构,诸如,具有
Figure GDA0003825391670000181
架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计、或它们的客户、以及它们的被许可方或采纳方。核1506和1507被耦合至高速缓存控件1508,该高速缓存控件1508与总线接口单元1509和L2高速缓存1510相关联以与系统1500的其他部分通信。互连1511包括芯片上互连,诸如,IOSF、AMBA或上文讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。
互连1511提供到其他组件的通信信道,其他组件诸如与用户身份模块(SIM)卡对接的SIM 1530、保存供核1506和1507执行以初始化和引导SoC 1500的引导代码的引导ROM1535、与外部存储器(例如,DRAM 1560)对接的SDRAM控制器1540、与非易失性存储器(例如,闪存1565)对接的闪存控制器1545、与外围设备对接的外围控制1550(例如,串行外围接口)、用于控制功率的功率控制1555、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1520和视频接口1525、用于执行图形相关的计算的GPU 1515等等。这些接口中的任何一种可以包括本文中所描述的各实施例的各方面。
另外,系统示出了用于通信的外围设备,诸如,蓝牙模块1570、3G调制解调器1575、GPS 1580以及Wi-Fi 1585。注意,如上文所述,UE包括用于通信的无线电装置。因此,这些外围通信模块可以不被全部包括。然而,在UE中,应当包括用于外部通信的某种形式的无线电装置。
图15示出了计算系统1600的示例形式的机器的示意图,在该计算系统1600内,可以执行用于使机器执行本文中所讨论的方法中的任何一种或多种方法的一组指令。在替代实施例中,可以在LAN、内联网、外联网或互联网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当认为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任何集合。可以在计算系统1600中实现页面添加和内容复制的实施例。
计算系统1600包括处理设备1602、主存储器1604(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等等)、静态存储器1626(例如,闪存、静态随机存取存储器(SRAM),等等),以及数据存储设备1618,它们通过总线1630相互进行通信。
处理设备1602表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1602也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实施例中,处理设备1602可包括一个或多个处理器核。处理设备1602被配置成执行用于执行本文中所讨论的BIOS认证操作的处理逻辑1626。在一个实施例中,处理设备1602可以是计算系统的一部分。替代地,计算系统1600可包括如本文中所描述的其他组件。应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如
Figure GDA0003825391670000201
超线程化技术中的同时多线程化)。
计算系统1600还可以包括可通信地耦合到网络1620的网络接口设备1622。计算系统1600还可以包括视频显示单元1608(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1610(例如,键盘)、光标控制设备1614(例如,鼠标)、信号生成设备1616(例如,扬声器),或其他外围设备。此外,计算系统1600可以包括图形处理单元1622、视频处理单元1628以及音频处理单元1632。在另一个实施例中,计算系统1600可以包括芯片组(未示出),芯片组是指被设计为与处理设备1602一起协作并控制处理设备1602与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是将处理设备1602链接到非常高速度的设备(诸如,主存储器1604和图形控制器)以及将处理设备1602链接到较低速度的外围设备的外围总线(诸如,USB、PCI或ISA总线)的主板上的一组芯片。
数据存储设备1618可以包括计算机可读存储介质1624,在其上面存储了具体化本文所描述的功能的方法中的任何一种或多种的软件1626。在由计算系统1600对软件1626的执行期间,软件1626也可完全或至少部分地作为指令1626驻留在主存储器1604之内和/或作为处理逻辑1626驻留在处理设备1602之内;该主存储器1604和处理设备1602也构成计算机可读存储介质。
计算机可读存储介质1624还可用于存储指令1626,该指令1626利用处理设备1602和/或软件库,该软件库包含调用上述应用的方法。虽然计算机可读存储介质1624在示例实施例中被示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行当前的多个实施例的方法中的任何一种或多种的一组指令的任何介质。术语“计算机可读存储介质”应当相应地视为包括但不限于固态存储器以及光和磁介质。
下列示例涉及进一步的实施例。
示例1是一种芯片上系统(SoC),包括:处理器核;以及单个硬件加速器,耦合至处理器核,该单个硬件加速器用于对数据加密或解密,该单个硬件加速器包括:第一块密码,用于根据第一加密算法对数据加密或解密;第二块密码,用于根据第二加密算法对数据加密或解密;以及组合的替换盒(Sbox),耦合至第一块密码和第二块密码,该组合的Sbox包括用于执行伽罗瓦域(GF)乘法和逆计算的逻辑,其中逆计算对于第一块密码和第二块密码是公共的。
在示例2中,如示例1的主题,单个硬件加速器能被重新配置以实现第一加密算法或第二加密算法,并且其中第一加密算法是高级加密标准(AES)加密算法,并且第二加密算法是SMS4加密算法。
在示例3中,如示例2的主题,SoC进一步包括128位加密/解密数据路径,该数据路径包括用于轮次计算的12个AES Sbox模块和4个混合Sbox模块以及用于密钥扩展的4个混合Sbox模块。
在示例4中,如示例1的主题,第一块密码包括:第一组件,用于:对中间数据的两个32位字进行XOR;以及将中间数据的两个经XOR的32位字与轮密钥组合;以及第二组件,用于对轮密钥与中间数据进行XOR。
在示例5中,如示例1的主题,GF乘法包括用于将输入从GF(28)映射到GF(24)2的仿射变换和映射操作。
在示例6中,如示例1的主题,为了降低逆计算的复杂度,Sbox用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算。
在示例7中,如示例6的主题,为了将8位Sbox输入从GF(28)映射到复合域GF(24)2,组合的Sbox用于使用基域多项式和扩展域多项式来映射数据。
在示例8中,如示例1的主题,对于加密操作,Sbox用于将仿射变换与逆映射合并以将输出从GF(24)2映射到GF(28)。
示例9是一种逻辑器件,包括:单个硬件加速器,用于对数据加密或解密,该单个硬件加速器包括:第一块密码,用于根据第一加密算法对数据加密或解密;第二块密码,用于根据第二加密算法对数据加密或解密;以及组合的替换盒(Sbox),耦合至第一块密码和第二块密码,该组合的Sbox包括用于执行伽罗瓦域(GF)乘法和逆计算的逻辑,其中逆计算对于第一块密码和第二块密码是公共的。
在示例10中,如示例9的主题,单个硬件加速器能被重新配置以实现第一加密算法或第二加密算法,并且其中第一加密算法是高级加密标准(AES)加密算法,并且第二加密算法是SMS4加密算法。
在示例11中,如示例10的主题,SoC进一步包括128位加密/解密数据路径,该数据路径包括用于轮次计算的12个AES Sbox模块和4个混合Sbox模块以及用于密钥扩展的4个混合Sbox模块。
在示例12中,如示例11的主题,数据路径进一步包括:共享的128位中间工作寄存器;共享的128位密钥寄存器;以及128位2:1复用器,用于选择最终轮密钥。
在示例13中,如示例9的主题,第一块密码包括:第一组件,用于:对中间数据的两个32位字进行XOR;以及将中间数据的两个经XOR的32位字与轮密钥组合;以及第二组件,用于对轮密钥与中间数据进行XOR。
在示例14中,如示例9的主题,GF乘法包括用于将输入从GF(28)映射到GF(24)2的仿射变换和映射操作。
在示例15中,如示例9的主题,为了降低逆计算的复杂度,Sbox用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算。
在示例16中,如示例15的主题,为了将8位Sbox输入从GF(28)映射到复合域GF(24)2,组合的Sbox用于使用基域多项式和扩展域多项式来映射数据。
示例17是一种系统,包括:电路板;处理器,设置在电路板的第一位置中;芯片外逻辑器件,可操作地耦合至处理器,设置在电路板的第二位置中,其中芯片外逻辑器件包括:单个硬件加速器,耦合至处理器,该单个硬件加速器用于对数据加密或解密,该单个硬件加速器包括:第一块密码,用于根据第一加密算法对数据加密或解密;第二块密码,用于根据第二加密算法对数据加密或解密;以及组合的替换盒(Sbox),耦合至第一块密码和第二块密码,该组合的Sbox包括用于执行伽罗瓦域(GF)乘法和逆计算的逻辑,其中逆计算对于第一块密码和第二块密码是公共的。
在示例18中,如示例17的主题,单个硬件加速器能被重新配置以实现第一加密算法或第二加密算法,并且其中第一加密算法是高级加密标准(AES)加密算法,并且第二加密算法是SMS4加密算法。
在示例19中,如示例17的主题,为了降低逆计算的复杂度,Sbox用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算。
在示例20中,如示例19的主题,为了将8位Sbox输入从GF(28)映射到复合域GF(24)2,组合的Sbox用于使用基域多项式和扩展域多项式来映射数据。
示例21是一种芯片上系统(SoC),包括:处理器核;以及单个硬件加速器,耦合至处理器核,该单个硬件加速器包括用于对数据加密或解密的装置,该单个硬件加速器包括:第一块密码,包括用于根据第一加密算法对数据加密或解密的装置;第二块密码,包括用于根据第二加密算法对数据加密或解密的装置;以及组合的替换盒(Sbox),耦合至第一块密码和第二块密码,该组合的Sbox包括用于执行伽罗瓦域(GF)乘法和逆计算的装置,其中逆计算对于第一块密码和第二块密码是公共的。
在示例22中,如示例21的主题,为了降低逆计算的复杂度,Sbox包括用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算的装置。
在示例23中,如示例22的主题,为了将8位Sbox输入从GF(28)映射到复合域GF(24)2,组合的Sbox包括用于使用基域多项式和扩展域多项式来映射数据的装置。
示例24是一种逻辑器件,包括:单个硬件加速器,包括用于对数据加密或解密的装置,该单个硬件加速器包括:第一块密码,包括用于根据第一加密算法对数据加密或解密的装置;第二块密码,包括用于根据第二加密算法对数据加密或解密的装置;以及组合的替换盒(Sbox),耦合至第一块密码和第二块密码,该组合的Sbox包括用于执行伽罗瓦域(GF)乘法和逆计算的装置,其中逆计算对于第一块密码和第二块密码是公共的。
在示例25中,如示例24的主题,为了降低逆计算的复杂度,Sbox包括用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算的装置。
在示例26中,如示例25的主题,为了将8位Sbox输入从GF(28)映射到复合域GF(24)2,组合的Sbox包括用于使用基域多项式和扩展域多项式来映射数据的装置。
示例27是一种系统,包括:电路板;处理器,设置在电路板的第一位置中;芯片外逻辑器件,可操作地耦合至处理器,设置在电路板的第二位置中,其中芯片外逻辑器件包括:单个硬件加速器,耦合至处理器,该单个硬件加速器包括用于对数据加密或解密的装置,该单个硬件加速器包括:第一块密码,包括用于根据第一加密算法对数据加密或解密的装置;第二块密码,包括用于根据第二加密算法对数据加密或解密的装置;以及组合的替换盒(Sbox),耦合至第一块密码和第二块密码,该组合的Sbox包括用于执行伽罗瓦域(GF)乘法和逆计算的装置,其中逆计算对于第一块密码和第二块密码是公共的。
在示例28中,如示例27的主题,为了降低逆计算的复杂度,Sbox包括用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算的装置。
在示例29中,如示例28的主题,为了将8位Sbox输入从GF(28)映射到复合域GF(24)2,组合的Sbox包括用于使用基域多项式和扩展域多项式来映射数据的装置。
示例30是一种设备,包括:处理器核;以及单个硬件加速器,耦合至处理器核,该单个硬件加速器包括用于对数据加密或解密的装置,该单个硬件加速器包括:第一块密码,包括用于根据第一加密算法对数据加密或解密的装置;第二块密码,包括用于根据第二加密算法对数据加密或解密的装置;以及组合的替换盒(Sbox),耦合至第一块密码和第二块密码,该组合的Sbox包括用于执行伽罗瓦域(GF)乘法和逆计算的装置,其中逆计算对于第一块密码和第二块密码是公共的。
在示例31中,如示例30的主题,为了降低逆计算的复杂度,Sbox包括用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算的装置。
在示例32中,如示例31的主题,为了将8位Sbox输入从GF(28)映射到复合域GF(24)2,组合的Sbox包括用于使用基域多项式和扩展域多项式来映射数据的装置。
尽管已参考有限数量的实施例描述了本公开的实施例,但是,本领域技术人员将从其中理解很多修改和变型。所附权利要求书旨在将所有此类修改和变型涵盖为落在本公开的真实精神和范围内。
在以下描述中,阐明了众多特定细节(诸如,特定类型的处理器和系统配置的示例、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线级和操作等)以提供对本公开的实施例的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本公开的实施例。在其他实例中,未详细描述公知的组件或方法,以避免不必要地使本公开的实施例模糊,公知的组件或方法诸如,特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、代码中算法的特定表达、特定的掉电和功率门控技术/逻辑以及计算机系统的其他特定的操作细节。
各实施例是参考特定集成电路中的(诸如计算平台或微处理器中的)混合AES-SMS4硬件加速器操作来描述的。实施例也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实施例不仅限于台式计算机系统或便携式计算机,诸如,
Figure GDA0003825391670000251
UltrabooksTM计算机。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、芯片上系统(SoC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教导的功能与操作的任何其他系统。描述了系统可以是任何类型的计算机或嵌入式系统。所公开的各实施例可以特别用于低端设备,诸如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制和数据采集(SCADA)系统等等。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
虽然本文中的实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑器件。本公开的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。本公开的诸个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本公开的实施例不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并适用于在其中执行数据操作或管理的任何处理器和机器。此外,本文中的描述提供了示例,并且附图出于说明性目的示出了各种示例。然而,这些示例不应当以限制性意义来解释,因为它们仅仅旨在提供本公开的诸个实施例的示例,而并非对本公开的实施例的所有可能实现方式进行穷举。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处置和分配,但本公开的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成,这些数据或指令在被机器执行时使得机器执行与本公开的至少一个实施例相一致的功能。在一个实施例中,与本公开的实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令编程的通用处理器或专用处理器执行本公开的步骤。本公开的诸个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程来执行根据本公开的实施例的一个或多个操作。替代地,本公开的诸个实施例的操作可由包含用于执行这些操作的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或传送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计可经历从创造到仿真到制造的各阶段。表示设计的数据可用数种方式来表示该设计。首先,如仿真中有用的,可使用硬件描述语言或另一功能性描述语言来表示硬件。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某一阶段都达到表示硬件模型中各种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储(诸如,盘)可以是存储经由光学或电学波来传送的信息的机器可读介质,这些光学或电学波被调制或以其他方式生成以传送这些信息。当指示或承载代码或设计的电学载波被传送达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
如本文中所使用的模块指硬件、软件、和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非暂态介质上的代码。此外,在另一实施例中,模块的使用是指包括代码的非暂态介质,该代码专门适于由微控制器执行以进行预定的操作。并且如可以被推断,在又一实施例中,术语模块(在此示例中)可指微控制器和非暂态介质的组合。通常,被图示为分开的模块的边界一般不同并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实施例中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用短语‘用于’、‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如以上所注意,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑的值或多个逻辑的值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数10还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可利用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即,存储和/或发送)诸如由计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些非瞬态机器可访问介质与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储)内。此外,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。因此,应当认为说明书和附图是说明性的而不是限制性的。此外,实施例和其他示例性语言的上述使用不一定是指同一实施例或同一示例,而可能是指不同和独特的实施例,也有可能是同一实施例。
具体实施方式的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述及表示是数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。这些操作需要对物理量进行物理操纵。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,时不时地将这些信号称为位、值、要素、符号、字符、项、数字等已被证明是方便的。本文中描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和类似的术语将与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非明确指明,否则从上文的讨论中显而易见地看出,可以理解,在全文中,利用诸如“加密”、“解密”、“执行”、“乘”、“密钥扩展”、“加”、“混合”、“减少”、“合并”等术语的讨论,指的是计算系统或类似电子计算设备的动作和进程,该计算系统或类似电子计算设备操纵在该计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据并将其转换成在该计算系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
在本文中使用的词语“示例”或“示例性”意味着用作示例、实例或说明。在此被描述为“示例”或“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现诸概念。如在该申请中使用的,术语“或”旨在表示包含性的“或”,而不是排它性的“或”。也就是说,除非另有指定或根据上下文显而易见,否则“X包括A或B”旨在表示自然包含性排列中的任一者。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何前述的情况下都满足“X包括A或B”。此外,在本申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为表示“一个或多个”,除非另有规定或根据上下文明确指示为单数形式。此外,通篇对术语“实施例”或“一个实施例”或“实现方式”或“一种实现方式”的使用不旨在意指同一个实施例或实现方式,除非被描述为如此。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等旨在用作用于在不同元件之间进行区分的标记,并且可以不一定具有根据它们的数字指定的顺序含义。

Claims (20)

1.一种芯片上系统SoC,包括:
处理器核;以及
单个硬件加速器,耦合至所述处理器核,所述单个硬件加速器用于对数据加密或解密,所述单个硬件加速器包括:
第一块密码器,用于根据第一加密算法对所述数据加密或解密;
第二块密码器,用于根据第二加密算法对所述数据加密或解密,所述第一加密算法和所述第二加密算法使用不同的约分多项式;以及
组合的替换盒Sbox,耦合至所述第一块密码器和所述第二块密码器,所述组合的Sbox包括用于执行伽罗瓦域GF乘法和伽罗瓦域GF中的逆计算的逻辑,其中所述逆计算通过选择适用于所述第一块密码器的所述第一加密算法和所述第二块密码器的所述第二加密算法的共同的基域多项式和扩展域多项式在所述第一块密码器与所述第二块密码器之间共享,以产生混合Sbox设计。
2.如权利要求1所述的SoC,其特征在于,所述单个硬件加速器被重新配置以实现所述第一加密算法或所述第二加密算法,并且其中所述第一加密算法是高级加密标准AES加密算法,并且所述第二加密算法是SMS4加密算法。
3.如权利要求2所述的SoC,其特征在于,所述SoC进一步包括128位加密/解密数据路径,所述数据路径包括用于轮次计算的12个AES Sbox模块和4个混合Sbox模块以及用于密钥扩展的4个混合Sbox模块。
4.如权利要求1所述的SoC,其特征在于,所述第一块密码器包括:
第一组件,用于:
对中间数据的两个32位字进行异或;以及
将所述中间数据的两个经异或的32位字与轮密钥组合;以及第二组件,用于对所述轮密钥与所述中间数据进行异或。
5.如权利要求1所述的SoC,其特征在于,所述GF乘法包括用于将输入从GF(28)映射到GF(24)2的仿射变换和映射操作。
6.如权利要求1所述的SoC,其特征在于,为了降低逆计算的复杂度,所述Sbox用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算。
7.如权利要求6所述的SoC,其特征在于,为了将所述8位Sbox输入从GF(28)映射到所述复合域GF(24)2,所述组合的Sbox用于使用基域多项式和扩展域多项式来映射所述数据。
8.如权利要求1所述的SoC,其特征在于,对于加密操作,所述Sbox用于将仿射变换与逆映射合并以将输出从GF(24)2映射到GF(28)。
9.一种用于对数据加密或解密的硬件加速器,所述硬件加速器包括:
第一块密码器,用于根据第一加密算法对所述数据加密或解密;
第二块密码器,用于根据第二加密算法对所述数据加密或解密,所述第一加密算法和所述第二加密算法使用不同的约分多项式;以及
组合的替换盒Sbox,耦合至所述第一块密码器和所述第二块密码器,所述组合的Sbox包括用于执行伽罗瓦域GF乘法和伽罗瓦域GF中的逆计算的逻辑,其中所述逆计算通过选择适用于所述第一块密码器的第一加密算法和所述第二块密码器的第二加密算法的共同的基域多项式和扩展域多项式在所述第一块密码器与所述第二块密码器之间共享,以产生混合Sbox设计。
10.如权利要求9所述的硬件加速器,其特征在于,所述单个硬件加速器被重新配置以实现所述第一加密算法或所述第二加密算法,并且其中所述第一加密算法是高级加密标准AES加密算法,并且所述第二加密算法是SMS4加密算法。
11.如权利要求10所述的硬件加速器,其特征在于,所述SoC进一步包括128位加密/解密数据路径,所述数据路径包括用于轮次计算的12个AES Sbox模块和4个混合Sbox模块以及用于密钥扩展的4个混合Sbox模块。
12.如权利要求11所述的硬件加速器,其特征在于,所述数据路径进一步包括:
共享的128位中间工作寄存器;
共享的128位密钥寄存器;以及
128位2:1复用器,用于选择最终轮密钥。
13.如权利要求9所述的硬件加速器,其特征在于,所述第一块密码器包括:
第一组件,用于:
对中间数据的两个32位字进行异或;以及
将所述中间数据的两个经异或的32位字与轮密钥组合;以及第二组件,用于对所述轮密钥与所述中间数据进行异或。
14.如权利要求9所述的硬件加速器,其特征在于,所述GF乘法包括用于将输入从GF(28)映射到GF(24)2的仿射变换和映射操作。
15.如权利要求9所述的硬件加速器,其特征在于,为了降低逆计算的复杂度,所述Sbox用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算。
16.如权利要求15所述的硬件加速器,其特征在于,为了将所述8位Sbox输入从GF(28)映射到所述复合域GF(24)2,所述组合的Sbox用于使用基域多项式和扩展域多项式来映射所述数据。
17.一种系统,包括:
电路板;
处理器,设置在所述电路板的第一位置中;
芯片外逻辑器件,可操作地耦合至所述处理器,设置在所述电路板的第二位置中,其中所述芯片外逻辑器件包括:
单个硬件加速器,耦合至所述处理器,所述单个硬件加速器用于对数据加密或解密,所述单个硬件加速器包括:
第一块密码器,用于根据第一加密算法对所述数据加密或解密;
第二块密码器,用于根据第二加密算法对所述数据加密或解密,所述第一加密算法和所述第二加密算法使用不同的约分多项式;以及
组合的替换盒Sbox,耦合至所述第一块密码器和所述第二块密码器,所述组合的Sbox包括用于执行伽罗瓦域GF乘法和伽罗瓦域GF中的逆计算的逻辑,其中所述逆计算通过选择适用于所述第一块密码器的所述第一加密算法和所述第二块密码器的所述第二加密算法的共同的基域多项式和扩展域多项式在所述第一块密码器与所述第二块密码器之间共享,以产生混合Sbox设计。
18.如权利要求17所述的系统,其特征在于,所述单个硬件加速器能被重新配置以实现所述第一加密算法或所述第二加密算法,并且其中所述第一加密算法是高级加密标准AES加密算法,并且所述第二加密算法是SMS4加密算法。
19.如权利要求17所述的系统,其特征在于,为了降低逆计算的复杂度,所述Sbox用于将8位Sbox输入从GF(28)映射到复合域GF(24)2并且在GF(24)中执行逆计算。
20.如权利要求19所述的系统,其特征在于,为了将所述8位Sbox输入从GF(28)映射到所述复合域GF(24)2,所述组合的Sbox用于使用基域多项式和扩展域多项式来映射所述数据。
CN201780047242.8A 2016-08-31 2017-08-02 混合加密算法的硬件加速器及其系统 Active CN109565438B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/252,741 2016-08-31
US15/252,741 US10218497B2 (en) 2016-08-31 2016-08-31 Hybrid AES-SMS4 hardware accelerator
PCT/US2017/045155 WO2018044484A1 (en) 2016-08-31 2017-08-02 Hybrid aes-sms4 hardware accelerator

Publications (2)

Publication Number Publication Date
CN109565438A CN109565438A (zh) 2019-04-02
CN109565438B true CN109565438B (zh) 2022-11-15

Family

ID=61243694

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780047242.8A Active CN109565438B (zh) 2016-08-31 2017-08-02 混合加密算法的硬件加速器及其系统

Country Status (4)

Country Link
US (1) US10218497B2 (zh)
EP (1) EP3507933A1 (zh)
CN (1) CN109565438B (zh)
WO (1) WO2018044484A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10783279B2 (en) * 2016-09-01 2020-09-22 Atmel Corporation Low cost cryptographic accelerator
KR102570581B1 (ko) * 2018-06-07 2023-08-24 삼성전자 주식회사 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
US11138132B2 (en) * 2018-06-20 2021-10-05 Intel Corporation Technologies for secure I/O with accelerator devices
CN110111496A (zh) * 2019-04-04 2019-08-09 浙江万胜智能科技股份有限公司 一种本地费控电能表费控数据的更改方法
US11943332B2 (en) * 2019-04-15 2024-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Low depth AES SBox architecture for area-constraint hardware
CN110110538A (zh) * 2019-05-08 2019-08-09 郑州信大捷安信息技术股份有限公司 硬件加解密系统及方法
US11615043B2 (en) * 2020-01-02 2023-03-28 Texas Instruments Incorporated Systems, methods, and apparatus to enable data aggregation and adaptation in hardware acceleration subsystems
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1761185A (zh) * 2005-11-18 2006-04-19 清华大学 乱序执行的数据流aes加密电路结构
CN202049480U (zh) * 2011-04-18 2011-11-23 上海北大方正科技电脑系统有限公司 加密存储设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7900054B2 (en) * 2002-03-25 2011-03-01 Intel Corporation Security protocols for processor-based systems
US8094815B2 (en) 2006-11-13 2012-01-10 Electronics Andtelecommunications Research Institute Arithmetic method and apparatus for supporting AES and ARIA encryption/decryption functions
CN100495961C (zh) * 2007-11-19 2009-06-03 西安西电捷通无线网络通信有限公司 一种基于分组密码算法的加密处理方法
US8923510B2 (en) * 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US20140229741A1 (en) 2011-12-30 2014-08-14 Sanu K. Mathew Dual Composite Field Advanced Encryption Standard Memory Encryption Engine
CN105191206B (zh) * 2013-05-01 2019-05-28 皇家飞利浦有限公司 电子块密码设备、方法和相应的计算机可读存储介质
US9843441B2 (en) * 2013-09-24 2017-12-12 Intel Corporation Compact, low power advanced encryption standard circuit
US9800406B2 (en) * 2014-05-21 2017-10-24 Intel Corporation Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
US9503256B2 (en) 2014-12-24 2016-11-22 Intel Corporation SMS4 acceleration hardware

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1761185A (zh) * 2005-11-18 2006-04-19 清华大学 乱序执行的数据流aes加密电路结构
CN202049480U (zh) * 2011-04-18 2011-11-23 上海北大方正科技电脑系统有限公司 加密存储设备

Also Published As

Publication number Publication date
CN109565438A (zh) 2019-04-02
WO2018044484A1 (en) 2018-03-08
US10218497B2 (en) 2019-02-26
EP3507933A1 (en) 2019-07-10
US20180062829A1 (en) 2018-03-01

Similar Documents

Publication Publication Date Title
US11316661B2 (en) Encryption interface
US11303438B2 (en) Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
CN109565438B (zh) 混合加密算法的硬件加速器及其系统
CN108702286B (zh) 抗功率侧信道攻击的高级加密标准加速器处理器
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
US10148428B2 (en) Instruction and logic to provide SIMD secure hashing round slice functionality
CN108228960B (zh) 用于熔丝验证的基于Simon的散列
US10755242B2 (en) Bitcoin mining hardware accelerator with optimized message digest and message scheduler datapath
US10346343B2 (en) Hardware accelerator for platform firmware integrity check
US10606765B2 (en) Composite field scaled affine transforms-based hardware accelerator
CN108027864B (zh) 经双仿射映射的s-盒硬件加速器
US11507699B2 (en) Processor with private pipeline
WO2017176407A1 (en) Parallelized authentication encoding
US9996708B2 (en) SMS4 acceleration processors having encryption and decryption mapped on a same hardware
CN108027866B (zh) 具有轮常数生成的sms4加速处理器
KR102456395B1 (ko) Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직
TWI842912B (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