CN109845182A - 密码消息与认证指令 - Google Patents

密码消息与认证指令 Download PDF

Info

Publication number
CN109845182A
CN109845182A CN201780063690.7A CN201780063690A CN109845182A CN 109845182 A CN109845182 A CN 109845182A CN 201780063690 A CN201780063690 A CN 201780063690A CN 109845182 A CN109845182 A CN 109845182A
Authority
CN
China
Prior art keywords
data set
encryption
instruction
block
data
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
CN201780063690.7A
Other languages
English (en)
Other versions
CN109845182B (zh
Inventor
D·格雷纳
T·斯莱格尔
C·佐林
C·雅各比
V·帕洛特斯基
T·维谢格拉迪
R·T·布恩德尔
J·布拉德伯里
A·N·普拉尼克
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN109845182A publication Critical patent/CN109845182A/zh
Application granted granted Critical
Publication of CN109845182B publication Critical patent/CN109845182B/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
    • 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/30018Bit or string instructions
    • 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
    • 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]

Landscapes

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

Abstract

执行用于执行加密和认证的指令。执行包括加密由指令提供的一个数据集以获得加密数据并将加密数据放置在指定位置。执行还包括认证由指令提供的附加数据集,其中认证生成消息认证标签的至少一部分。消息认证标签的至少一部分被存储在所选择的位置。

Description

密码消息与认证指令
背景技术
一个或多个方面一般涉及计算环境内的处理,并且具体地,涉及与数据的加密(ciphering)和认证相关联的处理。
电子信息处理上下文中的安全消息传输涉及消息的加密和解密、以及认证。发送者在传输之前对消息进行加密,以确保对加密消息的检查不会向第三方显示其真实内容。另一方面,接收者解密消息以显示原始内容。此外,消息认证确保发送者提供的消息内容在传输过程中不被意外或恶意更改。因此,所接收的消息实际上与发送的消息相同。
美国国家科学技术研究所(NIST)特刊800-38D,块密码操作模式的建议(Recommendation for Block Cipher Modes of Operation):伽罗瓦(Galois)/计数器模式(GCM)和GMAC,(GMAC:伽罗瓦消息认证码),描述以下操作:
使用NIST SP 800-38D中描述的伽罗瓦散列(GHASH)算法来认证附加的认证数据。例如,附加的认证数据是消息的网络路由信息。该数据未被加密,因此网络路由器可正确地发送消息;但是,路由信息可能需要被认证,例如,以确保数据来自期望的源。
使用具有128位的块大小的被验证的对称密钥块密码来加密消息,例如高级加密标准(AES)。为了使加密块的潜在可重复性最小化,加密技术使用在加密过程中包括的从一个块到下一个块的递增计数器。
使用GHASH对加密的消息数据进行认证。
单独的各个指令可用于使用各种加密算法执行消息的加密,并用于生成消息的消息位。
发明内容
通过提供用于促进计算环境中的处理的计算机程序产品,克服了现有技术的缺点并提供了额外的优点。计算机程序产品包括存储介质,存储介质可由处理电路读取并存储用于由处理电路执行以执行方法的指令。方法例如包括获得执行多个操作(包括加密和认证)的指令,以及执行该指令。执行包括加密由指令提供的一个数据集以获得加密数据并将加密数据放置在指定位置。执行还包括认证由指令提供的附加数据集,其中认证生成消息认证标签的至少一部分。消息认证标签的至少一部分被存储在选择的位置。在进一步的实施例中,执行还包括认证加密数据。
提供了一种指令,其能够生成用于附加认证数据的消息摘要,加密消息并生成用于加密消息的消息摘要。这通过减少要获取、解码以及执行的指令的数量,以及通过减少要被获取的密文的次数来改进系统性能。
在一个示例中,附加数据集包括一个或多个数据块中的至少一个数据块,并且执行还包括确定附加数据集是否包括要被认证的最后数据块。基于附加数据集是否包括要被认证的最后数据块来执行认证。该确定例如包括检查指令的最后附加认证数据控件,以确定附加数据集是否包括要被认证的最后数据块。最后附加认证数据控件指示是否已提供附加认证数据的最后块,以及允许单个指令处理附加认证数据的第一、中间和最后块。
进一步,在一个示例中,一个数据集包括一个或多个数据块中的至少一个数据块,并且执行还包括确定一个数据集是否包括要被加密的最后数据块。基于一个数据集是否包括要被加密的最后数据块来执行加密。该确定例如包括检查指令的最后文本控件,以确定一个数据集是否包括要被加密的最后数据块。最后文本控件指示是否已提供明文/密文的最后块,以及允许单个指令处理明文/密文的第一、中间和最后块。
作为示例,加密包括基于由被设置为选择的值的指令提供的控件来加密一个数据集,或者基于由被设置为特定的值的指令提供的控件来解密一个数据集。
在一个实施例中,附加数据集的认证包括使用散列技术来生成消息认证标签的至少一部分。在一个实施例中,散列技术使用存储在指令使用的参数块中的散列子密钥,基于被设置为所选择的值的指令的散列子密钥提供的控件。散列子密钥提供的控件允许程序指示其已提供其自己的散列子密钥,因此如果使用相同的散列子密钥则提供性能优势。
作为示例,一个数据集包括消息的至少一部分,并且附加数据集包括消息的路由信息。
通过本文描述的技术实现了额外的特征和优点。本文详细描述了其它实施例和方面,并且这些实施例和方面被认为是所要求保护的方面的一部分。
附图说明
在说明书结尾的权利要求中作为示例特别指出并清楚地要求保护一个或多个方面。通过结合附图的以下详细描述,一个或多个方面的前述和目的、特征和优点是显而易见的,在附图中:
图1A描绘了结合和使用本发明的一个或多个方面的计算环境的一个示例;
图1B描绘了图1A中的处理器的进一步细节;
图2A描绘了结合和使用本发明的一个或多个方面的计算环境的另一示例;
图2B描绘了图2A中的存储器的进一步细节;
图3A描绘了根据本发明的一个方面的密码消息与认证指令(cipher messagewith authentication instruction)的格式的一个实施例;
图3B描绘了根据本发明的一个方面的要被图3A中的密码消息与认证指令的一个或多个方面使用的通用寄存器(通用寄存器0(GR0))的内容的一个示例;
图3C描绘了根据本发明的一个方面的要被图3A中的密码消息与认证指令使用的另一通用寄存器(通用寄存器1(GR1))的内容的一个示例;
图3D描绘了根据本发明的一个方面的要在图3A中的密码消息与认证指令的一个或多个方面中使用的寄存器R1的内容的一个示例;
图3E描绘了根据本发明的一个方面的要在图3A中的密码消息与认证指令的一个或多个方面中使用的寄存器R2的内容的一个示例;
图3F描绘了根据本发明的一个方面的要在图3A中的密码消息与认证指令的一个或多个方面中使用的寄存器R2+1的内容的一个示例;
图3G描绘了根据本发明的一个方面的要在图3A中的密码消息与认证指令的一个或多个方面中使用的寄存器R3的内容的一个示例;
图3H描绘了根据本发明的一个方面的要在图3A中的密码消息与认证指令的一个或多个方面中使用的寄存器R3+1的内容的一个示例;
图4描绘了根据本发明的一个方面的由图3A中的密码消息与认证指令使用的参数块的格式的一个示例;
图5A描绘了根据本发明的一个方面的加密散列子密钥的一个示例;
图5B描绘了根据本发明的一个方面的附加认证数据的完整块的伽罗瓦散列处理的一个示例;
图5C描绘了根据本发明的一个方面的附加认证数据的最后(短)块的伽罗瓦散列处理的一个示例;
图5D描绘了根据本发明的一个方面的用于加密的消息的完整块的组合的加密和散列的一个示例;
图5E描绘了根据本发明的一个方面的用于解密的消息的完整块的组合的加密和散列的一个示例;
图5F描绘了根据本发明的一个方面的消息的最后(短)块的加密和散列的一个示例;
图5G描绘了根据本发明的一个方面的最后标签的散列和加密的一个示例;
图6描绘了根据本发明的一个方面的与密码消息与认证指令相关联的所选择的处理的一个示例;
图7A-7E描绘了根据本发明的一个方面的与密码消息与认证指令相关联的处理的一个示例;以及
图8A-8B描绘了根据本发明的一个方面的促进计算环境中的处理的一个示例,其包括执行被配置为执行具有附加认证操作的密码消息的指令。
具体实施方式
根据一个或多个方面,提供单个指令(例如,硬件/软件接口处的单个架构的硬件机器指令),该指令组合认证和加密的功能。例如,提供单个指令,该指令将生成消息认证标签(用于附加的认证数据和消息两者)的功能与消息的加密进行组合。尽管在一个实施例中,指令执行符合伽罗瓦/计数器模式规格的加密和认证,然而在其它实施例中,指令可以使用附加和/或其它算法来执行加密和认证。指令在此指密码消息与认证指令。
如上所述,单个指令可用于使用各种加密算法对消息进行加密(算法包括数据加密算法、三重数据加密算法和高级加密标准),以及用于生成消息摘要。进一步,其它功能可用于执行各种散列算法,包括GHASH。然而,不存在单一指令将消息加密和消息验证组合,包括对其它附加认证数据的认证。因此,根据本发明的一个方面,提供了组合消息加密和认证的此类指令,例如,具有认证的密码指令。
参考图1A描述结合和使用本发明的一个或多个方面的计算环境的一个实施例。在一个示例中,计算环境基于由纽约阿蒙克的国际商业机器公司(International BusinessMachines Corporation)提供的z/架构(z/Architecture)。在2015年3月的IBM公开号为SA22-7832-10的“z/架构的工作原理(z/Architecture Principles of Operation)”中描述了z/架构的一个实施例,其全部内容通过引用并入本文。Z/ARCHITECTURE是美国纽约阿蒙克的国际商业机器公司的注册商标。
在另一示例中,计算环境基于由纽约阿蒙克的国际商业机器公司提供的Power架构。在2015年4月9日的国际商业机器公司的“Power ISA TM版本2.07B(Power ISA TMVersion 2.07B)”中描述了Power架构的一个实施例,其全部内容通过引用并入本文。POWERARCHITECTURE是美国纽约阿蒙克的国际商业机器公司的注册商标。
计算环境还可以基于其它架构,包括但不限于Intel x86架构。也存在其它示例。
如图1A所示,计算环境100例如包括计算机系统/服务器12,其可包括但不限于一个或多个处理器或处理单元16、系统存储器28以及总线18,总线18将各种系统组件(包括系统存储器28)耦接到处理器16。
总线18表示若干类型的总线结构中的任何一种或多种,包括使用各种总线架构中的任何总线架构的存储器总线或存储器控制器、外围总线、加速图形端口、以及处理器或本地总线。作为示例而非限制性地,此类架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。此类介质可以是计算机系统/服务器12可访问的任何可用介质,并且此类介质包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12还可以包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为示例,可以提供存储系统34用于对不可移动的非易失性磁介质(未示出并且通常称为“硬盘驱动器”)进行读取和写入。尽管未示出,但是可以提供用于对可移动的非易失性磁盘(例如,“软盘”)进行读取和写入的磁盘驱动器,以及用于对可移动的非易失性光盘(诸如CD-ROM,DVD-ROM或其它光学介质的盘)进行读取或写入的光盘驱动器。在这种情况下,每个驱动器都可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有被配置为执行本发明的实施例的功能的一组(例如,至少一个)程序模块。
作为示例而非限制性地,具有一组(至少一个)程序模块42的程序/实用程序40、以及操作系统、一个或多个应用程序、其它程序模块和程序数据可以存储在存储器28中。操作系统、一个或多个应用程序、其它程序模块和程序数据中的每一个或其某种组合可以包括网络环境的实现。程序模块42通常执行如本文所描述的本发明实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14(例如,键盘、指向设备、显示器24等)通信,与一个或多个使得用户能够与计算机系统/服务器12交互的设备通信,和/或与使得计算机系统/服务器12能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)通信。此类通信可以通过输入/输出(I/O)接口22进行。此外,计算机系统/服务器12还可以经由网络适配器20通过一个或多个网络(例如,局域网(LAN)、广域网(WAN)和/或公共网络(例如,因特网))通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它组件通信。应该理解,尽管未示出,但是其它硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器和数据档案存储系统等。
在一个示例中,处理器16包括用于执行指令的多个功能组件。如图1B所示,这些功能组件例如包括用于获取要执行的指令的指令获取组件120、用于解码所获取的指令并获得解码的指令的操作数的指令解码单元122、用于执行解码的指令的指令执行组件124、用于访问用于指令执行的存储器的存储器访问组件126(在需要的情况下)、以及用于提供所执行的指令的结果的写回组件130。根据本发明的一方面,这些组件中的一个或多个提供加密和认证操作136,包括附加认证数据的认证,如本文描述的。
在一个实施例中,处理器16还包括由一个或多个功能组件使用的一个或多个寄存器140。
参考图2A描述了结合和使用一个或多个方面的计算环境的另一实施例。在该示例中,计算环境200例如包括经由例如一个或多个总线208和/或其它连接彼此耦接的本机中央处理单元(CPU)202、存储器204、以及一个或多个输入/输出设备和/或接口206。作为示例,计算环境200可以包括由纽约阿蒙克的国际商业机器公司提供的PowerPC处理器或pSeries服务器、由加利福尼亚州帕洛阿尔托的惠普公司(Hewlett Packard Co.)提供的配备Intel Itanium II处理器的HP Superdome、和/或基于国际商业机器公司、惠普、英特尔(Intel)、甲骨文(Oracle)或其它公司提供的架构的其它机器。
本机中央处理单元202包括一个或多个本机寄存器210,例如在环境内处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括代表任何特定时间点的环境状态的信息。
此外,本机中央处理单元202执行存储在存储器204中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器204中的仿真器代码212。该代码使得在一个架构中配置的计算环境能够仿真另一架构。例如,仿真器代码212允许基于除z/架构之外的体系结构的机器(例如,PowerPC处理器、pSeries服务器、HP Superdome服务器等)仿真z/架构并执行基于z/架构开发的软件和指令。
参考图2B描述了与仿真器代码212有关的进一步细节。存储在存储器204中的访客指令250包括被开发为在不同于本机CPU 202的架构中执行的软件指令(例如,与机器指令相关)。例如,访客指令250可能已被设计为在z/架构处理器16上执行,但是相反地,在本机CPU 202上进行仿真,本机CPU 202可以是例如Intel Itanium II处理器。在一个示例中,仿真器代码212包括指令获取例程252以从存储器204获得一个或多个访客指令250并且可选地为所获得的指令提供本地缓存。仿真器代码212还包括指令转换例程254以确定已获得的访客指令的类型并将访客指令转换成一个或多个相应的本机指令256。该转换例如包括识别要由访客执行的功能并选择执行该功能的(多个)本机指令。
此外,仿真器212包括仿真控制例程260以使本机指令被执行。仿真控制例程260可以使本机CPU 202执行仿真一个或多个先前获得的访客指令的本机指令的例程,并且在该执行结束时将控制返回到指令获取例程以仿真获得下一访客指令或一组访客指示。本机指令256的执行可以包括将数据从存储器204加载到寄存器中,将数据从寄存器存储回存储器,或者执行如由转换例程确定的某种类型的算术或逻辑运算。
每个例程例如以软件实现,该软件存储在存储器中并由本机中央处理单元202执行。在其它示例中,一个或多个例程或操作以固件、硬件、软件或一些其组合来实现。仿真处理器的寄存器可以使用本机CPU的寄存器210或通过使用存储器204中的位置来仿真。在实施例中,访客指令250、本机指令256和仿真器代码212可以驻留在同一存储器中或者可以分配在不同的存储器设备中。
如本文所使用的,固件包括例如处理器的微代码、毫代码和/或宏代码。例如,固件包括用于实现更高级机器代码的硬件级指令和/或数据结构。在一个实施例中,固件例如包括通常作为微代码传送的专有代码,其包括针对底层硬件的受信软件或微代码并控制对系统硬件的操作系统访问。
在一个示例中,已获得、转换以及执行的访客指令250是本文描述的密码消息与认证指令。具有一种架构(例如,z/架构)的指令从存储器中被获取、转换并表示为另一架构(例如,PowerPC、pSeries、英特尔等)的一系列本机指令256。这些本机指令然后被执行。
本文描述了与密码消息与认证指令(包括指令的显式和隐式字段)以及处理器(在本机或仿真系统中)的执行的一个实施例有关的细节。根据本发明的一个方面,密码消息与认证指令是单个指令,其组合了生成消息认证标签(对于附加认证数据和消息两者)以及消息的加密的功能。
参考图3A描述密码消息与认证指令的一个实施例。在一个示例中,密码消息与认证指令300包括具有操作代码(操作码)以指示密码消息与认证操作的操作码字段302(例如,位0-15)、用于指定至少一个第一寄存器(R1)的第一寄存器字段304(例如,位24-27)、用于指定至少一个第二寄存器(R2)的第二寄存器字段306(例如,位28-31)、以及用于指定至少一个第三寄存器(R3)的第三寄存器字段308(例如,位16-19)。在一个示例中,字段304-308中的每一个是与操作码字段分离且独立的。此外,在一个实施例中,此类字段是彼此分离且独立的,然而,在其它实施例中,多于一个字段可被组合。
在一个示例中,由R1字段指定的偶数寄存器的内容包含第一操作数的地址。此外,由R2字段和R3字段指定的偶奇寄存器对的内容分别包含第二操作数和第三操作数的地址和长度。
除了在指令中编码的R1、R2和R3之外,指令的一个实现还使用一个或多个隐含寄存器,例如包括通用寄存器0(GR0)和通用寄存器1(GR1)。下面参考图3B-3H进一步描述每个寄存器。
首先参见图3B,描述通用寄存器0(320)的格式的一个实施例。在一个示例中,通用寄存器0包括标志(F)字段322(例如,位48-55)、修改器(M)控件324(例如,位56)和函数代码(FC)字段326(例如,位57-63)。下面进一步描述每个字段。
标志(F)322:通用寄存器0的位位置48-55包含控制函数的操作的8位标志字段。当通用寄存器0的位57-63中的函数代码指定加密函数时(即,当函数代码非零时),标志字段是有意义的。在一个示例中,标志字段的格式如下:
保留:标志字段的位0-4被保留并且应包含零;否则,程序可能不能在以后兼容操作。
散列子密钥提供的(HS)标志:标志字段的位5指示参数块(下面描述)中的散列子密钥(H)字段是否包含有效的散列子密钥。当函数代码非零并且函数不使用加密的加密密钥时,HS标志是有意义的;对于使用加密的加密密钥的函数,HS标志被忽略。
最后附加认证数据(LAAD)标志:标志字段的位6限定第三操作数的内容。当LAAD标志为1时,其指示第三操作数指定最后一系列附加认证数据块。当LAAD标志为0时,其指示第三操作数不指定最后一系列附加认证数据块。
最后的明文/密文(LPC)标志(本文也称为最后文本控件):标志字段的位7限定第二操作数的内容。当LPC标志为1时,其指示第二操作数指定最后一系列明文或密文块。当LPC标志为0时,其指示第二操作数不指定最后一系列明文或密文块。
当LPC标志为1并且LAAD标志为0时,规格异常被识别,并且操作被抑制。
修改器(M)324:当通用寄存器0的位57-63中的函数代码非零时,通用寄存器0的位位置56包含指示由函数执行加密或解密的修改器控件。当M控件为0时,函数执行第二操作数的加密;当M控件为1时,函数执行第二操作数的解密。当函数代码为0时,忽略M控件。
函数代码(FC)326:通用寄存器0的位位置57-63包含函数代码。在指令的操作中,执行由函数代码指定的函数。用于密码消息与认证的被分配的函数代码的示例包括:
通用寄存器0的位0-31被忽略。通用寄存器0的位32-47被保留并且应包含零;否则,程序未来可能不能兼容运行。
查询函数(例如,函数代码0)提供指示其它函数的可用性的方式。对于查询函数,通用寄存器R1、R2、R2+1、R3和R3+1的内容被忽略。
对于除查询函数之外的函数(即,对于具有非零函数代码的函数),根据第三操作数的内容以及根据所生成的第一操作数或者第二操作数的内容形成消息认证标签,相应地取决于M控件是0或者1。基于M控件,第二操作数使用加密密钥和来自参数块的计数器值进行加密或解密(如下所述),并将结果放在第一操作数位置。
如图3C所示,通用寄存器1(330)包含存储器中参数块的最左侧字节的逻辑地址332。在24位寻址模式中,通用寄存器1的位位置40-63的内容构成地址,并且位位置0-39的内容被忽略。在31位寻址模式中,通用寄存器1的位位置33-63的内容构成地址,并且位位置0-32的内容被忽略。在64位寻址模式中,通用寄存器1的位位置0-63的内容构成地址。
参见图3D,R1字段(304)指定通用寄存器以及用于指定偶数寄存器;否则,规格异常被识别。R2和R3字段分别指示偶奇通用寄存器对,并且每个寄存器指定偶数寄存器;否则,规格异常被识别。如果R3字段与R1或R2字段指定相同的寄存器,则规格异常同样被识别。
第一、第二和第三操作数的最左侧字节的位置分别由通用寄存器R1304(图3D)、R2306(图3E)和R3 308(图3G)的内容指定。第二操作数位置中的字节数在通用寄存器R2+1中指定(370,图3F)。第一操作数与第二操作数的长度相同。第三操作数位置中的字节数在通用寄存器R3+1中指定(390,图3H)。
作为操作的一部分,通用寄存器R3(380,图3G)中的地址382以所处理的第三操作数字节的数量递增,并且通用寄存器R3+1(390)中的长度392以同一数量递减;另外,通用寄存器R1和R2中的地址342、362每个都以所处理的第二操作数字节的数量递增,并且通用寄存器R2+1(370)中的长度372以同一数量递减。地址和长度的形成和更新取决于寻址模式。
例如,在24位寻址模式中,通用寄存器R1、R2和R3的位位置40-63的内容相应地构成第一、第二和第三操作数的地址,并且位位置0-39的内容被忽略;更新的地址的位40-63替换通用寄存器R1、R2和R3中的对应位,更新的地址的位位置40的进位输出(carry out)被忽略,并且通用寄存器R1、R2和R3的位位置32-39的内容被设定为0。在31位寻址模式中,通用寄存器R1、R2和R3的位位置33-63的内容相应地构成第一、第二和第三操作数的地址,并且位位置0-32的内容被忽略;更新的地址的位33-63替换通用寄存器R1、R2和R3中的对应位,更新的地址的位位置33的进位输出被忽略,并且通用寄存器R1、R2和R3的位位置32的内容被设定为0。在64位寻址模式中,通用寄存器R1、R2和R3的位位置0-63的内容相应地构成第一、第二和第三操作数的地址;更新的地址的位0-63替换通用寄存器R1、R2和R3的内容,并且其位置0的进位输出被忽略。
在24位和31位寻址模式两者中,通用寄存器R2+1的位位置32-63的内容形成指定第一和第二操作数中的字节数的32位无符号的二进制整数,并且位位置0-31的内容被忽略;更新值的位32-63替换通用寄存器R2+1中的对应位。在64位寻址模式中,通用寄存器R2+1的位位置0-63的内容形成指定第一和第二操作数中的字节数的64位无符号的二进制整数;更新值替换通用寄存器R2+1的内容。
在24位和31位寻址模式中,通用寄存器R3+1的位位置32-63的内容形成指定第三操作数中的字节数的32位无符号的二进制整数,并且位位置0-31的内容被忽略;更新值的位32-63替换通用寄存器R3+1中的对应位。在64位寻址模式中,通用寄存器R3+1的位位置0-63的内容形成指定第三操作数中的字节数的64位无符号的二进制整数;更新值替换通用寄存器R3+1的内容。
在24位或31位寻址模式中,通用寄存器R1、R2、R2+1、R3和R3+1的位位置0-31的内容保持不变。
在访问寄存器模式中,访问寄存器1、R1、R2和R3分别指定包含参数块、第一、第二和第三操作数的地址空间。
以下描述每个函数:
查询(函数代码0)
该函数使用包括例如被存储在参数块中的128位状态字的参数块。该字段的0-127位分别对应于密码消息与认证指令的函数代码0-127。当位是1时,对应的函数被设置;否则,该函数不被设置。
当查询函数的执行完成时,条件代码0被设定;条件代码1、2和3不适用于该函数。
伽罗瓦/计数器模式(GCM)-AES函数(选择性非零函数代码)
在一个实施例中,存在六种GCM-AES函数:
GCM-AES-128(函数代码18)
GCM-AES-192(函数代码19)
GCM-AES-256(函数代码20)
GCM加密的AES-128(函数代码26)
GCM加密的AES-192(函数代码27)
GCM加密的AES-256(函数代码28)
这些函数还使用参数块,并且参考图4描述用于GCM-AES函数的参数块的一个示例。在一个示例中,参数块400包括:
保留:参数块的字节0-11被保留。保留字段可包含不可预测的指令的值。
计数器值(CV)402:参数块的字节12-15包含例如32位二进制整数。初始计数器值412(J0,参数块的字节64-79)的最左侧12个字节与右侧CV字段的内容连接,以形成由GCTR(Galois Counter)函数使用的初始计数器块(ICB),描述如下。
对于指令的每次执行,CPU以所处理的第二操作数块的数量来递增参数块中的CV字段。CV字段的位位置0的进位输出被忽略。
标签(T)404:参数块的字节16-31包含消息认证标签字段。
对于第三操作数的每个块,以及对于所得到的第一操作数的每个块(当M是0时)或第二操作数的每个块(当M是1时),CPU使用标签字段作为针对伽罗瓦散列(GHASH)函数的输入和输出两者,描述如下。当所有附加的认证的数据和密文已被散列,使用GHASH对TAADL408和TPCL 410字段的连接(在下文中描述)散列,并且使用GCTR函数对散列的结果加密,以生成参数块中的最后标签(T)字段。
散列子密钥(H)406:对于GCM-AES函数,参数块的字节32-47包含例如由指令的GHASH函数使用的128位散列子密钥。当散列子密钥提供标志(HS,通用寄存器0的位53)是0时,CPU通过使用加密密钥(K)加密128位二进制0来计算散列子密钥,将散列子密钥存储在H字段中,并且将HS标志设置为1。当HS标志是1时,CPU使用H字段中程序提供的散列子密钥;并且在这种情况下,H字段和HS标志不被改变。
对于GCM加密的AES函数,参数块的字节32-47被保留并且应包含0;否则,程序将来可能不能兼容运行。在这种情况下,CPU通过使用解密的加密密钥(K)来加密128位二进制0来计算散列子密钥;并且在这种情况下,H字段和HS标志不被改变。
总附加认证数据长度(TAADL)408:参数块的字节48-55包含指定所处理的消息的整个附加认证数据的位的总长度的64位无符号的二进制整数。
总明文或密文长度(TPCL)410:参数块的字节56-63包含指定所处理的消息的整个明文或密文的位的总长度的64位无符号的二进制整数。
初始计数器值(J0)412:参数块的字节64-79包含128位初始计数器值,其用于(a)提供由GCTR函数使用的初始计数器块的最左侧96位,以及(b)加密最后认证标签(T)字段。
密码密钥(K)414:在加密和解密操作中使用的密码密钥在参数块的字节80处开始。密钥字段的大小及其在参数块中的偏移量取决于函数代码,指示如下:
AES包装密钥验证模式(WKaVP)418:对于GCM-加密-AES函数(代码26-28),紧跟在参数块中的密钥之后的32字节包含AES包装密钥验证模式(WKaVP)。
对于GCM-AES函数(代码18-20),参数块中不存在WKaVP字段。
在一个实施例中,对于GCM-AES函数,附加认证数据的认证以及消息的加密和认证包括一系列操作。被执行的一系列操作(取决于通用寄存器0中的标志和函数代码)包括,例如:
1.包装密钥验证:对于每次执行指令,执行该过程一次,并确保使用加密的包装密钥的函数使用正确版本的密钥。对于GCM-加密-AES函数(函数代码26-28),将32字节WKaVP字段的内容与AES包装密钥验证模式寄存器的内容进行比较。如果它们不匹配,第一操作数和参数块位置保持不变,并且通过设置条件代码(例如,1)来完成操作。如果它们匹配,使用AES包装密钥对参数块的密钥字段414的内容进行解密,以获得由函数使用的128位加密密钥K 414;然而,参数块的密钥字段不变。对于不使用加密密钥的GCM-AES函数(代码18-20),不执行包装密钥验证。
2.计算散列子密钥:该过程采用128位的0值,并使用加密算法(例如,AES加密)对其进行加密。对于不使用包装密钥的函数,实现允许程序指定预先计算的散列子密钥。在GHASH处理中使用散列子密钥来生成所得到的消息认证标签。
对于GCM-AES函数(函数代码18-20),以下适用:
*当散列子密钥提供标志(HS,通用寄存器0的位53)为0时,使用AES算法对128个二进制0的块进行加密。如图5A所示,AES算法500使用来自参数块的密钥(K)字段414。所得到的128位散列子密钥504被放到参数块的H字段406中,并且HS标志在通用寄存器0中被设置为1。
*当HS标志为1时,参数块中的H字段406被用作散列子密钥。在这种情况下,H字段和HS标志不被改变。
对于GCM-加密-AES函数(函数代码26-28),HS标志被忽略。使用AES算法对128个二进制0的块进行加密,如图5A所示,使用解密密钥(K)。在这种情况下,参数块的H字段406和HS标志不被改变。
3.附加认证数据散列:任何的附加认证数据由GHASH算法处理,以形成部分消息标签。当通用寄存器R3+1中的第三操作数长度非零时,执行附加认证数据散列。在这种情况下,由指令的R3操作数指定的偶数通用寄存器包含存储位置的地址,该存储位置包含使用GHASH算法根据其计算消息认证标签的数据。除了第三操作数的块之外,GHASH函数还使用参数块中的散列子密钥406和标签字段404作为输入值。
结果被获得,如处理在第三操作数的左端开始并且逐块地向右进行。当附加认证数据的一个或多个完整的16字节块剩下时,处理如图5B所示,其中510处的操作是按位异或,并且512处的操作是GF(2128)上的GCM乘法操作。
在一种实现中,当以下任何为真时,附加认证数据散列处理结束:
*CPU确定的小于第三操作数的长度的块的数量已被处理。在这种情况下,到目前为止计算出的消息认证被放到参数块的T字段404中,通用寄存器R3以所处理的第三操作数字节的数量递增,通用寄存器R3+1以相同数量递减,并且指令通过设置例如条件代码3来完成。
*最后附加认证数据标志(LAAD,通用寄存器0的位54)为0,并且第三操作数中剩下的字节数小于16。在这种情况下,到目前为止计算的消息认证标签(如果存在)被放入参数块的T字段404,通用寄存器R3以所处理的第三操作数字节的数量(如果存在)递增,通用寄存器R3+1以相同数量递减,并且指令通过设置例如条件代码2来完成。
*LAAD标志为1,并且第三操作数中剩余的字节数在1和15之间。在这种情况下,执行以下操作:
-剩余短块的复本采用足够的二进制0在右侧来填充,以形成使用GHASH进行散列的完整块。
-通用寄存器R3以所处理的第三操作数字节的数量递增,并且通用寄存器R3+1中的第三操作数长度被设置为零。
第三操作数的最后一个块的处理如图5C所示。
*LAAD标志是1并且第三操作数中剩余的字节数是0。在这种情况下,如下所述,取决于模型,指令以例如条件代码3完成,或者处理以第二操作数的加密和散列继续。
当通用寄存器R3+1中的第三操作数长度最初为0并且LAAD标志为1时,不执行附加认证数据散列。在这种情况下,取决于模型,参数块中的T字段404是否被获取并且未被修改地存储回来。
4.加密和散列消息:这是加密或解密消息以及基于加密的数据计算消息标签的过程。取决于M位(通用寄存器0的位56),第二操作数的每个块使用GCTR函数加密或解密。相应的加密或解密的结果放在第一操作数位置,并且使用GHASH函数对被加密的操作数进行散列。GCTR和GHASH处理的组合被描述为GCM函数。
在概念上,获得结果,如处理在第一和第二操作数的左端开始并且逐块地向右进行,如图5D和图5E所示。然而,取决于模型,操作单元可以并行处理第一和第二操作数的多个块;因此,块可以不必须以从左到右的顺序来访问。此外,可以对块进行多次访问,并且在加密操作的情况下,第一操作数块可以在被存储之后重新被获取。
GCTR函数使用16字节初始计数器块(ICB),该16字节初始计数器块(ICB)由在左边的初始计数器值(J0)412的最左侧的12字节与在右边的四字节计数器(CV)402的连接形成。GCTR还使用密钥字段(直接来自用于GCM-AES函数的参数块,或者用于GCM-加密-AES函数的解密密钥)。对于由GCTR加密的每个块,计数器值(CV)递增1;计数器值的位位置0的进位输出被忽略。然后,GCTR函数使用由J0的最左侧12个字节与递增的计数器值连接而形成的16字节计数器块(CB)。
GHASH函数使用加密数据(即,当M为0时加密的第一操作数结果,或者当M为1时第二操作数)、来自参数块或来自前一步骤的标签(T)字段、以及散列子密钥。
当M位为0时(即,当第二操作数被加密时),完整块的GCM处理如图5D所示。当M位是1时(即,当第二操作数被解密时),完整块的GCM处理如图5E所示。
在一个示例中,用于加密或解密的加密和散列过程继续,直到以下任何一者为真:
*CPU确定的小于第二操作数的长度的块数已被处理。在这种情况下,当前计数器值被放到参数块的CV字段402中,到目前为止计算的消息认证标签被放入参数块的T字段404中,通用寄存器R1和R2以所处理的第二操作数字节的数量递增,则通用寄存器R2+1以相同数量递减,并且通过设置例如条件代码3来完成指令。
*最后的明文/密文标志(LPC,通用寄存器0的位55)为0,并且第二操作数中剩余的字节数小于16。在这种情况下,当前计数器值被放到参数块的CV字段402中,到目前为止计算的消息认证标签(如果存在)被放入参数块的T字段404中,通用寄存器R1和R2以所处理的第二操作数字节的数量(如果存在)递增,通用寄存器R2+1以相同数量递减,并且通过设置例如条件代码2来完成指令。
*LPC标志为1,并且第二操作数中剩余的字节数在1和15之间。在这种情况下,执行以下操作:
-第二操作数的剩余字节的副本在右侧采用足够的二进制0来填充,以形成使用GCTR算法加密的完整块,并将所得到的加密或解密的块的最左侧字节放在第一操作数位置。放置在第一操作数位置的字节数与第二操作数中剩余的字节数相同(即,小于16)。
-然后将GHASH算法应用于密文。当M为0时,GHASH算法的输入包括存储在第一操作数位置的短块的副本,在右侧填充足够的二进制0以形成完整的块。当M为1时,GHASH算法的输入与GCTR算法的输入相同(即,第二操作数的剩余字节的副本,在右侧以足够的二进制0填充以形成完整的块)。
-将当前计数器值放入参数块的CV字段402中,将得到的标签值放置在参数块中,通用寄存器R1和R2以所处理的第二操作数字节的数量递增,以及通用寄存器R2+1被设置为零。
第二操作数的最后一个块的GCM处理如图5F所示。
*LPC标志是1,并且第二操作数中剩余的字节数是0。在这种情况下,取决于模型,指令以例如条件代码3完成,或者采用最后的消息认证标签散列和加密来继续处理,如下所述。
5.最后消息认证标签散列和加密:该过程取得以位为单位的总长度的附加认证数据和消息,采用GHASH算法对其进行处理,然后将其与加密的初始计数器值合并以形成最终消息认证标签。使用GHASH函数对包括来自参数块的64位总附加认证数据长度(TAADL)和总明文或密文长度(TPCL)字段的连接的128位值进行散列。GHASH函数使用连接的长度字段、在加密和散列操作中计算的标签(T)字段、以及散列子密钥。
所得到的128位的GHASH的输出然后由GCTR算法处理。注意,与加密和散列操作不同,GCTR的输入计数器是来自参数块的初始计数器块(J0)字段412。所得到的128位的值替换参数块中的标签(T)字段404,并且指令以例如条件代码0完成。图5G示出了最后标签值的散列和加密的一个实施例。
在一个实施例中,发出指令的程序负责提供准确的TAADL和TPCL值(例如,以位为单位)。在另一实施例中,程序可以在消息处理的开始时将TAADL和TPCL值设置为0,并且CPU可以在指令的一个或多个重复的执行处理消息时更新这些字段。
以下提供与指令有关的其它细节。
检测导致部分完成的条件(例如,条件代码3)取决于模型,并且每次执行指令时可以是不同的数字。CPU确定的块数通常是非零。在某些异常情况下,该数字可以是0,并且条件代码(例如3)可被设置而无进展。但是,CPU防止此类无进展情况的无休止重现。
如果以下任一为真,则结果是不可预测的:
*第三操作数与可在附加的认证数据处理期间被更新的参数块的任何部分破坏性地重叠。
*LALAAD标志是1,并且以下任何一者都为真:
-第二操作数与可在加密和散列期间被更新的参数块的任何部分破坏性地重叠。
-第一操作数与可在加密和散列期间访问的参数块的任何部分破坏性地重叠。
-第一操作数与第二操作数破坏性地重叠,但操作数不指定同一位置。
假定处理从左到右执行,当将数据移动到位置中后将该位置用作源时,操作数被称为破坏性地重叠。
以下指示由指令设置的各种条件代码以及基于LAAD和LPC标志的所得到的第二和第三操作数长度的一个示例:
说明:
--不适用
此外,通用寄存器R1、R2和R3中的第一操作数、第二操作数和第三操作数地址不变
CC3是否针对这些条件(与CC0条件相同)而设置是取决于模型的。
CC条件代码
LAAD最后的附加认证数据标志,通用寄存器0的位54
LPC最后明文/密文标志,通用寄存器0的位55
3rd OpL第三操作数长度
2nd OpL第二操作数长度
即使仅由指令存储CV、T和H字段,可以针对参数块中的任何位置识别存储类型访问异常。
PER存储改变事件可以针对第一操作数位置和针对被存储的参数块的部分两者而被识别。PER零地址检测事件可以针对第一、第二和第三操作数位置以及针对参数块(包括参数块的保留字段)而被识别。当针对这些位置中的一个或多个检测PER事件时,识别在PER访问标识(PAID)和PER ASCE ID(AI)中的哪个位置是不可预测的。
当针对参数块识别PER存储改变事件时,已处理的第一、第二或第三操作数位置的多少字节是不可预测的。当针对第一操作数位置识别存储更改PER事件时,在报告事件之前,将少于4K的附加字节存储到第一操作数位置。
当第三操作数长度初始为零时,不访问第三操作数,并且不改变通用寄存器R3和R3+1中的第三操作数地址和第三操作数长度。当第二操作数长度初始为零时,不访问第二操作数,并且不改变通用寄存器R2和R2+1中的第二操作数地址和第二操作数长度。然而,即使第二和第三操作数长度都为零,参数块也可被访问。
当R1和R2字段的内容相同时,指定寄存器的内容以所处理的字节数递增,而不是以处理的字节数的倍数递增。
如该CPU、其它CPU和信道程序所观察的,对参数块和存储操作数的引用(reference)可以是多访问引用,对这些存储位置的访问不必须是块并发(block-concurrent)的,并且这些访问的顺序或引用未被定义。
在某些异常情况下,指令执行可以通过设置条件代码3来完成,而不更新寄存器以反映处理的第一、第二和第三操作数的最后单元。在这种情况下,所处理的单元的大小取决于情况和模型,但是受到限制使得已处理且未报告的第一和第二操作数的部分在存储中不重叠;并且已处理且未报告的第一和第三操作数的部分在存储中不重叠。在所有情况下,在适用时,对于所有处理的第一操作数位置,设置改变位,并报告PER存储更改事件。
对于执行加密的加密密钥与包装密钥验证模式寄存器的比较的函数,当比较导致不匹配并且相应的操作数长度为非零时,针对第一、第二和第三操作数识别访问异常和PER零地址检测事件是不可预测的。
访问异常可以针对操作数的较大部分被报告,而不是在指令的单次执行中被处理;然而,对于超出操作数长度的位置以及超出正被处理的当前位置4K字节以外的位置中的任一者,访问异常不被识别。
在一个示例中,如果发生以下任何一种情况,则识别规格异常并且不采取其它动作:
1.通用寄存器0的位57-63指定未分配或未安装的函数代码。
2.R1、R2或R3字段指示奇数寄存器或通用寄存器0。
3.R3字段指定与R1或者R2字段相同的寄存器。
4.函数代码是非零的,并且LPC标志是1(指示明文或密文的最后块正被处理),但是LAAD标志是0(指示不是所有附加的认证数据都已被处理)。
所产生的条件代码,例如:
0正常完成
1验证模式不匹配
2不完全处理(当LAAD标志为零时剩余的第三操作数长度小于例如16,或者当LPC标志为零时剩余的第二操作数长度小于例如16)
3部分完成(超出模型依赖限制)
示例程序异常包括:
*访问(获取,操作数2,操作数3,参数块字段;存储,操作数1,计数器值,散列子密钥,标签)
*操作(如果消息安全辅助扩展8未被安装)
*规格
*交易约束
此外,执行优先级的示例异常/完成条件包括:
1-7.具有与一般情况下的程序中断条件的优先级相同的优先级的例外。
8.由于无效的函数代码或无效的寄存器数字引起的规格异常。
9.由于当LAAD标志为0时LPC标志为1的规格异常(当函数代码非零时适用)。
10.A.1访问参数块的访问异常。
10.A.2条件代码1,由于验证模式不匹配。
10.B访问第一、第二或第三操作数的访问异常。
11.条件代码3,由于第三操作数的部分处理。
12.条件代码2,由于当LAAD标志为零时剩余的第三操作数长度小于例如16。
13.条件代码3,由于第二操作数的部分处理。
14.条件代码2,由于当LPC标志为零时剩余的第二操作数长度小于例如16。
15.条件代码0,由于正常完成。
此外,在一个或多个实施例中,以下适用:
在处理单个消息时,在一个示例中,程序初始设置参数块中的以下字段,并且在指令采用条件代码(例如0)完成之前不改变这些字段;否则,结果将不符合GCM标准。
a.计数器值(CV):CV字段将使用初始计数器值(J0)字段的最右4字节进行初始化。
b.标签(T):标签字段将被初始化为零。
c.散列子密钥(H):对于KMA-GCM-AES函数(代码18-20),以下适用:
*当HS标志为1时,程序在H字段中提供预先计算的散列子密钥。子密钥包括使用AES算法加密的例如16字节的零。
*当HS标志为0时,CPU使用AES算法和参数块中的密钥字段加密例如16字节的零,将结果存储在H字段中,并将HS标志设置为1。
对于KM-加密-AES函数(代码26-28),CPU计算散列子密钥,并且不改变H字段和HS标志。
d.初始计数器值(J0):初始计数器值是从程序提供的初始化矢量(IV)导出的。例如,如果程序使用96位IV,则将IV存储到J0字段的最左12字节中,并将十六进制00000001存储在J0字段的最右字节中。如果程序使用具有不同长度的IV,则使用GHASH算法提供例如J0字段中的IV的16字节散列值。
e.密钥值(K)和包装密钥验证模式(WKaVP):为了正确加密单个消息,密钥对于指令的所有执行都是相同的。对于KM-加密-AES函数,包装密钥验证模式字段也保持不变。
当处理最后的明文或密文块时(即,当LPC标志为1时),参数块中的总附加认证数据长度(TAADL)和总明文/密文长度(TPCL)字段用于包含以位为单位的总长度的相应的附加认证数据和整个消息的明文或密文。
程序负责将所解密的消息的散列标签与当消息被加密时的消息的散列标签进行比较,以确保消息的真实性。
LAAD和LPC标志提供当不是消息的所有组件都可用于指令的单次执行时可以对消息进行加密和散列的方式。例如,如果消息的明文或密文部分跨越多个磁盘或磁带记录,并且不是所有消息块都被读入存储器,则程序可通过发出具有被设置为0的LPC标志的指令来处理消息的较早块。当消息的最后明文或密文块可用时,程序可通过发出被设置为1的LPC标志的指令来完成消息加密。
当由于LAAD或LPC标志中的任一个或两者为零而设置条件代码2时,包含操作数地址和长度的通用寄存器以及参数块被更新以指示到目前为止的进度。然而,与条件代码3(其中程序可以简单地分支回指令以继续操作)不同,程序负责更新操作数地址和长度,并在必要时更新LAAD和LPC标志,然后再分支回到指令。在一个示例中,如果程序响应于条件代码2简单地返回到指令,则非生成性程序循环可被产生。
当条件代码3被设置时,包含操作数地址和长度的通用寄存器以及参数块通常被更新,使得程序可以简单地分支回到指令以继续操作。
以下描述关于各种伽罗瓦/计数器模式函数的附加细节。这些仅是示例,并且在美国国家科学技术研究所(NIST)特别出版物800-38D的分组密码操作模式的建议:伽罗瓦/计数器模式(GCM)和GMAC(Recommendation for Block Cipher Modes of Operation:Galois/Counter Mode(GSM)and GMAC)中进行了描述。可以进行变形,和/或可以使用与伽罗瓦/计数器模式和/或其它密码模式相关的其它函数。
为了理解以下函数,描述了以下符号:
变量:
A 附加认证数据。
C 密文
H 散列子密钥
ICB 初始计数器块
IV 初始化矢量
K 块密码密钥
P 明文
R 用于块乘法运算的算法内的常数
T 认证标签
t 认证标签的位长度
操作和函数:
0s包含S个0位的位串
CIPHK(X)在被应用于块X的密钥K下的块密码的前向密码函数的输出。
GCTRK(ICB,X)用于具有密钥K的给定块密码的GCTR函数的输出,该密钥K采用初始计数器块ICB被应用到位串X。
GHASHH(X)在被应用于位串X的散列子密钥H下的GHASH函数的输出。
incs(X)将位串X(被视为整数的二进制表示)的最右侧s位递增1模2s的输出。
int(X)位串X是二进制表示的整数。
len(X)位串X的位长度。
LSBs(X)包括位串X的最右s位的位串。
MSBs(X)包括位串X的最左s位的位串。
[x]不小于实数x的最小整数。
[x]s如s位的字符串的非负整数x的二进制表示,其中x<2s
X>>1由丢弃位串X的最右位并在左侧前置“0”位而产生的位串。
X||Y两个位串X和Y的串联连接。
两个相同长度的位串X和Y的按位异或。
X·Y两个块X和Y的乘积,被视为特定二元伽罗瓦域的元素。
Xi对于正整数i,乘积“·”下的X的第i个幂
x·y两个整数x和y的乘积。
块的乘法(X·Y)的一个示例例如包括:
先决条件:
设R=11100001||0120
输入:
块X,Y。
输出:
方块X·Y
步骤:
1.设X0X1...X127表示X中的位的序列。
2.设Z0=0128且V0=Y。
3.对于i=0至127,计算块Zi+1和Vi+1,如下所示:
Zi+1=Zi[如果xi=0,或者]
[如果xi=1]
Vi+1=Vi>>1[如果LSBi(Vi)=0,或者]
[如果LSBi(Vi)=1]
4.返回Z128
以下提供关于GCM加密函数的一个示例的进一步细节:
算法:GCM-AEK(IV,P,A)
先决条件:
被批准的具有128位块大小的块密码CIPH;
密钥K;
所支持的输入-输出长度的定义;
与密钥相关联的支持的标签长度t。
输入:
初始化矢量IV(其长度受到支持);
明文P(其长度受到支持);
附加认证数据A(其长度受到支持)。
输出:
密文C
认证标签T
步骤:
1.设H=CIPHK(0128)。
2.如下定义块J0
如果len(IV)=96,设J0=IV||031||1。
如果len(IV)≠96,设s=128·[len(IV/128]-len(IV),以及
设J0=GHASHH(IV||0s+64||[len(IV)]64)。
3.设C=GCTRK(inc32(J0),P)。
4.设u=128·[len(C)/128]-len(C),以及
设v=128·[len(A)/128]-len(A)
5.定义块S,如下:
S=GHASHH(A||0v||C||0u||[len(A)]64||[len(C)]64)。
6.设T=MSBt(GCTRK(J0,S))。
7.返回(C,T)。
下面描述GCM解密函数的一个实施例:
算法:GCM-ADK(IV,C,A,T)
先决条件:
与上面的加密相同
输入:
初始化矢量IV;
明文C;
附加认证数据A;
认证标签T;
输出:
明文P或不真实性的指示FAIL。
步骤:
1.如果IV、A或C的位长度不受支持,或者如果len(T)≠t,则返回FAIL。
2.设H=CIPHK(0128)。
3.定义块J0,如下所示:
如果len(IV)=96,设J0=IV||031||1。
如果len(IV)≠96,设s=128·[len(IV/128]-len(IV),以及
设J0=GHASHH(IV||0s+64||[len(IV)]64)。
4.设P=GCTRK(inc32(J0),C)。
5.设u=128·[len(C)/128]-len(C),以及
设v=128·[len(A)/128]-len(A)。
6.定义块S,如下所示:
S=GHASHH(A||0v||C||0u||[len(A)]64||[len(C)]64)。
7.设T’=MSBt(GCTRK(J0,S))。
8.如果T=T’,则返回P,除此外返回FAIL。
以下描述伽罗瓦散列(GHASH)函数的一个实施例:
算法:GHASHH(X)
先决条件
块H,散列子密钥。
输入:
位串X,对于一些正整数m,len(X)=128m。
输出:
块GHASHH(X)。
步骤:
1.设X1、X2、…、Xm-1、Xm表示块的独特序列,使得X=X1||X2||…||Xm-1||Xm
2.设Y0为“零块”,0128(即,128位零)。
3.对于i=1,…,m,设
4.返回Ym
此外,下面描述伽罗瓦计数器(GCTR)函数的一个实施例:
算法:GCTRK(ICB,X)
先决条件:
被批准的具有128位块大小的块密码CIPH;
密钥K。
输入:
初始计数器块ICB。
位串X,具有任意长度。
输出:
位串Y,具有位长度len(X)。
步骤:
1.如果X是空串,则返回空串为Y。
2.设n=[len(X)/128]。
3.设X1、X2、…、Xn-1、Xn*表示位串的唯一序列,使得
X=X1||X2||…||Xn-1||Xn*;
X1、X2、…、Xn-1是完整的块。
4.设CB1=ICB。
5.对于i=2至n,设CBi=inc32(CBi-1)。
6.对于i=1至n-1,设[对于除了最后块的所有完整块]
7.设[对于最后的完整块或部分块]
8.设Y=Y1||Y2||…||Yn*。
9.返回Y。
图6中示出了密码消息与认证指令的图示描绘。如图所示,密码消息与认证指令300包括第一操作数600(其包括被加密(加密或解密)的结果)、第二操作数602(其包括要被加密(加密或解密)和散列的消息)、和第三操作数604(包括要被认证(散列)但不加密的附加数据)。
参考图7A-7E描述关于与密码消息与认证指令的一个实施例相关联的处理的进一步细节。
参见图7A,初始地,确定由指令使用的通用寄存器0中包括的函数代码是否有效,查询700。如果其是无效的,步骤702,可以提供错误,并且指令的处理被完成。除此之外,如果函数代码有效,查询704,进一步确定在第一、第二或第三寄存器字段(即,R1、R2、R3)中指定的寄存器是否是奇数寄存器。如果这些寄存器中的一个是奇数号的寄存器,在一个示例,步骤706,提供错误,并且处理完成。除此之外,查询708,进一步确定R3字段中指定的寄存器是否等于R1字段中指定的寄存器,或者R3字段中指定的寄存器是否等于R2字段中指定的寄存器。如果R1或R2中指定的寄存器等于R3中指定的寄存器,在一个示例中,步骤710,错误被指定,并且处理完成。除此之外,进一步检查最后的明文/密文标志是否等于指定值(例如1),以及最后的附加的认证数据标志是否被设置为选定值(例如0)。如果这两者都为真,步骤714,可提供错误,并且完成指令的处理。除此之外,如果最后的明文/密文控件不等于1,并且最后的附加的认证数据控件不等于0,查询716,检查函数代码是否等于0。如果函数代码为0,在步骤718,执行查询函数并且将有效函数存储在参数块中。在一个示例中,在步骤720,设置例如0的条件代码。然而,如果函数代码不是0,则处理继续生成散列子密钥,如参考图7B所述。
参见图7B,对于不使用加密密钥的加密函数,程序可在参数块中提供其自己的散列子密钥,或者使指令生成散列子密钥。对于使用加密密钥的加密函数,指令生成散列子密钥,并忽略任何程序提供的散列子密钥。因此,在一个实施例中,查询730,确定函数代码是否指定未加密的密钥函数(即,函数代码是否小于或等于指定值,例如20)。如果函数代码指定未加密的密钥函数(即,函数代码小于或等于例如20),查询732,确定程序是否已提供散列子密钥。如果程序未提供散列子密钥(例如,HS控件为0),在步骤734,生成散列子密钥。例如,H=AES(0128,密钥)。此外,步骤736,散列标签被存储在参数块(PL.H)中,并且散列子密钥提供控件(HS)被设置为1(说明书和图中的PL是指参数块)。
返回到查询732,如果程序已提供散列子密钥(例如,HS控件是1),则处理继续散列附加的认证数据,如参考图7C所述。
返回到查询730,如果函数代码指定使用加密密钥的函数(例如,函数代码大于20),在步骤738,函数是包装密钥函数并且H被计算(例如,H=AES(0128,密钥)但不保存,并且处理继续散列附加的认证数据,如参考图7C所述。
参见图7C,在一个实施例中,查询740,确定是否存在依赖于模型的超时。如果存在依赖于模型的超时,一个示例中,在步骤742,处理以例如3的条件代码终止。然而,如果尚未发生依赖于模型的超时,查询744,确定操作数3的长度(Op3L)是否大于指定值,例如16。如果其大于16,在步骤746,完整的附加认证数据块可用于处理。例如,参数块(PL.T)中的标签404被设置为其中*指示Op3A是指向第三操作数(Op3A)的指示器(即,参数块中的标签字段(T)与R3指定的通用寄存器指向的任何存储器进行异或);例如,16字节被添加到操作数3的地址(Op3A);例如,从操作数3的长度(Op3L)中减去16字节。Op3L例如是以字节为单位的操作数3的长度。然后处理继续查询740。
返回到查询744,如果操作数3的长度不大于指定值(例如16),查询750,确定标志字段的最后附加认证数据控件。如果控件的值为0,则在一个实施例中,在步骤752,设置条件代码,例如条件代码2。这表示存在要处理的附加认证数据。
返回到查询750,如果控件是1,查询754,进一步检查操作数3的长度(Op3L)。如果长度大于0,在步骤756,设置参数块的标签404,例如,操作数3的地址以操作数3的长度递增;并且操作数3的长度被设置为等于零。然后,处理继续进行明文/密文处理,如参考图7D所述。此外,如果操作数3的长度为0,则查询754,处理继续图7D的明文/密文处理。
参见图7D,查询760,确定是否存在依赖于模型的超时。如果存在依赖于模型的超时,则步骤762,处理使用例如3的条件代码而完成。除此之外,查询764,确定操作数2的长度(Op2L)是否大于指定值,例如16。如果是,在步骤766,CB=PL.J0[12]||++PL.CV,其中++指示递增,参数块中的计数器值递增;并且 (在一个示例中,文本(M?*Op2A:*Op1A)表示确定是否M为真或假(1或0)。如果为真,则*Op2A用作指向第二个操作数中输入密文的指示器。如果为假,则*Op1A是用于指向第一操作数中输出密文的指示器。)此外,步骤766,操作数1的地址(Op1A)递增例如16字节,操作数2的地址(Op2A)递增例如16字节,并且操作数2的长度(Op2L)递减例如16字节。处理然后进行到查询760。
返回到查询764,如果操作数2的长度不大于指定值(例如16),则查询768,检查标志字段的最后明文/密文控件。如果标志等于0,步骤770,设置指定的条件代码,例如条件代码2。这表示存在更多要处理的明文/密文。然而,如果最后的明文/密文控件被设置为1,则查询772,进一步确定操作数2的长度。如果长度大于0,则步骤774,CB=PL.J0[12]||++PL.CV;并且 此外,在步骤774,操作数1和操作数2的地址以操作数2的长度递增,以及操作数2的长度被设置为零。此后,或者查询772,如果操作数2的长度为零,处理继续进行最终标签处理,如参考图7E所述。
参见图7E,标签被设置为等于其中对完整的附加认证数据位长度和完整的密文位长度执行散列函数(例如,GHASH)。然后,在STEP 780,将标签设置为等于 其中最终散列值与初始加密计数器(J0)进行异或运算以形成标签结果。(也就是说,先前计算的标签与两个位长度字段的串联进行异或,并且进行GHASH。然后,J0字段被加密,并与上述计算的结果进行异或,以形成最终标签。)然后完成处理并且设置例如0的条件代码,步骤782。
这里描述的是在单个指令(例如,单个架构的机器指令)中组合散列和加密的能力,该指令还包括用于确保可适当地重新执行可中断指令以继续处理消息的控件。下面描述重新执行的一个原因。
在一种实现中,由z/架构定义的加密指令使用64位寄存器定义消息的长度;因此,消息的长度可高达18,446,744,073,709,551,616(16E)字节。GCM规格将消息的长度限制为68,719,476,736(64G)字节;也就是说,32位计数器乘以128位(16字节)大小的消息块的最大值。然而,为了防止极长时间运行的指令,任何单个加密指令的处理都限制在一个小得多的数量,通常最多为4,096字节。当加密指令完成时,其根据处理的字节数更新指定消息操作数的地址和长度的寄存器。如果指令仅对消息进行部分处理,则通过设置指示性条件代码(例如,CC3)来完成。如果指令对消息进行完全处理,则通过设置替代指示性条件代码(例如,CC0)来完成。
如本文所述,密码消息与认证指令可以容纳非常大的消息,但是仅在单次执行中处理部分消息。密码消息与认证指令基于例如两个程序指定控件的组合以及包含附加认证数据和消息的操作数的剩余长度来区分其在附加认证数据散列和消息加密和散列中的进度:
*最后的附加认证数据(LAAD)控件指示程序是否已提供整个附加的认证数据操作数。
*最后的明文/密文(LPC)标志指示程序是否已提供要被加密和认证的整个消息文本。
基于LAAD和LPC控件的组合,以及指定相应操作数的长度的通用寄存器中的值,指令能够对输入执行一些检查,并拒绝不一致的控件。
通过在单个指令中组合散列和加密,避免了分离的指令执行以散列附加的认证数据,避免了对用于散列和加密的消息操作数的多次获取,并且组合操作可以由硬件协处理器有效地执行。通过使用单个指令,程序不必分开地发出指令来对0加密以形成散列子密钥,散列TAADL和TPCL,并使用J0作为计数器加密和散列最终标签。
参见图8A-8B描述促进计算环境中的包括执行密码消息与认证指令的处理的一个实施例。
参照图8A,在一个实施例中,在步骤800,获得执行包括加密和认证的多个操作的指令,并且在步骤802执行该指令。执行例如包括:在步骤804,加密由指令提供的一个数据集以获得加密数据;在步骤806,将加密数据放在指定位置;在步骤808,认证由指令提供的附加数据集,该认证生成消息认证标签的至少一部分;以及在步骤810,将消息认证标签的至少一部分存储在所选位置。在进一步的实施例中,执行还包括:在步骤812,认证加密数据。
在一个示例中,附加数据集包括一个或多个数据块的至少一个数据块(814),并且执行还包括:在步骤816确定附加数据集是否包括要被认证的最后数据块;以及在步骤818,基于附加数据集是否包括要被认证的最后数据块来执行认证。
例如,确定包括检查指令的最后附加认证数据控件,以确定附加数据集是否包括要被认证的最后数据块,步骤820。
此外,在一个示例中,参考图8B,一个数据集包括一个或多个数据块中的至少一个数据块(822),并且执行还包括:在步骤824,确定一个数据集是否包括要被加密的最后数据块,以及在步骤826,根据一个数据集是否包括要被加密的最后数据块来执行加密。
例如,确定包括检查指令的最后文本控件以确定一个数据集是否包括要被加密的最后数据块,步骤828。
例如,加密包括:在步骤830,基于由被设置为选择值的指令提供的控件来加密一个数据集,或者在步骤832,基于由被设置为特定值的指令提供的控件来解密一个数据集。
在一个实施例中,对附加数据集的认证包括使用散列技术来生成消息认证标签的至少一部分,步骤834。此外,在一个实施例中,散列技术使用存储在指令使用的参数块中的散列子密钥,基于被设置为所选值的指令的散列子密钥提供控件,步骤836。
例如,一个数据集包括消息的至少一部分,并且附加数据集包括消息的路由信息,840。
如本文所述,在一个示例中,提供单个指令,其被配置为执行:生成附加认证数据的消息摘要(即,散列),对消息加密,以及生成加密消息的消息摘要。在其它示例中,可不提供一个或多个函数。
在一个示例中,指令使用:
HS标志,其允许程序指示其已提供其自己的散列子密钥。如果使用相同的散列子密钥,这将提供性能优势。针对加密的密钥函数计算(并且不存储)散列子密钥。
LAAD标志,其指示附加认证数据的最后块已被提供。这允许单个指令处理附加认证数据的第一、中间和最后块。
LPC标志,其指示明文/密文的最终块已被提供。这允许单个指令处理明文/密文的第一、中间和最后块,以及连同LAAD为指令使用提供一些有效性检查。
本发明的各方面与计算机技术密不可分,改进了计算环境内的处理,包括但不限于与安全性相关的处理,例如数据加密/解密和/或认证等。
许多变型是可能的,变型包括但不限于使用其它加密技术,例如数据加密标准(DES)等,和/或其它散列技术,例如SHA(安全散列算法)-2,SHA-3等。
本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括一个(或多个)计算机可读存储介质,其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备,磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘、机械编码设备(诸如在其上记录有指令的打孔卡或凹槽内凸起结构)、以及前述的任何合适的组合。如在此使用的计算机可读存储介质不应被解释为暂态信号本身,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线传输的电信号。
在此描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是以一种或多种编程语言的任意组合编写的汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或源代码或目标代码,该一种或多种编程语言包括诸如Smalltalk、C++等的面向对象的编程语言,以及诸如“C”编程语言或类似的编程语言的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分地在用户的计算机上执行、作为独立的软件包执行、部分地在用户的计算机上且部分地在远程计算机上执行、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,经由使用互联网服务提供商的互联网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化定制电子电路以执行计算机可读程序指令,以便执行本发明的各方面。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令实施。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以制造机器,使得经由计算机的处理器或其它可编程数据处理装置执行的指令创建用于实施流程图和/或框图的一个框或多个框中指定的功能/动作的部件。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机、可编程数据处理装置和/或其它设备以特定方式作用,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实施流程图和/或框图的一个框或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其它可编程数据处理装置或其它设备上,以使得一系列操作步骤在计算机、其它可编程装置或其它设备上执行以产生计算机实施的过程,这样在计算机、其它可编程装置或其它设备上执行的指令实施在流程图和/或框图的一个框或多个框中指定的功能/动作。
附图中的流程图和框图示出根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示模块、区段或指令的一部分,其包括用于实施指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所标注的功能可以不按图中所示的顺序发生。例如,视所涉及的功能而定,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行特定功能或动作或执行专用硬件和计算机指令的组合的基于硬件的专用系统来实施。
除了上述之外,可以由提供客户环境管理的服务提供商提供、给予、部署、管理、服务一个或多个方面。例如,服务提供商可以创建、维护、支持计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,服务提供商可以例如根据订阅和/或费用协议从客户接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方销售广告内容来接收付款。
在一个方面,可以部署应用程序以执行一个或多个实施例。作为一个示例,应用程序的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。
作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。
作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。该计算机系统包括计算机可读介质,其中该计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
尽管以上描述了各种实施例,但这些仅是示例。例如,具有其它体系结构的计算环境可用于合并和使用一个或多个实施例。此外,可以使用不同的指令,指令格式,指令字段和/或指令值。许多变化是可能的。
此外,其它类型的计算环境可以受益并被使用。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦接到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的本地存储器,大容量存储和高速缓存存储器,该高速缓存存储器提供至少一些程序代码的临时存储,以便减少执行期间必须从大容量存储重新取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘,显示器,指示设备,DASD,磁带,CD,DVD,拇指驱动器和其它存储介质等)可以直接耦接到系统或通过介入I/O控制器而耦接到系统。网络适配器还可以耦接到系统,以使数据处理系统能够通过介入私有或公共网络而耦接到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。
这里使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或者添加一个或多个其它特征、整数、步骤、操作、元素、组件和/或它们的组合。
以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括如所具体要求保护的用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有各种修改的各种实施例适合于预期的特定用途。
权利要求书(按照条约第19条的修改)
1.一种计算机程序产品,用于促进计算环境中的处理,所述计算机程序产品包括:
计算机可读存储介质,其能够由处理电路读取并存储用于由所述处理电路执行的指令,用于执行方法,所示方法的特征在于:
获得用于执行多个操作的指令,所述多个操作包括加密和认证,所述指令是在硬件/软件接口处的单个架构硬件机器指令,并且包括具有指示密码消息与认证操作的操作代码的操作代码字段,以及被用于指定要由所述指令使用的一个或多个寄存器的一个或多个寄存器字段;以及
执行所述指令,所述执行包括:
对所述指令的使用所述一个或多个寄存器中的寄存器提供的一个数据集加密,以获得加密数据;
将所述加密数据放在指定位置;
认证由所述指令提供的附加数据集,所述认证生成消息认证标签的至少一部分;以及
将所述消息认证标签的至少一部分存储在选择的位置。
2.根据权利要求1所述的计算机程序产品,其中,所述执行还包括认证所述加密数据。
3.根据权利要求1所述的计算机程序产品,其中,所述附加数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述附加数据集是否包括要被认证的最后数据块;以及
基于所述附加数据集是否包括要被认证的所述最后数据块来执行认证。
4.根据权利要求3所述的计算机程序产品,其中,所述确定包括检查所述指令的最后附加认证数据控件,以确定所述附加数据集是否包括要被认证的最后数据块。
5.根据如权利要求1所述的计算机程序产品,其中,所述一个数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述一个数据集是否包括要被加密的最后数据块;以及
基于所述一个数据集是否包括要被加密的所述最后数据块来执行加密。
6.根据权利要求5所述的计算机程序产品,其中,所述确定包括检查所述指令的最后文本控件,以确定所述一个数据集是否包括要被加密的所述最后数据块。
7.根据权利要求1所述的计算机程序产品,其中,所述加密包括基于由被设置为选择的值的所述指令而提供的控件来加密所述一个数据集。
8.根据权利要求1所述的计算机程序产品,其中,所述加密包括基于由被设置为特定的值的所述指令而提供的控件来解密所述一个数据集。
9.根据权利要求1所述的计算机程序产品,其中,对所述附加数据集的认证包括使用散列技术来生成所述消息认证标签的所述至少一部分。
10.根据权利要求9所述的计算机程序产品,其中,所述散列技术使用被存储在由所述指令使用的参数块中的散列子密钥,基于被设置为所选择的值的所述指令的散列子密钥提供的控件。
11.根据权利要求1所述的计算机程序产品,其中,所述一个数据集包括消息的至少一部分,并且所述附加数据集包括所述消息的路由信息。
12.一种计算机系统,其用于促进计算环境中的处理,所述计算机系统包括其特征在于:
存储器;以及
处理器,其与所述存储器通信,其中,所述计算机系统被配置为执行方法,所述方法包括:
获得用于执行多个操作的指令,所述多个操作包括加密和认证,所述指令是在硬件/软件接口处的单个架构硬件机器指令,并且包括具有指示密码消息与认证操作的操作代码的操作代码字段,以及被用于指定要由所述指令使用的一个或多个寄存器的一个或多个寄存器字段;以及
执行所述指令,所述执行包括:
对所述指令的使用所述一个或多个寄存器中的寄存器提供的一个数据集,以获得加密数据;
将所述加密数据放在指定位置;
认证由所述指令提供的附加数据集,所述认证生成消息认证标签的至少一部分;以及
将所述消息认证标签的至少一部分存储在选择的位置。
13.根据权利要求12所述的计算机系统,其中,所述执行还包括认证所述加密数据。
14.根据权利要求12所述的计算机系统,其中,所述附加数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述附加数据集是否包括要被认证的最后数据块,所述确定检查所述指令的最后附加认证数据控件,以确定所述附加数据集是否包括要被认证的所述最后数据块;以及
基于所述附加数据集是否包括要被认证的最后数据块来执行认证。
15.根据权利要求12所述的计算机系统,其中,所述一个数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述一个数据集是否包括要被加密的最后数据块,所述确定检查所述指令的最后文本控件以确定所述一个数据集是否包括要被加密的所述最后数据块;以及
基于所述一个数据集是否包括要被加密的所述最后数据块来执行加密。
16.根据权利要求12所述的计算机系统,其中,所述附加数据集的认证包括使用散列技术来生成所述消息认证标签的至少一部分,并且其中,所述散列技术使用被存储在由所述指令使用的参数块中的散列子密钥,基于被设置为所选择的值的所述指令的散列子密钥提供的控件。
17.一种计算机实现的方法,其促进计算环境中的处理,所述计算机实现的方法的特征在于包括:
由处理器获得用于执行多个操作的指令,所述多个操作包括加密和认证,所述指令是在硬件/软件接口处的单个架构硬件机器指令,并且包括具有指示密码消息与认证操作的操作代码的操作代码字段,以及被用于指定要由所述指令使用的一个或多个寄存器的一个或多个寄存器字段;以及
执行所述指令,所述执行包括:
对所述指令的使用所述一个或多个寄存器中的寄存器提供的一个数据集,以获得加密数据;
将所述加密数据放在指定位置;
认证由所述指令提供的附加数据集,所述认证生成消息认证标签的至少一部分;以及
将所述消息认证标签的至少一部分存储在选择的位置。
18.根据权利要求17所述的计算机实现的方法,其中,所述执行还包括认证所述加密数据。
19.根据权利要求17所述的计算机实现的方法,其中,所述附加数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述附加数据集是否包括要被认证的最后数据块,所述确定检查所述指令的最后附加认证数据控件,以确定所述附加数据集是否包括要被认证的最后数据块;以及
基于所述附加数据集是否包括要被认证的所述最后数据块来执行认证。
20.根据权利要求17所述的计算机实现的方法,其中,所述一个数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述一个数据集是否包括要被加密的最后数据块,所述确定检查所述指令的最后文本控件以确定所述一个数据集是否包括要被加密的所述最后数据块;以及
基于所述一个数据集是否包括要被加密的所述最后数据块来执行加密。

Claims (20)

1.一种计算机程序产品,用于促进计算环境中的处理,所述计算机程序产品包括:
计算机可读存储介质,其能够由处理电路读取并存储用于由所述处理电路执行的指令,用于执行方法,所示方法包括:
获得用于执行多个操作的指令,所述多个操作包括加密和认证;以及
执行所述指令,所述执行包括:
加密由所述指令提供的一个数据集,以获得加密数据;
将所述加密数据放在指定位置;
认证由所述指令提供的附加数据集,所述认证生成消息认证标签的至少一部分;以及
将所述消息认证标签的至少一部分存储在选择的位置。
2.根据权利要求1所述的计算机程序产品,其中,所述执行还包括认证所述加密数据。
3.根据权利要求1所述的计算机程序产品,其中,所述附加数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述附加数据集是否包括要被认证的最后数据块;以及
基于所述附加数据集是否包括要被认证的所述最后数据块来执行认证。
4.根据权利要求3所述的计算机程序产品,其中,所述确定包括检查所述指令的最后附加认证数据控件,以确定所述附加数据集是否包括要被认证的最后数据块。
5.根据如权利要求1所述的计算机程序产品,其中,所述一个数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述一个数据集是否包括要被加密的最后数据块;以及
基于所述一个数据集是否包括要被加密的所述最后数据块来执行加密。
6.根据权利要求5所述的计算机程序产品,其中,所述确定包括检查所述指令的最后文本控件,以确定所述一个数据集是否包括要被加密的所述最后数据块。
7.根据权利要求1所述的计算机程序产品,其中,所述加密包括基于由被设置为选择的值的所述指令而提供的控件来加密所述一个数据集。
8.根据权利要求1所述的计算机程序产品,其中,所述加密包括基于由被设置为特定的值的所述指令而提供的控件来解密所述一个数据集。
9.根据权利要求1所述的计算机程序产品,其中,对所述附加数据集的认证包括使用散列技术来生成所述消息认证标签的所述至少一部分。
10.根据权利要求9所述的计算机程序产品,其中,所述散列技术使用被存储在由所述指令使用的参数块中的散列子密钥,基于被设置为所选择的值的所述指令的散列子密钥提供的控件。
11.根据权利要求1所述的计算机程序产品,其中,所述一个数据集包括消息的至少一部分,并且所述附加数据集包括所述消息的路由信息。
12.一种计算机系统,其用于促进计算环境中的处理,所述计算机系统包括:
存储器;以及
处理器,其与所述存储器通信,其中,所述计算机系统被配置为执行方法,所述方法包括:
获得用于执行多个操作的指令,所述多个操作包括加密和认证;以及
执行所述指令,所述执行包括:
加密由所述指令提供的一个数据集,以获得加密数据;
将所述加密数据放在指定位置;
认证由所述指令提供的附加数据集,所述认证生成消息认证标签的至少一部分;以及
将所述消息认证标签的至少一部分存储在选择的位置。
13.根据权利要求12所述的计算机系统,其中,所述执行还包括认证所述加密数据。
14.根据权利要求12所述的计算机系统,其中,所述附加数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述附加数据集是否包括要被认证的最后数据块,所述确定检查所述指令的最后附加认证数据控件,以确定所述附加数据集是否包括要被认证的所述最后数据块;以及
基于所述附加数据集是否包括要被认证的最后数据块来执行认证。
15.根据权利要求12所述的计算机系统,其中,所述一个数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述一个数据集是否包括要被加密的最后数据块,所述确定检查所述指令的最后文本控件以确定所述一个数据集是否包括要被加密的所述最后数据块;以及
基于所述一个数据集是否包括要被加密的所述最后数据块来执行加密。
16.根据权利要求12所述的计算机系统,其中,所述附加数据集的认证包括使用散列技术来生成所述消息认证标签的至少一部分,并且其中,所述散列技术使用被存储在由所述指令使用的参数块中的散列子密钥,基于被设置为所选择的值的所述指令的散列子密钥提供的控件。
17.一种计算机实现的方法,其促进计算环境中的处理,所述计算机实现的方法包括:
由处理器获得用于执行多个操作的指令,所述多个操作包括加密和认证;以及
执行所述指令,所述执行包括:
加密由所述指令提供的一个数据集,以获得加密数据;
将所述加密数据放在指定位置;
认证由所述指令提供的附加数据集,所述认证生成消息认证标签的至少一部分;以及
将所述消息认证标签的至少一部分存储在选择的位置。
18.根据权利要求17所述的计算机实现的方法,其中,所述执行还包括认证所述加密数据。
19.根据权利要求17所述的计算机实现的方法,其中,所述附加数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述附加数据集是否包括要被认证的最后数据块,所述确定检查所述指令的最后附加认证数据控件,以确定所述附加数据集是否包括要被认证的最后数据块;以及
基于所述附加数据集是否包括要被认证的所述最后数据块来执行认证。
20.根据权利要求17所述的计算机实现的方法,其中,所述一个数据集包括一个或多个数据块中的至少一个数据块,并且其中,所述执行还包括:
确定所述一个数据集是否包括要被加密的最后数据块,所述确定检查所述指令的最后文本控件以确定所述一个数据集是否包括要被加密的所述最后数据块;以及
基于所述一个数据集是否包括要被加密的所述最后数据块来执行加密。
CN201780063690.7A 2016-10-13 2017-10-02 密码消息与认证指令 Active CN109845182B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/292,377 2016-10-13
US15/292,377 US9680653B1 (en) 2016-10-13 2016-10-13 Cipher message with authentication instruction
PCT/EP2017/074971 WO2018069080A1 (en) 2016-10-13 2017-10-02 Cipher message with authentication instruction

Publications (2)

Publication Number Publication Date
CN109845182A true CN109845182A (zh) 2019-06-04
CN109845182B CN109845182B (zh) 2022-04-26

Family

ID=59009411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780063690.7A Active CN109845182B (zh) 2016-10-13 2017-10-02 密码消息与认证指令

Country Status (21)

Country Link
US (1) US9680653B1 (zh)
EP (1) EP3526927B1 (zh)
JP (1) JP7116050B2 (zh)
KR (1) KR102259962B1 (zh)
CN (1) CN109845182B (zh)
AU (1) AU2017341251B2 (zh)
BR (1) BR112019007567B8 (zh)
CA (1) CA3037231C (zh)
DK (1) DK3526927T3 (zh)
ES (1) ES2863676T3 (zh)
HU (1) HUE054035T2 (zh)
IL (1) IL265553B (zh)
LT (1) LT3526927T (zh)
MX (1) MX371225B (zh)
PL (1) PL3526927T3 (zh)
PT (1) PT3526927T (zh)
RU (1) RU2727152C1 (zh)
SI (1) SI3526927T1 (zh)
TW (1) TWI642294B (zh)
WO (1) WO2018069080A1 (zh)
ZA (1) ZA201902292B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114169882A (zh) * 2020-09-10 2022-03-11 中国联合网络通信集团有限公司 支付方法、第一服务端、客户端以及系统

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10044499B2 (en) * 2014-04-10 2018-08-07 Fuji Electric Co., Ltd. Information processing apparatus, program, and storage medium
US11251965B2 (en) * 2017-04-17 2022-02-15 Nec Corporation Authentication tag generation apparatus, authentication tag verification apparatus, method and program
WO2019043921A1 (ja) * 2017-09-01 2019-03-07 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム
US11750398B2 (en) * 2018-09-27 2023-09-05 Nec Corporation MAC tag list generation apparatus, MAC tag list verification apparatus, aggregate MAC verification system and method
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption
US11108567B2 (en) * 2019-02-15 2021-08-31 International Business Machines Corporation Compute digital signature authentication verify instruction
US11303456B2 (en) * 2019-02-15 2022-04-12 International Business Machines Corporation Compute digital signature authentication sign instruction
US11075763B2 (en) * 2019-02-15 2021-07-27 International Business Machines Corporation Compute digital signature authentication sign with encrypted key instruction
US11917067B2 (en) * 2019-12-28 2024-02-27 Intel Corporation Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data
WO2021161304A1 (en) * 2020-02-12 2021-08-19 FortifyIQ, Inc. Methods and ip cores for reducing vulnerability to hardware attacks and/or improving processor performance

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983366B1 (en) * 2000-02-14 2006-01-03 Safenet, Inc. Packet Processor
US20070055886A1 (en) * 2003-05-12 2007-03-08 Lundvall Shawn D Message Digest Instruction
CN105409158A (zh) * 2013-08-08 2016-03-16 英特尔公司 提供安全密码散列回合功能的指令和逻辑
US20160283749A1 (en) * 2015-03-24 2016-09-29 TmaxData Co., Ltd Method for encrypting database

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63271567A (ja) * 1987-04-30 1988-11-09 Hitachi Ltd 非対称密結合マルチプロセツサシステム
KR0177655B1 (ko) * 1995-11-22 1999-05-15 배순훈 긴 문자열에 적합한 암호화 및 해독화 방법
US20080214300A1 (en) * 2000-12-07 2008-09-04 Igt Methods for electronic data security and program authentication
US6948067B2 (en) * 2002-07-24 2005-09-20 Qualcomm, Inc. Efficient encryption and authentication for data processing systems
US7703128B2 (en) 2003-02-13 2010-04-20 Microsoft Corporation Digital identity management
DE10349580A1 (de) * 2003-10-24 2005-05-25 Robert Bosch Gmbh Verfahren und Vorrichtung zur Operandenverarbeitung in einer Prozessoreinheit
EP1536606A1 (fr) * 2003-11-27 2005-06-01 Nagracard S.A. Méthode d'authentification d'applications
US7827223B2 (en) 2004-04-22 2010-11-02 Fortress Gb Ltd. Accelerated throughput synchronized word stream cipher, message authenticator and zero-knowledge output random number generator
US8260259B2 (en) * 2004-09-08 2012-09-04 Qualcomm Incorporated Mutual authentication with modified message authentication code
KR100675837B1 (ko) * 2004-12-13 2007-01-29 한국전자통신연구원 고속 gcm-aes 블록 암호화 장치 및 방법
JP2007006184A (ja) 2005-06-24 2007-01-11 Nippon Telegr & Teleph Corp <Ntt> 暗号処理装置及び認証アプリケーションプログラム
GB2443244A (en) * 2006-10-05 2008-04-30 Hewlett Packard Development Co Authenticated Encryption Method and Apparatus
US8340280B2 (en) * 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US8775794B2 (en) 2010-11-15 2014-07-08 Jpmorgan Chase Bank, N.A. System and method for end to end encryption
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US20160005032A1 (en) * 2012-11-28 2016-01-07 Hoverkey Ltd. Method and system of providing authentication of user access to a computer resource via a mobile device using multiple separate security factors
US8873750B2 (en) 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US10044499B2 (en) 2014-04-10 2018-08-07 Fuji Electric Co., Ltd. Information processing apparatus, program, and storage medium
US10530576B2 (en) * 2015-02-13 2020-01-07 Insyde Software Corp. System and method for computing device with improved firmware service security using credential-derived encryption key
US9578505B2 (en) * 2015-04-21 2017-02-21 International Business Machines Corporation Authentication of user computers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983366B1 (en) * 2000-02-14 2006-01-03 Safenet, Inc. Packet Processor
US20070055886A1 (en) * 2003-05-12 2007-03-08 Lundvall Shawn D Message Digest Instruction
CN105409158A (zh) * 2013-08-08 2016-03-16 英特尔公司 提供安全密码散列回合功能的指令和逻辑
US20160283749A1 (en) * 2015-03-24 2016-09-29 TmaxData Co., Ltd Method for encrypting database

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114169882A (zh) * 2020-09-10 2022-03-11 中国联合网络通信集团有限公司 支付方法、第一服务端、客户端以及系统

Also Published As

Publication number Publication date
US9680653B1 (en) 2017-06-13
KR20190059965A (ko) 2019-05-31
TW201820816A (zh) 2018-06-01
ZA201902292B (en) 2019-11-27
CA3037231A1 (en) 2018-04-19
MX2019003604A (es) 2019-06-17
SI3526927T1 (sl) 2021-04-30
BR112019007567B8 (pt) 2022-08-09
BR112019007567B1 (pt) 2022-07-05
EP3526927A1 (en) 2019-08-21
AU2017341251A1 (en) 2019-04-04
AU2017341251B2 (en) 2020-10-01
TWI642294B (zh) 2018-11-21
KR102259962B1 (ko) 2021-06-03
PL3526927T3 (pl) 2021-08-16
EP3526927B1 (en) 2021-02-17
IL265553A (en) 2019-05-30
CN109845182B (zh) 2022-04-26
IL265553B (en) 2021-04-29
DK3526927T3 (da) 2021-03-22
ES2863676T3 (es) 2021-10-11
MX371225B (es) 2020-01-09
PT3526927T (pt) 2021-03-25
JP7116050B2 (ja) 2022-08-09
WO2018069080A1 (en) 2018-04-19
BR112019007567A2 (pt) 2019-07-02
CA3037231C (en) 2024-06-04
HUE054035T2 (hu) 2021-08-30
RU2727152C1 (ru) 2020-07-21
LT3526927T (lt) 2021-03-25
JP2019535036A (ja) 2019-12-05

Similar Documents

Publication Publication Date Title
CN109845182A (zh) 密码消息与认证指令
TWI773960B (zh) 用於以加密金鑰指令計算數位簽章驗證標記之電腦程式產品、電腦系統及電腦實施方法
CN110061968A (zh) 一种基于区块链的文件加解密方法、系统及存储介质
TWI743654B (zh) 用於計算數位簽章認證驗證指令之電腦程式產品、電腦系統及電腦實施方法
CA3036108A1 (en) Instruction to provide true random numbers
TWI811514B (zh) 用於計算數位簽章認證標記指令之電腦程式產品、電腦系統及電腦實施方法
CN109844750B (zh) 填充操作状态确定
CN114785524B (zh) 电子印章生成方法、装置、设备和介质
Vidya et al. Secrecy Archiving Public Ascertaining for Immune Cloud Storage

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40003948

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant