CN110659505A - 用于对机密数据和附加认证数据进行加密或解密的加速器 - Google Patents

用于对机密数据和附加认证数据进行加密或解密的加速器 Download PDF

Info

Publication number
CN110659505A
CN110659505A CN201910451599.3A CN201910451599A CN110659505A CN 110659505 A CN110659505 A CN 110659505A CN 201910451599 A CN201910451599 A CN 201910451599A CN 110659505 A CN110659505 A CN 110659505A
Authority
CN
China
Prior art keywords
hash
block
memory
data
processor
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.)
Pending
Application number
CN201910451599.3A
Other languages
English (en)
Inventor
J·吉尔福德
V·戈帕尔
K·亚普
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 CN110659505A publication Critical patent/CN110659505A/zh
Pending legal-status Critical Current

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/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/3234Cryptographic 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 involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • 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
    • 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/602Providing cryptographic facilities or services
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • 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/3239Cryptographic 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 non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/122Hardware reduction or efficient architectures

Landscapes

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

Abstract

所公开的实施例涉及由加速器和处理器对机密数据和附加认证数据进行加密或解密。在一个示例中,处理器包括处理器电路系统,所述处理器电路系统用于:计算存储在存储器中的第一数据块的第一散列,将所述第一散列存储在所述存储器中,并且部分地基于第二散列生成认证标签。所述处理器进一步包括加速器电路系统,所述加速器电路系统用于:从所述存储器中获得所述第一散列,使用所述第一散列对第二数据块进行解密,并且部分地基于所述第一散列和所述第二数据块来计算所述第二散列。

Description

用于对机密数据和附加认证数据进行加密或解密的加速器
背景技术
技术领域
本发明总体上涉及计算机处理器领域。更具体地,本发明涉及用于对数据进行高性能加密、解密和认证的方法和设备。
相关技术说明
指令集或指令集架构(ISA)是与编程有关的计算机架构的一部分,包括本机数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置、以及外部输入和输出(I/O)。应当注意的是,在本文中术语“指令”一般指的是宏指令,即提供给处理器以供执行的指令,与作为处理器解码器对宏指令解码的结果的微指令或微操作完全不同。微指令或微操作可以被配置成命令处理器上的执行单元执行操作以实施与宏指令相关联的逻辑。
ISA与微架构不同,所述微架构是用于实施指令集的一组处理器设计技术。具有不同微架构的处理器可以共享共同的指令集。例如,来自
Figure BDA0002075314240000011
奔腾4(Pentium 4)处理器、
Figure BDA0002075314240000012
CoreTM处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(AdvancedMicroDevices,Inc.)的处理器实施几乎相同版本的x86指令集(在更新的版本中已加入了一些扩展),但具有不同的内部设计。例如,可以使用公知的技术在不同微架构中以不同方式实施ISA的相同的寄存器架构,包括专用物理寄存器、使用寄存器重新命名机构(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)和引退寄存器组)的一个或多个动态地分配的物理寄存器。除非另有指定,否则短语寄存器架构、寄存器组和寄存器在本文中用于指代软件/编程器可见的寄存器以及指令指定寄存器的方式。当需要区别时,将使用形容词“逻辑的”、“架构的”或“软件可见的”来指示寄存器架构中的寄存器/堆,同时不同的形容词将用于给定微架构中的指定寄存器(例如,物理寄存器、重排序缓冲器、引退寄存器、寄存器池)。
附图说明
可结合以下附图从以下详细描述中获得对本发明的更好的理解,在附图中:
图1是展示了包括处理器和加速器的系统的示例性实施例的框图;
图2是展示了加速器的示例性实施例的框图;
图3是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的整体方法的功能框图;
图4和图5是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的方法的初始阶段的框图;
图6和图7是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的方法的附加认证数据散列阶段的框图;
图8是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的方法的机密数据加密或解密和散列阶段的框图;
图9是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的方法的最终阶段的框图;
图10是与处理器与加速器之间的设置阶段相关联的方法的至少一个实施例的简化流程图;
图11是计算附加认证数据的散列的方法的至少一个实施例的简化流程图;
图12是对机密数据散列进行加密或解密和计算的方法的至少一个实施例的简化流程图;
图13是计算机密数据和附加认证数据的认证标签的方法的至少一个实施例的简化流程图;
图14A是框图,展示了根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线;
图14B是框图,展示了根据本发明的实施例的待包括在处理器中的有序架构核和示例性寄存器重命名、乱序发布/执行架构核的示例性实施例;
图15A至图15B展示了更具体的示例性有序核架构的框图,所述核是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核)之一;
图15A是根据本发明的实施例的单个处理器核连同其与管芯上互连网络1502的连接,以及其2级(L2)高速缓存的本地子集1504的框图;
图15B是根据本发明的实施例的图15A中的处理器核的一部分的展开图;
图16是根据本发明的多个实施例的可以具有多于一个核的、可以具有集成存储器控制器的、以及可以具有集成图形的处理器1600的框图;
图17至图20是示例性计算机架构的框图;
图17示出了根据本发明一个实施例的系统的框图;
图18是根据本发明的实施例的第一更具体示例性系统的框图;
图19是根据本发明的实施例的第二更具体示例性系统的框图;
图20是根据本发明的实施例的SoC的框图;并且
图21是框图,对照了根据本发明的实施例的对用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体的细节以便提供对本文所述的本发明的实施例的透彻理解。然而,对于本领域技术人员而言,可以在不具有这些具体细节中的一些具体细节的情况下实践本发明的实施例将是明显的。在其他实例中,以框图的形式示出了公知的结构和装置以避免模糊本发明的实施例的基本原理。
用于对机密数据和附加认证数据进行加密或解密的加速器
处理密码操作通常涉及执行大量专门操作,这些操作可能在使用中央处理单元(CPU)的核执行时由于消耗宝贵的计算周期而阻塞系统。为了避免这种阻塞,一些系统包括加速器以执行专门操作,从而减少处理器的工作负荷并提高执行密码操作的速度。这种安排对于在诸如内存数据库(IMDB)系统等高带宽加密介质上执行数据操作可以特别有用。
图1是展示了包括处理器和加速器的系统的示例性实施例的框图。系统包括通过一个或多个互连110耦合的处理器105、加速器115和系统存储器125。处理器105可以是可以执行本文所描述的处理器105的功能的任何类型的处理器,诸如微控制器、数字信号处理器(DSP)或包括如参考图14至图15所描述的那些处理器核等一个或多个处理器核的CPU。
系统存储器125可以是易失性、非易失性存储器、或这两者的组合。易失性存储器的示例包括动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。非易失性存储器的示例包括相变存储器(PCM)(例如,Intel 3D XPointTM存储器)、基于闪存的存储器(例如,基于NAND或NOR的闪存)、基于磁性的存储器等。处理器105和加速器115可以访问系统存储器125。在一些实施例中,一个或多个存储器控制器(未示出)驻留在互连110与系统存储器125之间以向处理器105和加速器115提供对系统存储器125的访问。
加速器115包括加密/解密单元116,并且在一些实施例中,进一步包括压缩/解压缩单元117和/或过滤器单元118。压缩/解压缩单元117和/或过滤器单元118尤其适合于对包括可以基于查询而被过滤的大量压缩数据的数据库(诸如IMDB)的操作。加速器115可以是能够执行本文所描述的加速器115的功能的任何类型的装置,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、协处理器、SoC块、IP核或其他硬件。
(多个)互连110可以包括切换结构、总线、交叉开关、网络等中的一个或多个或其组合,以通信地耦合处理器105、加速器115和系统存储器125。示例性互连包括高速外围部件互连(PCIe)、高级微控制器总线架构(AMBA)、快速路径互连(QPI)等。
在一些实施例中,芯片上系统(SoC)120包括处理器105和加速器115两者。在一些实施例中,SoC进一步包括系统存储器125。参考图16至图20描述了附加的示例性系统。
图2是展示了加速器115的示例性实施例的框图。如上所述,加速器115包括加密/解密单元116,并且在一些实施例中,进一步包括压缩/解压缩单元117和/或过滤器单元118。加速器115包括一个或多个旁路装置215以旁路单元116、117和/或118,使得加速器能够对数据执行各种操作组合(例如,解密和解压缩、压缩和过滤、仅过滤等)。
在此实施例中,加速器115包括促进到/从其他系统资源(例如,处理器105、系统存储器125)的通信的第一接口205A和第二接口205B。在一些实施例中,接口205A、205B是可以经由互连110访问系统资源的互连接口(例如,PCIe端点)。在一些实施例中,加速器115包括多于或少于两个接口205A和205B。在其他实施例中,加速器115仅包括两个接口205A和205B。接口205A处置由加密/解密单元116、压缩/解压缩单元117和过滤器单元118中的一个或多个处理的数据的输入/输出(I/O)操作。例如,输入数据可以是称为明文(例如,未加密数据)或密文(例如,加密数据)的数据流,加密/解密单元116分别将其加密为密文或解密为明文以供输出。
接口205B处置对配置数据的I/O操作,所述配置数据用于配置加密/解密单元116、压缩/解压缩单元117和过滤器单元118中的一个或多个如何处理数据。配置数据存储在加速器存储器210中。加速器存储器可以是易失性存储器或非易失性存储器。虽然加速器存储器210被展示为与单元116、117和118分开,但在一些实施例中,加速器存储器210的存储功能可以分布在单元116、117和/或118之中。
在一些实施例中,加速器115可以包括一个或多个数据缓冲器(未示出),以缓冲其从系统存储器125读取或写入所述系统存储器的数据(例如,经由接口205A、205B)。
图3是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的整体方法的功能框图。在此描述中,所述方法分解为阶段400、阶段500、阶段600、阶段700(可选)、阶段800和阶段900。在一些实施例中,所述方法实施密码操作的伽罗瓦/计数器模式(GCM)。关于GCM的附加细节可以在国家标准与技术研究所(National Institute of Standardsand Technology,NIST)特别出版物800-38D中找到。在一些实施例中,所述密码是在联邦信息处理标准(FIPS)出版物197中描述的高级加密标准(AES)密码。
当加密时,输入包括初始化向量(IV)305、附加认证数据(AAD)310和机密数据输入320(以明文P的形式),并且输出包括机密数据输出330(以密文C的形式)和认证标签345。当解密时,输入包括IV 305、AAD 310和机密数据输入320(以密文C的形式),并且输出包括机密数据输出330(以明文P的形式)和认证标签345。在加密或解密期间到多个阶段的输入390包括:到阶段500和800的密码密钥355(其可以包括多个轮次密钥)以及到阶段600、700、800和900的散列密钥350。
应当注意,稍后可以将在加密过程期间生成的认证标签与在解密过程期间生成的认证标签进行比较,以认证机密数据和AAD。
阶段400和500基于初始化向量IV 305来计算由阶段800和900使用的某些值。一个这样的值是CIPH_IV 335,其是如本文所描述的分块密码应用于IV 305的结果。参考图4和图5进一步详细地描述了阶段400和500。
阶段600计算AAD 310的散列(如果存在的话)。如以下所描述的,计算AAD 310的散列包括取决于AAD 310的长度在AAD 310上迭代一些次数。在一些实施例中,阶段600执行比基于AAD 310的长度所需要的总迭代次数少一次的散列迭代,并且由阶段700执行最终的散列计算。参考图6和图7进一步详细地描述了阶段600和700。
阶段800接收来自阶段400的作为输入315的计数器值315、机密数据输入320、以及来自阶段600或700的AAD散列325。阶段700对机密数据输入320进行加密或解密以在机密数据输出330处生成相应的密文C或明文P。阶段700进一步修改AAD 310的散列以认证经处理的机密数据输入320并在输出340处输出已更新的散列。参考图8进一步详细地描述阶段800。
阶段900接收从阶段800输出的已更新散列(表示AAD 310的散列和机密数据输入320)和阶段500的输出,并且生成认证标签345。参考图9进一步详细地描述阶段900。
图3中所展示并参考图4至图9中的一些实施例所描述的阶段是使通用或专用处理器执行本文描述的操作的机器可执行指令。可替代地,这些操作可以由含有用于执行所述操作的硬接线逻辑的特定硬件部件或者由编程的计算机部件与定制硬件部件的任何组合来执行。
图3至图9中展示的方法是基于块的方法,其中,处理器105和/或加速器115以预定大小的数据块对机密和AAD 310迭代地进行操作。例如,如果块大小是128位,则长度为128位、255位和257位的机密数据(或AAD 310)将分别包括1、2和3个块。应当注意,机密数据输入320和AAD 310可以是但不必是相同的长度。处理器105或加速器115经由如本文所描述的各种填充和/或截断操作来处置大小为块大小的非整数倍的机密或AAD 310。
图4和图5是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的方法的初始阶段400、500的框图。阶段400包括作为处理器105或加速器115的一部分实施的增量块405。增量块405接收IV 305作为输入,并输出递增一定量(例如,1)的输入。在一些实施例中,IV 305的大小是块大小的大小(使用或不使用填充)。例如,如果块大小是128位,则IV305的大小是128位。IV 305可以基于在通过介质(例如,网络、存储器等)发送的经认证的加密消息的发送方与接收方之间预定或协商的值。增量块405的输出是到图8中展示的阶段的输入A。
阶段500包括作为处理器105或加速器115的一部分实施的密码块505。密码块505接收IV 305,并且基于密码密钥355和分块密码来混淆并扩散IV的位以生成输出。一种这样的分块密码是AES。密码块505的输出是到图9中展示的阶段的输入B。
图6和图7是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的方法的AAD散列阶段600、700的框图。对AAD 310进行散列包括零轮次或多轮次散列以生成AAD310的认证散列。例如,如果块大小是128位并且AAD 310的大小是768位,则阶段600对AAD310的连续块重复六次(768/128),如以下所描述的。
阶段600包括作为处理器105的一部分实施的异或块605和散列块610。异或块605接收AAD 310的块、以及大小等于块大小的零向量或散列块610的输出作为输入,并且输出所述输入的逐位异或。异或块605在初始轮次散列期间接收零向量(由带圆圈的‘0’所标识的)。在初始轮次之后和最终轮次之前的轮次中,异或块605接收散列块610的输出(由圆圈C所标识的)和A的下一个块。
散列块610接收异或块605的输出和散列密钥350作为输入,并输出AAD 310的相应块的散列(基于轮次)。示例性散列函数基于伽罗瓦域乘法,其中,输入在伽罗瓦域GF(2128)中与散列密钥相乘,随后通过GF(2128)中的不可约多项式对乘积进行约简。在一些实施例中,散列密钥350从密码密钥355导出。散列块610的输出是到异或块605的输入C(如以上所描述的)或到图8中展示的阶段的输入E。
在一些实施例中,处理器105不计算异或块605对AAD 310的最终块的输出的散列。相反,旁路装置615输出异或块605的输出作为到图7中展示的阶段的输入D。在包括旁路装置615的实施例中,阶段700包括作为加速器115的一部分实施的散列块710。散列块710执行如以上针对散列块610所描述的散列操作。图11和相关联的描述提供了图6和图7中所展示的阶段的附加细节。
图8是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的方法的机密数据加密或解密和散列阶段800的框图。对机密数据输入320进行加密或解密并对其进行散列包括一轮次或多轮次的加密/解密和散列。例如,如果块大小是128位并且AAD 310的大小是1,536位,则阶段800对机密输入数据320的连续块重复十二次(1,536/128),如以下所描述的。
阶段800包括作为加速器115的一部分实施的增量块805、密码块810、异或块815、异或块820、和散列块825。如圆圈A所指示的,增量块805接收图4中的增量块405的输出(在第一轮次期间)或增量块805的输出(在第一轮次之后的轮次期间)作为输入,并输出递增一定量(例如,1)的输入。
密码块810接收密码密钥355、以及图4中的增量块405的输出(在第一轮次期间)或增量块805的输出(在第一轮之后的轮次期间)作为输入。类似于以上描述的密码块505,密码块810基于这些输入来输出加密值。
异或块815接收机密数据输入320的块(例如,在加密的情况下为明文P的块,或者在解密的情况下为密文C的块)和密码块810的输出作为输入,并输出所述输入的逐位异或。所述输出形成机密数据输出330的块。例如,如果异或块815接收机密数据输入320的第三块,则异或块815输出机密数据输出330的第三块。在一些实施例中,当机密数据输入320的最终块的大小小于块大小时,机密数据输出330的相应块的最终块的大小被截断为机密数据输入320的最终块的大小。
异或块820接收异或块815的输出作为输入,并且如圆圈E所标识的,接收图6中的散列块610的输出或图7中的散列块710的输出(在初始轮次期间)、或者散列块825的输出(在初始轮次之后的轮次期间)作为输入,并输出所述输入的逐位异或。以这种方式,AAD310的所有块上的最终散列用于计算机密数据输入320的所有块上的散列。
散列块825接收异或块820的输出和散列密钥350作为输入,并输出机密数据输入320的相应块的散列(在阶段800的初始轮次期间,从AAD 310的散列的初始输入进入异或块820),所述散列包含AAD 310的散列。图12和相关联的描述提供了图8中展示的阶段的附加细节。
图9是用于对机密数据进行加密/解密和认证以及对附加数据进行认证的方法的最终阶段900的框图。阶段900生成最终认证标签,其可以与加密机密数据和AAD 310一起存储或传输(在加密的情况下)或用于通过将生成的标签与早先加密过程期间生成的标签进行比较来验证经解密的机密数据和AAD 310的完整性(在解密的情况下)。
阶段900包括作为处理器105或加速器115的一部分实施的异或块905、散列块910和异或块915。异或块905接收如圆圈F所标识的散列块825的输出作为输入以及包括表示AAD 310的位长(在阶段600中所散列的)和机密数据输入320的位长(在阶段800中所散列的)的字段的向量作为输入,并输出所述输入的逐位异或。散列块910接收异或块905的输出和散列密钥350作为输入,并将散列值输出到异或块915。异或块915接收散列块910的输出和阶段500中的密码块505的输出(由圆圈B所标识的)作为输入,并输出所述输入的逐位异或,表示为认证标签345。图13和相关联的描述提供了图9中展示的阶段的附加细节。
设置
图10是与处理器105与加速器115之间的设置阶段相关联的方法1000、1050的至少一个实施例的简化流程图。图10的左侧部分表示由处理器105执行的操作和存储在系统存储器125中的相应值,并且图10的右侧部分表示由加速器115执行的操作和存储在加速器存储器210中的相应值。
在框1005处,处理器105将某些变量存储在系统存储器125中。这些变量可以包括密码密钥355(K)、IV 305、机密数据输入320(CDI)、AAD 310和认证标签345(T)(如果对先前生成的标签执行解密和认证的话)。
在一些实施例中,在框1010处,处理器105利用递增函数来递增IV并将得到的计数器值(CNT)315存储在系统存储器125中(例如,阶段400)。应当注意,在一些实施例中,处理器105在递增之前修改IV 305的值。
在诸如使用AES密码的一些实施例中,密码密钥355被扩展为在图5和图8中展示的密码块内的连续轮次中使用的多个密钥。也就是说,阶段500、800内的单个密码块可以包括具有扩展密钥的十一轮次(或更多或更少)操作。因此,在框1015处,处理器105将密码密钥355导出或扩展为共同标识为Kr 355A的多个轮次密钥,并将Kr 355A存储在系统存储器125中。
在一些实施例中,在框1020处,处理器105将分块密码应用于IV 305(或修改的IV)并将结果CIPH_IV 335存储在系统存储器125中(例如,阶段500)。
在一些实施例中,在框1025处,处理器105从密码密钥(K)355导出散列密钥(H)350,并将散列密钥350存储在系统存储器125中。在一些实施例中,通过将零向量应用于密码块(图中未具体展示),从密码密钥355导出散列密钥350。密码块接收与密码的块大小相对应的零向量和密码密钥355作为输入,并且基于分块密码(例如,AES)输出表示散列密钥350的值。
参考方法1050,在框1055处,加速器115将可用配置数据从系统存储器125复制到加速器存储器210,这取决于处理器105确定了哪些值。在一些实施例中,取决于系统存储器125中的可用配置数据,加速器115在框1060、1065、1070和1075处执行与以上针对框1010、1015、1020和1025描述的操作相对应的操作中的一个或多个操作。例如,如果处理器105在方法1000中执行了操作1010和1015但没有执行操作1020和1025,则加速器115将密码密钥355、IV 305、计数器值CNT 315和扩展的轮次密钥Kr 355A(如果使用具有多个轮次的分块密码的话)从系统存储器125复制到加速器存储器210中,并且加速器115执行操作1070和1075以确定CIPH_IV 335和散列密钥350。在一些实施例中,配置数据包括AAD(未示出)的部分计算散列,如参考图11所描述的(例如,来自旁路装置615)。
散列附加认证数据
图11是计算AAD的散列的方法1100的至少一个实施例的简化流程图。方法1100对应于图6和图7中的多轮操作。
在框1105处,处理器105可选地重置系统存储器125中的散列变量(在此示例中,HASH_IN(散列_输入)和HASH_OUT(散列_输出))。在框1110处,处理器105获得AAD的下一个块。如以上所指示的,基于密码的块大小/散列函数将AAD划分为多个部分(或块)。在框1115处,处理器105判定所获得的块的大小(或长度)是否小于块大小。如果所获得的块的大小小于块大小(例如,96位与128位块大小),则操作继续到框1120,否则操作继续到框1125。在框1120处,处理器105用零(或某个其他值,只要其在加密过程与解密过程之间是一致的即可)填充所获得的块。
在框1125处,处理器105判定所获得的块是否是AAD的第一块。如果是,则操作继续到框1135,否则操作继续到框1130。在框1130处,处理器105基于所获得的块与先前的散列值(HASH_OUT)的异或运算来生成散列函数的输入(HASH_IN)。在框1135处,处理器105基于所获得的块与块大小的零向量的异或运算来生成散列函数的输入(HASH_IN)。在处理器105在框1105处将HASH_OUT重置为零的实施例中,框1130可以替换框1125和1135。
在框1135处,处理器105判定所获得的块是否是AAD的最后一个块。如果是,则操作继续到框1150,否则操作继续到框1145。在框1145处,处理器105将散列函数应用于HASH_IN,将结果存储为HASH_OUT,并返回到框1110以获得AAD的下一个块,如本文所描述的。在框1150处,处理器105可选地将散列函数应用于HASH_IN并存储HASH_OUT的结果。处理器105是否在框1150处执行操作视加速器115是否具有用于执行图7中所标识的散列函数的电路系统而定。在框1155处,处理器105将AAD 310的散列存储在系统存储器125中以用于加速器。所述散列可以是来自框1150的HASH_OUT或来自框1130或1135的HASH_IN。在框1160处,处理器105将AAD 310的大小(或长度)存储在系统存储器125中。在一些实施例中,在方法1100期间确定AAD 310的大小(例如,通过将迭代次数乘以块大小并减去填充时所添加的位数(如果有的话))。
对机密数据进行加密或解密和认证
图12是对机密数据散列进行加密或解密和计算的方法1200的至少一个实施例的简化流程图。方法1200对应于图8中的多轮操作。
在框1205处,加速器115从系统存储器125获得由处理器105(例如,利用方法1100)计算的散列。在框1210处,加速器115对所获得的散列执行散列操作,这取决于处理器105是否对AAD 310执行了最终散列操作(图7中所标识并参考图11中的框1150所描述的)。在框1215处,将在框1205处获得并且可能在框1210处被散列的散列存储在加速器存储器210中(例如,作为变量HASH_OUT)。
在框1220处,加速器115获得机密数据输入320的下一个块。机密数据输入320(到图8的异或块815)可以是被加密的明文P或被解密的密文C。在一些实施例中,明文或密文由处理器105存储在系统存储器125中(例如,用于IMDB)或缓冲到系统存储器125中(例如,从网络或存储接口)。在一些实施例中,接口205A将来自系统存储器125的输入数据块复制到缓冲器或队列中以供加速器115进行处理。
在框1225处,加速器115基于所获得的输入数据块与密码函数应用于当前计数器值(CNT)的结果的异或运算来生成机密数据输出330的下一个块(来自图8中的异或块815)。应当注意,如果所获得的输入数据块小于块大小,则加速器115截断在框1225处生成的机密数据输出330以匹配所获得的机密数据输入320的块的长度。此操作通常针对输入数据的最后一个块发生(例如,当明文/密文不是块大小的整数倍时)。例如,如果输入数据是3位,则输出数据是从对这3位执行的异或运算生成的3位。
在框1230处,加速器115存储在框1225处生成的输出数据块。在一些实施例中,加速器115将在框1225处生成的输出数据块存储在缓冲器或队列中,直到接口205A将其传送到系统存储器125。
在框1235处,加速器115基于输出数据块与先前的散列值(HASH_OUT)的异或运算来生成散列函数的输入(HASH_IN)。在输出数据块小于块大小的情况下,加速器115在进行异或运算之前用零(或者某个其他值,只要其在加密过程与解密过程之间是一致的即可)填充所获得的块。
在框1240处,加速器115将散列函数应用于HASH_IN并将结果存储为HASH_OUT。在框1245处,加速器115判定所获得的输入数据块是否是输入数据的最后一个块。在一些实施例中,加速器115通过检查接口205A是否已到达其正在从其复制密文C或明文P(作为机密数据输入320)的地址范围的末端来做出该决策。如果所获得的输入数据块是输入数据的最后一个块,则操作继续到框1260,否则操作继续到框1250。在框1250处,加速器115将散列的中间值存储在系统存储器125中并且继续到框1255。
在框1255处,加速器115递增计数器值CNT并返回到框1220以获得输入数据的下一个块,如本文所描述的。应当注意,在一些场景中,加速器115在框1220处获得输入数据的下一块之前延迟。例如,处理器105可以在系统存储器125中具有可用于机密数据输入320(C或P)的固定量的缓冲空间。当输入数据正在从另一介质(例如,网络位置或存储驱动器)流送时,可能出现这种情况。如果三千字节明文在系统存储器125中一次缓冲一千字节,则操作1220至1255可能对于第一千字节重复64次(8,192位/128位块大小),延迟,对于第二千字节重复另一个64次,延迟并且对于第三千字节重复最终的64次。因为散列是在整个P或C上计算的,所以只要除了加速器所操作的最后部分之外的所有部分具有块大小的整数倍,加速器115就可以一次加密或解密P或C的多个部分。因此,加速器115可以在机密数据输入320的多个部分上操作而无需完成整个加密或解密操作。
在处理器105执行图13中所展示的操作的实施例中,在框1260处,加速器115将最终的散列值HASH_OUT存储在系统存储器125中。
标签生成
图13是计算机密数据输入320和AAD 310的认证标签的方法1300的至少一个实施例的简化流程图。方法1300对应于图9中的操作。
受制于本文所描述的变型,方法1300可以由处理器105或加速器115执行。
在框1305处,处理器105或加速器115确定机密数据输入320(明文P或密文C)的大小(例如,长度)。在一些实施例中,处理器105基于系统存储器125中的P或C的占用空间来确定大小。在其他实施例中,P或C的大小可以与P或C一起存储为例如元数据。在一些实施例中,加速器115在执行方法1200时确定输入数据的大小。
当由加速器115执行时,方法1300包括框1310,其中,加速器115从系统存储器125获得AAD 310的大小。当由处理器105执行时,方法1300包括框1315,其中,处理器105获得在图12中的框1260处存储在存储器中的散列(HASH_OUT)。
在框1320处,处理器105或加速器115基于所有附加认证数据和机密数据上的散列值(HASH_OUT)、AAD的大小以及机密数据的大小来生成散列函数的输入。在一些实施例中,AAD和机密数据的大小表示为64位二进制值并且并置在一起,所述并置是与HASH_OUT进行异或以生成HASH_IN。
在框1325处,处理器105或加速器115将散列函数应用于HASH_IN并将结果存储为HASH_OUT。
在框1330处,处理器105或加速器115基于HASH_OUT与CIPH_IV 335(密码函数应用于初始化向量的结果)的异或运算来生成认证标签T 345。
如果加速器115正在执行解密操作,则方法1300继续到框1335。在框1335处,处理器105或加速器115将所生成的认证标签345与利用经解密的机密数据和AAD传输或存储的标签进行比较,以在标签相匹配时验证机密数据和AAD的真实性。应当注意,如果比较由加速器115执行,则加速器115从系统存储器125读取或以其他方式获得未生成的标签,例如,类似于参考图10描述的其他配置值。
示例性数据流
所描述的处理器105与加速器115之间的加密、解密和散列操作的分配提供了用于执行本文所描述的操作的高度灵活性,即使在加速器115的每秒I/O操作量受限的场景中也是如此。现在描述两个示例性场景。
在第一种场景中,加速器115仅包括两个接口205A和205B。接口205A流送要由加密/解密单元116、压缩/解压缩单元117和/或过滤器单元118处理的数据。接口205B将配置或控制数据流送到所述单元。经由单个接口将AAD和机密数据流送到加密/解密单元116对加速器施加某些附加要求,这两者都是不可能的。因为机密数据和AAD通常缓冲在单独的缓冲器中,因此流送这两者会增加加速器存储器中的缓冲器大小。可替代地,加速器存储器中的缓冲器的大小可以保持相同,但是增加接口的复杂性以交替从系统存储器125中取出机密数据和取出AAD。这样,处理器105对AAD 310进行预先散列消除了经由接口205A流送AAD310的需要,并且可以经由接口205B加载部分计算的AAD 310的散列作为配置数据的一部分。例如,处理器105执行方法1000和1100。然后,加速器执行方法1050的框1055(经由接口205B)和方法1200(经由接口205A)。最终,处理器105执行方法1300。以这种方式,消除了经由接口205A将数据AAD 310流送到加速器的时间量,从而释放加速器115以执行其他操作。
在第二种场景下,处理器105能够将加速器115执行的加密或解密操作与其他加速器115操作交织进行。这包括分别对第一密文和第二密文的加密、密文和明文的加密或者明文或密文的加密或解密与诸如压缩、解压缩或过滤等其他操作(例如,经由压缩/解压缩单元117和/或过滤器单元118)的交织。如所解释的,加速器115可以通过接受散列输入并存储散列输出来对P或C的多个部分进行操作。例如,在框1205处,加速器115从处理器获得AAD的散列,并且在框1250处,加速器115存储迄今为止经处理的数据的中间散列。为了启动交织另一操作,处理器105存储在系统存储器125中的散列可以是AAD的散列、或AAD的散列以及如在框1250处从加速器输出的密文或明文的一部分。因此,处理器105可以计算A的散列,并将密文的块对齐部分分派给加速器115。当加速器115完成解密时,处理器可以存储散列值、将其他操作分派给加速器115(例如,加密明文的一部分、执行解压缩操作),并且稍后加载所存储的散列值并将密文的下一部分分派给加速器115。在一些实施例中,系统存储器125中散列被加载(例如,在1155处)并存储(例如,在1250)的位置是与处理器105和加速器115两者进行读/写访问相同的存储器位置。
在一些实施例中,处理器105和加速器115经由一个或多个信号进行通信以启动/停止操作、指示数据何时可用等。例如,处理器105写入加速器115内的存储器位置以启动操作,并且加速器115发出中断以向处理器105指示操作完成。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算(例如,图1中的处理器105)的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)(例如,图1中的加速器115)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图14A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图14B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图14A-图14B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图14A中,处理器流水线1400包括取出级1402、长度解码级1404、解码级1406、分配级1408、重命名级1410、调度(也被称为分派或发布)级1412、寄存器读取/存储器读取级1414、执行级1416、写回/存储器写入级1418、异常处置级1422和提交级1424。
图14B示出处理器核1490,该处理器核1490包括前端单元1430,该前端单元1430耦合到执行引擎单元1450,并且前端单元1430和执行引擎单元1450两者都耦合到存储器单元1470。核1490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核1490可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元1430包括分支预测单元1432,该分支预测单元1432耦合到指令高速缓存单元1434,该指令高速缓存单元1434耦合到指令转换后备缓冲器(TLB)1436,该指令转换后备缓冲器1436耦合到指令取出单元1438,该指令取出单元1438耦合到解码单元1440。解码单元1440(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元1440可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1490包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元1440中,或以其他方式在前端单元1430内)。解码单元1440耦合到执行引擎单元1450中的重命名/分配器单元1452。
执行引擎单元1450包括重命名/分配器单元1452,该重命名/分配器单元1452耦合到引退单元1454和一个或多个调度器单元的集合1456。(多个)调度器单元1456表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元1456耦合到(多个)物理寄存器堆单元1458。(多个)物理寄存器堆单元1458中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元1458包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元1458由引退单元1454重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元1454和(多个)物理寄存器堆单元1458耦合到(多个)执行集群1460。(多个)执行集群1460包括一个或多个执行单元的集合1462以及一个或多个存储器访问单元的集合1464。执行单元1462可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元1456、(多个)物理寄存器堆单元1458和(多个)执行集群1460示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元1464的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合1464耦合到存储器单元1470,该存储器单元1470包括数据TLB单元1472,该数据TLB单元1472耦合到数据高速缓存单元1474,该数据高速缓存单元1474耦合到第二级(L2)高速缓存单元1476。在一个示例性实施例中,存储器访问单元1464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元1470中的数据TLB单元1472。指令高速缓存单元1434还耦合到存储器单元1470中的第二级(L2)高速缓存单元1476。L2高速缓存单元1476耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线1400:1)指令取出1438执行取出级1402和长度解码级1404;2)解码单元1440执行解码级1406;3)重命名/分配器单元1452执行分配级1408和重命名级1410;4)(多个)调度器单元1456执行调度级1412;5)(多个)物理寄存器堆单元1458和存储器单元1470执行寄存器读取/存储器读取级1414;执行集群1460执行执行级1416;6)存储器单元1470和(多个)物理寄存器堆单元1458执行写回/存储器写入级1418;7)各单元可牵涉到异常处置级1422;以及8)引退单元1454和(多个)物理寄存器堆单元1458执行提交级1424。
核1490可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核1490包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元1434/1474以及共享的L2高速缓存单元1476,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图15A-图15B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图15A是根据本发明的实施例的单个处理器核以及它至管芯上互连网络1502的连接及其第二级(L2)高速缓存的本地子集1504的框图。在一个实施例中,指令解码器1500支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1506允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1508和向量单元1510使用分开的寄存器集合(分别为标量寄存器1512和向量寄存器1514),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存1506读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集1504是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集1504的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集1504中,并且可以与其他处理器核访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的L2高速缓存子集1504中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图15B是根据本发明的实施例的图15A中的处理器核的一部分的展开图。图15B包括L1高速缓存1504的L1数据高速缓存1506A部分,以及关于向量单元1510和向量寄存器1514的更多细节。具体地,向量单元1510是16宽向量处理单元(VPU)(见16宽ALU 1528),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元1520支持对寄存器输入的混合,通过数值转换单元1522A-B支持数值转换,并且通过复制单元1524支持对存储器输入的复制。写掩码寄存器1526允许预测所得的向量写入。
图16是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1600的框图。图16中的实线框图示具有单个核1602A、系统代理1610、一个或多个总线控制器单元的集合1616的处理器1600,而虚线框的任选增加图示具有多个核1602A-N、系统代理单元1610中的一个或多个集成存储器控制器单元的集合1614以及专用逻辑1608的替代处理器1600。
因此,处理器1600的不同实现可包括:1)CPU,其中专用逻辑1608是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1602A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1602A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1602A-N是大量通用有序核。因此,处理器1600可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器1600可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合1606、以及耦合到集成存储器控制器单元的集合1614的外部存储器(未示出)。共享高速缓存单元的集合1606可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元1612将集成图形逻辑1608(集成图形逻辑1608是专用逻辑的示例并且在本文中也被称为专用逻辑)、共享高速缓存单元的集合1606以及系统代理单元1610/(多个)集成存储器控制器单元1614互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元1606与核1602A-N之间维持一致性。
在一些实施例中,一个或多个核1602A-N能够实现多线程化。系统代理1610包括协调和操作核1602A-N的那些部件。系统代理单元1610可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1602A-N以及集成图形逻辑1608的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核1602A-N在架构指令集方面可以是同构的或异构的;即,核1602A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图17-20是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图17,所示出的是根据本发明一个实施例的系统1700的框图。系统1700可以包括一个或多个处理器1710、1715,这些处理器耦合到控制器中枢1720。在一个实施例中,控制器中枢1720包括图形存储器控制器中枢(GMCH)1790和输入/输出中枢(IOH)1750(其可以在分开的芯片上);GMCH 1790包括存储器和图形控制器,存储器1740和协处理器1745耦合到该存储器和图形控制器;IOH 1750将输入/输出(I/O)设备1760耦合到GMCH1790。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1740和协处理器1745直接耦合到处理器1710,并且控制器中枢1720与IOH 1750处于单个芯片中。
附加的处理器1715的任选性在图17中通过虚线来表示。每一处理器1710、1715可包括本文中描述的处理核中的一个或多个,并且可以是处理器1600的某一版本。
存储器1740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1720经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1795来与(多个)处理器1710、1715进行通信。
在一个实施例中,协处理器1745是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1720可以包括集成图形加速器。
在物理资源1710、1715之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器1710执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1710将这些协处理器指令识别为具有应当由附连的协处理器1745执行的类型。因此,处理器1710在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1745。(多个)协处理器1745接受并执行所接收的协处理器指令。
现在参见图18,所示出的是根据本发明的实施例的第一更具体的示例性系统1800的框图。如图18中所示,多处理器系统1800是点对点互连系统,并且包括经由点对点互连1850耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每一个都可以是处理器1600的某一版本。在本发明的一个实施例中,处理器1870和1880分别是处理器1810和1715,而协处理器1838是协处理器1745。在另一实施例中,处理器1870和1880分别是处理器1710和协处理器1745。
处理器1870和1880示出为分别包括集成存储器控制器(IMC)单元1872和1882。处理器1870还包括作为其总线控制器单元的一部分的点对点(P-P)接口1876和1878;类似地,第二处理器1880包括P-P接口1886和1888。处理器1870、1880可以经由使用点对点(P-P)接口电路1878、1888的P-P接口1850来交换信息。如图18中所示,IMC 1872和1882将处理器耦合到相应的存储器,即存储器1832和存储器1834,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1870、1880可各自经由使用点对点接口电路1876、1894、1886、1898的各个P-P接口1852、1854来与芯片组1890交换信息。芯片组1890可以任选地经由高性能接口1839来与协处理器1838交换信息。在一个实施例中,协处理器1838是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1890可以经由接口1896耦合到第一总线1816。在一个实施例中,第一总线1816可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图18中所示,各种I/O设备1814可连同总线桥1818一起耦合到第一总线1816,该总线桥1818将第一总线1816耦合到第二总线1820。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1815耦合到第一总线1816。在一个实施例中,第二总线1820可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1820,这些设备包括例如键盘和/或鼠标1822、通信设备1827以及存储单元1828,该存储单元1828诸如可包括指令/代码和数据1830的盘驱动器或者其他大容量存储设备。此外,音频I/O 1824可以被耦合到第二总线1820。注意,其他架构是可能的。例如,代替图18的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图19,示出的是根据本发明的实施例的第二更具体的示例性系统1900的框图。图18和19中的类似元件使用类似的附图标记,并且从图19中省略了图18的某些方面以避免混淆图18的其他方面。
图19图示处理器1870、1880可分别包括集成存储器和I/O控制逻辑(“CL”)1872和1882。因此,CL 1872、1882包括集成存储器控制器单元,并包括I/O控制逻辑。图19图示不仅存储器1832、1834耦合到CL 1872、1882,而且I/O设备1914也耦合到控制逻辑1872、1882。传统I/O设备1915被耦合到芯片组1890。
现在参考图20,示出的是根据本发明的实施例的SoC 2000的框图。图16中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图20中,(多个)互连单元2002被耦合到:应用处理器2010,其包括一个或多个核的集合1602A-N(其包括高速缓存单元1604A-N)的集合以及(多个)共享高速缓存单元1606;系统代理单元1610;(多个)总线控制器单元1616;(多个)集成存储器控制器单元1614;一个或多个协处理器的集合2020,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元2030;直接存储器访问(DMA)单元2032;以及用于耦合到一个或多个外部显示器的显示单元2040。在一个实施例中,(多个)协处理器2020包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图18中图示的代码1830)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图21是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图21示出可使用x86编译器2104来编译高级语言2102形式的程序,以生成可由具有至少一个x86指令集核的处理器2116原生执行的x86二进制代码2106。具有至少一个x86指令集核的处理器2116表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器2104表示可操作用于生成x86二进制代码2106(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器2116上执行。类似地,图21示出可以使用替代的指令集编译器2108来编译高级语言2102形式的程序,以生成可以由不具有至少一个x86指令集核的处理器2114(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码2110。指令转换器2112用于将x86二进制代码2106转换成可以由不具有x86指令集核的处理器2114原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码2110相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器2112通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码2106的软件、固件、硬件或其组合。
示例
示例1提供了一种用于处理机密数据和附加认证数据的示例性设备,所述设备包括:处理器电路系统,所述处理器电路系统用于:计算存储在存储器中的第一数据块的第一散列,将所述第一散列存储在所述存储器中,并且部分地基于第二散列生成认证标签;以及加速器电路系统,所述加速器电路系统用于:从所述存储器中获得所述第一散列,使用所述第一散列对第二数据块进行解密,并且部分地基于所述第一散列和所述第二数据块来计算所述第二散列。
示例2包括如示例1所述的示例性设备的实质内容,其中,所述认证标签用于认证所述第一数据块和所述第二数据块。
示例3包括如示例2所述的示例性设备的实质内容,其中,所述处理器电路系统用于将密码应用于初始化向量以生成输出,并且所述认证标签进一步部分地基于所述输出。
示例4包括如示例1所述的示例性设备的实质内容,其中,所述加速器电路系统用于从所述存储器获得密码密钥、计数值和散列密钥,所述计数值和所述密码密钥用于对所述第二数据块进行解密并且所述散列密钥用于计算所述第二散列。
示例5包括如示例1所述的示例性设备的实质内容,其中,所述加速器电路系统仅包括两个接口以从所述存储器读取数据或向所述存储器写入数据。
示例6包括如示例5所述的示例性设备的实质内容,其中,所述两个接口中的第一接口用于从所述存储器读取所述第二数据块并向所述存储器写入经解密的第二数据块,并且所述两个接口中的第二接口用于从所述存储器读取所述第一散列并向所述存储器写入所述第二散列。
示例7包括如示例1所述的示例性设备的实质内容,其中,所述加速器电路系统用于:将所述第二散列存储在所述存储器中,从所述存储器获得所述第二散列,对第三数据块进行解密,并且部分地基于所述第二散列和所述第三数据块来计算第三散列,其中,所述第二数据块和所述第三数据块包括明文。
示例8提供了一种用于处理机密数据和附加认证数据的示例性方法,所述方法包括:使用处理器电路系统来计算存储在存储器中的第一数据块的第一散列;使用处理器电路系统将所述第一散列存储在所述存储器中;使用处理器电路系统部分地基于第二散列来生成认证标签;使用加速器电路系统从所述存储器获得所述第一散列;使用加速器电路系统,使用所述第一散列来解密第二数据块;以及使用加速器电路系统部分地基于所述第一散列和所述第二数据块来计算所述第二散列。
示例9包括如示例8所述的示例性方法的实质内容,其中,所述认证标签用于认证所述第一数据块和所述第二数据块。
示例10包括如示例9所述的示例性方法的实质内容,进一步包括:通过所述处理器电路系统将密码应用于初始化向量以生成输出,并且所述认证标签进一步部分地基于所述输出。
示例11包括如示例8所述的示例性方法的实质内容,进一步包括:通过所述加速器电路系统从所述存储器获得密码密钥、计数值和散列密钥,所述计数值和所述密码密钥用于对所述第二数据块进行解密并且所述散列密钥用于计算所述第二散列。
示例12包括如示例8所述的示例性方法的实质内容,其中,所述加速器电路系统仅包括两个接口以从所述存储器读取数据或向所述存储器写入数据。
示例13包括如示例12所述的示例性方法的实质内容,进一步包括:通过所述两个接口中的第一接口从所述存储器读取所述第二数据块并向所述存储器写入经解密的第二数据块;以及通过所述两个接口中的第二接口从所述存储器读取所述第一散列并向所述存储器写入所述第二散列。
示例14包括如示例8所述的示例性方法的实质内容,进一步包括:通过所述加速器电路系统将所述第二散列存储在所述存储器中,从所述存储器获得所述第二散列,对第三数据块进行解密,以及部分地基于所述第二散列和所述第三数据块来计算第三散列,其中,所述第二数据块和所述第三数据块包括明文。
示例15提供了一种包含指令的示例性非暂态机器可读介质,所述指令当被处理器执行时使所述处理器通过以下方式处理机密数据和附加认证数据:使用处理器电路系统来计算存储在存储器中的第一数据块的第一散列;使用处理器电路系统将所述第一散列存储在所述存储器中;使用处理器电路系统部分地基于第二散列来生成认证标签;使用加速器电路系统从所述存储器获得所述第一散列;使用加速器电路系统,使用所述第一散列来解密第二数据块;以及使用加速器电路系统部分地基于所述第一散列和所述第二数据块来计算所述第二散列。
示例16包括如示例15所述的示例性非暂态机器可读介质的实质内容,其中,所述认证标签用于认证所述第一数据块和所述第二数据块。
示例17包括如示例16所述的示例性非暂态机器可读介质的实质内容,进一步包括:通过所述处理器电路系统将密码应用于初始化向量以生成输出,并且所述认证标签进一步部分地基于所述输出。
示例18包括如示例15所述的示例性非暂态机器可读介质的实质内容,进一步包括:通过所述加速器电路系统从所述存储器获得密码密钥、计数值和散列密钥,所述计数值和所述密码密钥用于对所述第二数据块进行解密并且所述散列密钥用于计算所述第二散列。
示例19包括如示例15所述的示例性非暂态机器可读介质的实质内容,其中,所述加速器电路系统仅包括两个接口以从所述存储器读取数据或向所述存储器写入数据。
示例20包括如示例19所述的示例性非暂态机器可读介质的实质内容,进一步包括:通过所述两个接口中的第一接口从所述存储器读取所述第二数据块并向所述存储器写入经解密的第二数据块;以及通过所述两个接口中的第二接口从所述存储器读取所述第一散列并向所述存储器写入所述第二散列。
在以上说明书中,已经参考本发明的具体示例性实施例描述了本发明的实施例。然而,将明显的是,可以在不脱离如所附权利要求中阐述的本发明的更广的精神和范围的情况下对其做出各种修改和改变。因此,说明书和附图要以说明性而非限制性的含义来看待。
如本文所示的流程图提供了各种处理动作的序列的示例。流程图可以指示有待由软件或固件线程执行的操作,以及物理操作。在一个实施例中,流程图可以展示有限状态机(FSM)的状态,其可以在硬件和/或软件中被实施。尽管是以指定序列或顺序示出的,但除非另外地指定,否则动作的顺序是可以修改的。因此,所展示的实施例应被理解为只是示例,并且所述过程可以用不同的顺序执行,并且一些动作可以并行地执行。另外,在各实施例中可以省略一个或多个动作;因此,并非在每个实施例中都需要所有动作。其他过程流是可能的。
本发明的实施例可以包括以上已经描述的各步骤。这些步骤可以被具体化为机器可执行指令,所述机器可执行指令可以用于使通用或专用处理器执行这些步骤。可替代地,这些步骤可以由包含用于执行这些步骤的硬接线逻辑的特定硬件部件来执行,或者由程序化计算机部件和自定义硬件部件的任意组合来执行。
如本文所描述的,指令可以指如专用集成电路(ASIC)等硬件的特定配置,所述专用集成电路被配置用于执行某些操作或者具有预定功能或存储在被具体化为非暂态计算机可读介质的存储器中的软件指令。因此,可以使用在一个或多个电子装置(例如,端站、网络元件等)上存储并执行的代码和数据来实施附图中示出的技术。这样的电子装置使用计算机机器可读介质(如,非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪速存储器装置;相变存储器)以及暂态计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号—如载波、红外信号、数字信号等))来(在内部和/或通过网络与其他电子装置)存储和传达代码和数据。此外,这样的电子装置典型地包括耦合至一个或多个其他部件(如一个或多个存储装置(非暂态机器可读存储介质)、用户输入/输出装置(例如,键盘、触摸屏和/或显示器)、以及网络连接件)的一组一个或多个处理器。所述一组处理器和其他部件的耦合通常通过一个或多个总线和桥接器(也被称为总线控制器)进行。承载网络业务量的存储装置和信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子装置的存储装置典型地存储用于在该电子装置的所述一组一个或多个处理器上执行的代码和/或数据。当然,可以使用软件、固件、和/或硬件的不同组合来实施本发明的实施例的一个或多个部分。贯穿本详细说明,出于解释的目的,阐述了大量的具体细节以便提供对本发明的透彻理解。然而,对于本领域的技术人员而言将明显的是,可以在没有这些具体细节中的一些的情况下实践本发明。在某些实例中,未详细描述公知结构和功能以避免模糊本发明的主题。因此,本发明的范围和精神应根据以下权利要求来判定。

Claims (20)

1.一种用于硬件辅助解密的设备,所述设备包括:
处理器电路系统,用于:
计算存储在存储器中的第一数据块的第一散列,
将所述第一散列存储在所述存储器中,并且
部分地基于第二散列生成认证标签;以及
加速器电路系统,用于:
从所述存储器中获得所述第一散列,
使用所述第一散列对第二数据块进行解密,并且
部分地基于所述第一散列和所述第二数据块来计算所述第二散列。
2.如权利要求1所述的设备,其中,所述认证标签用于认证所述第一数据块和所述第二数据块。
3.如权利要求2所述的设备,其中,所述处理器电路系统进一步用于将密码应用于初始化向量以生成输出,并且所述认证标签进一步部分地基于所述输出。
4.如权利要求1所述的设备,其中,所述加速器电路系统进一步用于从所述存储器获得密码密钥、计数值和散列密钥,所述计数值和所述密码密钥用于对所述第二数据块进行解密并且所述散列密钥用于计算所述第二散列。
5.如权利要求1所述的设备,其中,所述加速器电路系统仅包括两个接口以从所述存储器读取数据或向所述存储器写入数据。
6.如权利要求5所述的设备,其中,所述两个接口中的第一接口用于从所述存储器读取所述第二数据块并向所述存储器写入经解密的第二数据块,并且所述两个接口中的第二接口用于从所述存储器读取所述第一散列并向所述存储器写入所述第二散列。
7.如权利要求1所述的设备,其中,所述加速器电路系统进一步用于:将所述第二散列存储在所述存储器中,从所述存储器获得所述第二散列,对第三数据块进行解密,以及部分地基于所述第二散列和所述第三数据块来计算第三散列,其中,所述第二数据块和所述第三数据块包括明文。
8.一种用于硬件辅助解密的方法,所述方法包括:
使用处理器电路系统来计算存储在存储器中的第一数据块的第一散列;
使用处理器电路系统将所述第一散列存储在所述存储器中;
使用处理器电路系统部分地基于第二散列来生成认证标签;
使用加速器电路系统从所述存储器获得所述第一散列;
使用加速器电路系统,使用所述第一散列来解密第二数据块;以及
使用加速器电路系统部分地基于所述第一散列和所述第二数据块来计算所述第二散列。
9.如权利要求8所述的方法,其中,所述认证标签用于认证所述第一数据块和所述第二数据块。
10.如权利要求9所述的方法,进一步包括:通过所述处理器电路系统将密码应用于初始化向量以生成输出,并且所述认证标签进一步部分地基于所述输出。
11.如权利要求8所述的方法,进一步包括:通过所述加速器电路系统从所述存储器获得密码密钥、计数值和散列密钥,所述计数值和所述密码密钥用于对所述第二数据块进行解密并且所述散列密钥用于计算所述第二散列。
12.如权利要求8所述的方法,其中,所述加速器电路系统仅包括两个接口以从所述存储器读取数据或向所述存储器写入数据。
13.如权利要求12所述的方法,进一步包括:通过所述两个接口中的第一接口从所述存储器读取所述第二数据块并向所述存储器写入经解密的第二数据块;以及通过所述两个接口中的第二接口从所述存储器读取所述第一散列并向所述存储器写入所述第二散列。
14.如权利要求8所述的方法,进一步包括:通过所述加速器电路系统将所述第二散列存储在所述存储器中,从所述存储器获得所述第二散列,对第三数据块进行解密,以及部分地基于所述第二散列和所述第三数据块来计算第三散列,其中,所述第二数据块和所述第三数据块包括明文。
15.一种用于硬件辅助解密的系统,所述系统包括:
存储器;
处理器,用于:
计算存储在所述存储器中的第一数据块的第一散列,
将所述第一散列存储在所述存储器中,并且
部分地基于第二散列生成认证标签;以及
加速器,用于:
从所述存储器中获得所述第一散列,
使用所述第一散列对第二数据块进行解密,并且
部分地基于所述第一散列和所述第二数据块来计算所述第二散列。
16.如权利要求15所述的系统,其中,所述认证标签用于认证所述第一数据块和所述第二数据块。
17.如权利要求16所述的系统,其中,所述处理器进一步用于将密码应用于初始化向量以生成输出,并且所述认证标签进一步部分地基于所述输出。
18.如权利要求15所述的系统,其中,所述加速器进一步用于从所述存储器获得密码密钥、计数值和散列密钥,所述计数值和所述密码密钥用于对所述第二数据块进行解密并且所述散列密钥用于计算所述第二散列。
19.如权利要求15所述的系统,其中:
所述加速器仅包括两个接口以从所述存储器读取数据或向所述存储器写入数据;并且
所述两个接口中的第一接口用于从所述存储器读取所述第二数据块并向所述存储器写入经解密的第二数据块,并且所述两个接口中的第二接口用于从所述存储器读取所述第一散列并向所述存储器写入所述第二散列。
20.一种包括代码的机器可读介质,所述代码当被执行时使机器执行如权利要求7至14中任一项所述的方法。
CN201910451599.3A 2018-06-28 2019-05-28 用于对机密数据和附加认证数据进行加密或解密的加速器 Pending CN110659505A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/022,619 US11516013B2 (en) 2018-06-28 2018-06-28 Accelerator for encrypting or decrypting confidential data with additional authentication data
US16/022,619 2018-06-28

Publications (1)

Publication Number Publication Date
CN110659505A true CN110659505A (zh) 2020-01-07

Family

ID=69028861

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910451599.3A Pending CN110659505A (zh) 2018-06-28 2019-05-28 用于对机密数据和附加认证数据进行加密或解密的加速器

Country Status (2)

Country Link
US (1) US11516013B2 (zh)
CN (1) CN110659505A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210374256A1 (en) * 2020-08-20 2021-12-02 Intel Corporation Plaintext integrity protection mechanism
CN114095153A (zh) * 2020-08-05 2022-02-25 迈络思科技有限公司 密码数据通信装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11698969B1 (en) * 2021-06-25 2023-07-11 Amazon Technologies, Inc. Boot security of integrated circuit device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020032551A1 (en) * 2000-08-07 2002-03-14 Jabari Zakiya Systems and methods for implementing hash algorithms
JP4956292B2 (ja) * 2007-06-25 2012-06-20 パナソニック株式会社 情報セキュリティ装置およびカウンタ制御方法
US8351600B2 (en) * 2009-10-30 2013-01-08 Cleversafe, Inc. Distributed storage network and method for encrypting and decrypting data using hash functions
US9087187B1 (en) * 2012-10-08 2015-07-21 Amazon Technologies, Inc. Unique credentials verification
US10237066B1 (en) * 2013-06-27 2019-03-19 Altera Corporation Multi-channel encryption and authentication
JP6044738B2 (ja) * 2014-04-10 2016-12-14 富士電機株式会社 情報処理装置、プログラム及び記憶媒体
US9832022B1 (en) * 2015-02-26 2017-11-28 Altera Corporation Systems and methods for performing reverse order cryptographic operations on data streams
EP3308280A4 (en) * 2015-06-11 2019-01-02 Peernova, Inc. Making cryptographic claims about stored data using an anchoring system
US10108557B2 (en) * 2015-06-25 2018-10-23 Intel Corporation Technologies for memory confidentiality, integrity, and replay protection
US9967088B2 (en) * 2016-05-23 2018-05-08 Accenture Global Solutions Limited Rewritable blockchain
US10439812B2 (en) * 2018-02-02 2019-10-08 SquareLink, Inc. Technologies for private key recovery in distributed ledger systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114095153A (zh) * 2020-08-05 2022-02-25 迈络思科技有限公司 密码数据通信装置
US20210374256A1 (en) * 2020-08-20 2021-12-02 Intel Corporation Plaintext integrity protection mechanism
US11816229B2 (en) * 2020-08-20 2023-11-14 Intel Corporation Plaintext integrity protection mechanism

Also Published As

Publication number Publication date
US20200007329A1 (en) 2020-01-02
US11516013B2 (en) 2022-11-29

Similar Documents

Publication Publication Date Title
US11128443B2 (en) SM3 hash algorithm acceleration processors, methods, systems, and instructions
CN107667499B (zh) 带密钥散列消息认证码处理器、方法、系统和指令
US10705842B2 (en) Hardware accelerators and methods for high-performance authenticated encryption
CN110233720B (zh) Sm4加速处理器、方法和系统
US9960917B2 (en) Matrix multiply accumulate instruction
US11121856B2 (en) Unified AES-SMS4—Camellia symmetric key block cipher acceleration
CN107133018B (zh) 执行groestl散列的指令
US10606765B2 (en) Composite field scaled affine transforms-based hardware accelerator
CN105204820B (zh) 用于提供通用gf(256)simd加密算术功能的指令和逻辑
TWI706321B (zh) 安全模指數處理器、方法、系統、及指令
CN109479003B (zh) 用于安全椭圆曲线密码指令的处理器、系统、方法和设备
CN110659505A (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