ES2278317T3 - Instruccion para calcular un codigo de autenticacion de mensaje de seguridad. - Google Patents

Instruccion para calcular un codigo de autenticacion de mensaje de seguridad. Download PDF

Info

Publication number
ES2278317T3
ES2278317T3 ES04730603T ES04730603T ES2278317T3 ES 2278317 T3 ES2278317 T3 ES 2278317T3 ES 04730603 T ES04730603 T ES 04730603T ES 04730603 T ES04730603 T ES 04730603T ES 2278317 T3 ES2278317 T3 ES 2278317T3
Authority
ES
Spain
Prior art keywords
instruction
code
bit
function
value
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
ES04730603T
Other languages
English (en)
Inventor
Shawn Lundvall
Ronald Smith
Phil Chi-Chung Yeh
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
Application granted granted Critical
Publication of ES2278317T3 publication Critical patent/ES2278317T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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

Abstract

Un método de calcular un código de autenticación de mensaje de datos en almacenamiento de un entorno informático, comprendiendo el citado método: especificar, por medio de una instrucción de microprocesador, una unidad de datos para la cual se tiene que calcular el código de autenticación; y calcular, por medio de la instrucción, un código de autenticación para la unidad de datos; en el que la instrucción está asociada con un campo que identifica un valor de código de función, y un procesador que ejecuta la instrucción reconoce qué técnica de cifrado se va a utilizar para calcular el código de autenticación basándose en el valor del código de función; que se caracteriza porque un valor de código de función adicional se corresponde a una operación de consulta que hace que una palabra de estado se almacene en un bloque de parámetros, teniendo la palabra de estado una pluralidad de bits, en el que cuando un bit de la palabra de estado tiene un primer valor binario, entonces ese bit correspondea un valor de código de función que corresponde a una función instalada, y cuando un bit de la palabra de estado tiene un segundo valor binario, entonces ese bit corresponde a un valor de código de función que corresponde a una función no instalada.

Description

Instrucción para calcular un código de autenticación de mensaje de seguridad.
Esta invención se refiere a una arquitectura de un sistema de ordenador, y particularmente a nuevas instrucciones que incrementan la arquitectura z de IBM y pueden ser emuladas por otras arquitecturas.
Antes de la presente invención, IBM ha creado por medio del trabajo de muchos ingenieros de gran talento, empezando con máquinas conocidas como el sistema 360 de IBM en la década de los 60 hasta la actualidad, una arquitectura especial que, debido a su naturaleza esencial para un sistema informático, llegó a conocerse como "ordenador central" o mainframe, cuyos principios de operación establecen la arquitectura de la máquina describiendo las instrucciones que pueden ser ejecutadas con la implantación práctica en el "ordenador central" de las instrucciones que han sido inventadas por los inventores de IBM y adoptadas, debido a su contribución significativa en la mejora del estado de la máquina informática representada por "el ordenador central", como contribuciones significativas por la inclusión de los Principios de Operación de IBM establecidos a lo largo de los años. La Primera Edición de los Principios de Operación de la Arquitectura z que se publicó en diciembre del 2000 se ha convertido en la referencia publicada estándar como SA22-7832-00.
Se ha determinado que nuevas instrucciones adicionales ayudarían en la técnica y se podrían incluir en la máquina de Arquitectura z y también podrían ser emuladas por otros en máquinas más simples, como se describe en la presente memoria descriptiva.
Una instrucción conocida para calcular un código de autenticación de mensaje y que tiene un código de función asociado se conoce por la publicación FP 0354774, publicada el 14 de febrero de 1990.
La presente invención proporciona un método como se reivindica en la reivindicación 1.
Las características de las realizaciones preferidas de la invención serán evidentes a aquellos especialistas en la técnica a partir de la descripción detallada que sigue tomada en conjunto con los dibujos que se acompañan, en los cuales:
la figura 1 es una ilustración de la instrucción Calcular Código de Autenticación de Mensaje (KMAC) en el formato de instrucción RRE;
la figura 2 es una tabla que muestra los códigos de función de la instrucción KMAC de la figura 1;
la figura 3 es una ilustración de la asignación de registro general para la instrucción KMAC de la figura 1;
la figura 4 ilustra el símbolo utilizado para O Exclusiva por Ajuste
la figura 5 ilustra un símbolo del Cifrado y Descifrado DEA;
la figura 6 ilustra el formato del bloque de parámetros de la Consulta KMAC;
la figura 7 ilustra el formato del bloque de parámetros de KMAC-DEA;
la figura 8 ilustra la operación de KMAC-DEA;
la figura 9 ilustra el formato del bloque de parámetros de KMAC-TDEA-128;
la figura 10 ilustra la operación de KMAC-TDA-128;
la figura 11 ilustra el formato del bloque de parámetros de KMAC-TDA-192;
la figura 12 ilustra la operación de KMAC-TDA-192;
la figura 13 es una tabla que muestra la prioridad de ejecución de KMAC;
la figura 14 ilustra el coprocesador criptográfico del invento; y
la figura 15 muestra la realización preferida generalizada de un almacenamiento de memoria de ordenador que contiene instrucciones de acuerdo con la realización preferida y datos, así como el mecanismo para buscar, descodificar y ejecutar estas instrucciones, ya sea en un sistema de ordenador que utiliza esas instrucciones de arquitectura o como se utiliza en la emulación de las instrucciones de arquitectura actuales.
La instrucción Calcular Código de Autenticación de Mensaje (KMAC) se explicará en primer lugar, y a continuación un sistema de ordenador preferido y, como alternativa, un sistema de ordenador para emular un sistema de ordenador que tiene una arquitectura diferente para ejecutar la instrucción.
Calcular Código de Autenticación de Mensaje (KMAC)
La figura 1 es una ilustración de la instrucción Calcular Código de Autenticación de Mensaje (KMAC) en el formato de instrucción RRE.
Se ejecuta una función especificada por el código de función en el registro general 0. Los bits 16-23 de la instrucción y el campo R1 se ignoran.
Las posiciones de bits 57-63 del registro general 0 contienen el código de función. La figura 2 muestra los códigos de función con signos. Todos los otros códigos de función no están con signos. El bit 56 del registro general 0 debe ser cero; en caso contrario, se reconoce una excepción de especificación. Todos los otros bits del registro general 0 se ignoran.
El registro general 1 contiene la dirección lógica del bit más a la izquierda del bloque de parámetros en el almacenamiento. En el modo de direccionamiento de 24 bits, los contenidos de las posiciones de bits 40-63 del registro general 1 constituyen la dirección, y los contenidos de las posiciones de bits 0-39 se ignoran. En el modo de direccionamiento de 31 bits, los contenidos de las posiciones de bits 33-63 del registro general 1 constituyen la dirección, y los contenidos de las posiciones de bits 0-32 se ignoran.
En el modo de direccionamiento de 64 bits, los contenidos de las posiciones de bits 0-63 del registro general 1 constituyen la dirección.
Los códigos de función de Calcular Código de Autenticación de Mensaje se muestran en la figura 2.
Todos los otros códigos de función no están con signos. La función de consulta proporciona los medios para indicar la disponibilidad de las otras funciones. Los contenidos de los registros generales R2 y R2 + 1 se ignoran.
Para todas las otras funciones, el segundo operador se procesa como está especificado por el código de función que utiliza un valor de encadenamiento inicial en el bloque de parámetros y el resultado reemplaza al valor de encadenamiento. La operación también utiliza una clave criptográfica en el bloque de parámetros. La operación continúa hasta que se alcanza el final de la posición del segundo operador o se haya procesado un número de bytes determinado por la CPU, lo que se produzca en primer lugar. El resultado se indica en el código de condición.
El campo R2 designa una pareja par-impar de registros generales y debe designar un registro de número par; en caso contrario, se reconoce una excepción a la especificación.
La posición del byte más a la izquierda del segundo operador es especificada por los contenidos del registro general R2. El número de bytes en la posición del segundo operador es especificado en el registro general R2 + 1.
Como parte de la operación, la dirección en el registro general R2 es incrementada en el número de bytes procesados desde el segundo operador, y la longitud en el registro general R2 + 1 es disminuida en el mismo número. La formación y actualización de la dirección y de la longitud depende del modo de direccionamiento.
En el modo de direccionamiento de 24 bits, los contenidos de las posiciones de bits 40-63 del registro general R2 constituyen la dirección del segundo operador, y se ignoran; los bits 40-63 de la dirección actualizada reemplazan los bits correspondientes en el registro general R_, son ignoradas ejecuciones de la posición de bit 40 de la dirección actualizada, y los contenidos de las posiciones de bits 32-39 del registro general R_ se establecen en cero. En el modo de direccionamiento de 31 bits, los contenidos de las posiciones de bits 33-63 del registro general R_ constituyen la dirección del segundo operador, y los contenidos de las posiciones de bits 0-32 son ignorados; los bits 33-63 de la dirección actualizada reemplazan los bits correspondientes en el registro general R_, son ignoradas ejecuciones de bit 33 de la dirección actualizada, y los contenidos de la posición de bit 32 del registro general R se establecen en cero. En el modo de direccionamiento de 64 bits, los contenidos de las posiciones de bits 0-63 del registro general R_ constituyen la dirección del segundo operador; los bits 0-63 de la dirección actualizada reemplazan los contenidos del registro general R_ y se ignoran ejecuciones de la posición de bit 0.
En ambos modos de direccionamiento de 24 bits y de 31 bits, los contenidos de las posiciones de bits 32-63 del registro general R2 + 1 forman un número binario sin signo de 32 bits que específica el número de bytes en el segundo operador; y el valor actualizado reemplaza los contenidos de las posiciones de bits 32-63 del registro general R2 + 1. En el modo de direccionamiento de 64 bits, los contenidos de las posiciones de bits 0-63 del registro general R2 + 1 forman un número binario sin signo de 64 bits que especifica el número de bytes en el segundo operador; y el valor actualizado reemplaza los contenidos del registro general R2 + 1.
En el modo de direccionamiento de 24 bits o de 31 bits, los contenidos de las posiciones de bits 0-31 de los registros generales R2 y R2 + 1 siempre permanecen sin modificación.
La figura 3 muestra los contenidos de los registros generales que se acaban de describir.
\newpage
En el modo de registro de acceso, los registros de acceso 1 y R2 especifican los espacios de dirección que contienen el bloque de parámetros y el segundo operador, respectivamente. El resultado se obtiene como si el procesamiento se iniciase en el extremo izquierdo del segundo operador y continuase a la derecha, bloque por bloque. La operación finaliza cuando todos los bytes de fuente en el segundo operador han sido procesados (denominado finalización normal), o cuando ha sido tratado un número de bloques determinado por la CP que sea menor que la longitud del segundo operador (denominado finalización parcial). El número de bloques determinado por la CPU depende del modelo, y puede ser un número diferente cada que se ejecute la instrucción. El número de bloques determinado por la CPU no es normalmente cero. En ciertas situaciones no usuales, este número puede ser cero, y el código de condición 3 se puede esta-
blecer sin progreso. Sin embargo, la CPU protege contra la recurrencia sin fin de este caso en el que no hay progreso.
Cuando el campo de valor de encadenamiento solapa cualquier porción del segundo operador, el resultado en el campo de valor de encadenamiento es impredecible.
La finalización normal se produce cuando se ha procesado el número de bytes en el segundo operador especificado en el registro general R + 1.
Cuando la operación finaliza debido a la finalización normal, se establece el código de condición 0 y el valor resultante en R2 + 1 es cero. Cuando la operación finaliza debido a la finalización parcial, se establece el código de condición 3 y el valor resultante en R2 + 1 es distinto de cero.
Cuando en la longitud del segundo operador es inicialmente cero, el segundo operador y el bloque de parámetros no son accedidos, los registro generales R2 y R2 + 1 no se modifican y se establece el código de condición 0.
Como se observa por otras CPUs y programas de canales, las referencias al bloque de parámetros y a los operadores de almacenamiento pueden ser referencias de acceso múltiple, los accesos a estas posiciones de almacenamiento no son necesariamente concurrentes en bloque, y la secuencia de estos accesos o referencias es indefinida.
Se puede informar de excepciones de acceso de una porción mayor del segundo operador que la que se procesa en una única ejecución de la instrucción; sin embargo, las excepciones de acceso no están reconocidas en posiciones más allá de la longitud del segundo operador ni es posiciones de más de 4k bytes más allá de la posición actual que está siendo procesada.
Símbolos utilizados en Descripciones de Funciones
Los símbolos de las figuras 4 y 5 se utilizan en la descripción que sigue de las funciones de Calcular Código de Autenticación de Mensaje. En funciones de algoritmo de cifrado de datos (DEA), se ignora el bit de paridad de la clave DEA en cada byte de la clave DEA, y la operación procede normalmente, con independencia de la paridad de la clave DEA de la clave.
Una descripción adicional del algoritmo de cifrado de datos se puede encontrar en la publicación "Algoritmos de Cifrado de Datos", ANSI - X3.92.1981, Norma Nacional Americana de Sistemas de Información.
Consulta KMAC (Código de Función 0)
Las posiciones de los operadores y las direcciones utilizadas por las instrucciones son como se muestra en la figura 3. El bloque de parámetros utilizado para la función de Consulta KMAC tiene el formato que se muestra en la figura 6.
Se almacena una palabra de estatus de 128 bits en el bloque de parámetros. Los bits 0-127 de este campo se corresponde a los códigos de función 0-127, respectivamente, de la instrucción KMAC. Cuando un bit es uno, se instala la función correspondiente; en caso contrario, la función no se instala.
El código de condición 0 se establece cuando finaliza la ejecución de la función de Consulta KMAC; el código de condición 3 no es aplicable a esta función.
KMAC-DEA (Código de Función 1)
Las posiciones de los operadores y las direcciones utilizadas por la instrucción son como se muestra en la figura 3.
El bloque se parámetros utilizado para la función KMAC-DEA tiene el formato que se muestra en la figura 7.
El código de autenticación del mensaje para los bloques de mensaje de 8 bytes (M1, M2, ..., Mn) en el operador 2 se calcula utilizando el algoritmo DEA con la clave criptográfica de 64 bit y el valor de encadenamiento de 64 bit en el bloque de parámetros.
El código de autenticación de mensajes, también denominado valor de encadenamiento de salida (OCV) se almacena en el campo de valor de encadenamiento del bloque de parámetros. La operación KMAC-DEA se muestra en la figura 8.
KMAC-TDEA-128 (Código de Función 2)
Las posiciones de los operadores y las direcciones utilizadas por las instrucciones son como se muestra en la figura 3.
El bloque de parámetros utilizados para la función KMAC-TDEA-128 tiene el formato que se muestra en la figura 9.
El código de autenticación de mensajes de los bloques de mensajes de 8 bytes (M1, M2, ..., Mn) en el operador 2 se calcula utilizando el algoritmo TDEA con las dos claves criptográficas de 64 bits y el valor de encadenamiento de 64 bits en el bloque de parámetros.
El código de autenticación de mensajes, también denominado valor de encadenamiento de salida (OCV) se almacena en el campo de valor de encadenamiento del bloque de parámetros. La operación KMAC-TDA-128 se muestra en la figura 10.
KMAC-TDA-192 (Código de Función 3)
Las posiciones de los operadores y las direcciones utilizadas por la instrucción son como se muestra en la figura 3.
El bloque de parámetros utilizado para la función KMAC-TDA-192 tiene el formato que se muestra en la figura 11.
El código de autenticación de mensajes de los bloques de mensajes de 8 bytes (M1, M2, ..., Mn) en el operador 2 se calcula utilizando el algoritmo TDEA con las 3 claves criptográficas de 64 bits y el valor de encadenamiento de 64 bits en el bloque de parámetros.
El código de autenticación de mensajes, también denominado valor de encadenamiento de salida (OCV) se almacena en el campo de valor de encadenamiento del bloque de parámetros. La operación KMAC-TDA-192 se muestra en la figura 12.
Condiciones especiales para KMAC
Se reconoce una excepción de especificación y no se toma ninguna otra acción si se produce cualquiera de lo siguiente:
1.
El bit 56 del registro general 0 es distinto de cero.
2.
Los bits 57-63 del registro general 0 especifican un código de función no asignada o no instalada.
3.
El campo R_ designa un registro de número impar o registro general 0.
4.
La longitud del segundo operador no es un múltiplo del tamaño del bloque de datos de la función designada (véanse las figuras 7-54 en las páginas 7-92 para determinar el tamaño de bloques de datos de las funciones de Calcular Código de Autenticación de Mensajes).
\vskip1.000000\baselineskip
Código de condiciones resultantes
0
Finalización normal
1
- -
2
- -
3
Finalización parcial
\vskip1.000000\baselineskip
Excepciones de programa
\sqbullet
Acceso (buscar, operador 2, clave criptográfica; buscar y almacenar, valor de encadenamiento)
\sqbullet
Operación (si la asistencia de seguridad del mensaje no está instalada)
\sqbullet
Especificación
Notas de programación
1.
El bit 56 del registro general 0 está reservado para extensión futura y debe establecerse en cero.
2.
Cuando se establece el código de condición 3, la dirección del segundo operador y la longitud en los registros generales R2 y R2 + 1, respectivamente, y el valor de encadenamiento en el bloque de parámetros normalmente se actualizan de manera que el programa pueda simplemente ramificarse hacia atrás a la instrucción para continuar la operación. En situaciones inusuales, la CPU protege contra las recurrencias sin fin para el caso de que no se produzca progreso. Por lo tanto, el programa puede ramificarse hacia atrás con seguridad a la instrucción cuando se establece el código de condición 3 sin que se produzca ninguna exposición a un bucle sin fin.
3.
Si la longitud del segundo operador inicialmente es distinta de cero y se establece el código de condición 0, los registros se actualizan de la misma manera que en el código de condición 3; el valor de encadenamiento en este caso es tal que pueden ser procesados operadores adicionales como si fuesen parte de la misma cadena.
4.
Antes de procesar la primera parte de un mensaje, el programa debe establecer los valores iniciales del campo de valor de encadenamiento. Para cumplir con ANSI X9.9 ó X9.19, el valor de encadenamiento inicial debe establecerse en todos los ceros binarios.
Coprocesador criptográfico
La realización preferida proporciona un coprocesador criptográfico que se puede utilizar con las instrucciones descritas en la presente memoria descriptiva y para ejecutar mensajes cifrados y ayudar en una variedad de tareas de mensajes de encadenamiento que se pueden utilizar para uso encadenado y criptográfico con las instrucciones apropiadas.
La figura 14 ilustra el coprocesador criptográfico del invento que está directamente unido a un trayecto de datos común a todas las unidades de ejecución interna en el microprocesador de propósito general, que tiene múltiples tuberías de ejecución. El bus interno (1) del microprocesador, que es común a todas las otras unidades de ejecución, está unido a la unidad (2) de control criptográfico, y la unidad de control vigila el bus respecto a las instrucciones del procesador que debe ejecutar.
La unidad de control criptográfico proporciona un coprocesador criptográfico directamente unido a un trayecto de datos común a todas las unidades de ejecución internas de la unidad de proceso central en un microprocesador de propósito general que proporciona el equipo físico disponible (E_{0}, ..., E_{n}, o de una combinación de los mismos en la realización preferida que tiene múltiples tuberías de ejecución) para la unidad de proceso central. Cuando se encuentra una instrucción criptográfica en el registro de orden (3), la unidad de control (2) invoca el algoritmo apropiado en el equipo disponible. Los datos de operador se suministran por el mismo bus de microprocesador interno por medio de un registro FIFO (4) de entrada. Cuando se completa una operación, se establece una bandera en un registro de estado (6) y los resultados están disponibles para ser leídos desde el registro FIFO de salida (5).
La realización preferida ilustrada de la presente invención está diseñada para que sea extensible para incluir tantos motores de equipo físico como sean requeridos por una ejecución práctica particular, dependiendo de los objetivos de eficacia del sistema. Los trayectos de datos a los registros (7) de entrada y salida son comunes entre todos los motores. La realización preferida de las funciones criptográficas de la invención se ejecutan en la práctica en un equipo físico de unidad de ejecución en la CPU y esta ejecución práctica permite una latencia inferior para llamar y ejecutar las operaciones de encriptación e incrementa la eficiencia.
Esta latencia disminuida mejora en gran medida la capacidad de los procesadores de propósito general en sistemas que frecuentemente realizan muchas operaciones de cifrado, en particular cuando solamente se implican pequeñas cantidades de datos. Esto permite una ejecución práctica que puede acelerar significativamente los procesos implicados en la realización de transacciones seguras en línea. Los métodos más comunes para asegurar transacciones en línea incluyen un conjunto de tres algoritmos. El primer algoritmo solamente se utiliza una vez en una sesión, y puede estar implantado en equipo físico (hardware) o en programación lógica (software), mientras que las otras operaciones se invocan con cada transacción de la sesión, y el coste en latencia de llamar a equipo físico externo, así como el coste en tiempo para ejecutar el algoritmo en software, se eliminan con esta invención.
En la figura 15 se muestra conceptualmente cómo ejecutar en la práctica lo que se tiene en una realización preferida ejecutada en la práctica en un ordenador principal que tiene el microprocesador que se ha descrito más arriba, que puede ser utilizado con efectividad, como se ha aprobado experimentalmente en IBM, en una ejecución práctica comercial del formato de instrucción de arquitectura de ordenador de instalación de desplazamiento largo, cuyas instrucciones son utilizadas por los programadores, normalmente en la actualidad los programadores "C". Estos formatos de instrucciones almacenados en el medio de almacenamiento pueden ser ejecutados en una arquitectura z del Servidor IBM, o alternativamente en máquinas que ejecutan otras arquitecturas. Pueden ser emulados en los servidores de ordenador principal de IBM existentes y futuros y en otras máquinas de IBM (por ejemplo, los Servidores de las Series p y los Servidores de las Series x). Pueden ser ejecutados en una máquina que funciona bajo Linux en una gran variedad de máquinas que utilizan equipos fabricados por IBM, Intel, AMD, Sun Microsystems y otros. Además de la ejecución de ese equipo bajo la arquitectura Z, también se puede utilizar Linux, así como máquinas que utilizan emulación por Hércules, UMX, FXI o Soluciones de Plataforma, en las que la ejecución se realiza generalmente en un modo de emulación. En modo de emulación, las instrucciones específicas que están siendo emuladas se descodifican, y una subrutina construida para ejecutar en la práctica las instrucciones individuales, como en una subrutina "C" o activador, o algún otro método para proporcionar un activador para un equipo físico especifico, que está dentro del conocimiento de los expertos en la técnica después de comprender la descripción de la realización preferida. Varias patentes de emulación de software y de hardware, incluyendo, sin estar limitados a, los documentos US 5551013, US 6009261, US 5574873, US 6308255, US 6463582 y US 5790825 ilustran la variedad de formas conocidas para conseguir la emulación de un formato de instrucción con arquitectura para una máquina diferente, para una máquina objetivo disponible para aquellos especialistas en la técnica, así como para aquellas técnicas de software comerciales utilizadas por los que se han referenciado con anterioridad.
En la arquitectura de ordenador preferida los formatos de instrucciones de desplazamiento previamente largo existentes para una instrucción no superescalar forman la dirección de almacenamiento de operador sumando el registro de base y el desplazamiento sin signo de 12 bits o el registro de base, el registro de índice y el desplazamiento sin signo de 12 bits y los nuevos formatos de instrucción de desplazamiento largo forman la dirección de almacenamiento de operador sumando el registro de base y el desplazamiento con signo de 20 bits o el registro de base, el registro de índice y el desplazamiento con signo de 20 bits.
Como se ilustra por la figura 15, estas instrucciones son ejecutadas en el hardware por un procesador o por la emulación del citado conjunto de instrucciones por el software que lo ejecuta en un ordenador que tiene un conjunto de instrucciones nativas diferentes.
En la figura 15, el número 501 muestra un almacenamiento de memoria de ordenador que contiene instrucciones y datos. Las instrucciones de desplazamiento largo descritas en esta arquitectura de ordenador estarían almacenadas inicialmente en este ordenador. El número 502 muestra un mecanismo para buscar instrucciones en una memoria de ordenador y también puede contener almacenamiento local de estas instrucciones que ha buscado. A continuación, las instrucciones en bruto se transfieren a un descodificador de instrucciones, número 503, en donde se determina que tipo de instrucción se ha buscado. El número 504 muestra un mecanismo para ejecutar las instrucciones. Esto puede incluir cargar los datos en un registro desde la memoria, número 501, almacenar los datos de vuelta a la memoria desde un registro, o ejecutar algún tipo de operación aritmética o lógica. Este tipo exacto de operación que va a ser ejecutado ha sido determinado previamente por el descodificador de instrucciones. Las instrucciones de desplazamiento largo descritas en esta arquitectura de ordenador serían ejecutadas aquí. Si las instrucciones de desplazamiento largo están siendo ejecutadas nativamente en un sistema de ordenador, entonces este diagrama se completa como se ha descrito más arriba. Sin embargo, si una arquitectura de conjunto de instrucciones, que contiene instrucciones de desplazamiento largo, está siendo emulada en otro ordenador, el proceso anterior debería ser ejecutado en la práctica en software en un ordenador principal, número 505. En este caso, los mecanismos que se han establecido más arriba serían típicamente ejecutados en la práctica como una o más subrutinas de software en este software de emulador. En ambos casos, se busca una instrucción, se descodifica y se ejecuta.
Más en particular, estas instrucciones de arquitectura se pueden utilizar con una arquitectura de ordenador con formatos de instrucciones existentes con un desplazamiento sin signo de 12 bits utilizado para formar la dirección de almacenamiento de operador y también uno que tenga formatos de instrucción adicionales que proporcionen bits de desplazamiento adicionales, preferiblemente 20 bits, que comprenden un desplazamiento con signo extendido utilizado para formar la dirección de almacenamiento de operador. Estas instrucciones de arquitectura de ordenador comprenden software de ordenador, almacenado en un medio de almacenamiento de ordenador, para producir el código que funciona en el procesador utilizando el software del ordenador, y comprende los códigos de instrucciones que van a ser utilizados con un compilador o emulador / intérprete que es almacenado en un medio 501 de almacenamiento del ordenador, y en el que la primera parte del código de instrucciones comprende un código de operación que especifica la operación que se va a ejecutar y una segunda parte que designa los operador para esa participación. Las instrucciones de desplazamiento largo permiten que direcciones adicionales sean directamente direccionadas con la utilización de la instrucción de instalación de desplazamiento largo.
Como se ilustra en la figura 15, estas instrucciones son ejecutadas en equipo por un procesador o por emulación del citado conjunto de instrucciones por el software que es ejecutado en un ordenador que tiene un conjunto de instrucciones nativas diferentes.
De acuerdo con la arquitectura de ordenador preferida, el campo de desplazamiento está definido en dos partes, siendo la parte menos significativa 12 bits denominados DL, DL1 para el operador 1 ó DL2 para el operador 2, y siendo la parte más significativa 8 bits denominados DH, DH1 para el operador 1 ó DH2 para el operador 2.
Además, la arquitectura de ordenador preferida tiene un formato de instrucción tal que el opcódigo (código de operador) se encuentra en las posiciones de bits 0 a 7 y 40 a 47, un registro objetivo denominado R1 en las posiciones de bits 8 a 11, un registro de índice denominado X2 en las posiciones de bits 12 a 15, un registro base denominado B2 en las posiciones de bits 16 a 19, un desplazamiento compuesto por dos partes, siendo la primera parte denominada DL2 en las posiciones de bits 20 a 31 y siendo la segunda parte denominada DH en las posiciones de bits 32 a 39.
Esta arquitectura de ordenador tiene un formato de instrucciones tal que el opcódigo se encuentra en las posiciones de bits 0 a 7 y 40 a 47, un registro de objetivo denominado R1 en las posiciones de bits 8 a 11, un registro de fuente denominado R3 en las posiciones de bits 12 a 15, un registro de base denominado B2 en las posiciones de bits 16 a 19, un desplazamiento compuesto por dos partes, siendo la primera parte denominada DL2 en las posiciones de bits 20 a 31 y siendo la segunda parte denominada DH2 en las posiciones de bits 32 a 39.
Además, las instrucciones de arquitectura de ordenador de la presente invención que tienen una instalación de desplazamiento largo tienen un formato de instrucciones tal que el opcódigo se encuentra en las posiciones de bits 0 a 7, y 40 a 47, un registro de objetivo denominado R1 en las posiciones de bits 8 a 11, un valor de máscara denominado M3 en las posiciones de bits 12 a 15, un registro base denominado B2 en las posiciones de bits 16 a 19, y un desplazamiento compuesto por dos partes, siendo la primera parte denominada DL2 en las posiciones de bits 20 a 31 y siendo la segunda parte denominada DH2 en las posiciones de bits 32 a 39.
Como se ilustra, la arquitectura de ordenador preferida del invento, con su instalación de desplazamiento largo, tiene un formato de instrucciones tal que el opcódigo se encuentra en las posiciones de bits 0 a 7 y 40 a 47, un valor inmediato denominado I2 en las posiciones de bits 8 a15, un registro de base denominado B2 en las posiciones de bit 16 a 19, un desplazamiento compuesto por dos partes, siendo la primera parte denominada DL1 en las posiciones de bits 20 a 31 y siendo la segunda parte denominada DH1 en las posiciones de bits 32 a 39.
La arquitectura de ordenador del invento, de instalación de desplazamiento largo opera efectivamente cuando utiliza nuevas instrucciones que son creadas, que solamente utilizan el formato de instrucciones con el nuevo desplazamiento sin signo de 20 bits.
Un ejemplo específico de la arquitectura del ordenador de la presente invención utiliza instrucciones existentes que tienen los formatos de instrucciones que tienen solamente un desplazamiento sin signo de 12 bit y ahora se definen para que se encuentren en los nuevos formatos de instrucciones para que tengan, ya sea el valor de desplazamiento sin signo de 12 bits existente cuando los 8 bits de orden elevado del desplazamiento, el campo DH, sean todos cero, o un valor con signo de 20 bits cuando los 8 bits de orden elevado del desplazamiento, campo DH, sean distintos de cero.

Claims (11)

1. Un método de calcular un código de autenticación de mensaje de datos en almacenamiento de un entorno informático, comprendiendo el citado método:
especificar, por medio de una instrucción de microprocesador, una unidad de datos para la cual se tiene que calcular el código de autenticación; y
calcular, por medio de la instrucción, un código de autenticación para la unidad de datos;
en el que la instrucción está asociada con un campo que identifica un valor de código de función, y un procesador que ejecuta la instrucción reconoce qué técnica de cifrado se va a utilizar para calcular el código de autenticación basándose en el valor del código de función;
que se caracteriza porque
un valor de código de función adicional se corresponde a una operación de consulta que hace que una palabra de estado se almacene en un bloque de parámetros, teniendo la palabra de estado una pluralidad de bits, en el que cuando un bit de la palabra de estado tiene un primer valor binario, entonces ese bit corresponde a un valor de código de función que corresponde a una función instalada, y cuando un bit de la palabra de estado tiene un segundo valor binario, entonces ese bit corresponde a un valor de código de función que corresponde a una función no instalada.
2. El método de la reivindicación 1, en el que la instrucción, cuando es ejecutada por el procesador, almacena el código de autenticación calculado en un primer operador.
3. El método de la reivindicación 1, en el que las técnicas de cifrado que corresponden a los valores de código de función incluyen una operación criptográfica con clave DEA de 64 bits, una operación criptográfica con dos claves Triple DEA de 64 bit, y una operación criptográfica con tres claves Triple DEA de 64 bits.
4. El método de la reivindicación 1, en el que el cálculo del código de autenticación de mensaje comprende proporcionar una clave criptográfica asociada a la unidad de datos.
5. El método de la reivindicación 1, en el que la instrucción es ejecutada por una unidad de proceso que emula una arquitectura de la instrucción, siendo diferente la citada arquitectura de la instrucción a una arquitectura de la unidad de proceso.
6. El método de la reivindicación 1, en el que la especificación comprende especificar una pluralidad de unidades de datos y el cálculo del código de autenticación comprende calcular el código de autenticación para la pluralidad de unidades de datos.
7. El método de la reivindicación 6, en el que calcular el código de autenticación comprende una operación de encadenamiento para calcular el código de autenticación de la pluralidad de unidades de datos.
8. El método de la reivindicación 1, en el que la instrucción se ejecuta en la práctica en al menos uno de entre el equipo físico (hardware) y la programación lógica (software).
9. El método de la reivindicación 1, en el que la especificación comprende proporcionar información de posición de una estructura de datos asociada a la unidad de datos.
10. Un aparato que comprende medios adaptados para realizar todos los pasos del método de acuerdo con cualquiera de las reivindicaciones de método precedentes.
11. Un programa de ordenador que comprende instrucciones para ejecutar todos los pasos del método de acuerdo con cualquiera de las reivindicaciones de método precedentes, cuando el citado programa de ordenador se ejecuta en un sistema de ordenador.
ES04730603T 2003-05-12 2004-04-30 Instruccion para calcular un codigo de autenticacion de mensaje de seguridad. Expired - Lifetime ES2278317T3 (es)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
ES2278317T3 true ES2278317T3 (es) 2007-08-01

Family

ID=33417040

Family Applications (1)

Application Number Title Priority Date Filing Date
ES04730603T Expired - Lifetime ES2278317T3 (es) 2003-05-12 2004-04-30 Instruccion para calcular un codigo de autenticacion de mensaje de seguridad.

Country Status (15)

Country Link
US (2) US7356710B2 (es)
EP (2) EP1650648B1 (es)
KR (2) KR20060103282A (es)
CN (2) CN100561423C (es)
AT (2) ATE373264T1 (es)
AU (1) AU2004236860B2 (es)
CA (1) CA2522995C (es)
DE (2) DE602004004079T2 (es)
ES (1) ES2278317T3 (es)
GB (2) GB2413877B (es)
IL (1) IL171907A0 (es)
PL (1) PL1588255T3 (es)
RU (2) RU2327204C2 (es)
TW (2) TWI354929B (es)
WO (1) WO2004099976A2 (es)

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
US8155313B2 (en) * 2005-02-03 2012-04-10 Yottamark, Inc. Systems and methods for employing 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
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
KR101123742B1 (ko) * 2005-12-23 2012-03-16 삼성전자주식회사 사용자 인터페이스와 소프트웨어 간의 신뢰 경로 설정 방법및 장치
JP4810289B2 (ja) * 2006-04-17 2011-11-09 ルネサスエレクトロニクス株式会社 メッセージ認証子生成装置、メッセージ認証子検証装置、及びメッセージ認証システム
US8210430B1 (en) 2011-02-24 2012-07-03 Yottamark, Inc. Methods for assigning traceability information to and retrieving traceability information from a store shelf
MX2010002554A (es) 2007-09-07 2010-04-01 Yottamark Inc Metodos y sistemas de atribucion de informacion de cosecha con identificadores unicos.
US8342393B2 (en) * 2007-09-07 2013-01-01 Yottamark, Inc. Attributing harvest information with unique identifiers
US8196827B1 (en) 2009-05-22 2012-06-12 Yottamark, Inc. Case labeling for field-packed produce
US8887990B2 (en) 2007-09-07 2014-11-18 Yottamark, Inc. Attributing harvest information with unique identifiers
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

Family Cites Families (23)

* 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
US4578530A (en) * 1981-06-26 1986-03-25 Visa U.S.A., Inc. End-to-end encryption system and method of operation
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 株式会社日立製作所 情報処理装置
EP0354774B1 (en) 1988-08-11 1996-04-10 International Business Machines Corporation Data cryptography using control vectors
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 ドライバ機能の動的管理方式及び動的管理方法
KR20020026370A (ko) * 1999-08-09 2002-04-09 러셀 비. 밀러 메시지 인증 코드를 발생시키기 위한 방법 및 장치
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

Also Published As

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

Similar Documents

Publication Publication Date Title
ES2278317T3 (es) Instruccion para calcular un codigo de autenticacion de mensaje de seguridad.
US8261048B2 (en) Optional function multi-function instruction in an emulated computing environment
ES2279365T3 (es) Tratamiento de instrucciones de resumen de mensaje.
EP1684167A2 (en) Method of processing signed displacement computer instruction