CN100561423C - 处理安全消息认证控制指令 - Google Patents

处理安全消息认证控制指令 Download PDF

Info

Publication number
CN100561423C
CN100561423C CNB2006101538089A CN200610153808A CN100561423C CN 100561423 C CN100561423 C CN 100561423C CN B2006101538089 A CNB2006101538089 A CN B2006101538089A CN 200610153808 A CN200610153808 A CN 200610153808A CN 100561423 C CN100561423 C CN 100561423C
Authority
CN
China
Prior art keywords
instruction
moving device
sign bit
field
operand
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.)
Expired - Lifetime
Application number
CNB2006101538089A
Other languages
English (en)
Other versions
CN1967470A (zh
Inventor
S·伦德瓦尔
R·史密斯
P·C-C·耶
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 CN1967470A publication Critical patent/CN1967470A/zh
Application granted granted Critical
Publication of CN100561423C publication Critical patent/CN100561423C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/3001Arithmetic instructions
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)
  • Diaphragms For Electromechanical Transducers (AREA)
  • Control Of Ac Motors In General (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Massaging Devices (AREA)
  • Percussion Or Vibration Massage (AREA)

Abstract

一种用于为计算环境的存储器中的数据计算消息认证码的方法、系统和计算机程序产品。一条指令指定将为其计算认证码的存储单元。一计算操作为该存储单元计算认证码。

Description

处理安全消息认证控制指令
本申请是国际申请号为PCT/GB2004/001925、国际申请日为2004年4月30日、中国国家申请号为200480012737.X、发明名称为“处理安全消息认证控制指令”的PCT专利申请的分案申请。
技术领域
本发明涉及计算机系统体系结构,尤其涉及扩充IBM z/体系结构并能被其他体系结构仿真的新指令。
背景技术
在本发明之前,从20世纪60年代被称为IBM系统360的机器开始,到目前为止,通过许多有高度才能的工程师们的工作,IBM已创建了一特殊的体系结构,因为它具有对于计算系统是基本的这样一种性质,而被称为“大型机”,其操作原理通过描述可在指令的该“大型机”实现上执行的指令而规定该机器的体系结构,这些指令由IBM的发明家发明,并且由于它们对改进由“大型机”所代表的计算机器的状况做出重大的贡献,所以被采纳为重大贡献而被包括在多年所规定的IBM的操作原理中。《z/体系结构操作原理》的第一版在2000年12月出版,并已作为SA22-7832-00,而成为标准的出版参考书。
我们确定,如此处所描述的,进一步的新的指令将有助于本技术领域并能被包括进z/体系结构机器中,也能被较简单机器中的其他体系结构仿真。
发明内容
本发明提供一种用于在中央处理单元中执行机器指令的方法,该方法包括以下步骤:读取有符号位移机器指令以便执行,该有符号位移机器指令是根据一计算机体系结构为计算机执行定义的,该有符号位移机器指令包括操作码字段、操作数基地址字段和包含有符号位移值的有符号位移字段;从由所述操作数基地址字段指定的位置获得操作数基地址;通过将所述操作数基地址与所述有符号位移值算术地求和,来确定操作数的地址;以及执行由所述操作码字段定义的功能,其中所述功能使用所述被确定的地址处的操作数。
本发明还提供了一种用于在中央处理单元中执行机器指令的系统,该系统包括:用于读取有符号位移机器指令以便执行的装置,该有符号位移机器指令是根据一计算机体系结构为计算机执行定义的,该有符号位移机器指令包括操作码字段、操作数基地址字段和包含有符号位移值的有符号位移字段;用于从由所述操作数基地址字段指定的位置获得操作数基地址的装置;用于通过将所述操作数基地址与所述有符号位移值算术地求和,来确定操作数的地址的装置;以及用于执行由所述操作码字段定义的功能的装置,其中所述功能使用所述被确定的地址处的操作数。
附图说明
从下面结合附图所作的详细的描述中,对技术熟练的人来说,本发明的优选实施例的特征将会是显然的,在附图中:
图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的基址寄存器在位位置16-19,位移由两部分组成,称为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位有符号值。
一种用于为计算环境的存储器中的数据计算消息认证码的装置,该装置包括:
用于通过指令来指定将为其计算认证码的存储单元的装置;
用于为该存储单元计算认证码的装置。

Claims (20)

1.一种用于在中央处理单元中执行机器指令的方法,该方法包括以下步骤:
读取有符号位移机器指令以便执行,该有符号位移机器指令是根据一计算机体系结构为计算机执行定义的,该有符号位移机器指令包括操作码字段、操作数基地址字段和包含有符号位移值的有符号位移字段;
从由所述操作数基地址字段指定的位置获得操作数基地址;
通过将所述操作数基地址与所述有符号位移值算术地求和,来确定操作数的地址;以及
执行由所述操作码字段定义的功能,其中所述功能使用所述被确定的地址处的操作数。
2.根据权利要求1的方法,其中所述有符号位移机器指令还包括:
目标操作数字段或源操作数字段。
3.根据权利要求1的方法,其中所述有符号的位移字段包括高位部分和低位部分。
4.根据权利要求3的方法,其中所述高位部分包括8位,并且所述低位部分包括12位。
5.根据权利要求3的方法,其中所述有符号位移机器指令的低位部分占据与同一体系结构的无符号位移机器指令中的无符号位移字段相同的位位置。
6.根据权利要求1的方法,其中所述有符号位移机器指令包括48位,其中所述操作码包括位0-7和40-47,第一操作数位置字段包括位8-11,第二操作数位置字段包括位12-15,所述基地址字段包括位16-19,所述有符号位移字段的低位部分包括位20-31,以及所述有符号位移字段的高位部分包括位32-39。
7.根据权利要求1的方法,其中为所述计算机体系结构定义的有符号位移机器指令是由另一计算机体系结构的中央处理单元读取和执行的,该方法还包括以下步骤:
解释所述有符号位移机器指令以识别用于仿真该有符号位移机器指令的操作的预定的软件子例程;以及
执行所述预定的软件子例程,以完成用于执行有符号位移机器指令的方法的步骤。
8.根据权利要求1的方法,其中所述计算机体系结构包括IBM Z/体系结构。
9.根据权利要求1的方法,其中所述有符号位移机器指令还包括第二操作数字段、掩码字段、或变址字段中的任何一个。
10.根据权利要求1的方法,其中所述被确定将执行的功能还使用这样的值,该值包括所述有符号位移机器指令的立即字段值、所述有符号位移机器指令的掩码字段值或这样的通用寄存器值中的任何一个,所述通用寄存器值是从由所述有符号位移机器指令的寄存器字段的值所确定的通用寄存器位置获得的。
11.一种用于在中央处理单元中执行机器指令的系统,该系统包括:
用于读取有符号位移机器指令以便执行的装置,该有符号位移机器指令是根据一计算机体系结构为计算机执行定义的,该有符号位移机器指令包括操作码字段、操作数基地址字段和包含有符号位移值的有符号位移字段;
用于从由所述操作数基地址字段指定的位置获得操作数基地址的装置;
用于通过将所述操作数基地址与所述有符号位移值算术地求和,来确定操作数的地址的装置;以及
用于执行由所述操作码字段定义的功能的装置,其中所述功能使用所述被确定的地址处的操作数。
12.根据权利要求11的系统,其中所述有符号位移机器指令还包括:
目标操作数字段或源操作数字段。
13.根据权利要求11的系统,其中所述有符号的位移字段包括高位部分和低位部分。
14.根据权利要求13的系统,其中所述高位部分包括8位,并且所述低位部分包括12位。
15.根据权利要求13的系统,其中所述有符号位移机器指令的低位部分占据与同一体系结构的无符号位移机器指令中的无符号位移字段相同的位位置。
16.根据权利要求11的系统,其中所述有符号位移机器指令包括48位,其中所述操作码包括位0-7和40-47,第一操作数位置字段包括位8-11,第二操作数位置字段包括位12-15,所述基地址字段包括位16-19,所述有符号位移字段的低位部分包括位20-31,以及所述有符号位移字段的高位部分包括位32-39。
17.根据权利要求11的系统,其中为所述计算机体系结构定义的有符号位移机器指令是由另一计算机体系结构的中央处理单元读取和执行的,该系统还包括:
用于解释所述有符号位移机器指令以识别用于仿真该有符号位移机器指令的操作的预定的软件子例程的装置;以及
用于执行所述预定的软件子例程,以完成用于执行有符号位移机器指令的操作的装置。
18.根据权利要求11的系统,其中所述计算机体系结构包括IBM Z/体系结构。
19.根据权利要求11的系统,其中所述有符号位移机器指令还包括第二操作数字段、掩码字段、或变址字段中的任何一个。
20.根据权利要求11的系统,其中所述被确定将执行的功能还使用这样的值,该值包括所述有符号位移机器指令的立即字段值、所述有符号位移机器指令的掩码字段值或这样的通用寄存器值中的任何一个,所述通用寄存器值是从由所述有符号位移机器指令的寄存器字段的值所确定的通用寄存器位置获得的。
CNB2006101538089A 2003-05-12 2004-04-30 处理安全消息认证控制指令 Expired - Lifetime CN100561423C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/435,910 2003-05-12
US10/435,910 US7356710B2 (en) 2003-05-12 2003-05-12 Security message authentication control instruction

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB200480012737XA Division CN100363887C (zh) 2003-05-12 2004-04-30 为计算环境的存储器的数据计算消息认证码的方法和系统

Publications (2)

Publication Number Publication Date
CN1967470A CN1967470A (zh) 2007-05-23
CN100561423C true CN100561423C (zh) 2009-11-18

Family

ID=33417040

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB200480012737XA Expired - Lifetime CN100363887C (zh) 2003-05-12 2004-04-30 为计算环境的存储器的数据计算消息认证码的方法和系统
CNB2006101538089A Expired - Lifetime CN100561423C (zh) 2003-05-12 2004-04-30 处理安全消息认证控制指令

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNB200480012737XA Expired - Lifetime CN100363887C (zh) 2003-05-12 2004-04-30 为计算环境的存储器的数据计算消息认证码的方法和系统

Country Status (15)

Country Link
US (2) US7356710B2 (zh)
EP (2) EP1588255B1 (zh)
KR (2) KR100745889B1 (zh)
CN (2) CN100363887C (zh)
AT (2) ATE350701T1 (zh)
AU (1) AU2004236860B2 (zh)
CA (1) CA2522995C (zh)
DE (2) DE602004008933D1 (zh)
ES (1) ES2278317T3 (zh)
GB (2) GB2414840B (zh)
IL (1) IL171907A0 (zh)
PL (1) PL1588255T3 (zh)
RU (2) RU2327204C2 (zh)
TW (2) TWI354929B (zh)
WO (1) WO2004099976A2 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802108B1 (en) * 2002-07-18 2010-09-21 Nvidia Corporation Secure storage of program code for an embedded system
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US20040230813A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Cryptographic coprocessor on a general purpose microprocessor
US8300806B2 (en) * 2005-02-03 2012-10-30 Yottamark, Inc. Duo codes for product authentication
US8649512B2 (en) * 2005-02-03 2014-02-11 Yottamark, Inc. Duo codes for product authentication
US7614546B2 (en) 2005-02-03 2009-11-10 Yottamark, Inc. Method and system for deterring product counterfeiting, diversion and piracy
US8155313B2 (en) * 2005-02-03 2012-04-10 Yottamark, Inc. Systems and methods for employing duo codes for product authentication
KR101123742B1 (ko) * 2005-12-23 2012-03-16 삼성전자주식회사 사용자 인터페이스와 소프트웨어 간의 신뢰 경로 설정 방법및 장치
JP4810289B2 (ja) * 2006-04-17 2011-11-09 ルネサスエレクトロニクス株式会社 メッセージ認証子生成装置、メッセージ認証子検証装置、及びメッセージ認証システム
US8342393B2 (en) * 2007-09-07 2013-01-01 Yottamark, Inc. Attributing harvest information with unique identifiers
WO2009033174A1 (en) 2007-09-07 2009-03-12 Yottamark, Inc. Attributing harvest information with unique identifiers
US8210430B1 (en) 2011-02-24 2012-07-03 Yottamark, Inc. Methods for assigning traceability information to and retrieving traceability information from a store shelf
US8887990B2 (en) 2007-09-07 2014-11-18 Yottamark, Inc. Attributing harvest information with unique identifiers
US8196827B1 (en) 2009-05-22 2012-06-12 Yottamark, Inc. Case labeling for field-packed produce
US8428773B1 (en) 2008-02-12 2013-04-23 Yottamark, Inc. Systems and methods of associating individual packages with harvest crates
US8240564B2 (en) 2008-07-11 2012-08-14 Yottamark, Inc. Mobile table for implementing clamshell-to-case association
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
US10313129B2 (en) * 2015-06-26 2019-06-04 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4578530A (en) * 1981-06-26 1986-03-25 Visa U.S.A., Inc. End-to-end encryption system and method of operation

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2458331A1 (de) 1973-12-13 1975-06-19 Honeywell Inf Systems Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
JPS56121138A (en) 1980-02-28 1981-09-22 Nippon Telegr & Teleph Corp <Ntt> Buffer memory controlling system
JPS56149645A (en) * 1980-04-21 1981-11-19 Nec Corp Instruction word deciphering device of information processor
US4432053A (en) * 1981-06-29 1984-02-14 Burroughs Corporation Address generating apparatus and method
JPS6110411A (ja) * 1984-06-19 1986-01-17 Daicel Chem Ind Ltd 樹脂組成物
DE3686984T2 (de) * 1985-06-28 1993-03-11 Hewlett Packard Co Verfahren und mittel zum laden und speichern von daten in einem rechner mit beschraenktem befehlssatz.
US4829424A (en) 1985-06-28 1989-05-09 Hewlett-Packard Company Maximal length immediates with fixed sign position
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
DE68926200T2 (de) 1988-08-11 1996-10-17 Ibm Geheime Datenübertragung mittels Steuervektoren
US5666411A (en) 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US5673319A (en) 1995-02-06 1997-09-30 International Business Machines Corporation Block cipher mode of operation for secure, length-preserving encryption
US5765030A (en) * 1996-07-19 1998-06-09 Symantec Corp Processor emulator module having a variable pre-fetch queue size for program execution
US5787302A (en) 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
US20010025337A1 (en) 1996-06-10 2001-09-27 Frank Worrell Microprocessor including a mode detector for setting compression mode
JPH11249873A (ja) 1998-03-02 1999-09-17 Mitsubishi Electric Corp ドライバ機能の動的管理方式及び動的管理方法
CN1163018C (zh) 1999-08-09 2004-08-18 高通股份有限公司 用来产生消息鉴别码的方法和设备
US6542981B1 (en) * 1999-12-28 2003-04-01 Intel Corporation Microcode upgrade and special function support by executing RISC instruction to invoke resident microcode
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
US7266703B2 (en) * 2001-06-13 2007-09-04 Itt Manufacturing Enterprises, Inc. Single-pass cryptographic processor and method
US20030002666A1 (en) 2001-06-13 2003-01-02 Takahashi Richard J. Method and apparatus for creating a message digest using a parallel, one-way hash algorithm
US20030028765A1 (en) 2001-07-31 2003-02-06 Cromer Daryl Carvis Protecting information on a computer readable medium
US6996725B2 (en) * 2001-08-16 2006-02-07 Dallas Semiconductor Corporation Encryption-based security protection for processors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4578530A (en) * 1981-06-26 1986-03-25 Visa U.S.A., Inc. End-to-end encryption system and method of operation

Also Published As

Publication number Publication date
CN100363887C (zh) 2008-01-23
TW200506719A (en) 2005-02-16
DE602004008933D1 (de) 2007-10-25
AU2004236860B2 (en) 2010-05-20
US7356710B2 (en) 2008-04-08
US20080201557A1 (en) 2008-08-21
GB0516205D0 (en) 2005-09-14
PL1588255T3 (pl) 2007-05-31
EP1588255A3 (en) 2005-11-02
GB2413877B (en) 2006-01-11
TWI332158B (en) 2010-10-21
TWI354929B (en) 2011-12-21
IL171907A0 (en) 2006-04-10
CN1967470A (zh) 2007-05-23
DE602004004079D1 (de) 2007-02-15
ATE350701T1 (de) 2007-01-15
KR100745889B1 (ko) 2007-08-02
US20040230796A1 (en) 2004-11-18
CA2522995A1 (en) 2004-11-18
ATE373264T1 (de) 2007-09-15
GB2413877A (en) 2005-11-09
EP1588255B1 (en) 2007-01-03
RU2005138549A (ru) 2007-06-20
US7770024B2 (en) 2010-08-03
RU2007123775A (ru) 2009-01-10
ES2278317T3 (es) 2007-08-01
AU2004236860A1 (en) 2004-11-18
GB2414840A (en) 2005-12-07
KR20060103282A (ko) 2006-09-28
GB0518900D0 (en) 2005-10-26
KR20060012584A (ko) 2006-02-08
EP1650648B1 (en) 2007-09-12
RU2327204C2 (ru) 2008-06-20
TW200708985A (en) 2007-03-01
WO2004099976A3 (en) 2005-09-15
WO2004099976A2 (en) 2004-11-18
EP1650648A3 (en) 2006-05-17
EP1588255A2 (en) 2005-10-26
GB2414840B (en) 2006-04-19
DE602004004079T2 (de) 2007-06-28
EP1650648A2 (en) 2006-04-26
CN1788251A (zh) 2006-06-14
CA2522995C (en) 2012-05-29

Similar Documents

Publication Publication Date Title
CN100561423C (zh) 处理安全消息认证控制指令
CN1799024B (zh) 处理消息摘要指令的方法和系统
US9424055B2 (en) Multi-function instruction that determines whether functions are installed on a system
CN102947794A (zh) 用于处理器功能查询的功能虚拟化设施
EP1684167A2 (en) Method of processing signed displacement computer instruction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20091118