ES2279366T3 - Instrucciones de asistencia al tratamiento de un mensaje cifrado. - Google Patents
Instrucciones de asistencia al tratamiento de un mensaje cifrado. Download PDFInfo
- Publication number
- ES2279366T3 ES2279366T3 ES04731048T ES04731048T ES2279366T3 ES 2279366 T3 ES2279366 T3 ES 2279366T3 ES 04731048 T ES04731048 T ES 04731048T ES 04731048 T ES04731048 T ES 04731048T ES 2279366 T3 ES2279366 T3 ES 2279366T3
- Authority
- ES
- Spain
- Prior art keywords
- bit
- instruction
- value
- function
- code 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
Links
- 239000003607 modifier Substances 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 15
- 238000004590 computer program Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 48
- 238000004422 calculation algorithm Methods 0.000 description 19
- OTZZZISTDGMMMX-UHFFFAOYSA-N 2-(3,5-dimethylpyrazol-1-yl)-n,n-bis[2-(3,5-dimethylpyrazol-1-yl)ethyl]ethanamine Chemical compound N1=C(C)C=C(C)N1CCN(CCN1C(=CC(C)=N1)C)CCN1C(C)=CC(C)=N1 OTZZZISTDGMMMX-UHFFFAOYSA-N 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000001066 destructive effect Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Storage Device Security (AREA)
- Telephone Function (AREA)
- Executing Machine-Instructions (AREA)
- Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
- Peptides Or Proteins (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
Un método de cifrar o descifrar almacenamiento de un entorno de ordenador, comprendiendo dicho método: especificar, mediante una instrucción de microprocesador, una unidad de almacenamiento que ha de ser cifrada o descifrada; y cifrar o descifrar la unidad de almacenamiento; caracterizado porque la instrucción está asociada con un campo que identifica un valor de código de función y otro campo que identifica un valor de bit modificador, y un procesador que ejecuta la instrucción reconoce si una operación de cifrado o descifrado ha de ser realizada basada en el valor de código de función y el valor de bit modificador; y en el que un valor de código de función adicional corresponde a una operación de consulta que hace que una palabra de estado sea almacenada 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 el valor binario de 1 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 el valor binario de 0 entonces el bit corresponde a un valor de código de función correspondiente a una función sin instalar.
Description
Tratamiento de instrucciones de ayuda de mensaje
cifrado.
Este invento se refiere a la arquitectura de un
sistema de ordenador y particularmente al tratamiento de nuevas
instrucciones que aumentan la Arquitectura z de IBM y puede ser
emulada por otras arquitecturas.
Antes de nuestro invento IBM ha creado a través
del trabajo de muchos ingenieros de mucho talento que comienza con
máquinas conocidas como el Sistema IBM 360 en los años 1960 hasta
hoy, una arquitectura especial que, debido a su naturaleza esencial
para un sistema de ordenador, resultó conocida como "el ordenador
central" cuyos principios de funcionamiento establecen la
arquitectura de la máquina describiendo las instrucciones que pueden
ser ejecutadas al producirse la puesta en práctica en el
"ordenador central" de las instrucciones que habían sido
inventadas por inventores de IBM y adoptadas, a causa de su
contribución significativa para mejorar el estado de la máquina de
cálculo representada por el "ordenador central", como
contribuciones significativas por inclusión en los Principios de
Funcionamiento de IBM como se ha establecido durante años. La
Primera Edición de los Principios de Funcionamiento de la
Arquitectura z que fue publicada en Diciembre del 2000 se han
convertido en la referencia publicada estándar como
SA22-7832-00.
La publicación "Referencia de Servicios
Básicos CCA de Coprocesador Criptográfico IBM PCI y Guía para
Modelos 002 y 003 de IBM 4758 con Versión 2.40" (Online)
Septiembre de 2001, de Internacional Business Machines Corporation,
Charlotte, NC 28262-8563 USA, XP002291430 Recuperada
de Internet:
\underbar{URL:http://www.zone-h.org/files/}
\underbar{33/CCA\_Bas}ic_Services_240.pdf>, describe la Arquitectura Criptográfica Común de IBM.
La referencia WU L ET AL:
"Criptomaníaca: una arquitectura flexible y rápida para una
comunicación segura" COMUNICACIONES DEL 28º SIMPOSIUM
INTERNACIONAL SOBRE ARQUITECTURA DE ORDENADORES, ISCA 2001.
GOTEBORG, SUECIA, 30 DE JUNIO - 4 DE JULIO DE 2001, SIMPOSIUM
INTERNACIONAL SOBRE ARQUITECTURA DE ORDENADORES (ISCA), LOS
ALAMITOS, CA, IEEE COMP. SOC, US, 30 DE JUNIO DE 2001 páginas
104-113, XP010553867 ISBN:
0-7695-1162-7
describe un microprocesador criptográfico de acuerdo con el
preámbulo de la reivindicación 1ª.
Hemos determinado que otras nuevas instrucciones
ayudarían a la técnica y podrían ser incluidas en la máquina de
Arquitectura z y también emulada por otras en máquinas más simples,
como se ha descrito aquí.
El presente invento proporciona un método según
la reivindicación 1ª y un programa de ordenador y aparato
correspondiente según las reivindicaciones 6ª y 7ª,
respectivamente.
Las características de las realizaciones
preferidas del invento serán evidentes para un experto en la técnica
a partir de la siguiente descripción detallada del invento tomada
en unión con los dibujos adjuntos, en los que:
La fig. 1 es la instrucción de Mensaje Cifrado
(KM) en el formato de instrucciones RRE.
La fig. 2 es el Mensaje Cifrado con instrucción
de Encadenamiento (KMC) en el formato de instrucciones RRE.
La fig. 3 es una tabla que muestra los códigos
de función para la instrucción del Mensaje Cifrado de la fig. 1.
La fig. 4 es una tabla que muestra los códigos
de función para el Mensaje Cifrado con instrucción de Encadenamiento
de la fig. 2.
La fig. 5 es una representación de las
asignaciones de registro general para las instrucciones de KM y
KMC.
La fig. 6 ilustra el símbolo para el O Exclusivo
a Nivel de Bit.
La fig. 7 ilustra los símbolos para Encriptación
y Desencriptación de DEA.
La fig. 8 ilustra el formato para el bloque de
parámetros del KM-Query.
La fig. 9 ilustra el bloque de parámetros de
KM-DEA.
La fig. 10 ilustra la Operación de Cifrado de
KM-DEA.
La fig. 11 ilustra la Operación de Descifrado de
KM-DEA.
La fig. 12 ilustra el formato para el bloque de
parámetros para KM-TDA-128.
La fig. 13 ilustra la Operación de Cifrado
KM-TDEA-128.
La fig. 14 ilustra la Operación de Descifrado de
KM-TDEA-128.
La fig. 15 ilustra el formato para el bloque de
parámetros para KM-TDEA-192.
La fig. 16 ilustra la Operación de Cifrado
KM-TDEA-192.
La fig. 17 ilustra la Operación de Descifrado de
KM-TDEA-192.
La fig. 18 ilustra el formato para el bloque de
parámetros para KMC-Query.
La fig. 19 ilustra el formato para el bloque de
parámetros para KMC-DEA.
La fig. 20 ilustra la Operación de Cifrado
KMC-DEA.
La fig. 21 ilustra la Operación de Descifrado de
KMC-DEA.
La fig. 22 ilustra el formato para el bloque de
parámetros para KMC-TDEA-128.
La fig. 23 ilustra la Operación de Cifrado
KMC-TDEA-128.
La fig. 24 ilustra la Operación de Descifrado de
KMC-TDEA-128.
La fig. 25 ilustra el formato para el bloque de
parámetros para KMC-TDEA-192.
La fig. 26 ilustra la Operación de Cifrado
KMC-TDEA-192.
La fig. 27 ilustra la Operación de Descifrado de
KMC-TDEA-192.
La fig. 28 es una tabla que muestra la prioridad
de ejecución de KM y KMC.
La fig. 29 ilustra nuestro coprocesador
criptográfico; y
La fig. 30 muestra la realización generalizada
preferida de una 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, bien en un
sistema de ordenador que emplea estas instrucciones de arquitectura
o bien como es usado en emulación de nuestras instrucciones de
arquitectura.
La instrucción de MENSAJE CIFRADO (KM) y la
instrucción de MENSAJE CIFRADO CON ENCADENAMIENTO (KMC) serán
descritas en primer lugar, seguidas por una descripción del sistema
de ordenador preferido para ejecutar estas instrucciones. Como
alternativa, se describirá un segundo sistema de ordenador preferido
que emula otro sistema de ordenador para ejecutar estas
instrucciones.
La fig. 1 es la instrucción de Mensaje Cifrado
(KM) en el formato de instrucciones RRE.
La fig. 2 es la instrucción de Mensaje Cifrado
con Encadenamiento (KMC) en el formato de instrucciones RRE.
Es realizada una función especificada por el
código de función en el registro general 0.
Los Bits 16-23 de la instrucción
son ignorados. Las posiciones de Bit 57-63 del
registro general 0 contienen el código de función. Las figs. 3 y 4
muestran los códigos de función asignados para el MENSAJE CIFRADO y
EL MENSAJE CIFRADO CON ENCADENAMIENTO, respectivamente. Todos los
demás códigos de función están sin asignar. Para funciones clave,
el bit 56 es el bit modificador que especifica si se ha de realizar
una operación de codificación o descodificación. El bit modificador
es ignorado por todas las demás de funciones. Todos los demás bits
del registro general 0 son ignorados. El registro general 1 contiene
la dirección lógica del byte más a la izquierda del bloque de
parámetros en almacenamiento. En el modo de direccionamiento de
24-bits, el contenido de las posiciones de bit
40-63 del registro general 1 constituye la
dirección, y el contenido de las posiciones de bit
0-39 es ignorado. En el modo de direccionamiento de
31-bits, el contenido de las posiciones de bit
33-63 del registro general 1 constituye la
dirección, y el contenido de las posiciones de bit
0-32 es ignorado.
En el modo de direccionamiento de
64-bits, el contenido de las posiciones de bit
0-63 del registro general 1 constituye la
dirección.
Los códigos de función para el MENSAJE CIFRADO
están mostrados en la fig. 3.
Los códigos de función para el MENSAJE CIFRADO
CON ENCADENAMIENTO están mostrados en la fig. 4.
Todos los demás códigos de función están sin
asignar. La función de consulta proporciona los medios para indicar
la disponibilidad de las otras funciones. El contenido de los
registros generales R1, R2 y R1 + 1 es ignorado por la función
consulta.
Para todas las demás funciones, el segundo
operando es cifrado como se ha especificado por el código de función
usando una clave criptográfica en el bloque de parámetros, y el
resultado es colocado en la ubicación del primer operando. Para el
MENSAJE CIFRADO CON ENCADENAMIENTO, el cifrado también usa un valor
de encadenamiento inicial en el bloque de parámetros, y el valor de
encadenamiento es actualizado como parte de la operación.
El campo R1 designa un registro general y debe
designar un registro con numeración par, de otro modo, se reconoce
una excepción de especificación.
El campo R2 designa un par
par-impar de registros generales y debe designar un
registro de numeración par; de otro modo, se reconoce una excepción
de especificación.
La ubicación del byte más a la izquierda del
primer y segundo operandos es especificada por el contenido de los
registros generales R1 y R2, respectivamente. El número de bytes en
la ubicación del segundo operando es especificado en el registro
general R2 + 1. El primer operando tiene la misma longitud que el
segundo operando.
Como parte de la operación, las direcciones en
los registros generales R1 y R2 son incrementadas por el número de
bytes procesados, y la longitud en el registro general R2 + 1 es
disminuida por el mismo número. La formación y actualización de las
direcciones y la longitud depende del modo de direccionamiento.
En el modo de direccionamiento de 24 bits, el
contenido de posiciones de bits 40-63 de los
registros generales R1 y R2 constituye la dirección del primer y
segundo operandos, respectivamente, y el contenido de posiciones de
bits 0-39 es ignorado, los bits
40-63 de las direcciones actualizadas reemplazan los
bits correspondientes en los registros generales R1 y R2, realizados
desde la posición de bit 40 de la dirección actualizada son
ignorados, y el contenido de las posiciones de bits
32-39 de los registros generales R1 y R2 es ajustado
a cero. En el modo de direccionamiento de 31 bits, el contenido de
las posiciones de bits 33-63 de los registros
generales R1 y R2 constituyen las direcciones del primer y segundo
operandos, respectivamente, y el contenido de las posiciones de bits
0-32 son ignorados; los bits 33-63
de las direcciones actualizadas reemplazan los bits correspondientes
en los registros generales R1 y R2, realizados desde la posición 33
de bit de la dirección actualizada son ignorados, y el contenido de
la posición 33 de bit de los registros generales R1 y R2 es ajustado
a cero. En el modo de direccionamiento de 64 bits, el contenidos de
las posiciones de bits 0-63 de los registros
generales R1 y R2 constituye las direcciones del primer y segundo
operandos, respectivamente; los bits 0-63 de las
direcciones actualizadas reemplazan el contenido de los registros
generales R1 y R2, y realizados desde la posición 0 de bit son
ignorados.
Tanto en el modo de direccionamiento de 24 bits
como en el de 31 bits, el contenido de las posiciones de bits
32-63 del registro general R2 + 1 forma un entero
binario sin signo de 32 bits que especifica el número de bytes en el
primer y segundo operandos, y el contenido de las posiciones de bits
0-31 es ignorado; los bits 32-63 del
valor actualizado reemplazan a los bits correspondientes en el
registro general R2 + 1. En el modo de direccionamiento de 64 bits,
el contenido de las posiciones de bits 0-63 del
registro general R2 + 1 forman un entero binario sin signo de 64
bits que especifica el número de bytes en el primer y segundo
operandos; y el valor actualizado reemplazan el contenido del
registro general R2 + 1.
En el modo de direccionamiento de 24 bits o de
31 bits, el contenido de las posiciones de bits 0-31
de los registros generales R1, R2, y R2 + 1, permanece siempre sin
cambios. La fig. 5 muestra el contenido de los registros generales
ya descritos.
En el modo de registro de acceso, los registros
de acceso 1, R1, y R2 especifican los espacios de dirección que
contienen el bloque de parámetros, el primer y segundo operandos,
respectivamente.
El resultado es obtenido como si el tratamiento
comienza en el extremo izquierdo tanto del primer como del segundo
operandos y prosigue o avanza a la derecha, bloque por bloque. La
operación es finalizada cuando el número de bytes en el segundo
operando como se ha especificado en el registro general R2 + 1 ha
sido tratado y colocado en la ubicación del primer operando
(llamada terminación normal) o cuando un número de bloques
determinado de CPU que es menor que la longitud del segundo operando
ha sido tratado (llamado terminación parcial). El número
determinado de CPU de bloques depende del modelo, y puede ser un
número diferente cada vez que la instrucción es ejecutada. El
número de bloques determinado de CPU usualmente no es cero. En
ciertas situaciones inusuales, este número puede ser cero, y el
código de condición 3 puede ser ajustado sin progreso. Sin embargo,
la CPU protege contra nuevas ocurrencias sin fin de este caso sin
progreso.
El resultado en la ubicación del primer operando
y el campo del valor de encadenamiento son impredecibles si ocurre
vez cualquiera de las situaciones siguientes:
1. El campo de clave criptográfica solapa
cualquier parte del primer operando.
2. El campo del valor de encadenamiento solapa
cualquier parte del primer operando o del segundo operando.
3. El primer y segundo operandos se solapan de
manera destructiva. Los operandos se dice que se solapan de manera
destructiva cuando la ubicación del primer operando sería usada como
una fuente después de que los datos hubieran sido movidos a él,
suponiendo que el tratamiento ha de ser realizado de izquierda a
derecha y un byte cada vez.
Cuando la operación finaliza debido a la
terminación normal, el código de condición 0 es ajustado y el valor
resultante en R2 + 1 es cero. Cuando la operación finaliza debido a
la terminación parcial, el código de condición 3 es ajustado y el
valor resultante en R2 + 1 no es cero.
Cuando un evento PER de alteración de
almacenamiento es reconocido, son almacenados menos de 4 Kbytes
adicionales a las ubicaciones del primer operando antes de que se
haya hecho un informe del evento.
Cuando la longitud del segundo operando es
inicialmente cero, el bloque de parámetros, primer, y segundo
operandos no son accedidos, los registros generales de R1, R2, y R2
+ 1 no son cambiados, y el código de condición 0 es ajustado.
Cuando el contenido de los campos R1 y R2 es el
mismo, el contenido de los registros designados es aumentado sólo
por el número de bytes procesados, no por dos veces el número de
bytes procesados.
Como se ha observado por otras CPU y programas
de canal, las referencias al bloque de parámetros y operandos de
almacenamiento pueden ser referencias de múltiple acceso, los
accesos a estas ubicaciones de almacenamiento no son necesariamente
de bloques concurrentes, y la secuencia de estos accesos o
referencias es indefinida.
En ciertas situaciones inusuales, la ejecución
de la instrucción puede completarse ajustando el código de
condición 3 sin actualizar los registros y el valor de
encadenamiento para reflejar la última unidad del primer y segundo
operandos procesados. El tamaño de la unidad procesada en este caso
depende de la situación y el modelo, pero está limitado de tal
manera que la parte del primer y segundo operandos que han sido
procesados y no informados no se solapan en el almacenamiento. En
todos los casos, el cambio de bits es ajustados y los eventos de
alteración de almacenamiento PER son informados, cuándo es
aplicable, para todas las ubicaciones del primer operando
procesado.
Excepciones de acceso pueden ser informadas para
una parte mayor de un operando que es procesado en una ejecución
única de la instrucción; sin embargo, las excepciones de acceso no
son reconocidas para ubicaciones más allá de la longitud de un
operando no para ubicaciones de más de 4 Kbytes más allá de la
ubicación real que están siendo procesados.
Los siguientes símbolos son usados en la
descripción subsiguiente de las funciones de MENSAJE CIFRADO y
MENSAJE CIFRADO CON ENCADENAMIENTO. Para funciones de algoritmo de
encriptación de datos (DEA), es ignorado el bit de paridad de clave
DEA en cada byte de la clave DEA, y la operación prosigue
normalmente, independientemente de la paridad de la clave DEA de la
clave. Otra descripción del algoritmo de encriptación de datos puede
ser encontrada en el Algoritmo de Encriptación de Datos,
ANSI-X3.92.1981, Norma Nacional Americana para
Sistemas de Información.
La fig. 6 ilustra el símbolo para la O exclusiva
a nivel de bit, la fig. 7 ilustra el símbolo para la codificación y
descodificación DEA.
Las ubicaciones de los operandos y direcciones
usadas por la instrucción son como se ha mostrado en la fig. 5.
El bloque de parámetros usado para la función
KM-Query tiene el formato mostrado en la fig. 8
Una palabra de estado de 128 bits es almacenada
en el bloque de parámetros. Los bits 0-127 de este
campo corresponden a códigos de función 0-127,
respectivamente, de la instrucción de MENSAJE CIFRADO. Cuando un bit
es uno, la función correspondiente es instalada; de lo contrario,
la función no es instalada.
El código de condición 0 es ajustado cuando la
ejecución de la función KM-Query se completa; el
código de condición 3 no es aplicable a esta función.
Las ubicaciones de los operandos y direcciones
usados por la instrucción son como se ha mostrado en la fig. 5.
El bloque de parámetros usado para la función
KM-DEA tienen el formato mostrado en la fig. 9.
Cuando el bit modificador en el registro general
0 es cero, una operación de cifrado es realizada. Los bloques de
texto simple o sin cifrar de 8 bytes (P1, P2, ..., Pn) en el
operando 2 son cifrados usando el algoritmo DEA con la clave
criptográfica de 64 bits en el bloque de parámetros. Cada bloque de
texto simple o sin cifrar es cifrado independientemente; es decir,
la operación de cifrado es realizada sin encadenamiento. Los bloques
de texto cifrado (C1, C2, ..., Cn) están almacenados en el operando
1. La operación está mostrada en la fig. 10.
Cuando el bit modificador en el registro general
0 es uno, una operación de descifrado es realizada. Los bloques de
texto cifrado de 8 bytes (C1, C2, ..., Cn) en el operando 2 son
descifrados usando el algoritmo DEA con la clave criptográfica de
64 bits en el bloque de parámetro. Cada bloque de texto cifrado es
descifrado independientemente; es decir, la operación de descifrado
es realizada sin encadenamiento. Los bloques de texto simple o sin
cifrar (P1, P2, ..., Pn) son almacenados en el operando 1. La
operación de descifrado KM-DEA es mostrada en la
fig. 11.
Las ubicaciones de los operandos y direcciones
usados por la instrucción son como los mostrados en la fig. 5. El
bloque de parámetros usado para la función KM-TDEA
12 está mostrado en la fig. 12.
Cuando el bit modificador en el registro general
0 es cero, es realizada una operación de cifrado. Los bloques de
texto simple o sin cifrar de 8 bytes (P1, P2, ..., Pn) en el
operando 2 son cifrados usando el algoritmo de TDEA (Triple DEA)
con las dos claves criptográficas de 64 bits en el bloque de
parámetros. Cada bloque de texto simple o sin cifrar es descifrado
independientemente; es decir, la operación de descifrado es
realizada sin encadenamiento. Los bloques de texto simple o sin
cifrar (P1, P2, ..., Pn) son almacenados en el operando 1. La
operación de cifrado KM-TDEA 128 está mostrada en la
fig. 13.
Cuando el bit modificador en el registro general
0 es uno, es realizada una operación de descifrado. Los bloques de
texto cifrado de 8 bytes (P1, P2, ..., Pn) en el operando 2 son
descifrados usando el algoritmo de TDEA con las dos claves
criptográficas de 64 bits en el bloque de parámetros. Cada bloque de
texto cifrado es descifrado independientemente; es decir, la
operación de descifrado es realizada sin encadenamiento. Los bloques
de texto simple o sin cifrar (P1, P2, ..., Pn) son almacenados en
el operando 1. La operación de descifrado
KM-TDEA-128 está mostrada en la
fig. 14.
Las ubicaciones de los operandos y direcciones
usadas por la instrucción son como se ha mostrado en la fig. 5.
El bloque de parámetros usado para la función
KM-TDEA 192 tiene el formato mostrado en la fig.
15.
Cuando el bit modificador en el registro general
0 es cero, una operación de cifrado es realizada. Los bloques de
texto simple o sin cifrar de 8 bytes (P1, P2, ..., Pn) en el
operando 2 son cifrados usando el algoritmo TDEA con las tres
claves criptográficas de 64 bits en el bloque de parámetros. Cada
bloque de texto simple o sin cifrar es cifrado independientemente;
es decir, la operación de cifrado es realizada sin encadenamiento.
Los bloques de texto cifrado (C1, C2, ..., Cn) son almacenados en
el operando uno. La operación de cifrado
KM-TDEA-192 está mostrada en la
fig. 16.
Cuando el bit modificador en el registro general
0 es uno, es realizada una operación de descifrado. Los bloques de
texto cifrado de 8 bytes (C1, C2, ..., Cn) en el operando 2 son
descifrados usando el algoritmo TDEA con las tres claves
criptográficas de 64 bits en el bloque de parámetro. Cada bloque de
texto cifrado es descifrado independientemente; es decir, la
operación de descifrado de E. realizada sin encadenamiento. Los
bloques de texto simple o sin cifrar (P1, P2, ..., Pn) son
almacenados en el operando 1. La operación de descifrado
KM-TDEA-192 está mostrada en la
fig. 17.
Las ubicaciones de los operandos y direcciones
usados por la instrucción son como se ha mostrado en la fig. 5.
El bloque de parámetros usado para la función
KMC-Query tiene el formato mostrado en la fig.
18.
Una palabra de estado de 128 bits es almacenada
en el bloque de parámetros. Los bits 0-127 de este
campo corresponden a códigos de función 0-127,
respectivamente, de la instrucción de MENSAJE CIFRADO CON
ENCADENAMIENTO. Cuando un bit es uno, la función correspondiente es
instalada; de otro modo, la función no es instalada.
El código de condición 0 es ajustado cuando la
ejecución de la función KMC-Query se completa; el
código de condición 3 no es aplicable a esta función.
Las ubicaciones de los operandos y direcciones
usadas por la instrucción están mostradas en la fig. 5.
El bloque de parámetros usado para la función
KMC-DEA tiene el formato mostrado en la fig. 19.
Cuando el bit modificador en el registro general
0 es cero, es realizada una operación de cifrado. Los bloques de
texto simple o sin cifrar de 8 bytes (P1, P2, ..., Pn) en el
operando 2 son cifrados usando el algoritmo DEA con la clave
criptográfica de 64 bits y el valor de encadenamiento de 64 bits en
el bloque de parámetros.
El valor de encadenamiento, llamado valor
inicial de encadenamiento (ICV), para derivar el primer bloque de
texto cifrado es el valor de encadenamiento en el bloque de
parámetros; el valor de encadenamiento para derivar cada bloque de
texto cifrado subsiguiente es el correspondiente al bloque de texto
cifrado previo. Los bloques de texto cifrado (C1, C2, ..., Cn) son
almacenados en el operando 1. El último bloque de texto cifrado es
el valor de encadenamiento de salida (OCV) y es almacenado en el
campo valor de encadenamiento del bloque de parámetros. La
operación de cifrado KMC-DEA está mostrada en la
fig. 20.
Cuando el bit modificador en el registro general
0 es uno, es realizada una operación de descifrado. Los bloques de
texto cifrado de 8 bytes (C1, C2, ..., Cn) en el operando 2 son
descifrados usando el algoritmo DEA con la clave criptográfica de
64 bits y el valor de encadenamiento de 64 bits en el bloque de
parámetros.
El valor de encadenamiento, llamado valor de
encadenamiento inicial (ICV), para derivar el primer bloque de
texto simple o sin cifrar está en el bloque de parámetros; el valor
de encadenamiento para derivar cada bloque de texto simple o sin
cifrar subsiguiente es el correspondiente al bloque de texto cifrado
previo. Los bloques de texto simple o sin cifrar (P1, P2, ..., Pn)
son almacenados en el operando 1. El último bloque de texto cifrado
es el valor de encadenamiento de salida (OCV) y es almacenado en el
campo valor de encadenamiento en el bloque de parámetro. La
operación de descifrado KMC-DEA está mostrada en la
fig. 21.
Las ubicaciones de los operandos y direcciones
usados por la instrucción están mostradas en la fig. 5.
El bloque de parámetros usado para la función
KMC-TDEA-128 tiene el formato
mostrado en la fig. 22.
Cuando el bit modificador en el registro general
0 es cero, es realizada una operación de cifrado. Los bloques de
texto simple o sin cifrar de 8 bytes (P1, P2, ..., Pn) en el
operando 2 son cifrados usando 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 valor de encadenamiento, llamado valor
inicial de encadenamiento (ICV), para derivar el primer bloque de
texto cifrado es el valor de encadenamiento en el bloque de
parámetros; el valor de encadenamiento para derivar cada bloque de
texto cifrado subsiguiente es el correspondiente al bloque de texto
cifrado previo. Los bloques de texto cifrado (C1, C2, ..., Cn) son
almacenados en el operando 1. El último bloque de texto cifrado es
el valor de encadenamiento de salida (OCV) y es almacenado en el
campo del valor de encadenamiento del bloque de parámetros. La
operación de cifrado KMC-TDEA-128
está mostrada en la fig. 23.
Cuando el bit modificador en el registro general
0 es uno, es realizada una operación de descifrado. Los bloques de
texto cifrado de 8 bytes (C1, C2, ..., Cn) en el operando 2 son
descifrados usando 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 valor de encadenamiento, llamado valor de
encadenamiento inicial (ICV), para derivar el primer bloque de
texto simple o sin cifrar está en el bloque de parámetros; el valor
de encadenamiento para derivar cada bloque de texto simple o sin
cifrar subsiguiente es el correspondiente al bloque de texto cifrado
previo. Los bloques de texto simple o sin cifrar (P1, P2, ..., Pn)
son almacenados en el operando 1. El último bloque de texto cifrado
es el valor de encadenamiento de salida (OCV) y es almacenado en el
campo valor de encadenamiento en el bloque de parámetro. La
operación de descifrado KMC-TDEA-128
está mostrada en la fig. 24.
Las localizaciones de los operandos y
direcciones usados por la instrucción están mostradas en la fig.
5.
El bloque de parámetros usado para la función
KMC-TDEA-192 tiene el formato
mostrado en la fig. 25.
Cuando el bit modificador en el registro general
0 es cero, es realizada una operación de cifrado. Los bloques de
texto simple o sin cifrar de 8 bytes (P1, P2, ..., Pn) en el
operando 2 son cifrados usando el algoritmo TDEA con las tres
claves criptográficas de 64 bits y el valor de encadenamiento de 64
bits en el bloque de parámetros.
El valor de encadenamiento, llamado valor
inicial de encadenamiento (ICV), para derivar el primer bloque de
texto cifrado es el valor de encadenamiento en el bloque de
parámetros; el valor de encadenamiento para derivar cada bloque de
texto cifrado subsiguiente es el correspondiente al bloque de texto
cifrado previo. Los bloques de texto cifrado (C1, C2, ..., Cn) son
almacenados en el operando 1. El último bloque de texto cifrado es
el valor de encadenamiento de salida (OCV) y es almacenado en el
campo valor de encadenamiento del bloque de parámetros. La
operación de cifrado KMC-TDEA-192
está mostrada en la fig. 26.
\newpage
Cuando el bit modificador en el registro general
0 es uno, es realizada una operación de descifrado. Los bloques de
texto cifrado de 8 bytes (C1, C2, ..., Cn) en el operando 2 son
descifrados usando el algoritmo TDEA con las tres claves
criptográficas de 64 bits y el valor de encadenamiento de 64 bits en
el bloque de parámetros.
El valor de encadenamiento, llamado valor de
encadenamiento inicial (ICV), para derivar el primer bloque de
texto simple o sin cifrar está en el bloque de parámetros; el valor
de encadenamiento para derivar cada bloque de texto simple o sin
cifrar subsiguiente es el correspondiente al bloque de texto cifrado
previo. Los bloques de texto simple o sin cifrar (P1, P2, ..., Pn)
son almacenados en el operando 1. El último bloque de texto cifrado
es el valor de encadenamiento de salida (OCV) y es almacenado en el
campo valor de encadenamiento en el bloque de parámetros. La
operación de descifrado KMC-TDEA-192
está mostrada en la fig. 27.
Una excepción de especificaciones es reconocida
y ninguna otra acción es tomada si ocurre cualquiera de las
siguientes cosas:
1. Los bits 57-63 del registro
general 0 especifican un código de función sin asignar o sin
instalar.
2. Los campos R1 o R2 designan un registro de
numeración par o registro general 0.
3. La longitud del segundo operando no es un
múltiplo del tamaño del bloque de datos de la función designada
(véase fig. 7-3 en la página 7-35
para determinar los tamaños del bloque de datos para funciones de
MENSAJE CIFRADO; véase fig. 7-4 en la página
7-35 para determinar los tamaños del bloque de datos
para funciones de MENSAJE CIFRADO CON ENCADENAMIENTO). Esta
condición de excepción de especificación no se aplica a las
funciones de consulta.
\vskip1.000000\baselineskip
Código de condición resultante:
- 0
- Terminación normal
- 1
- - -
- 2
- - -
- 3
- Terminación parcial
\vskip1.000000\baselineskip
Excepciones del programa:
Acceso (buscar, operando 2 y clave
criptográfica; almacenar, operando 1; buscar y almacenar, valor de
encadenamiento)
Operación (si la ayuda de seguridad del mensaje
no está instalada)
\vskip1.000000\baselineskip
La fig. 28 es una tabla que muestra la prioridad
de ejecución de KM y KMC.
Notas de programación:
1. Cuando el código 3 de condición es ajustado,
los registros generales que contienen las direcciones y longitud
del operando, y, para el MENSAJE CIFRADO CON ENCADENAMIENTO, el
valor de encadenamiento en el bloque de parámetros, son
actualizados usualmente de tal manera que el programa puede
simplemente bifurcarse de nuevo a la instrucción para continuar la
operación.
Para situaciones inusuales, la CPU se protege
contra nuevas ocurrencias sin fin del caso sin progreso y se
protege también contra código 3 de condición de ajuste cuando la
parte del primer y segundo operandos que han de ser procesados de
nuevo se solapan en almacenamiento. Así, el programa puede
bifurcarse de manera segura de nuevo a la instrucción siempre que
el código 3 de condición esté ajustado sin exposición a un bucle sin
fin y sin exposición a volver a intentar de modo incorrecto la
instrucción.
2. Si la longitud del segundo operando no es
cero inicialmente y el código 0 de condición es ajustado, los
registros son actualizados de la misma manera que el código 3 de
condición. Para el MENSAJE CIFRADO CON ENCADENAMIENTO, el valor de
encadenamiento en este caso es tal que los operandos adicionales
pueden ser procesados como si fuesen parte de la misma cadena.
3. Para guardar el almacenamiento, el primer y
segundo operandos pueden solaparse exactamente o el punto de
comienzo del primer operando puede estar a la izquierda del punto de
comienzo del segundo operando. En cualquier caso, el solapamiento
no es destructivo.
La realización preferida proporciona un
cripto-coprocesador que puede ser usado con las
instrucciones descritas aquí y para ejecutar mensajes clave y
ayudar en una variedad de tareas de mensajes de encadenamiento que
pueden ser empleadas para uso encadenado y criptográfico con las
instrucciones apropiadas.
La fig. 29 ilustra nuestro coprocesador
criptográfico que está sujeto directamente a un trayecto de datos
común a todas las unidades de ejecución internas en el
microprocesador de propósito general, que tiene múltiples segmentos
(pipelines) de ejecución. La línea (1) de transmisión interna del
microprocesador que es común a todas las otras unidades de
ejecución está unida a la unidad de control criptográfico (2), y la
unidad de control mira la línea de transmisión para las
instrucciones de procesador que debería ejecutar.
La unidad de control criptográfica 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 tratamiento central en un microprocesador de propósito general
que proporciona el hardware disponible (E_{0}....E_{n}), o desde
una combinación del mismo en la realización preferida que tiene
múltiples segmentos de ejecución) para la unidad de tratamiento
central. Cuando una instrucción criptográfica es encontrada en el
registro (3) de comandos u órdenes, la unidad de control (2) invoca
al algoritmo apropiado desde el hardware disponible. Los datos del
operando son entregados sobre la misma línea de transmisión del
microprocesador interno mediante un registro FIFO de entrada (4).
Cuando una operación es completada una banderola es ajustada 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 nuestro
invento está diseñada para ser extensible para incluir tantos
motores de hardware como se requiera por una implantación particular
que depende de los objetivos de prestaciones del sistema. Los
trayectos de datos a los registros de entrada y salida (7) son
comunes entre todos los motores.
La realización preferida de las funciones
criptográficas del invento es implantada en el hardware de la unidad
de ejecución en la CPU y esta implantación permite una latencia
inferior para llamar y ejecutar operaciones de encriptación o
codificación y aumenta la eficiencia.
Esta latencia disminuida mejora ampliamente la
capacidad de los procesadores de propósito general en sistemas que
hacen frecuentemente muchas operaciones de encriptación,
particularmente cuando sólo están involucradas cantidades pequeñas
de datos. Esto permite una implantación que puede acelerar
significativamente los procesos implicados en asegurar
transacciones en línea. La mayoría de los métodos comunes para
asegurar transacciones en línea implica un conjunto de tres
algoritmos. El primer algoritmo es solamente usado una vez por
sesión, y puede ser implantado en el hardware o software, mientras
las otras operaciones son invocadas con cada transacción de la
sesión, y el coste en latencia de hardware externo que llama así
como el coste en tiempo de ejecutar el algoritmo en el software son
ambos eliminados con este invento.
En la fig. 30 hemos mostrado conceptualmente
cómo poner en práctica lo que tenemos en una realización preferida
implantada en un ordenador principal que tiene el microprocesador
descrito antes que puede ser usado de manera efectiva, como hemos
probado experimentalmente dentro de IBM, en una implantación
comercial del formato de inspección de arquitectura del ordenador
de facilidad de desplazamiento largo las instrucciones son usadas
por programadores, usualmente hoy programadores "C". Estos
formatos de instrucciones almacenados en el medio de almacenamiento
pueden ser ejecutados en un Servidor IBM de Arquitectura Z, 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
servidores pSeries y servidores xSeries). Pueden ser ejecutados en
máquinas que funcionan en Linux en una amplia variedad de máquinas
que usan hardware fabricado por IBM, Intel, AMD, Sun Microsystems y
otros. Además de la ejecución en ese hardware bajo una Arquitectura
Z, Linux puede ser usado así como máquinas que usan emulación por
Hércules, UMX, FXI o Soluciones de Plataforma, donde la ejecución
generalmente es en un modo de emulación. En el modo de emulación la
instrucción específica que es emulada es descodificada, y una
subrutina construida para implantar la instrucción individual, como
en una subrutina "C" o controlador, o algún otro método de
proporcionar un controlador para el hardware especifico como queda
dentro de la experiencia de aquellos técnicos después de la
comprensión de la descripción de la realización preferida.
Distintas patentes de emulación de software y hardware que incluyen,
pero no están limitadas a los documentos US 5551013, US6009261,
US5574873, US6308255, US6463582 y US5790825, ilustran la variedad
de los modos conocidos 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 los expertos en la técnica, así
como a aquellas técnicas comerciales de software usadas por los
citados anteriormente.
En la realización preferida los formatos de
instrucción de desplazamiento largo previo para una instrucción no
superescalar forma la dirección de almacenamiento del operando
sumando el registro 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
operando mediante la suma del registro de base y el desplazamiento
con signo de 20 bits o el registro base, el registro de índice, y
el desplazamiento con signo de 20 bits.
Como se ha ilustrado en la fig. 20, estas
instrucciones son ejecutadas en hardware por un procesador o por
emulación de dicha instrucción ajustada por software que se ejecuta
en un ordenador que tiene un ajuste de instrucción original
diferente.
En la fig. 30, #501 muestra un almacenamiento de
memoria de ordenador que contiene instrucciones y datos. Las
instrucciones de desplazamiento largo descritas en este invento se
almacenarían inicialmente en este ordenador. #502 muestra un
mecanismo para buscar instrucciones desde una memoria de ordenador y
puede también contener memoria tampón local de estas instrucciones
que ha buscado. A continuación las instrucciones nuevas son
transferidas a un descodificador de instrucción, #503, donde
determina qué tipo de instrucción ha sido buscado. #504, muestra un
mecanismo para ejecutar instrucciones. Esto puede incluir cargar
datos a un registro desde la memoria, #501, que almacena datos de
nuevo a la memoria desde un registro, o que realiza algún tipo de
operación aritmética o lógica. Este tipo exacto de operación que ha
de ser realizada ha sido previamente determinado por el
descodificador de instrucción. Las instrucciones de desplazamiento
largo descritas en este invento serían ejecutadas aquí. Si las
instrucciones de desplazamiento largo están siendo ejecutadas
originalmente en un sistema de ordenador, entonces este diagrama es
completo como se ha descrito antes. Sin embargo, si una arquitectura
de ajuste de instrucción, que contiene instrucciones de
desplazamiento largo, está siendo emulada en otro ordenador, el
proceso anterior sería implantado en el software en un ordenador
anfitrión, #505. En este caso, los mecanismos antes establecidos
serían típicamente implantados como una o más subrutinas de software
dentro del software del emulador. En ambos casos una instrucción es
buscada, descodificada y ejecutada.
Más particularmente, estas instrucciones de
arquitectura pueden ser usadas con una arquitectura de ordenador
con formatos de instrucción existentes con un desplazamiento sin
signo de 12 bits usado para formar la dirección de almacenamiento
del operando y también uno que tienen formatos de instrucción
adicional que proporcionan un desplazamiento de bits adicional,
preferiblemente 20 bits, que comprende un desplazamiento con signo
extendido usado para formar la dirección de almacenamiento del
operando. 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
del procesador que utiliza el software del ordenador, y que
comprende el código de instrucción para usar por un compilador o
emulador/intérprete que es almacenado en un medio 501 de
almacenamiento de ordenador, y en el que la primera parte del
código de instrucción comprende un código de operación que ha
especificado la operación que ha de ser realizada y una segunda
parte que designa los operandos para los que participa. Las
instrucciones de desplazamiento largo permiten direcciones
adicionales para ser accedidas directamente con el uso de la
instrucción de facilidad de desplazamiento largo.
Como se ha ilustrado en la fig. 30, estas
instrucciones son ejecutadas en el software por un procesador o por
emulación de dicha instrucción ajustada por el software que se
ejecuta en un ordenador que tiene un conjunto de instrucción
original diferente.
De acuerdo con la arquitectura de ordenador de
la realización preferida el campo de desplazamiento es definido
como en dos partes, siendo la parte menos significativa de 12 bits
llamada el DL, DL1 para el operando 1 o DL2, para el operando 2, y
siendo la parte más significativa de 8 bits llamada el DH, DH1 para
el operando 1 o DH2 para el operando 2.
Además, la arquitectura de ordenador preferida
tiene un formato de instrucción de tal manera que el código de
operación está en las posiciones de bits 0 a 7 y de 40 a 47, un
registro objetivo llamado R1 en las posiciones de bits de 8 a 11,
un registro de índice llamado X2 en posiciones de bits de 12 a 15,
un registro de base llamado B2 en posiciones de bits de 16 a 19, un
desplazamiento compuesto de dos partes con la primera parte llamada
DL2 en las posiciones de bits de 20 a 31 y la segunda parte llamada
DH2 en posiciones de bits de 32 a 39.
Esta arquitectura de ordenador tiene un formato
de instrucción de tal manera que el código de operación está en
posiciones de bits de 0 a 7 y de 40 a 47, un registro objetivo
llamado R1 en posiciones de bits de 8 a 11, un registro fuente
llamado R3 en posiciones de bits de 12 a 15, un registro de base
llamado B2 en posiciones de bits de 16 a 19, un desplazamiento
compuesto de dos partes con la primera parte llamada DL2 en
posiciones de bits de 20 a 31 y la segunda parte llamada DH2 en
posiciones de bits de 32 a 39.
Además, nuestras instrucciones de arquitectura
de ordenador que tienen una facilidad de desplazamiento largo
tienen un formato de instrucción tal que el código de operación está
en posiciones de bits de 0 a 7 y de 40 a 47, un registro objetivo
llamado R1 en posiciones de bits de 8 a 11, un valor de máscara
llamado M3 en posiciones de bits de 12 a 15, un registro base
llamado B2 en posiciones de bits de 16 a 19, un desplazamiento
compuesto de dos partes con la primera parte llamada DL2 en
posiciones de bits de 20 a 31 y la segunda parte llamada DH2 en
posiciones de bits de 32 a 39.
Como se ha ilustrado, nuestra arquitectura de
ordenador preferida con su facilidad de desplazamiento largo tiene
un formato de instrucción de tal manera que el código de operación
está en posiciones de bits de 0 a 7 y de 40 a 47, un valor
inmediato llamado I2 en posiciones de bits de 8 a 15, un registro
base llamado B2 en posiciones de bits de 16 a 19, un desplazamiento
compuesto de dos partes con la primera parte llamada DL2 en
posiciones de bits de 20 a 31 y la segunda parte llamada DH2 en
posiciones de bits de 32 a 39.
Nuestra arquitectura de ordenador de facilidad
de desplazamiento largo funciona de manera efectiva cuando se usan
nuevas instrucciones que son creadas que sólo usan el formato de
instrucción con el nuevo desplazamiento sin signo de 20 bits.
Una realización específica de nuestra
arquitectura de ordenador utiliza instrucciones existentes que
tienen los formatos de instrucción que sólo tienen los
desplazamientos sin signo de 12 bits y son ahora definidos para
estar en los nuevos formatos de instrucción para tener o bien el
valor de desplazamiento sin signo de 12 bits existente cuando los 8
bits de alto orden del desplazamiento, el campo DH, son todos cero,
o un valor con signo de 20 bits cuando los 8 bits de alto orden del
desplazamiento, el campo DH, no es cero.
Un aparato para cifrar o designar el
almacenamiento de un entorno de ordenador, comprendiendo dicho
aparato:
medios para especificar, mediante una
instrucción, una unidad de almacenamiento que ha de ser cifrada o
descifrada; y
medios para cifrar o descifrar la unidad de
almacenamiento.
Claims (11)
1. Un método de cifrar o descifrar
almacenamiento de un entorno de ordenador, comprendiendo dicho
método: especificar, mediante una instrucción de microprocesador,
una unidad de almacenamiento que ha de ser cifrada o descifrada; y
cifrar o descifrar la unidad de almacenamiento; caracterizado
porque la instrucción está asociada con un campo que identifica un
valor de código de función y otro campo que identifica un valor de
bit modificador, y un procesador que ejecuta la instrucción reconoce
si una operación de cifrado o descifrado ha de ser realizada basada
en el valor de código de función y el valor de bit modificador; y en
el que un valor de código de función adicional corresponde a una
operación de consulta que hace que una palabra de estado sea
almacenada 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 el valor binario de 1 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 el valor binario de 0
entonces el bit corresponde a un valor de código de función
correspondiente a una función sin instalar.
2. El método según la reivindicación 1ª, en el
que la instrucción, cuando es ejecutada por el procesador, almacena
el resultado del cifrado o descifrado en un primer operando.
3. El método según la reivindicación 1ª, en el
que cuando el valor de código de función corresponde a una operación
de consulta, la instrucción comprende un código de operación y no
otros campos.
4. El método según la reivindicación 1ª en el
que el valor de código de función corresponde a cualquiera de una
operación KM-Query, una operación criptográfica de
clave de 64 bits de KM-DEA, una operación
criptográfica de dos claves de 64 bits DEA triple KM o una operación
criptográfica de tres claves de 64 bits DEA triple KM.
5. El método según la reivindicación 1ª en el
que la instrucción está en un formato original a la arquitectura de
instrucción del procesador.
6. Un producto de programa de ordenador,
almacenado en un medio de almacenamiento legible por ordenador,
para, cuando se ejecuta en un sistema de ordenador, instruir al
sistema de ordenador para realizar el método de cualquier
reivindicación precedente.
7. Un aparato para cifrar o descifrar el
almacenamiento de un entorno de ordenador, comprendiendo dicho
aparato: medios para especificar, mediante una instrucción de
microprocesador, una unidad de almacenamiento que ha de ser cifrada
o descifrada; y medios para cifrar o descifrar la unidad de
almacenamiento; caracterizado porque la instrucción está
asociada con un campo que identifica un valor de código de función y
otro campo que identifica un valor de bit modificador, y un
procesador que ejecuta la instrucción reconoce si una operación de
cifrado o descifrado ha de ser realizada basada en el valor de
código de función y el valor de bit modificador; y en el que un
valor de código de función adicional corresponde a una operación de
consulta que hace que una palabra de estado sea almacenada 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 el
valor binario de 1 entonces ese bit corresponde a un valor de código
de función correspondiente a una función instalada y cuando un bit
de la palabra de estado tiene el valor binario de 0 entonces ese bit
corresponde a un valor de código de función correspondiente a una
función no instalada.
8. El aparato según la reivindicación 7ª, en el
que la instrucción, cuando es ejecutada por el procesador, almacena
el resultado del cifrado o descifrado en un primer operando.
9. El aparato según la reivindicación 7ª en el
que cuando el valor de código de función corresponde a una operación
de consulta, la instrucción comprende un código de operación y no
otros campos.
10. El aparato según la reivindicación 7ª en el
que el valor del código de función corresponde a cualquiera de una
operación KM-Query, una operación criptográfica de
clave de 64 bits de KM-DEA, una operación
criptográfica de dos claves de 64 bits DEA triple KM o una operación
criptográfica de tres claves de 64 bits DEA triple KM.
11. El aparato según la reivindicación 7ª en el
que la instrucción está en un formato original al de la arquitectura
de instrucción del procesador.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US435916 | 1989-11-13 | ||
US10/435,916 US7257718B2 (en) | 2003-05-12 | 2003-05-12 | Cipher message assist instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2279366T3 true ES2279366T3 (es) | 2007-08-16 |
Family
ID=33417043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES04731048T Expired - Lifetime ES2279366T3 (es) | 2003-05-12 | 2004-05-04 | Instrucciones de asistencia al tratamiento de un mensaje cifrado. |
Country Status (15)
Country | Link |
---|---|
US (6) | US7257718B2 (es) |
EP (1) | EP1623294B1 (es) |
KR (1) | KR100745430B1 (es) |
CN (1) | CN100394348C (es) |
AT (1) | ATE355552T1 (es) |
AU (1) | AU2004236861A1 (es) |
CA (1) | CA2523241C (es) |
DE (1) | DE602004005025T2 (es) |
ES (1) | ES2279366T3 (es) |
GB (1) | GB2413878B (es) |
IL (1) | IL171906A (es) |
PL (1) | PL1623294T3 (es) |
RU (1) | RU2334268C2 (es) |
TW (1) | TWI279692B (es) |
WO (1) | WO2004099950A1 (es) |
Families Citing this family (24)
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 |
US20040230813A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Cryptographic coprocessor on a general purpose microprocessor |
KR100604828B1 (ko) * | 2004-01-09 | 2006-07-28 | 삼성전자주식회사 | 펌웨어 암호화 방법 및 해독 방법과 그 처리 장치 |
KR101123742B1 (ko) * | 2005-12-23 | 2012-03-16 | 삼성전자주식회사 | 사용자 인터페이스와 소프트웨어 간의 신뢰 경로 설정 방법및 장치 |
US20100169637A1 (en) * | 2008-06-28 | 2010-07-01 | Visisoft, Llc | Palette for real-time display of previously accessed documents |
US9317286B2 (en) * | 2009-03-31 | 2016-04-19 | Oracle America, Inc. | Apparatus and method for implementing instruction support for the camellia cipher algorithm |
US8832464B2 (en) * | 2009-03-31 | 2014-09-09 | Oracle America, Inc. | Processor and method for implementing instruction support for hash algorithms |
US20100250965A1 (en) * | 2009-03-31 | 2010-09-30 | Olson Christopher H | Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm |
US8654970B2 (en) * | 2009-03-31 | 2014-02-18 | Oracle America, Inc. | Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm |
US20100246815A1 (en) * | 2009-03-31 | 2010-09-30 | Olson Christopher H | Apparatus and method for implementing instruction support for the kasumi cipher algorithm |
US8356185B2 (en) * | 2009-10-08 | 2013-01-15 | Oracle America, Inc. | Apparatus and method for local operand bypassing for cryptographic instructions |
US10521231B2 (en) | 2010-06-24 | 2019-12-31 | International Business Machines Corporation | Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor |
US9851969B2 (en) * | 2010-06-24 | 2017-12-26 | International Business Machines Corporation | Function virtualization facility for function query of a processor |
US9179303B2 (en) * | 2010-11-17 | 2015-11-03 | Qualcomm Incorporated | Methods and apparatus for transmitting and receiving secure and non-secure data |
US8737604B2 (en) | 2011-05-09 | 2014-05-27 | Advanced Micro Devices, Inc. | Processor with architecture implementing the advanced encryption standard |
US9201629B2 (en) | 2013-03-14 | 2015-12-01 | International Business Machines Corporation | Instruction for performing a pseudorandom number seed operation |
US8873750B2 (en) | 2013-03-14 | 2014-10-28 | International Business Machines Corporation | Instruction for performing a pseudorandom number generate operation |
US9411600B2 (en) * | 2013-12-08 | 2016-08-09 | Intel Corporation | Instructions and logic to provide memory access key protection functionality |
US20150234750A1 (en) * | 2014-02-18 | 2015-08-20 | Aspeed Technology Inc. | Method and apparatus for addressing a memory containing different bit-length field variables |
US10642987B2 (en) * | 2017-01-19 | 2020-05-05 | Ebay Inc. | Cryptography based fraud tracking |
US11121856B2 (en) * | 2018-06-15 | 2021-09-14 | Intel Corporation | Unified AES-SMS4—Camellia symmetric key block cipher acceleration |
US11706039B2 (en) | 2020-12-26 | 2023-07-18 | Intel Corporation | ISA accessible physical unclonable function |
US11700135B2 (en) | 2020-12-26 | 2023-07-11 | Intel Corporation | ISA accessible physical unclonable function |
US12022013B2 (en) | 2020-12-26 | 2024-06-25 | Intel Corporation | ISA accessible physical unclonable function |
Family Cites Families (32)
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 |
EP0354774B1 (en) | 1988-08-11 | 1996-04-10 | International Business Machines Corporation | Data cryptography using control vectors |
US5058164A (en) * | 1990-05-03 | 1991-10-15 | National Semiconductor Corp. | Encryption of streams of addressed information to be used for program code protection |
JP3086507B2 (ja) | 1991-10-02 | 2000-09-11 | 旭化成工業株式会社 | 熱可塑性合成樹脂成形品 |
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 |
US6226680B1 (en) * | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
JPH11249873A (ja) | 1998-03-02 | 1999-09-17 | Mitsubishi Electric Corp | ドライバ機能の動的管理方式及び動的管理方法 |
DE69936856T2 (de) * | 1998-06-03 | 2008-04-30 | Cryptography Research Inc., San Francisco | Ausgewogene kryptographische rechenmethode und apparat zur schlupfminimierung in smartcards und anderen kryptosystemen |
US6298442B1 (en) * | 1998-06-03 | 2001-10-02 | Cryptography Research, Inc. | Secure modular exponentiation with leak minimization for smartcards and other cryptosystems |
KR20020026370A (ko) | 1999-08-09 | 2002-04-09 | 러셀 비. 밀러 | 메시지 인증 코드를 발생시키기 위한 방법 및 장치 |
US6675298B1 (en) * | 1999-08-18 | 2004-01-06 | Sun Microsystems, Inc. | Execution of instructions using op code lengths longer than standard op code lengths to encode data |
US7278016B1 (en) * | 1999-10-26 | 2007-10-02 | International Business Machines Corporation | Encryption/decryption of stored data using non-accessible, unique encryption key |
US6542981B1 (en) * | 1999-12-28 | 2003-04-01 | Intel Corporation | Microcode upgrade and special function support by executing RISC instruction to invoke resident microcode |
CA2305078A1 (en) * | 2000-04-12 | 2001-10-12 | Cloakware Corporation | Tamper resistant software - mass data encoding |
JP4098478B2 (ja) * | 2001-01-31 | 2008-06-11 | 株式会社東芝 | マイクロプロセッサ |
JP2002353960A (ja) * | 2001-05-30 | 2002-12-06 | Fujitsu Ltd | コード実行装置およびコード配布方法 |
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 |
US7266703B2 (en) * | 2001-06-13 | 2007-09-04 | Itt Manufacturing Enterprises, Inc. | Single-pass cryptographic processor and method |
US7360076B2 (en) * | 2001-06-13 | 2008-04-15 | Itt Manufacturing Enterprises, Inc. | Security association data cache and structure |
US20030028765A1 (en) | 2001-07-31 | 2003-02-06 | Cromer Daryl Carvis | Protecting information on a computer readable medium |
JP2003051819A (ja) * | 2001-08-08 | 2003-02-21 | Toshiba Corp | マイクロプロセッサ |
US6996725B2 (en) * | 2001-08-16 | 2006-02-07 | Dallas Semiconductor Corporation | Encryption-based security protection for processors |
US6765030B2 (en) * | 2002-03-22 | 2004-07-20 | The University Of North Carolina At Chapel Hill | Methods of forming polymeric structures using carbon dioxide and polymeric structures formed therapy |
US7254696B2 (en) * | 2002-12-12 | 2007-08-07 | Alacritech, Inc. | Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests |
CN100539289C (zh) | 2006-05-23 | 2009-09-09 | 索尼株式会社 | 电池 |
-
2003
- 2003-05-12 US US10/435,916 patent/US7257718B2/en active Active
-
2004
- 2004-05-04 PL PL04731048T patent/PL1623294T3/pl unknown
- 2004-05-04 CA CA2523241A patent/CA2523241C/en not_active Expired - Lifetime
- 2004-05-04 WO PCT/GB2004/001928 patent/WO2004099950A1/en active IP Right Grant
- 2004-05-04 DE DE602004005025T patent/DE602004005025T2/de not_active Expired - Lifetime
- 2004-05-04 GB GB0516236A patent/GB2413878B/en not_active Expired - Lifetime
- 2004-05-04 RU RU2005121915/09A patent/RU2334268C2/ru active
- 2004-05-04 AU AU2004236861A patent/AU2004236861A1/en not_active Abandoned
- 2004-05-04 KR KR1020057018960A patent/KR100745430B1/ko active IP Right Grant
- 2004-05-04 AT AT04731048T patent/ATE355552T1/de active
- 2004-05-04 CN CNB2004800078072A patent/CN100394348C/zh not_active Expired - Lifetime
- 2004-05-04 ES ES04731048T patent/ES2279366T3/es not_active Expired - Lifetime
- 2004-05-04 EP EP04731048A patent/EP1623294B1/en not_active Expired - Lifetime
- 2004-05-06 TW TW093112742A patent/TWI279692B/zh not_active IP Right Cessation
-
2005
- 2005-11-10 IL IL171906A patent/IL171906A/en unknown
-
2007
- 2007-03-28 US US11/692,382 patent/US8103860B2/en active Active
-
2009
- 2009-02-27 US US12/394,579 patent/US7720220B2/en not_active Expired - Lifetime
-
2011
- 2011-12-13 US US13/324,396 patent/US8261048B2/en not_active Expired - Fee Related
-
2012
- 2012-06-04 US US13/487,929 patent/US8661231B2/en not_active Expired - Lifetime
-
2013
- 2013-12-31 US US14/144,830 patent/US9424055B2/en not_active Expired - Fee Related
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2279366T3 (es) | Instrucciones de asistencia al tratamiento de un mensaje cifrado. | |
CN107924448B (zh) | 硬件实施的单向密码术 | |
ES2279365T3 (es) | Tratamiento de instrucciones de resumen de mensaje. | |
CN111052115B (zh) | 取决于调用路径的认证的数据处理装置和方法 | |
US7770024B2 (en) | Security message authentication instruction | |
ES2863676T3 (es) | Mensaje cifrado con instrucción de autenticación | |
EP1684167A2 (en) | Method of processing signed displacement computer instruction |