处理安全消息认证控制指令的制作方法

文档序号:7606139阅读:166来源:国知局
专利名称:处理安全消息认证控制指令的制作方法
技术领域
本发明涉及计算机系统体系结构,尤其涉及扩充IBM z/体系结构并能被其他体系结构仿真的新指令。
背景技术
在本发明之前,从20世纪60年代被称为IBM系统360的机器开始,到目前为止,通过许多有高度才能的工程师们的工作,IBM已创建了一特殊的体系结构,因为它具有对于计算系统是基本的这样一种性质,而被称为“大型机”,其操作原理通过描述可在指令的该“大型机”实现上执行的指令而规定该机器的体系结构,这些指令由IBM的发明家发明,并且由于它们对改进由“大型机”所代表的计算机器的状况做出重大的贡献,所以被采纳为重大贡献而被包括在多年所规定的IBM的操作原理中。《z/体系结构操作原理》的第一版在2000年12月出版,并已作为SA22-7832-00,而成为标准的出版参考书。
我们确定,如此处所描述的,进一步的新的指令将有助于本技术领域并能被包括进z/体系结构机器中,也能被较简单机器中的其他体系结构仿真。

发明内容
本发明提供一种如权利要求1所要求的方法。


从下面结合附图所作的详细的描述中,对技术熟练的人来说,本发明的优选实施例的特征将会是显然的,在附图中图1是一个RRE指令格式的计算消息认证码(KMAC)指令的图示;图2是一个示出图1中KMAC指令的功能码的表;图3是一个图1中KMAC指令的通用寄存器分配的图示;图4示出用于按位异或的符号;图5示出用于DEA加密和解密的符号;图6示出KMAC-Query的参数块的格式;图7示出KMAC-DEA的参数块的格式;图8示出KMAC-DEA的操作;图9示出KMAC-TDEA-128的参数块的格式;图10示出KMAC-TDEA-128的操作;图11示出KMAC-TDEA-192的参数块的格式;图12示出KMAC-TDEA-192的操作;图13是一个示出KMAC的执行优先级的表;图14示出本发明的密码协处理器;以及图15示出包含根据优选实施例的指令和数据的计算机存储器、以及用于或者在采用这些体系结构指令的计算机系统上或者在仿真本发明的体系结构指令时读取、解码和执行这些指令的机制的一般化优选实施例。
具体实施例方式
将首先讨论计算消息认证码(KMAC)指令,然后讨论优选的计算机系统,或者可选地,讨论仿真具有用于执行该指令的不同体系结构的计算机系统的计算机系统。
计算消息认证码(KMAC)图1示出RRE指令格式的计算消息认证码(KMAC)指令。
执行通用寄存器0中的功能码指定的功能。忽略该指令的位16-23和R1字段。
通用寄存器0的位位置57-63包含功能码。图2示出已分配的功能码。所有其它功能码未被分配。通用寄存器0的位56必须为0;否则,认可一规定异常(specification exception)。忽略通用寄存器0的所有其它位。
通用寄存器1包含存储器中参数块最左侧字节的逻辑地址。在24位寻址模式中,通用寄存器1的位位置40-63的内容构成地址,忽略位位置0-39的内容。在31位寻址模式中,通用寄存器1的位位置33-63的内容构成地址,忽略位位置0-32的内容。
在64位寻址模式中,通用寄存器1的位位置0-63的内容组成地址。
图2示出计算消息认证码的功能码。
所有其他的功能码未被分配。查询功能提供了表明其它功能的可用性的手段。忽略通用寄存器R2和R2+1的内容。
对于所有其他的功能,按照功能码所指定的,使用参数块中的初始链值对第二操作数进行处理,并用结果替换该链值。该操作也使用参数块中的密钥。该操作继续进行,直到到达第二操作数位置的末尾,或者处理完CPU确定的字节数,不管哪一个首先发生。结果在条件码中表明。
R2字段指定一对寄-偶通用寄存器,并且必须指定一偶数寄存器;否则,认可一规定异常。
第二操作数的最左侧字节的位置由通用寄存器R2的内容指定。第二操作数位置中的字节数在通用寄存器R2+1中指定。
作为操作的一部分,通用寄存器R2的地址随着第二操作数中被处理的字节数递增,而通用寄存器R2+1的长度随着相同的数递减。地址和长度的形成和更新取决于寻址模式。
在24位寻址模式中,通用寄存器R2的位位置40-63的内容构成第二操作数的地址,并被忽略;更新地址的40-63位替换通用寄存器R_的相应位,忽略来自更新地址的位位置40的进位,并且将通用寄存器R_的位位置32-39的内容设为0。在31位寻址模式中,通用寄存器R_的位位置33-63的内容构成第二操作数的地址,而位位置0-32的内容被忽略;更新地址的33-63位替换通用寄存器R_的相应位,忽略来自更新地址的位位置33的进位,并且将通用寄存器R的位位置32的内容设为0。在64位寻址模式中,通用寄存器R_的位位置0-63的内容构成第二操作数的地址;更新地址的0-63位替换通用寄存器R_的内容,并忽略来自更新地址的位位置0的进位。
在24位和31位两种寻址模式中,通用寄存器R2+1的位位置32-63的内容构成一个32位无符号二进制整数,该整数指定第二操作数中的字节数;且更新值替换通用寄存器R2+1的位位置32-63的内容。在64位寻址模式中,通用寄存器R2+1的位位置0-63的内容构成一个64位无符号二进制整数,该二进制整数指定第二操作数中的字节数;且更新值替换通用寄存器R2+1的内容。
在24位或31位寻址模式中,通用寄存器R2和R2+1的位位置0-31的内容一直保持不变。
图3示出刚才所描述的通用寄存器的内容。在访问寄存器模式中,访问寄存器1和R2分别指定包含参数块和第二操作数的地址空间。
就如同处理从第二操作数的左端开始逐块地一直进行到右边那样获得结果。当处理完第二操作数的所有源字节时(称为正常完成),或当处理完CPU确定的少于第二操作数长度的块数时(称为部分完成),该操作结束。该CPU确定的块数取决于型号,且可能在每次执行指令时是一个不同的数。该CPU确定的块数通常为非0。在某些不寻常的情况下,该数有可能为0,且可将条件码3设置为无进展。但是,CPU防止这种无进展情况的无止境的重复发生。
当链值字段与第二操作数的任何部分重叠时,链值字段中的结果不可预知。
正常完成发生在通用寄存器R+1中所指定的第二操作数中的字节数被处理完时。
当由于正常完成操作结束时,设置条件码0并且R2+1中的结果值为0。在由于部分完成操作结束时,设置条件码3并且R2+1中的结果值为非0。
在第二操作数长度初始为0时,不访问第二操作数和参数块,不改变通用寄存器R2和R2+1,且设置条件码0。
如根据其他CPU和通道程序所观察的,对参数块和存储操作数的引用可以是多路访问引用,对这些存储器位置的访问不必是块并发的,并且这些访问或引用的次序是未定义的。
对于第二操作数的比在指令的单个执行中处理的更大的部分,可报告访问异常;但是,对于超出第二操作数长度的位置不认可访问异常,对于超出正在处理的当前位置4K字节以上的位置也不认可访问异常。
功能描述中所使用的符号图4和图5的符号被用在随后的计算消息认证码功能的描述中。对于数据加密算法(DEA)功能,DEA密钥的每个字节中的DEA密钥奇偶位被忽略,并且不管该密钥的DEA密钥奇偶性,操作正常继续进行。
该数据加密算法的进一步的描述可参见Data Encryption Algorithm(数据加密算法),ANSI-X3.92.1981,American National Standard forInformation System(美国信息系统国家标准)。
KMAC-Query(功能码0)图3中示出指令所使用的操作数和地址的位置。用于KMAC-Query功能的参数块其格式在图6中示出。
128位状态字存储在参数块中,该字段的位0-127分别相应于KMAC指令的功能码0-127。当一个位为1时,将安装相应的功能;否则,不安装该功能。
在KMAC-Query功能的执行完成时,对条件码0进行设置;条件码3不适用于该功能。
KMAC-DEA(功能码1)图3中示出该指令所使用的操作数和地址的位置。
用于KMAC-DEA功能的参数块其格式在图7中示出。使用DEA算法及参数块中一个64位密钥和一个64位链值来计算操作数2中的8字节消息块(M1,M2,...,Mn)的消息认证码。
消息认证码,也称输出链值(OCV),被存储在参数块的链值字段中。KMAC-DEA操作在图8中示出。
KMAC-TDEA-128(功能码2)图3中示出指令所使用的操作数和地址的位置。
用于KMAC-TDEA-128功能的参数块其格式在图9中示出。
使用TDEA算法及参数块中两个64位密钥和一个64位链值来计算操作数2中8字节消息块(M1,M2,...,Mn)的消息认证码。
消息认证码,也称输出链值(OCV),被存储在参数块的链值字段中。KMAC-TDEA-128操作在图10中示出。
KMAC-TDEA-192(功能码3)图3中示出指令所使用的操作数和地址的位置。
用于KMAC-TDEA-192功能的参数块其格式在图11中示出。使用TDEA算法及参数块中三个64位密钥和一个64位链值来计算操作数2中的8字节消息块(M1,M2,...,Mn)的消息认证码。
消息认证码,也称输出链值(OCV),被存储在参数块的链值字段中。KMAC-TDEA-192操作在图12中示出。
KMAC的特殊条件如果发生下列任何情况,则认可规定异常,且不采取任何其它动作1.通用寄存器0的位56为非0。
2.通用寄存器0的位57-63指定一个未分配的或未安装的功能码。
3.R_字段指定一个奇数寄存器或通用寄存器0。
4.第二操作数长度不是指定功能的数据块大小的倍数(参见第7-92页图7-54以确定用于计算消息认证码功能的数据块大小)。
结果条件代码0正常完成1-2-3部分完成程序异常.访问(读取,操作数2,密钥;读取和存储,链值).操作(若没有安装消息安全帮助).规定编程注释1.通用寄存器0的位56保留用于将来的扩展,且应当设为0。
2.当设置条件码3时,通用寄存器R2和R2+1中相应的第二操作数地址与长度以及参数块中的链值通常被更新,以便程序可以简单分支回到该指令以继续操作。对于不寻常的情形,CPU防止无进展情况下无止境的重复发生。这样,每当设置了条件码3,程序都能安全分支回到该指令,而不会进入无止境循环。
3.如果第二操作数的长度初始为非0,且设置条件码0,则以与对于条件码3同样的方式更新寄存器;此种情况下的链值是这样的,即可以对附加的操作数进行处理就像它们是同一链中的部分。
4.在处理消息的第一部分之前,程序必须为链值字段设置初始值。为遵守ANSI X9.9或X9.19,初始链值应被设为全部为二进制0。
密码协处理器优选的实施例提供了密码协处理器,该密码协处理器可与此处所描述的指令一起使用,并执行密码消息,以及协助各种链式消息任务,所述链式消息任务可与适当指令一起用于链式和密码用途。
图14示出该密码协处理器,它直接附接于数据通路上,该数据通路为具有多个执行流水线的通用微处理器上的所有内部执行单元公用。微处理器内部总线(1)对于所有其他附接于密码控制单元(2)的执行单元公用,且该控制单元监视总线上它应执行的处理器指令。
密码控制单元提供密码协处理器,该密码协处理器直接附接于数据通路,该数据通路对通用微处理器上的中央处理单元的所有内部执行单元公用,该通用微处理器为该中央处理单元提供了可用的硬件(在具有多个执行流水线的优选实施例中的E0...En,或它们的组合)。当在命令寄存器(3)中遇到密码指令时,控制单元(2)从可用的硬件中调用适当的算法。操作数数据经过输入FIFO寄存器(4)在同一内部微处理器总线上进行传递。当操作完成时,在状态寄存器(6)中设置一个标志,且结果可从输出FIFO寄存器(5)中读出。
本发明的示出的优选实施例被设计成可扩展的,以便包括根据系统的性能目标特定实现所需要的那样多的硬件引擎。到输入和输出寄存器(7)的数据通路在所有的引擎中是公用的。
本发明的密码功能的优选实施例在CPU上的执行单元硬件中实现,并且此实现能够降低调用和执行加密操作的等待时间并提高效率。
这种减少的等待时间大幅度提高了频繁进行很多加密操作的系统中通用处理器的性能,尤其是当仅涉及小量数据时。这允许这样一实现,该实现能显著加速在进行安全在线交易中涉及的过程。保证在线交易安全的最常用的方法包括一组3个算法。第一个算法在一会话中仅使用一次,且可在硬件中或软件中被实现,而其它操作在该会话的每个交易中被调用,并且使用本发明消除了调用外部硬件的等待时间的成本以及在软件中执行算法的时间上的成本。
在图15中,已概念性地示出如何在具有上述可以有效使用的微处理器的大型计算机上实现已在一优选的实施例中实现的功能,这一点我们已在IBM内在长位移工具计算机体系结构指令格式的一商业实现中实验地证明了,这些指令由程序员,通常是现在的“C”程序员使用。这些存储在存储介质中的指令格式可以在一台Z/体系结构IBM服务器中本机执行,或者可选地在执行其他体系结构的机器中执行。它们可以在现存及将来的IBM大型机服务器中和IBM的其它机器(例如p系列服务器和x系列服务器)上被仿真。它们可以在运行Linux的机器上执行,运行Linux的多种机器使用由IBM、Intel、AMD、Sun Microsystems和其它厂商制造的硬件。除在z/体系结构下的硬件上执行之外,也可以使用Linux执行,以及在使用Hercules、UMX、FXI或Platform Solutions的仿真的机器上执行,在这些机器上一般以一种仿真模式执行。在仿真模式中对被仿真的特定指令解码,并构建一子例程以实现该个别指令,如在一“C”子例程或驱动程序中,或使用为特定硬件提供驱动程序的某种其它方法,如本领域的技术人员在理解了优选实施例的描述后所能掌握的。各种软件和硬件仿真专利包括不限于US5551013、US6009261、US5574873、US6308255、US6463582、和US5790825,它们示出了实现对为不同机器进行体系结构设计的指令格式的仿真、以用于本领域的那些技术人员可用的目标机器的各种已知方法,以及以上引用的这些专利使用的商业软件技术。
在优选的实施例中,用于非超标量指令的现有的先前长位移指令格式由基址寄存器和12位无符号位移之和或基址寄存器、变址寄存器、及12位无符号位移之和构成操作数存储器地址,而新的长位移指令格式由基址寄存器和20位有符号位移之和或基址寄存器、变址寄存器、及20位有符号位移之和构成操作数存储器地址。
由图15所示,这些指令由处理器在硬件中执行,或通过所述指令集由在具有不同的本机指令集的计算机中执行的软件仿真来执行。
在图15中,#501示出了包含指令和数据的计算机存储器。本发明中所描述的长位移指令最初将存储在这台计算机中。#502示出用于从计算机存储器中读取指令的机制,并也可以包含它已读取的这些指令的本地缓冲。然后将这些未处理的指令传送到指令解码器503,该指令解码器503确定所读取的指令类型。#504示出执行指令的机制。这可包括从存储器#501将数据加载到寄存器中,从寄存器将数据存回存储器中,或执行某种类型的算术或逻辑操作。这种要执行的操作的准确类型已先前由指令解码器确定。本发明中所描述的长位移指令将在此处被执行。如果长位移指令正在计算机系统中本机执行,那么这个图就按以上所述完成。然而,如果包含长位移指令的指令集体系结构正在另一台计算机上被仿真,以上的过程将在主计算机#505上的软件中被实现。在这种情况下,上述的机制通常将作为仿真器软件内的一个或多个软件子例程被实现。在两种情况下,指令都被读取、解码和执行。
更具体地说,这些体系结构化的指令可以用于这样的计算机体系结构中,该计算机体系结构具有现有的指令格式,这些格式具有用于构成操作数存储器地址的12位无符号位移,也具有附加的指令格式,这些格式提供附加的位移位,优选为20位,这些位组成扩展的用于构成操作数存储器地址的有符号位移。这些计算机体系结构化指令构成计算机软件,该软件存储在存储介质中,用于产生利用该计算机软件的处理器的代码运行,且包括由存储在计算机存储介质501中的编译器或仿真器/解释器所使用的指令码,其中该指令码的第一部分包括一操作码,该操作码指定要被执行的操作,而第二部分指定参与的操作数。长位移指令允许使用所述长位移工具指令直接寻址附加的地址。
如由图15示出的,这些指令在硬件中由处理器执行,或由在具有不同本机指令集的计算机上执行的软件仿真所述指令集而执行。
根据优选实施例的计算机体系结构,位移字段被定义为分两部分,低位部分是12位,称为DL,DL1用于操作数1或DL2用于操作数2,而高位部分是8位,称为DH,DH1用于操作数1或DH2用于操作数2。
此外,优选的计算机体系结构有这样的指令格式,即操作码在位位置0-7和位位置40-47,称为R1的目标寄存器在位位置8-11,称为X2的变址寄存器在位位置12-15,称为B2的基址寄存器在位位置16-19,位移由两部分组成,称为DL2的第一部分在位位置20-31,而称为DH2的第二部分在位位置32-39。
该计算机体系结构有这样的指令格式,即操作码在位位置0-7和位位置40-47,称为R1的目标寄存器在位位置8-11,称为R3的源寄存器在位位置12-15,称为B2的基址寄存器在位位置16-19,位移由两部分组成,称为DL2的第一部分在位位置20-31,而称为DH2的第二部分在位位置32-39。
此外,具有长位移工具的本计算机体系结构指令有这样的指令格式,即操作码在位位置0-7和位位置40-47,称为R1的目标寄存器在位位置8-11,称为M3的掩码值在位位置12-15,称为B2的基址寄存器在位位置位移由两部分组成,称为DL2的第一部分在位位置20-31,而称为DH2的第二部分在位位置32-39。
如所示出的,该优选的具有长位移工具的计算机体系结构有这样的指令格式,即操作码在位位置0-7和位置40-47,称为I2的立即值在位位置8-15,称为B2的基址寄存器在位位置16-19,位移由两部分组成,称为DL1的第一部分在位位置20-31,而称为DH1的第二部分在位位置32-39。
当我们的长位移工具计算机体系结构使用创建的新的指令时,会有效地操作,这些新指令仅使用具有新的20位无符号位移的指令格式。
我们的计算机体系结构的特定实施例利用现有的指令,这些指令具有仅有12位无符号位移的指令格式,并且现在被定义成新的指令格式,这样或者当位移的高8位,即字段DH,全为0时,具有现存的12位无符号位移值,或者当位移的高8位,即字段DH,为非0时,具有20位有符号值。
一种用于为计算环境的存储器中的数据计算消息认证码的装置,该装置包括用于通过指令来指定将为其计算认证码的存储单元的装置;用于为该存储单元计算认证码的装置。
权利要求
1.一种为计算环境的存储器中的数据计算消息认证码的方法,所述方法包括通过指令指定将为其计算认证码的存储单元;以及为该存储单元计算认证码。
2.根据权利要求1的方法,其中所述指定步骤包括提供与所述存储单元相关的数据结构的位置信息。
3.根据权利要求2的方法,其中所述位置信息包括所述数据结构的起始点。
4.根据权利要求3的方法,其中所述位置信息进一步包括所述数据结构的一条目的索引,所述条目对应于所述存储单元。
5.根据权利要求1的方法,其中所述计算认证码的步骤包括与所述指令一起提供密钥从而使用所述密钥计算所述认证码。
6.根据权利要求1的方法,其中所述存储单元包括一存储段和一存储区域中的一个,且其中所述数据结构包括一段数据结构和一区域数据结构中的一个。
7.根据权利要求1的方法,其中所述计算认证码的步骤由所述指令执行。
8.根据权利要求1的方法,其中所述计算认证码的步骤包括提供与所述存储单元相关的密钥。
9.根据权利要求1的方法,其中所述数据结构包括多个条目,且其中所述计算认证码的步骤进一步包括使用索引以获得与将要处理的存储单元有关的条目,该条目具有密钥。
10.根据权利要求1的方法,其中所述存储单元包括一存储段,所述存储段包括多个存储页。
11.根据权利要求1的方法,其中所述存储单元包括一存储区域,所述存储区域包括多个存储段,一个存储段包括多个存储页。
12.根据权利要求1的方法,其中所述指定步骤包括指定多个存储单元,而所述计算认证码的步骤包括为所述多个存储单元计算认证码。
13.根据权利要求12的方法,其中所述计算认证码的步骤包括用于为所述多个存储单元计算认证码的链式操作。
14.根据权利要求1的方法,其中所述存储器包括虚拟存储器。
15.根据权利要求1的方法,其中所述指令在硬件、固件和软件中的至少一个中实现。
16.根据权利要求1的方法,其中所述指令由仿真该指令的体系结构的处理单元执行,该指令的所述体系结构不同于该处理单元的体系结构。
17.一种用于为计算环境的存储器中的数据计算认证码的系统,所述系统包括用于执行任何前述方法权利要求的步骤的装置。
18.一种计算机程序产品,包括至少一种计算机可用介质,其具有用于执行任何前述方法权利要求的方法的计算机可读程序代码。
全文摘要
一种用于为计算环境的存储器中的数据计算消息认证码的方法、系统和计算机程序产品。一条指令指定将为其计算认证码的存储单元。一计算操作为该存储单元计算认证码。
文档编号H04L9/32GK1788251SQ200480012737
公开日2006年6月14日 申请日期2004年4月30日 优先权日2003年5月12日
发明者S·伦德瓦尔, R·史密斯, P·C-C·耶 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1