ES2863676T3 - Mensaje cifrado con instrucción de autenticación - Google Patents

Mensaje cifrado con instrucción de autenticación Download PDF

Info

Publication number
ES2863676T3
ES2863676T3 ES17780697T ES17780697T ES2863676T3 ES 2863676 T3 ES2863676 T3 ES 2863676T3 ES 17780697 T ES17780697 T ES 17780697T ES 17780697 T ES17780697 T ES 17780697T ES 2863676 T3 ES2863676 T3 ES 2863676T3
Authority
ES
Spain
Prior art keywords
instruction
data
message
block
operand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES17780697T
Other languages
English (en)
Inventor
Dan Greiner
Timothy Slegel
Christian Zoellin
Christian Jacobi
Volodymyr Paprotski
Tamas Visegrady
Reinhard Buendgen
Jonathan Bradbury
Aditya Puranik
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 ES2863676T3 publication Critical patent/ES2863676T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]

Landscapes

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

Abstract

Un procedimiento para facilitar el procesamiento en un entorno informático, comprendiendo el procedimiento las etapas de: obtener una instrucción (300) para realizar una pluralidad de operaciones, que incluye cifrado y autenticación, siendo la instrucción una instrucción de máquina de arquitectura de hardware única en una interfaz hardware/software y que incluye un campo de código de operación (302) que tiene un código de operación para indicar un mensaje de cifrado con operación de autenticación, y uno o más campos de registro (304, 306, 308) usados para designar uno o más registros para ser usados por la instrucción; y ejecutar la instrucción (300), incluyendo la ejecución: cifrar el único conjunto de datos proporcionados mediante el uso de un registro de uno o más registros (304, 306, 308) de la instrucción para obtener datos cifrados; colocar los datos cifrados en una ubicación designada; autenticar un conjunto de datos adicionales proporcionados por la instrucción, generando la autenticación al menos una parte de una etiqueta de autenticación de mensaje; y almacenar al menos una parte de la etiqueta de autenticación de mensaje en una ubicación seleccionada.

Description

DESCRIPCIÓN
Mensaje cifrado con instrucción de autenticación
Antecedentes
Uno o más aspectos se relacionan, en general, con el procesamiento dentro de un entorno informático y, en particular, con el procesamiento asociado con el cifrado y la autenticación de datos.
La transmisión segura de mensajes en un contexto de procesamiento de información electrónica implica el cifrado y descifrado de mensajes, así como también la autenticación. El remitente cifra un mensaje antes de transmitirlo para garantizar que la inspección del mensaje cifrado no revele su verdadero contenido a una tercera parte. Por otro lado, un receptor descifra un mensaje para revelar el contenido original. Adicionalmente, la autenticación de mensaje garantiza que el contenido del mensaje que proporciona el remitente no se haya alterado accidental o maliciosamente durante la transmisión. Por consiguiente, el mensaje recibido es, de hecho, el mismo que el que se envió.
La Publicación Especial 800-38D del Instituto Nacional de Ciencia y Tecnología de Estados Unidos (NIST), Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) y GMAC, (GMAC: Galois Message Authentication Code), describe las siguientes operaciones:
Autenticación de datos autenticados adicionales mediante el uso de un algoritmo Galois Hashing (GHASH) descrito en NIST SP 800-38D. Un ejemplo de datos autenticados adicionales es la información de enrutamiento de red para un mensaje. Estos datos no se descifran para que un enrutador de red pueda enviar adecuadamente el mensaje; sin embargo, la información de enrutamiento es posible que se deba autenticar, por ejemplo, para garantizar que los datos provienen de la fuente esperada.
El cifrado del mensaje mediante el uso de un cifrado en bloque de clave simétrica que se aprueba con una dimensión de bloque de 128 bits, tal como el estándar de cifrado avanzado (AES). Para minimizar la repetibilidad potencial de los bloques cifrados, la técnica de cifrado usa un contador incremental de un bloque al siguiente que se incluye en el proceso de cifrado.
Autenticación de los datos de mensaje cifrado mediante el uso de GHASH.
Se disponen instrucciones individuales específicas para realizar el cifrado de un mensaje mediante el uso de una variedad de algoritmos de cifrado, y para producir un dígito de mensaje para el mensaje.
El documento Estados Unidos 6 983 366 describe un procedimiento en el que se usan instrucciones específicas para llevar a cabo las funciones de cifrado y autenticación.
Sumario
Se superan las deficiencias de la técnica anterior y se proporcionan ventajas adicionales mediante la provisión de un procedimiento como se reivindicó en la reivindicación 1, y el sistema (reivindicación 12) y el programa informático (reivindicación 13) correspondientes.
Se proporciona una instrucción que es capaz de generar un resumen de mensaje para datos autenticados adicionales, cifrar un mensaje y generar un resumen de mensaje para el mensaje cifrado. Esto mejora el rendimiento del sistema al reducir el número de instrucciones a buscar, decodificar y ejecutar, y al reducir el número de veces que se debe buscar el texto cifrado.
En un ejemplo, el conjunto de datos adicionales incluye al menos un bloque de datos de uno o más bloques de datos, y la ejecución incluye además determinar si el conjunto de datos adicionales incluye un último bloque de datos a autenticar. La autenticación se realiza con base en si el conjunto de datos adicionales incluye el último bloque de datos a autenticar. La determinación incluye, por ejemplo, verificar un último control de datos autenticados adicionales de la instrucción para determinar si el conjunto de datos adicionales incluye el último bloque de datos a autenticar. El último control de datos autenticados adicionales indica si se ha proporcionado o no el bloque final de datos autenticados adicionales, y permite que una única instrucción maneje los primeros, intermedios y finales bloques de los datos autenticados adicionales.
Además, en un ejemplo, el único conjunto de datos incluye al menos un bloque de datos de uno o más bloques de datos, y la ejecución incluye además determinar si el único conjunto de datos incluye un último bloque de datos a cifrar. El cifrado se realiza con base en si el único conjunto de datos incluye el último bloque de datos a cifrar. La determinación incluye, por ejemplo, comprobar un último control de texto de la instrucción para determinar si el único conjunto de datos incluye el último bloque de datos a cifrar. El último control de texto indica si se ha proporcionado o no el bloque final del texto sin formato/texto cifrado, y permite que una única instrucción maneje los primeros, intermedios y finales bloques del texto sin formato/texto cifrado.
Como ejemplos, el cifrado incluye cifrar el único conjunto de datos con base en un control proporcionado por la instrucción que se establece en un valor seleccionado, o descifrar el único conjunto de datos con base en un control proporcionado por la instrucción que se establece en un valor particular.
En una realización, la autenticación del conjunto de datos adicionales incluye el uso de una técnica hash para generar al menos una parte de la etiqueta de autenticación de mensaje. En una realización, la técnica hash usa una subclave hash almacenada en un bloque de parámetros usado por la instrucción, con base en un control provisto por una subclave hash de la instrucción que se establece en un valor seleccionado. El control provisto por la subclave hash permite que el programa indique que se proporciona su propia subclave hash, que proporciona de este modo un beneficio de rendimiento si se usa la misma subclave hash.
Como ejemplo, el único conjunto de datos incluye al menos una porción de un mensaje y el conjunto de datos adicionales incluye la información de enrutamiento para el mensaje.
Se obtienen características y ventajas adicionales a través de las técnicas descritas en la presente memoria. Otras realizaciones y aspectos se describen en detalle en la presente memoria y se consideran parte de los aspectos reivindicados. La invención se define mediante las reivindicaciones adjuntas.
Breve descripción de los dibujos
Uno o más aspectos se señalan particularmente y se reivindican claramente como ejemplos en las reivindicaciones al final de la memoria descriptiva. Lo anterior y los objetos, características y ventajas de uno o más aspectos son evidentes a partir de la siguiente descripción detallada tomada junto con los dibujos adjuntos en los que:
La Figura 1A representa un ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
La Figura 1B representa detalles adicionales del procesador de la Figura 1A;
La Figura 2A representa otro ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
La Figura 2B representa detalles adicionales de la memoria de la Figura 2A;
La Figura 3A representa una realización de un formato de una instrucción Mensaje Cifrado con Autenticación, de acuerdo con un aspecto de la presente invención;
La Figura 3B representa un ejemplo del contenido de un registro general, registro general 0 (GR0), para ser usado por uno o más aspectos de la instrucción Mensaje Cifrado con Autenticación de la Figura 3A, de acuerdo con un aspecto de la presente invención;
La Figura 3C representa un ejemplo del contenido de otro registro general, el registro general 1 (GR1), para ser usado por la instrucción Mensaje Cifrado con Autenticación de la Figura 3A, de acuerdo con un aspecto de la presente invención;
La Figura 3D representa un ejemplo del contenido de un registro R1 para ser usado en uno o más aspectos por la instrucción Mensaje Cifrado con Autenticación de la Figura 3A, de acuerdo con un aspecto de la presente invención;
La Figura 3E representa un ejemplo del contenido de un registro R2 para ser usado en uno o más aspectos por la instrucción Mensaje Cifrado con Autenticación de la Figura 3A, de acuerdo con un aspecto de la presente invención;
La Figura 3F representa un ejemplo del contenido de un registro R2+1 para ser usado en uno o más aspectos por la instrucción Mensaje Cifrado con Autenticación de la Figura 3A, de acuerdo con un aspecto de la presente invención;
La Figura 3G representa un ejemplo del contenido de un registro R3 para ser usado en uno o más aspectos por la instrucción Mensaje Cifrado con Autenticación de la Figura 3A, de acuerdo con un aspecto de la presente invención;
La Figura 3H representa un ejemplo del contenido de un registro R3+I para ser usado en uno o más aspectos por la instrucción Mensaje Cifrado con Autenticación de la Figura 3A, de acuerdo con un aspecto de la presente invención;
La Figura 4 representa un ejemplo de un formato de un bloque de parámetros para su uso por la instrucción Mensaje Cifrado con Autenticación de la Figura 3A, de acuerdo con un aspecto de la presente invención;
La Figura 5A representa un ejemplo del cifrado de una subclave hash, de acuerdo con un aspecto de la presente invención;
La Figura 5B representa un ejemplo del procesamiento Galois Hash de bloques completos de datos autenticados adicionales, de acuerdo con un aspecto de la presente invención;
La Figura 5C representa un ejemplo del procesamiento Galois Hash del último bloque (corto) de datos autenticados adicionales, de acuerdo con un aspecto de la presente invención;
La Figura 5D representa un ejemplo del cifrado y hash combinados de bloques completos de un mensaje para cifrado, de acuerdo con un aspecto de la presente invención;
La Figura 5E representa un ejemplo del cifrado y hash combinados de bloques completos de un mensaje para descifrar, de acuerdo con un aspecto de la presente invención;
La Figura 5F representa un ejemplo del cifrado y hash del último bloque (corto) de un mensaje, de acuerdo con un aspecto de la presente invención;
La Figura 5G representa un ejemplo del hash y cifrado de la última etiqueta, de acuerdo con un aspecto de la presente invención;
La Figura 6 representa un ejemplo del procesamiento seleccionado asociado con la instrucción Mensaje Cifrado con Autenticación, de acuerdo con un aspecto de la presente invención;
Las Figuras 7A-7E representan un ejemplo del procesamiento asociado con la instrucción Mensaje Cifrado con Autenticación, de acuerdo con un aspecto de la presente invención; y
Las Figuras 8A-8B representan un ejemplo del procesamiento facilitador en un entorno informático, que incluye ejecutar una instrucción configurada para realizar un mensaje cifrado con una operación de autenticación adicionales, de acuerdo con un aspecto de la presente invención.
Descripción detallada
De acuerdo con uno o más aspectos, se proporciona una instrucción única (por ejemplo, una instrucción de máquina de arquitectura de hardware única en la interfaz de hardware/software) que combina las funciones de autenticación y cifrado. Por ejemplo, se proporciona una instrucción única que combina las funciones de producir una etiqueta de autenticación de mensaje (tanto para los datos autenticados adicionales como para mensajes) con el cifrado de un mensaje. Aunque, en una realización, la instrucción realiza el cifrado y la autenticación de acuerdo con la descripción del Modo Galois/Contador, en otras realizaciones, la instrucción puede usar algoritmos adicionales y/o de otro tipo para realizar el cifrado y la autenticación. La instrucción se denomina en la presente memoria instrucción Mensaje Cifrado con Autenticación.
Como se describió anteriormente, se disponen instrucciones específicas para realizar el cifrado de un mensaje mediante el uso de una variedad de algoritmos de cifrado, que incluye el algoritmo de cifrado de datos, el algoritmo de cifrado de datos triple y el cifrado avanzado estándar; y para producir un resumen de mensaje. Además, hay otras funciones disponibles para realizar varios algoritmos hash, que incluye GHASH. Sin embargo, no existe una instrucción única que combine el cifrado de mensaje y la autenticación de mensaje, que incluye la autenticación de datos autenticados adicionales. Por consiguiente, de acuerdo con un aspecto de la invención, tal como una instrucción, por ejemplo, la instrucción Mensaje de Cifrado con Autenticación, se proporciona que combine el cifrado y la autenticación de mensaje.
Una realización de un entorno informático para incorporar y usar uno o más aspectos de la presente invención se divulga con referencia a la Figura 1A. En un ejemplo, el entorno informático se basa en la z/Architecture, ofrecida por International Business Machines Corporation, Armonk, Nueva York. Una realización de la z/Architecture se describe en "z/Architecture Principles of Operation", Publicación de IBM No. SA22-7832-10, marzo de 2015, la cual se incorpora por eso en la presente memoria mediante referencia en su totalidad. Z/ARCHITECTURE es una marca registrada de International Business Machines Corporation, Armonk, Nueva York, EE. UU.
En otro ejemplo, el entorno informático se basa en la Power Architecture, ofrecida por International Business Machines Corporation, Armonk, Nueva York. Una realización de la Power Architecture se describe en "Power ISA™ Versión 2.07B, "International Business Machines Corporation, 9 de abril de 2015, la cual se incorpora por eso en la presente memoria mediante referencia en su totalidad. POWER ARCHITECTURE es una marca registrada de International Business Machines Corporation, Armonk, Nueva York, EE. UU.
El entorno informático también puede basarse en otras arquitecturas, incluidas, entre otras, las arquitecturas Intel x86. También existen otros ejemplos.
Como se muestra en la Figura 1A, un entorno informático 100 incluye, por ejemplo, un sistema informático/servidor 12 que pueden incluir, pero no limitado a, uno o más procesadores o unidades de procesamiento 16, una memoria del sistema 28 y un bus 18 que acopla varios componentes del sistema, que incluye la memoria del sistema 28 al procesador 16.
El bus 18 representa uno o más de varios tipos de estructuras del bus, que incluyen un bus de memoria o controlador de memoria, un bus periférico, un puerto de gráficos acelerado, y un procesador o bus local que usa cualquiera de una variedad de arquitecturas de bus. A manera de ejemplo, y no de limitación, tales arquitecturas incluyen un bus de arquitectura estándar de la industria (ISA), un bus de arquitectura de Micro Canal (MCA), un bus de iSa Mejorado (EISA), un bus local de Asociación de Estándares de Circuitos Electrónicos de Video (VESA), y un bus de Interconexión de Componentes Periféricos (PCI).
El sistema informático/servidor 12 incluye típicamente una variedad de medios legibles por sistemas informáticos. Tales medios pueden ser cualquier medio disponible que sea accesible por el sistema informático/servidor 12, e incluye medios volátiles y no volátiles, medios extraíbles y no extraíbles.
La memoria del sistema 28 puede incluir medios legibles del sistema informático en forma de memoria volátil, como la memoria de acceso aleatorio (RAM) 30 y/o la memoria caché 32. El sistema informático/servidor 12 puede incluir además otros medios de almacenamiento de sistemas informáticos extraíbles/no extraíbles, volátiles/no volátiles. A manera de ejemplo solamente, el sistema de almacenamiento 34 puede proporcionarse para leer y escribir a un medio magnético no desmontable, no volátil (no se muestra y típicamente denominado un "disco duro"). Aunque no se muestra, puede proporcionarse una unidad de disco magnético para leer y escribir en un disco magnético no volátil y desmontable (por ejemplo, un "disquete"), y una unidad de disco óptico para leer o escribir en un disco óptico no volátil y extraíble tal como un CD-ROM, DVD-ROM u otros medios ópticos. En tales casos, cada uno puede conectarse al bus 18 mediante una o más interfaces de medios de datos. Como se describirá más adelante, la memoria 28 puede incluir al menos un producto de programa con un conjunto (por ejemplo, al menos uno) de módulos de programa que se configuran para llevar a cabo las funciones de las realizaciones de la invención.
El programa/utilidad 40, que tiene un conjunto (al menos uno) de módulos de programa 42, puede almacenarse en la memoria 28 a modo de ejemplo, y sin limitación, así como un sistema operativo, uno o más programas de aplicación, otros módulos de programa y datos de programa. Cada uno del sistema operativo, uno o más programas de aplicación, otros módulos de programa y datos de programas o alguna de sus combinaciones, pueden incluir una implementación de un entorno de red. Los módulos de programa 42 generalmente llevan a cabo las funciones y/o metodologías de realizaciones de la invención como se describe en la presente memoria.
El sistema informático/servidor 12 también puede comunicarse con uno o más dispositivos externos 14, como un teclado, un dispositivo señalador, una pantalla 24, etc.; uno o más dispositivos que permiten a un usuario interactuar con el sistema informático/servidor 12; y/o cualquier dispositivo (por ejemplo, tarjeta de red, módem, etc.) que permita que el sistema informático/servidor 12 se comunique con uno o más dispositivos informáticos. Dicha comunicación puede ocurrir a través de las interfaces de Entrada/Salida (E/S) 22. Aun así, el sistema informático/servidor 12 puede comunicarse con una o más redes como una red de área local (LAN), una red de área amplia general (WAN) y/o una red pública (por ejemplo, Internet) a través del adaptador de red 20. Como se muestra, el adaptador de red 20 se comunica con los otros componentes del sistema informático/servidor 12 a través del bus 18. Debe entenderse que, aunque no se muestra, otros componentes de hardware y/o software podrían usarse junto con el sistema/servidor informático 12. Los ejemplos incluyen, pero no se limitan a: microcódigo, controladores del dispositivo, unidades de procesamiento redundantes, arreglos de unidades de disco externas, sistemas RAID, unidades de cintas, y sistemas de almacenamiento de datos, etc.
En un ejemplo, el procesador 16 incluye una pluralidad de componentes funcionales usados para ejecutar instrucciones. Como se representa en la Figura 1B, estos componentes funcionales incluyen, por ejemplo, un componente de captación de instrucciones 120 para captar instrucciones a ejecutar; una unidad 122 de decodificación de instrucciones para decodificar las instrucciones recuperadas y obtener operandos de las instrucciones decodificadas; la instrucción ejecuta componentes 124 para ejecutar las instrucciones decodificadas; un componente de acceso a memoria 126 para acceder a la memoria para la ejecución de instrucciones, si es necesario; y un componente de reescritura 130 para proporcionar los resultados de las instrucciones ejecutadas. Uno o más de estos componentes pueden, de acuerdo con un aspecto de la presente invención, proporcionar operaciones de cifrado y autenticación 136, que incluye la autenticación de datos autenticados adicionales, como se describió en la presente memoria.
El procesador 16 también incluye, en una realización, uno o más registros 140 para ser utilizados por uno o más de los componentes funcionales.
Otra realización de un entorno informático para incorporar y usar uno o más aspectos se describe con referencia a la Figura 2A. En este ejemplo, un entorno informático 200 incluye, por ejemplo, una unidad central de procesamiento (CPU) nativa 202, una memoria 204 y uno o más dispositivos y/o interfaces de entrada/salida 206 acoplados entre sí mediante, por ejemplo, uno o más autobuses 208 y/u otras conexiones. Como ejemplos, el entorno informático 200 puede incluir un procesador PowerPC o un servidor pSeries ofrecido por International Business Machines Corporation, Armonk, Nueva York; un HP Superdome con procesadores Intel Itanium II ofrecido por Hewlett Packard Co., Palo Alto, California; y/u otras máquinas basadas en arquitecturas ofrecidas por International Business Machines Corporation, Hewlett Packard, Intel, Oracle u otras.
La unidad de procesamiento central nativa 202 incluye uno o más registros nativos 210, tales como uno o más registros de propósito general y/o uno o más registros de propósito especial utilizados durante el procesamiento dentro del entorno. Estos registros incluyen información que representa el estado del medio ambiente en un momento determinado.
Además, la unidad de procesamiento central nativa 202 ejecuta instrucciones y código que se almacenan en la memoria 204. En un ejemplo particular, la unidad central de procesamiento ejecuta el código de emulador 212 almacenado en la memoria 204. Este código permite que el entorno informático configurado en una arquitectura emule otra arquitectura. Por ejemplo, el código de emulador 212 permite que las máquinas basadas en arquitecturas distintas de la z/Architecture, como procesadores PowerPC, servidores pSeries, servidores HP Superdome u otros, emulen la z/Architecture y ejecuten software e instrucciones desarrolladas con base en z/Architecture.
Se describen detalles adicionales relacionados con el código de emulador 212 con referencia a la Figura 2B. Las instrucciones de invitado 250 almacenadas en la memoria 204 comprenden instrucciones de software (por ejemplo, correlacionadas con las instrucciones de la máquina) que se desarrollaron para ejecutarse en una arquitectura distinta a la de la CPU 202 nativa. Por ejemplo, las instrucciones de invitado 250 pueden diseñarse para ejecutarse en un procesador z/Architecture 16, pero en su lugar, se emulan en la CPU nativa 202, que puede ser, por ejemplo, un procesador Intel Itanium II. En un ejemplo, el código de emulador 212 incluye una rutina de obtención de instrucciones 252 para obtener una o más instrucciones de invitado 250 de la memoria 204 y, opcionalmente, proporcionar almacenamiento intermedio local para las instrucciones obtenidas. También incluye una rutina de traducción de instrucciones 254 para determinar el tipo de instrucción de invitado que se ha obtenido y para traducir la instrucción de invitado en una o más instrucciones nativas correspondientes 256. Esta traducción incluye, por ejemplo, identificar la función a realizar por la instrucción de invitado y elegir la(s) instrucción(es) nativa(s) para realizar esa función.
Además, el emulador 212 incluye una rutina de control de emulación 260 para hacer que se ejecuten las instrucciones nativas. La rutina de control de emulación 260 puede hacer que la CPU 202 nativa ejecute una rutina de instrucciones nativas que emule una o más instrucciones de invitado obtenidas previamente y, al concluir dicha ejecución, devuelva el control a la rutina de búsqueda de instrucciones para emular la obtención de la siguiente instrucción de invitado o un grupo de instrucciones para invitados. La ejecución de las instrucciones nativas 256 puede incluir cargar datos en un registro desde la memoria 204; almacenar datos en la memoria desde un registro; o realizar algún tipo de operación aritmética o lógica, según lo determine la rutina de traducción.
Cada rutina se implementa, por ejemplo, en un software, que se almacena en la memoria y se ejecuta mediante la unidad central de procesamiento 202 nativa. En otros ejemplos, una o más de las rutinas u operaciones se implementan en firmware, hardware, software o alguna combinación de los mismos. Los registros del procesador emulado se pueden emular usando los registros 210 de la CPU nativa o usando ubicaciones en la memoria 204. En realizaciones, las instrucciones de invitado 250, las instrucciones nativas 256 y el código de emulador 212 pueden residir en la misma memoria o pueden desembolsarse entre diferentes dispositivos de memoria.
Como se usa en la presente memoria, el firmware incluye, por ejemplo, el microcódigo, el milicódigo y/o el macrocódigo del procesador. Incluye, por ejemplo, las instrucciones de nivel de hardware y/o las estructuras de datos utilizadas en la implementación del código de máquina de nivel superior. En una realización, incluye, por ejemplo, código propietario que típicamente se entrega como microcódigo que incluye software confiable o microcódigo específico para el hardware subyacente y controla el acceso del sistema operativo al hardware del sistema.
En un ejemplo, una instrucción de invitado 250 que se obtiene, traduce y ejecuta es la instrucción Mensaje Cifrado con Autenticación descrita en la presente memoria. La instrucción, que es de una arquitectura (por ejemplo, la z/Architecture), se obtiene de la memoria, se traduce y se representa como una secuencia de instrucciones nativas 256 de otra arquitectura (por ejemplo, PowerPC, pSeries, Intel, etc.). Estas instrucciones nativas se ejecutan a continuación.
Los detalles con relación a una realización de la instrucción Mensaje Cifrado con Autenticación, que incluyen los campos implícitos y explícitos de la instrucción, así como también la ejecución por un procesador (ya sea en un sistema nativo o emulado), se describen en la presente memoria. De acuerdo con un aspecto de la presente invención, la instrucción Mensaje Cifrado con Autenticación es una instrucción única que combina las funciones de producir una etiqueta de autenticación de mensaje, tanto para datos autenticados adicionales como para un mensaje, con el cifrado del mensaje.
Una realización de una instrucción Mensaje Cifrado con Autenticación se describe con referencia a la Figura 3A. En un ejemplo, una instrucción Mensaje Cifrado con Autenticación 300 incluye un campo de código de operación 302 (por ejemplo, 0-15 bits) que tiene un código de operación (opcódigo) para indicar un mensaje cifrado con operación de autenticación; un primer campo de registro 304 (por ejemplo, 24-27 bits) usado para designar al menos un primer registro (R1 ); un segundo campo de registro 306 (por ejemplo, 28-31 bits) usado para designar al menos un segundo registro (R2); y un tercer campo de registro 308 (por ejemplo, 16-19 bits) usado para designar al menos un tercer registro (R3). Cada uno de los campos 304-308, en un ejemplo, se separa y se independiza del campo de código de operación. Además, en una realización, ellos se separan y son independientes entre sí; sin embargo, en otras realizaciones, se puede combinar más de un campo.
En un ejemplo, el contenido del registro par numerado designado por el campo R1 contiene una dirección del primer operando. Además, el contenido de los pares de registros pares e impares designados por el campo R2 y el campo R3 contiene la dirección y la longitud del segundo y tercer operando, respectivamente.
Además de R1 , R2y R3 codificados en la instrucción, una implementación de la instrucción usa uno o más registros implícitos que incluyen, por ejemplo, el registro general 0 (GR0) y el registro general 1 (GR1). Cada uno de los registros se describe en más detalle más abajo con referencia a las Figuras 3B-3H.
Con referencia inicialmente a la Figura 3B, se describe una realización de un formato del registro general 0 (320). En un ejemplo, el registro general 0 incluye un campo de indicadores (F) 322 (por ejemplo, bits 48-55), un control de modificador (M) 324 (por ejemplo, bit 56), y un campo de código de función (FC) 326 (por ejemplo, bits 57-63). Cada uno de los campos se describe en más detalle más abajo.
Indicadores (F) 322: Las posiciones de los bits 48-55 del registro general 0 contienen un campo de indicadores de 8 bits que controla la operación de la función. El campo de indicadores es significativo cuando el código de función en los bits 57-63 del registro general 0 designa una función de cifrado (es decir, cuando el código de función es distinto de cero). El formato del campo de indicadores es el siguiente, en un ejemplo:
Reservado: Los bits 0-4 del campo de indicadores se reservan y deben contener ceros;
de cualquier otra manera, el programa puede que no funcione compatiblemente en el futuro.
Indicador Suministrado por la Subclave Hash (HS): El bit 5 del campo de indicadores indica si el campo hash de subclave (H) en un bloque de parámetros (descrito más abajo) contiene una subclave hash válida. El indicador HS es significativo cuando el código de función es distinto de cero, y la función no usa una clave criptográfica cifrada; el indicador HS se ignora para las funciones que usan una clave criptográfica cifrada.
Indicador de los Últimos Datos Autenticados Adicionales (LAAD): El bit 6 del campo de indicadores califica el contenido del tercer operando. Cuando el indicador LAAD es uno, eso indica que el tercer operando designa la última serie de bloques de datos autenticados adicionales. Cuando el indicador LAAD es cero, eso indica que el tercer operando no designa la última serie de bloques de datos autenticados adicionales.
Indicador de Último Texto sin Formato/Texto Cifrado (LPC) (también referido en la presente memoria como control de último texto): El bit 7 del campo de indicadores califica el contenido del segundo operando. Cuando el indicador LPC es uno, eso indica que el segundo operando designa la última serie de bloques de texto sin formato o de texto cifrado. Cuando el indicador LPC es cero, indica que el segundo operando no designa la última serie de bloques de texto sin formato o de texto cifrado.
Se reconoce una excepción de memoria descriptiva, y la operación se suprime cuando el indicador LPC es uno y el indicador LAAD es cero.
Modificador (M) 324: Cuando el código de función en los bits 57-63 del registro general 0 es distinto de cero, la posición de bit 56 del registro general 0 contiene un control de modificador que indica que el cifrado o descifrado se debe realizar por la función. Cuando el control M es cero, la función realiza el cifrado del segundo operando; cuando el control M es uno, la función realiza el descifrado del segundo operando. El control M se ignora cuando el código de función es cero.
Código de Función (FC) 326: Las posiciones de bit 57-63 del registro general 0 contienen el código de función. En la operación de la instrucción, se realiza una función que se especifica por el código de función. Los ejemplos de de función asignados para Mensajes Cifrados con Autenticación incluyen
Código Función Param. Block Size (Bytes) Data Block Size (bytes)
0 KMA-Query 16 --18 KMA-GCM-AES-128 96 16
19 KMA-GCM-AES-192 C1o0n4ti nuación) 16
20 KMA-GCM-AES-256 112 16
26 KMA-GCM-Encrypted-AES-128 128 16
27 KMA-GCM-Encrypted-AES-192 136 16
28 KMA-GCM-Encrypted-AES-256 144 16
Los bits 0-31 del registro general 0 se ignoran. Los bits 32-47 del registro general 0 se reservan y deben contener ceros; de cualquier otra manera, el programa puede que no funcione compatiblemente en el futuro.
La función de consulta (por ejemplo, el código de función 0) proporciona los medios para indicar la disponibilidad de las otras funciones. El contenido de los registros generales R1 , R2 , R2+1, R3 , y R3+1 se ignoran para la función de consulta.
Para funciones aparte de la función de consulta (es decir, para funciones que tienen un código de función distinto de cero), se forma una etiqueta de autenticación de mensaje a partir del contenido del tercer operando y del contenido tanto del primer operando resultante como del segundo operando, en función de si el control M es 0 o 1, respectivamente. Con base enl control M, el segundo operando se cifra o se descifra mediante el uso de una clave criptográfica y valores de contador de un bloque de parámetros (descrito más abajo), y el resultado se coloca en la ubicación del primer operando.
Como se muestra en la Figura 3C, el registro general 1 (330) contiene una dirección lógica 332 del byte más a la izquierda de un bloque de parámetros en el almacenamiento. En el modo de direccionamiento de 24 bits, el contenido de las posiciones de los bits 40-63 del registro general 1 constituye la dirección, y el contenido de las posiciones de los bits 0-39 se ignora. En el modo de direccionamiento de 31 bits, el contenido de las posiciones de los bits 33-63 del registro general 1 constituye la dirección, y el contenido de las posiciones de los bits 0-32 se ignora. En el modo de direccionamiento de 64 bits, el contenido de las posiciones de los bits 0-63 del registro general 1 constituye la dirección.
Con referencia a la Figura 3D, el campo R1 (304) designa un registro general y es para designar un registro de número par; de cualquier otra manera, se reconoce una excepción de la memoria descriptiva. Cada campo R2 y R3 designa una pareja par-impar de registros generales y cada uno debe designar un registro de número par; de cualquier otra manera, se reconoce una excepción de la memoria descriptiva. También se reconoce una excepción de la memoria descriptiva si el campo R3 designa el mismo registro que los campos R1 o R2.
La ubicación del byte más a la izquierda del primer, segundo y tercer operando se especifica mediante el contenido de los registros generales R1 304 (Figura 3D), R2306 (Figura 3E) y R3308 (Figura 3G), respectivamente. El número de bytes en la ubicación del segundo operando se especifica en el registro general R2+1 (370, Figura 3F). El primer operando tiene la misma longitud que el segundo operando. El número de bytes en la ubicación del tercer operando se especifica en el registro general R3+1 (390, Figura 3H).
Como parte de la operación, la dirección 382 en el registro general R3 (380, Figura 3G) se incrementa por el número de bytes del tercer operando procesados, y la longitud 392 en el registro general R3+1 (390) se decrementa en el mismo número; adicionalmente, las direcciones 342, 362 en los registros generales R1 y R2 se incrementan cada uno por el número de bytes del segundo operando procesados, y la longitud 372 en el registro general R2+1 (370) se decrementa en el mismo número. La formación y actualización de las direcciones y la longitud está en función del modo de direccionamiento.
Por ejemplo, en el modo de direccionamiento de 24 bits, el contenido de las posiciones de los bits 40-63 de los registros generales R1 , R2 y R3 constituyen las direcciones del primer, segundo y tercer operando, respectivamente, y se ignoran los contenidos de las posiciones de los bits 0-39; los bits 40-63 de las direcciones actualizadas reemplazan los bits correspondientes en los registros generales R1 , R2 y R3, se ignoran las ejecuciones de la posición del bit 40 de la dirección actualizada, y el contenido de la posición de los bits 32-39 de los registros generales R1 , R2 y R3 se establecen en ceros. En el modo de direccionamiento de 31 bits, el contenido de las posiciones de los bits 33-63 de los registros generales R1 , R2 y R3 constituyen las direcciones del primer, segundo y tercer operando, respectivamente, y se ignoran los contenidos de las posiciones de los bits 0-32; los bits 33-63 de las direcciones actualizadas reemplazan los bits correspondientes en los registros generales R1 , R2 y R3, se ignoran las ejecuciones de la posición de bit 33 de la dirección actualizada, y el contenido de la posición de bit 32 de los registros generales R1 , R2 y R3 se establece en cero. En el modo de direccionamiento de 64 bits, el contenido de las posiciones de los bits 0-63 de los registros generales R1 , R2y R3 constituyen las direcciones del primer, segundo y tercer operando, respectivamente; los bits 0-63 de las direcciones actualizadas reemplazan el contenido de los registros generales R1 , R2 y R3 y se ignoran las ejecuciones de la posición 0.
En los modos de direccionamiento tanto de 24 bits como de 31 bits, el contenido de las posiciones de los 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 operando, y se ignora el contenido de las posiciones de los bits 0-31; los bits 32-63 del valor actualizado reemplazan los bits correspondientes en el registro general R2+1. En el modo de direccionamiento de 64 bits, el contenido de las posiciones de los bits 0-63 del registro general R2+1 forma un entero binario sin signo de 64 bits que especifica el número de bytes en el primer y segundo operando; el valor actualizado reemplaza el contenido del registro general R2+1.
En los modos de direccionamiento tanto de 24 bits como de 31 bits, el contenido de las posiciones de los bits 32-63 del registro general R3+1 forma un entero binario sin signo de 32 bits que especifica el número de bytes en el tercer operando, y el contenido de las posiciones de los bits 0-31 se ignora; los bits 32-63 del valor actualizado reemplazan los bits correspondientes en el registro general R3+1. En el modo de direccionamiento de 64 bits, el contenido de las posiciones de los bits 0-63 del registro general R3+1 forma un entero binario sin signo de 64 bits que especifica el número de bytes en el tercer operando; el valor actualizado reemplaza el contenido del registro general R3+1.
En el modo de direccionamiento de 24 bits o 31 bits, el contenido de las posiciones de los bits 0-31 de los registros generales R1 , R2 , R2+1, R3y R3+1 permanece sin cambios.
En el modo de registro de acceso, los registros de acceso 1, R1 , R2y R3 especifican los espacios de direcciones que contienen el bloque de parámetros, primer, segundo y tercer operando, respectivamente.
Cada una de las funciones se describe más abajo:
Consulta (Código de Función 0)
Esta función usa un bloque de parámetros que incluye, por ejemplo, una palabra de estado de 128 bits almacenada en el bloque de parámetros. Los bits 0-127 de este campo corresponden a los códigos de función 0-127, respectivamente, de la instrucción Mensaje Cifrado con Autenticación. Cuando un bit es uno, se instala la función correspondiente; de cualquier otra manera, la función no se instala.
El código de condición 0 se establece cuando se termina la ejecución de la función de consulta; los códigos de condición 1, 2 y 3 no se aplican a esta función.
Modo Galois/Contador (GCM)-Funciones AES (Códigos de Función Selectivos Distintos De Cero)
En una realización, existen seis funciones GCM-AES:
GCM-AES-128 (código de función 18)
GCM-AES-192 (código de función 19)
GCM-AES-256 (código de función 20)
GCM-Encrypted AES-128 (código de función 26)
GCM-Encrypted AES-192 (código de función 27)
GCM-Encrypted AES-256 (código de función 28)
Estas funciones también usan un bloque de parámetros, y un ejemplo de un bloque de parámetros usado para las funciones GCM-AES se describe con referencia a la Figura 4. En un ejemplo, un bloque de parámetros 400 incluye:
Reservado: Los bytes 0-11 del bloque de parámetros se reservan. El campo reservado puede contener valores impredecibles de la instrucción.
Valor del Contador (CV) 402: Los bytes 12-15 del bloque de parámetros contienen, por ejemplo, un entero binario de 32 bits. Los 12 bytes más a la izquierda del valor inicial del contador 412 (Jo, en los bytes 64-79 del bloque de parámetros) se concatenan con el contenido del campo CV a la derecha para formar el bloque de contador inicial (ICB) que se usa por una función GCTR (Contador Galois), descrita más abajo.
Para cada ejecución de la instrucción, la CPU incrementa el campo CV en el bloque de parámetros por el número de bloques de segundos operandos procesados. Se ignora una ejecución de la posición de bit 0 del campo CV.
Etiqueta (T) 404: Los bytes 16-31 del bloque de parámetros contienen el campo de etiqueta de autenticación de mensaje.
Para cada bloque del tercer operando, y para cada bloque del primer operando resultante (cuando M es 0) o cada bloque del segundo operando (cuando M es 1), la CPU usa el campo de etiqueta tanto de entrada como de salida a una función Galois Hash (GHASH), descrita más abajo. Cuando todos los datos autenticados adicionales y el texto cifrado se han verificado, la concatenación de los campos TAADL 408 y TPCL 410 (descritos a más abajo) se cifran mediante el uso de GHASH y los resultados del hash se codifican mediante la función GCTR para producir un último campo de etiqueta (T) en el bloque de parámetros.
Subclave Hash (H) 406: Para las funciones GCM-AES, los bytes 32-47 del bloque de parámetros contienen, por ejemplo, una subclave hash de 128 bits que se usa por las funciones GHASH de la instrucción. Cuando el indicador suministrado por la subclave hash (HS, bit 53 del registro general 0) es cero, la CPU calcula la subclave hash al cifrar 128 bits de ceros binarios mediante el uso de la clave criptográfica (K), almacena la subclave hash en el campo H, y establece el indicador HS en uno. Cuando el indicador Hs es uno, la CPU usa la subclave hash suministrada por el programa en el campo H; y el campo H y el indicador HS no se alteran en este caso.
Para las funciones AES cifradas con GCM, los bytes 32-47 del bloque de parámetros se reservan y deben contener ceros; de cualquier otra manera, el programa puede que no funcione compatiblemente en el futuro. En este caso, la CPU calcula la subclave hash al cifrar 128 bits de ceros binarios mediante el uso de la clave criptográfica descifrada (K); y el campo H y el indicador HS no se alteran en este caso.
Longitud Total de Datos Autenticados Adicionales (TAADL) 408: Los bytes 48-55 del bloque de parámetros contienen un entero binario sin signo de 64 bits que designa la longitud total en bits de todos los datos autenticados adicionales para el mensaje que se procesa.
Longitud Total de Texto Sin Formato o Texto Cifrado (TPCL) 410: Los bytes 56-63 del bloque de parámetros contienen un entero binario sin signo de 64 bits que designa la longitud total en bits del texto sin formato o texto cifrado completo del mensaje que se procesa.
Valor Inicial del Contador (J0) 412: Los bytes 64-79 del bloque de parámetros contienen un valor inicial del contador de 128 bits que se usa (a) para proporcionar los 96 bits más a la izquierda del bloque de contador inicial usado por la función GCTR, y (b) para cifrar el último campo de etiqueta de autenticación (T).
Clave Criptográfica (K) 414: La clave criptográfica usada en las operaciones de cifrado y descifrado comienza en el byte 80 del bloque de parámetros. La dimensión del campo de clave y su desplazamiento en el bloque de parámetros son dependientes del código de función, como se indica más abajo:
Código de Función Función Longitud de Clave (bytes) Desplazamiento de Clave (bytes) 18 GCM-AES-128 16 80-95
19 GCM-AES-192 24 80-103
20 GCM-AES-256 32 80-111
26 GCM-Encrypted-AES-128 16 80-95
27 GCM-Encrypted-AES-192 24 80-103
28 GCM-Encrypted-AES-256 32 80-111
Patrón de Verificación de Clave de Envoltura AES (WKaVP) 418: Para las funciones GCM-Encrypted-AES (códigos 26-28), los 32 bytes que siguen inmediatamente a la clave en el bloque de parámetros contienen el patrón de verificación de clave de envoltura AES (WKaVP).
Para las funciones GCM-AES (códigos 18-20), el campo WKaVP no está presente en el bloque de parámetros. En una realización, para las funciones GCM-AES, la autenticación de los datos autenticados adicionales y el cifrado y autenticación de mensaje incluye una secuencia de operaciones. La secuencia de operaciones realizadas, que depende de los indicadores y el código de función en el registro general 0, incluye, por ejemplo:
1. Verificación de la Clave de Envoltura: Este proceso se realiza una vez para cada ejecución de la instrucción, y garantiza que las funciones que usan claves de envoltura cifradas estén usando la versión correcta de la clave. Para las funciones GCM-encrypted-AES (códigos de función 26-28), el contenido del campo de 32 bytes WK aVP se compara con el contenido de un registro de patrón de verificación de clave de envoltura AES. Si no coinciden, las ubicaciones del primer operando y del bloque de parámetros permanecen sin cambios y la operación se termina al configurar el código de condición, por ejemplo, 1. Si coinciden, el contenido del campo de clave 414 del bloque de parámetros se descifra mediante el uso de una clave de envoltura AES para obtener la clave criptográfica de 128 bits, K 414, usada por la función; sin embargo, el campo de clave del bloque de parámetros no se modifica. Para las funciones de GCM-AES que no usan claves cifradas (códigos 18-20), no se realiza la verificación de la clave de envoltura.
2. Cálculo de la Subclave Hash: Este proceso toma un valor de cero de 128 bits, y lo cifra mediante el uso de un algoritmo de cifrado (por ejemplo, cifrado AES). Para las funciones que no usan claves de envoltura, la implementación permite que el programa especifique una subclave hash precalculada. Se usa una subclave hash en el procesamiento GHASH para producir la etiqueta de autenticación de mensaje resultante.
Para las funciones GCM-AES (códigos de función 18-20), se aplica lo siguiente:
• Cuando el indicador suministrado por la subclave hash (HS, bit 53 del registro general 0) es cero, un bloque de 128 ceros binarios se cifra mediante el uso del algoritmo AES. Como se muestra en la Figura 5A, el algoritmo AES 500 usa el campo de clave (K) 414 desde el bloque de parámetros. La subclave hash de 128 bits resultante 504 se coloca en el campo H 406 del bloque de parámetros y el indicador HS se establece en uno en el registro general 0.
• Cuando el indicador HS es uno, el campo H 406 en el bloque de parámetros se usa como subclave hash. En este caso, el campo H y el indicador HS no se alteran.
Para las funciones GCM-encrypted-AES (códigos de función 26-28), se ignora el indicador HS. Un bloque de 128 ceros binarios se cifra mediante el uso del algoritmo AES como se muestra en la Figura 5A, mediante el uso de la clave descifrada (K). En este caso, el campo H 406 del bloque de parámetros y el indicador HS no se alteran.
3. Hash de Datos Autenticados Adicionales: Cualquier dato autenticado adicional se procesa por el algoritmo GHASH para formar una etiqueta de mensaje parcial. Cuando la longitud del tercer operando en el registro general R3+1 es distinta de cero, se realiza el hash de datos autenticados adicionales. En este caso, el registro general de número par designado por el operando R3 de la instrucción contiene la dirección de una ubicación de almacenamiento que contiene datos a partir de los cuales se calcula una etiqueta de autenticación de mensaje mediante el uso del algoritmo GHASH. Además de los bloques del tercer operando, la función GHASH usa la subclave hash 406 y el campo de etiqueta 404 en el bloque de parámetros como valores de entrada.
El resultado se obtiene como si el procesamiento comenzara en el extremo izquierdo del tercer operando y procediera hacia la derecha, bloque por bloque. Cuando quedan uno o más bloques completos de 16 bytes de datos autenticados adicionales, el procesamiento es como se ilustra en la Figura 5B, en el que la operación en 510 es un OR exclusivo a nivel de bit, y la operación en 512 es una operación de multiplicación GCM sobre GF (2128).
En una implementación, el proceso de hash de datos autenticados adicionales finaliza cuando cualquiera de las siguientes condiciones es verdadera:
• Se ha procesado un número de bloques determinado por la CPU que es menor que la longitud del tercer operando. En este caso, la autenticación de mensaje calculada hasta ahora se coloca en el campo T 404 del bloque de parámetros, el registro general r3 se incrementa por el número de bytes del tercer operando procesados, el registro general R3+1 se decrementa en la misma cantidad y la instrucción se termina al configurar, por ejemplo, el código de condición 3.
• El último indicador de datos autenticados adicionales (LAAD, bit 54 del registro general 0) es cero y el número de bytes restante en el tercer operando es menor que 16. En este caso, la etiqueta de autenticación de mensaje calculada hasta ahora (si la hay) se coloca en el campo T 404 del bloque de parámetros, el registro general R3 se incrementa por el número de bytes del tercer operando procesados (si los hay), el registro general R3+1 se decrementa en la misma cantidad y la instrucción se termina al configurar, por ejemplo, el código de condición 2.
• El indicador LAAD es uno, y el número de bytes restante en el tercer operando está entre 1 y 15. En este caso, se realiza lo siguiente:
- Una copia del bloque corto restante se rellena a la derecha con ceros binarios suficientes para formar un bloque completo al que se verifica mediante el uso de GHASH.
- El registro general R3 se incrementa por el número de bytes del tercer operando procesados y la longitud del tercer operando en el registro general R3+1 se establece en cero.
El procesamiento del último bloque del tercer operando es como se ilustra en la Figura 5C.
• El indicador LAAD es uno y el número de bytes restantes en el tercer operando es cero. En este caso, depende del modelo si la instrucción se termina, por ejemplo, con el código de condición 3 o si el procesamiento continúa con el cifrado y el hash del segundo operando, como se describe más abajo. Cuando la longitud del tercer operando en el registro general R3+1 es inicialmente cero y el indicador LAAD es uno, no se realiza el hash de datos autenticados adicionales. En este caso, depende del modelo si el campo T 404 en el bloque de parámetros se recupera y se almacena de nuevo sin modificar.
4. Cifrado y Hash del Mensaje: Este es el procedimiento de cifrar o descifrar el mensaje, y calcular una etiqueta de mensaje con base en los datos cifrados. En función del bit M (bit 56 del registro general 0), cada bloque del segundo operando se cifra o se descifra mediante el uso de la función GCTR. El resultado encriptado o desencriptado respectivo se coloca en la primera ubicación del operando, y el operando encriptado se verifica mediante el uso de la función GHASH. La combinación del procesamiento GCTR y GHASH se describe como la función GCM.
Conceptualmente, el resultado se obtiene como si el procesamiento comenzara en el extremo izquierdo del primer y segundo operando y procediera hacia la derecha, bloque por bloque, como se ilustra en la Figura 5D y la Figura 5E. Sin embargo, en función del modelo, una unidad de operación puede procesar múltiples bloques del primer y segundo operando en paralelo; por lo tanto, no necesariamente se puede acceder a los bloques en orden de izquierda a derecha. Además, se pueden realizar múltiples accesos a un bloque, y en el caso de la operación de cifrado, se puede recuperar un primer bloque de operando una vez almacenado.
La función GCTR usa un bloque de contador inicial (ICB) de 16 bytes formado a partir de la concatenación de los 12 bytes más a la izquierda del valor inicial del contador (J0) 412 a la izquierda con el contador de cuatro bytes (CV) 402 a la derecha. La GCTR también usa el campo de clave (ya sea directamente del bloque de parámetros para las funciones GCM-AES, o la clave descifrada para las funciones GCM-encrypted-AES). Para cada bloque que se cifra por GCTR, el valor del contador (CV) se incrementa en uno; se ignora una ejecución de la posición de bit 0 del valor del contador. La función GCTR después usa un bloque de contador de 16 bytes (CB) formado a partir de los 12 bytes más a la izquierda de J0 concatenado con el valor del contador incrementado.
La función GHASH usa los datos cifrados (es decir, el resultado del primer operando cifrado cuando M es 0 o el segundo operando cuando M es uno), el campo de etiqueta (T) del bloque de parámetros o de la etapa anterior, y la subclave hash.
Cuando el bit M es cero (es decir, cuando se cifra el segundo operando), el procesamiento GCM de bloques completos es como se ilustra en la Figura 5D. Cuando el bit M es uno (es decir, cuando se descifra el segundo operando), el procesamiento GCM de bloques completos es como se ilustra en la Figura 5E.
El proceso de cifrado y hash para el cifrado o descifrado continúa hasta que alguna de las siguientes condiciones sea verdadera, en un ejemplo:
• Se ha procesado un número de bloques determinado por la CPU que es menor que la longitud del segundo operando. En este caso, el valor actual del contador se coloca en el campo CV 402 del bloque de parámetros, la etiqueta de autenticación de mensaje calculada hasta ahora se coloca en el campo T 404 del bloque de parámetros, los registros generales R1 y R2 se incrementan por el número de bytes del segundo operando procesados, el registro general R2+1 se decrementa en la misma cantidad y la instrucción se completa al configurar, por ejemplo, el código de condición 3.
• El último indicador de texto sin formato/texto cifrado (LPC, bit 55 del registro general 0) es cero, y el número de bytes restantes en el segundo operando es menor que 16. En este caso, el valor actual del contador se coloca en el campo CV 402 del bloque de parámetros, la etiqueta de autenticación de mensaje calculada hasta el momento (si la hay) se coloca en el campo T 404 del bloque de parámetros, los registros generales R1 y R2 se incrementan por el número de bytes del segundo operando procesados (si los hay), el registro general R2+1 se decrementa en la misma cantidad y la instrucción se completa al establecer, por ejemplo, el código de condición 2.
• El indicador LPC es uno, y el número de bytes restantes en el segundo operando está entre 1 y 15. En este caso, se realiza lo siguiente:
- Una copia de los bytes restantes del segundo operando se rellena a la derecha con suficientes ceros binarios para formar un bloque completo que se cifra mediante el uso del algoritmo GCTR, y los bytes más a la izquierda del bloque cifrado o descifrado resultante se colocan en la ubicación del primer operando. El número de bytes colocados en la ubicación del primer operando es el mismo que el número de bytes restantes en el segundo operando (es decir, menos de 16).
- Después, el algoritmo GHASH se aplica después al texto cifrado. Cuando M es cero, la entrada al algoritmo GHASH incluye una copia del bloque corto almacenado en la ubicación del primer operando, rellenado a la derecha con ceros binarios suficientes para formar un bloque completo. Cuando M es uno, la entrada al algoritmo GHASH es la misma que la entrada al algoritmo GCTR (es decir, una copia de los bytes restantes del segundo operando, que se rellena a la derecha con ceros binarios suficientes para formar un bloque completo).
- El valor actual del contador se coloca en el campo CV 402 del bloque de parámetros, el valor de etiqueta resultante se coloca en el bloque de parámetros, los registros generales R1 y R2 se incrementan por el número de bytes del segundo operando procesados, y el registro general R2+1 se establece en cero. El procesamiento de GCM del último bloque del segundo operando es como se ilustra en la Figura 5F.
• El indicador LPC es uno, y el número de bytes restantes en el segundo operando es cero. En este caso, depende del modelo si la instrucción se termina, por ejemplo, con el código de condición 3, o continúa el procesamiento con el hash y el cifrado de la última etiqueta de autenticación de mensaje, como se describe más abajo.
5. Hash y Cifrado de la Última Etiqueta de Autenticación de Mensaje: Este proceso toma la longitud total de los datos y mensajes autenticados adicionales en bits, los somete al algoritmo GHASH, y después los combina con un valor inicial del contador cifrado para formar la etiqueta final de autenticación de mensaje. Un valor de 128 bits que comprende la concatenación de la longitud total de datos de autenticación adicionales de 64 bits (TAADL) y los campos de longitud de texto sin formato o texto cifrado (TPCL) del bloque de parámetros se verifica mediante el uso de la función GHASH. La función GHASH usa el campo de longitudes concatenados, el campo de etiqueta (T) calculado en la operación de cifrado y hash, y la subclave hash.
La salida resultante de 128 bits de GHASH es procesada después por el algoritmo GCTR. Tenga en cuenta que, a diferencia de la operación de cifrado y hash, el contador de entrada al GCTR es el bloque de contador inicial (J0) campo 412 del bloque de parámetros. El valor de 128 bits resultante reemplaza el campo de etiqueta (T) 404 en el bloque de parámetros, y la instrucción se termina, por ejemplo, con el código de condición 0. La Figura 5G ilustra una realización del hash y el cifrado del último valor de etiqueta.
En una realización, el programa que emite la instrucción es responsable de suministrar valores TAADL y TPCL precisos (por ejemplo, en bits). En una realización adicional, el programa puede establecer los valores TAADL y TPCL en cero al comenzar el proceso del mensaje, y la CPU podría actualizar estos campos como una o más ejecuciones repetidas del proceso de instrucción del mensaje.
Se proporcionan detalles adicionales con relación a las instrucciones más abajo.
La detección de condiciones que resultan en una terminación parcial (por ejemplo, el código de condición 3) depende del modelo, y puede ser un número diferente cada vez que se ejecuta la instrucción. El número de bloques determinado por la CPU es generalmente distinto de cero. En ciertas situaciones inusuales, este número puede ser cero y el código de condición, por ejemplo, 3 se puede establecer sin progreso. Sin embargo, la CPU protege contra la recurrencia interminable de este caso sin progreso.
Los resultados son impredecibles si alguna de las siguientes condiciones es verdadera:
• El tercer operando se superpone destructivamente con cualquier porción del bloque de parámetros que se pueda actualizar durante el procesamiento adicionales de datos autenticados.
• El indicador LAAD es uno, y cualquiera de las siguientes condiciones es verdadera:
- El segundo operando se superpone destructivamente con cualquier porción del bloque de parámetros que se pueda actualizar durante el cifrado y el hash.
- El primer operando se superpone destructivamente con cualquier porción del bloque de parámetros al que se puede acceder durante el cifrado y el hash.
- El primer operando se superpone destructivamente con el segundo operando, pero los operandos no designan la misma ubicación.
Se dice que los operandos se superponen destructivamente cuando una ubicación se usaría como una fuente después que los datos se hubieran movido a ella, al asumir que el procesamiento se realiza de izquierda a derecha.
Un ejemplo de varios códigos de condición establecidos por la instrucción, y las longitudes de segundo y tercer operando resultantes con base en los indicadores LAAD y LPC se indican más abajo:
cc LAAD LPC 3rd OpL 2nd OpL
0 1 1 0 0
1 -- -- Sin cambiosf Sin cambiosf
2 0 -- <16 Sin cambios
2 1 0 0 <16
3 0 -- >=16 Sin cambios
3 1 0 0 >=16
3 1$ 1$ 0$ 0$
Explicación:
- No aplicable
f Además, las direcciones de primer, segundo, y tercer operando en los registros generales R1, R2 y R3 no se modifican
$ Es dependiente del modelo si CC3 se establece para estas condiciones (que son idénticas a las condiciones CC0).
Código de Condición CC
Indicador de los últimos datos autenticados adicionales LAAD, bit 54 del registro general 0
Indicador del último texto sin formato/texto cifrado LPC, bit 55 del registro general 0
3rd OpL Longitud del Tercer Operando
2ndOpL Longitud del Segundo Operando
Las excepciones de acceso tipo almacén se pueden reconocer para cualquier ubicación en el bloque de parámetros, aunque solo los campos CV, T, y H se almacenan por la instrucción.
Un evento PER de alteración de almacenamiento se puede reconocer tanto para la ubicación del primer operando como para la porción del bloque de parámetros que se almacena. Un evento PER de detección de dirección cero se puede reconocer para las ubicaciones del primer, segundo y tercer operando y para el bloque de parámetros (que incluye el campo reservado del bloque de parámetros). Cuando se detectan eventos PER para una o más de estas ubicaciones, es impredecible qué ubicación se identifica en la identificación de acceso PER (PAID) y PER ASCE ID (AI).
Es impredecible cuántos bytes de las ubicaciones del primer, segundo, o tercer operando se han procesado cuando se reconoce un evento PER de alteración de almacenamiento para el bloque de parámetros. Cuando se reconoce un evento PER de alteración de almacenamiento para la ubicación del primer operando, se almacenan menos de 4 K bytes adicionales en ubicación del primer operando antes de que se reporte el evento.
Cuando la longitud del tercer operando es inicialmente cero, no se accede al tercer operando, y la dirección del tercer operando y la longitud del tercer operando en los registros generales R3 y R3 1, respectivamente, no se modifican. Cuando la longitud del segundo operando es inicialmente cero, no se accede al segundo operando, y la dirección del segundo operando y la longitud del segundo operando en los registros generales R2 y R2 1, respectivamente, no se modifican. Sin embargo, se puede acceder al bloque de parámetros incluso cuando las longitudes del segundo y tercer operando sean cero.
Cuando el contenido de R1 y R2, los campos son iguales, el contenido de los registros designados se incrementa por el número de bytes procesados, no por un múltiplo del número de bytes procesados.
Según lo observado por esta CPU, otras CPU y programas de canal, las referencias al bloque de parámetros y los operandos de almacenamiento pueden ser referencias de acceso múltiple, los accesos a estas ubicaciones de almacenamiento no son necesariamente simultáneos en el bloque y la secuencia de estos accesos o referencias es indefinida.
En ciertas situaciones inusuales, la ejecución de la instrucción se puede completar al establecer el código de condición 3 sin actualizar los registros para reflejar la última unidad del primer, segundo y tercer operando procesados. El tamaño de la unidad procesada en este caso depende de la situación y el modelo, pero se limita de manera que la porción del primer y segundo operando que se han procesado y no se han reportado no se superponen en el almacenamiento; y la porción del primer y tercer operando que se han procesado y no se han reportado no se superponen en el almacenamiento. En todos los casos, se establecen bits de cambio y los eventos p Er de alteración de almacenamiento se reportan, cuando corresponde, para todas las ubicaciones del primer operando procesadas.
Para las funciones que realizan una comparación de la clave criptográfica cifrada con el registro del patrón de verificación de la clave de envoltura, es impredecible si las excepciones de acceso y los eventos PER de detección de dirección cero se reconocen para el primer, segundo y tercer operando cuando la comparación resulta en una discordancia y la longitud del operando respectivo es distinta de cero.
Las excepciones de acceso se pueden reportar para una porción mayor de un operando que se procesa en una sola ejecución de la instrucción; sin embargo, las excepciones de acceso no se reconocen para ubicaciones más allá de la longitud de un operando ni para ubicaciones de más de 4K bytes más allá de la ubicación actual que se procesa. En un ejemplo, se reconoce una excepción de la memoria descriptiva y no se toma ninguna otra acción si ocurre algo de lo siguiente:
1. Los bits 57-63 del registro general 0 especifican un código de función no asignado o desinstalado.
2. El campo R1, R2o R3 designa un registro de número impar o un registro general 0.
3. El campo R3 designa el mismo registro que los campos R1 o R2.
4. El código de función es distinto de cero y el indicador LPC es uno (que indica que se están procesando los últimos bloques de texto sin formato o texto cifrado), pero el indicador LAAD es cero (que indica que no se han procesado todos los datos autenticados adicionales).
Código de Condición Resultante, como ejemplos:
0 Terminación normal
1 Discordancia de Patrón de Verificación
2 Procesamiento incompleto (la longitud restante del tercer operando es menor que, por ejemplo, 16 cuando el indicador LAAD es cero, o la longitud restante del segundo operando es menor que, por ejemplo, 16 cuando el indicador LPC es cero)
3 Terminación parcial (límite dependiente del modelo excedido)
Las Excepciones del Programa de Ejemplo incluyen:
• Acceso (buscar, operando 2, operando 3, campos de bloque de parámetros; almacenar, operando 1, valor del contador, subclave hash, etiqueta)
• Operación (si la extensión de asistencia de seguridad de mensajes 8 no se instala)
• Descripción
• Restricción de transacción
Además, las condiciones de excepción/terminación de ejemplo para la prioridad de ejecución incluyen:
1.-7. Excepciones con la misma prioridad que la prioridad de las condiciones de interrupción de programa para el caso general.
8. Excepción de la memoria descriptiva debido a un código de función no válido o un número de registro no válido.
9. Excepción de la memoria descriptiva debido a que el indicador LPC es uno cuando el indicador LAAD es cero (aplicable cuando el código de función no es cero).
10.A.1 Excepciones de acceso para un accedo al bloque de parámetros.
10.A.2. Código de condición 1 debido a una discordancia en el patrón de verificación.
10. B Excepciones de acceso para acceder al primer, segundo, o tercer operando.
11. Código de condición 3 debido al procesamiento parcial del tercer operando.
12. Código de condición 2 debido a que la longitud del tercer operando restante es menor que, por ejemplo, 16 cuando el indicador LAAD es cero.
13. Código de condición 3 debido al procesamiento parcial del segundo operando.
14. Código de condición 2 debido a que la longitud restante del segundo operando es menor que, por ejemplo, 16 cuando el indicador LPC es cero.
15. Código de condición 0 debido a terminación normal.
Además, en una o más realizaciones, lo siguiente se aplica:
Cuando al procesar un mensaje individual, el programa establece inicialmente, en un ejemplo, los siguientes campos en el bloque de parámetros y no modifica estos campos hasta que la instrucción se completa con el código de condición, por ejemplo, 0; de cualquier otra manera, los resultados no se ajustarán al estándar GCM.
a. Valor del contador (CV): El campo CV se debe inicializar con los 4 bytes más a la derecha del campo del valor inicial del contador (J0).
b. Etiqueta (T): El campo de etiqueta debe inicializarse a ceros.
c. La Subclave Hash (H): Para las funciones KMA-GCM-AES (códigos 18-20), se aplica lo siguiente:
• Cuando el indicador HS es uno, el programa suministra una subclave hash precalculada en el campo H. La subclave comprende, por ejemplo, 16 bytes de ceros, encriptados mediante el uso del algoritmo AES.
• Cuando el indicador HS es cero, la CPU encripta, por ejemplo, 16 bytes de ceros mediante el uso del algoritmo AES y el campo de clave en el bloque de parámetros, almacena los resultados en el campo H, y establece el indicador HS en uno.
Para las funciones KM-encrypted-AES (códigos 26-28), la CPU calcula la subclave hash y el campo H y los indicadores HS no se modifican.
d. Valor del Contador Inicial (J0): El valor del contador inicial se deriva de un vector de inicialización (IV) que proporciona el programa. Si el programa usa, por ejemplo, un IV de 96 bits, entonces debe almacenar el IV en los 12 bytes más a la izquierda del campo J0, y almacenar 00000001 hexadecimal en los bytes más a la derecha del campo J0. Si el programa usa un IV que tiene una longitud diferente, entonces debe proporcionar, por ejemplo, un valor hash de 16 bytes del IV en el campo J0 mediante el uso del algoritmo GHASH.
e. El valor clave (K) y patrón de verificación de clave envolvente (WKaVP): Para el cifrado adecuado de un mensaje individual, la clave es la misma para todas las ejecuciones de la instrucción. Para las funciones KM-encrypted-AES, el campo de patrón de verificación de clave envolvente también permanece sin cambios.
Cuando se procesan los últimos bloques de texto sin formato o de texto cifrado (es decir, cuando el indicador LPC es uno), la longitud total de datos autenticados adicionales (TAADL) y los campos de longitud de texto sin formato/texto cifrado total (TPCL) en el bloque de parámetros deben contener la longitud total en bits de los respectivos datos autenticados adicionales y texto sin formato o texto cifrado para todo el mensaje.
El programa se responsabiliza de comparar la etiqueta hash de un mensaje descifrado con la del mensaje cuando se cifró para garantizar la autenticidad del mensaje.
Los indicadores LAAD y LPC proporcionan los medios por los cuales se puede cifrar y verificar un mensaje cuando no todos los componentes del mensaje se disponen para una sola ejecución de la instrucción. Por ejemplo, si la porción de texto sin formato o de texto cifrado de un mensaje abarca varios registros de disco o cinta, y no todos los bloques del mensaje se han leído en almacenamiento, el programa puede procesar los bloques anteriores del mensaje al emitir la instrucción con el indicador LPC puesto a cero. Cuando se disponen los bloques finales de texto sin formato o de texto cifrado de mensaje, el programa puede después completar el cifrado de mensaje al emitir la instrucción con el indicador LPC puesto a uno.
Cuando el código de condición 2 se establece debido a que uno o ambos indicadores LAAD o LPC son cero, los registros generales que contienen las direcciones y longitudes de los operandos, y el bloque de parámetros se actualizan para indicar el progreso hasta el momento. No obstante, a diferencia del código de condición 3 (donde el programa puede simplemente volver a la instrucción para continuar la operación), el programa es responsable de actualizar las direcciones y longitudes de los operandos, y los indicadores LAAD y LPC, si es necesario, antes de volver a la instrucción. Si el programa simplemente vuelve a la instrucción en respuesta al código de condición 2, se producirá un bucle de programa no productivo, en un ejemplo.
Cuando se establece el código de condición 3, los registros generales que contienen las direcciones y longitudes de los operandos, y el bloque de parámetros, generalmente se actualizan de manera que el programa puede simplemente volver a la instrucción para continuar la operación.
Detalles adicionales sobre varias de las funciones del Modo Galois/Contador se describen más abajo. Estos son solo ejemplos, y se describen en la Publicación Especial 800-38D del Instituto Nacional de Ciencia y Tecnología (NIST) de Estados Unidos, Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) y GMAC. Se pueden hacer variaciones y/o se pueden usar otras funciones relacionadas con el Modo Galois/Contador y/u otros modos de cifrado pueden usarse.
Para la comprensión de las funciones siguientes, se describen los siguientes símbolos:
Variables:
A Los datos autenticados adicionales.
C El texto cifrado.
H La subclave hash.
ICB El bloque de contador inicial.
IV El vector de inicialización.
K La clave de cifrado en bloque.
P El texto sin formato.
R La constante dentro del algoritmo para la operación de multiplicación de bloques.
T La etiqueta de autenticación.
t La longitud de bits de la etiqueta de autenticación.
Operaciones y Funciones:
0s La cadena de bits que consta de s '0' bits.
CIPHk(X) La salida de la función de cifrado adelante del cifrado en bloque bajo la clave K aplicada al bloque X.
GCTRk(ICB, X) La salida de la función GCTR para un cifrado en bloque dado con la clave K que se aplica a la cadena de bits X con un bloque de contador inicial ICB.
GHASHh(X) La salida de la función GHASH bajo la subclave hash H aplicada a la cadena de bits X.
incs(X) La salida de incrementar los s bits más a la derecha de la cadena de bits X, se considera como la representación binaria de un entero, en 1 módulo 2s.
int(X) El entero para el que la cadena de bits X es una representación binaria.
len(X) La longitud de bits de la cadena de bits X.
LSBs(X) La cadena de bits que consiste en los s bits más a la derecha de la cadena de bits X.
MSBs(X) La cadena de bits que consiste en los s bits más a la izquierda de la cadena de bits X.
rxi El menor entero que no es menor que el número real x.
[x]s La representación binaria del entero no negativo x como una cadena de s bits, donde x<2s .
X>>1 La cadena de bits que resulta de descartar el bit más a la derecha de la cadena de bits X y de anteponer un bit '0' a la izquierda.
X || Y La concatenación de dos cadenas de bits X e Y.
X © Y El OR exclusivo a nivel de bit de dos cadenas de bits X e Y de la misma longitud.
X • Y El producto de dos bloques, X e Y, se consideran como elementos de un determinado campo binario de Galois.
X i Para un entero positivo i, la i enésima potencia de X según el producto''
x • y El producto de dos enteros, x e y.
Un ejemplo de multiplicación de bloques (X ■ Y) incluye, por ejemplo:
Prerrequisitos:
Let R = 11100001 II 0120.
Entrada:
Bloques X, Y
Salida:
Bloques X . Y
Etapas:
1. Let X0X1 ...X127 denota la secuencia de bits en X
2. L e t Zo = O128 y iV 0 = Y.
3. For i = 0 to 127, calcular bloques ZI+1 y V¡+1 de la siguiente manera:
Zm = Z¡ (síxí = 0,o-]
Z¡ © V¡ [si = 1]
V h i = Vi » I [SÍ LSB¡ (Vi) =0, o ]
( V i» 1) © R [siLSBi (Vi) = I]
4. Devuelve Z 128.
Detalles adicionales sobre un ejemplo de una función de cifrado GCM se proporcionan más abajo:
Algoritmo: GCM-AEk(IV,P,A)
Prerrequisitos:
Cifrado en bloque CIPH que se aprueba con un tamaño de bloque de 128 bits;
Clave K;
Definiciones de longitudes de entrada-salida soportadas;
Longitud de etiqueta soportada t asociada con la clave.
Entrada:
Vector de inicialización IV (cuya longitud es compatible);
Texto sin formato P (cuya longitud es compatible);
Datos autenticados adicionales A (cuya longitud es compatible).
Salida:
Texto cifrado C;
Etiqueta de autenticación T.
Etapas:
1. Let H = CIPHk(0128).
2. Definir un bloque, Jo, de la siguiente manera:
Si len(IV) = 96, entonces let J0 = IV||031||1.
Si len(IV) t 96, entonces let s = 128 ■ r len(IV / 128-, - len(IV), y
let Jo = GHASHH(IV||0s+64||[len(IV)]64).
3. Let C = GCTRK(inc32(Jo),P).
4. Let u = 128 ■ r len(C) / 128- - len(C), y
Let v = 128. r len(A) / 128- - len(A)
5. Definir un bloque, S, de la siguiente manera:
S = GHASHH(A||0v ||C||01[len(A)]64ll[len(C)]64).
6. Let T = MSBt(GCTRK(J0,S)).
7. Devuelve (C, T).
Una realización de una función de descifrado de GCM se describe más abajo:
Algoritmo: GCM-ADk(IV,C,A,T)
Prerrequisitos:
Igual que el anterior para cifrar
Entrada:
Vector de inicialización IV;
Texto cifrado C;
Datos autenticados adicionales A;
Etiqueta de autenticación T.
Salida:
Texto sin formato P o indicación de falta de autenticidad FAIL.
Etapas:
1. Si la longitud de bits de IV, A o C no es compatible, o Si len(T) t t, entonces devuelve FAIL.
2. Let H = CIPHk(0128).
3. Definir un bloque, Jo, de la siguiente manera:
Si len(IV) = 96, entonces let J0 = IV||031||1.
Si len(IV) t 96, entonces let s = 128 ■ r len(IV / 128-, - len(IV), y
let Jo = GHASHH(IV||0s+64||[len(IV)]64).
4. Let P = GCTRK(inc32(Jo), C).
5. Let u = 128 ■ r len(C) / 128- - len(C), y Let v = 128 ■ r len(A) / 128- - len(A)
6. Definir un bloque, S, de la siguiente manera:
S = GHASHH(A||0v||C||01[len(A)]64ll[len(C)]64).
7. Let T' = MSBt(GCTRK(J0,S)).
8. Si T = T', entonces devuelve P, si no devuelve FAIL.
Una realización de la función Galois Hash (GHASH) se describe más abajo:
Algoritmo: GHASHh(X)
Prerrequisitos
Bloque H, la subclave hash.
Entrada:
Cadena de bits X de manera que len(X) = 128 m para algún entero positivo m.
Salida:
Bloque GHASHh (X).
Etapas:
1. Let X1, X2, ..., Xm-1, Xm denotar la secuencia única de bloques de manera que X= X1llX2ll...llXm-1llXm.
2. Let Y0 ser el "bloque cero", 0128 (es decir, 128 bits de ceros).
3. Para i = 1, ..., m, let Yi = (YM © Xi)H.
4. Devuelve Ym.
Además, una realización de una función de Contador Galois (GCTR) se describe más abajo:
Algoritmo: GCTRk(ICB,X)
Prerrequisitos:
Cifrado en bloque CIPH que se aprueba con un tamaño de bloque de 128 bits;
Clave K.
Entrada:
Bloque de contador inicial ICB.
Cadena de bits X, de longitud arbitraria.
Salida:
Cadena de bits Y de longitud de bits len(X).
Etapas:
1. Si X es la cadena vacía, entonces devuelve la cadena vacía como Y.
2. Let n = r len(X) / 128-,.
3. Let Xi, X2, ..., Xn-1, Xn* denotar la secuencia única de cadenas de bits de manera que
X = XiHXdl.JIXn-illXn*;
X1, X2, ..., Xn-1 son bloques completos.
4. Let CBi = ICB.
5. Para i = 2 to n, let CBi = inc32(CBi-i).
6. Para i = i to n-i, let Yi = X © CIPHk(CBí). [para todos los bloques completos excepto el último]
7. Let Yn* = Xn* © MSBlen(Xn*)(CIPHK(CBn)). [para el bloque final total o parcial]
8. Let Y = YillY2lUIYn*.
9. Devuelve Y.
Una representación gráfica de la instrucción Mensaje Cifrado Con Autenticación se muestra en la Figura 6. Como se muestra, la instrucción Mensaje Cifrado Con Autenticación 300 incluye un primer operando 600 que incluye el resultado cifrado (ya sea cifrado o descifrado); un segundo operando 602 que incluye un mensaje a cifrar (ya sea cifrado o descifrado) y verificar; y un tercer operando 604 que incluye datos adicionales para ser autenticados (hash), pero no cifrados.
Se describen más detalles sobre el procesamiento asociado con una realización de la instrucción Mensaje Cifrado Con Autenticación con referencia a las Figuras 7A-7E.
Con referencia a la Figura 7A, inicialmente, se realiza una determinación si el código de función incluido en el registro general 0 usado por la instrucción es válido, CONSULTA 700. Si no es válido, entonces se puede proporcionar un error, ETAPA 702, y el procesamiento de la instrucción está completo. De cualquier otra manera, si el código de función es válido, entonces se realiza una determinación adicional sobre si el registro especificado en el primer, segundo o tercer campo de registro (es decir, Ri, R2, R3) es un registro impar, CONSULTA 704. Si uno de esos registros es un registro de número impar, entonces en un ejemplo, se proporciona un error, ETAPA 706, y el procesamiento está completo. De cualquier otra manera, se realiza una determinación adicional sobre si el registro especificado en el campo R3 es igual al registro especificado en el campo Ri, o si el registro especificado en el campo R3 es igual al registro especificado en el campo R2, CONSULTA 708. Si el registro especificado en Ri o R2 es igual al registro especificado en R3, entonces se puede especificar un error en un ejemplo, ETAPA 7i0, y el procesamiento se completa. De cualquier otra manera, se realiza una verificación adicional para determinar si el último indicador de texto sin formato/texto cifrado es igual a un valor especificado, como uno, y si el último indicador de datos autenticados adicionales se establece en un valor seleccionado, como cero. Si ambos son verdaderos, entonces se puede proporcionar un error, ETAPA 7i4, y el procesamiento de la instrucción se completa. De cualquier otra manera, si el último control de texto sin formato/texto cifrado no es igual a uno, y el último control de datos autenticados adicionales no es igual a cero, entonces se realiza una verificación para determinar si el código de función es igual a cero, CONSULTA 7i6. Si el código de función es cero, entonces una función de consulta se ejecuta y las funciones válidas se almacenan en el bloque de parámetros, ETAPA 7i8. Un código de condición de, por ejemplo, cero, se establece, en un ejemplo, ETAPA 720. Sin embargo, si el código de función no es cero, entonces el procesamiento continúa con la generación de la subclave hash, como se describió con referencias a la Figura 7B.
Con referencia a la Figura 7B, para funciones de cifrado que no usan claves cifradas, el programa puede proporcionar su propia subclave hash en el bloque de parámetros, o hacer que la instrucción genere una subclave hash. Para las funciones de cifrado que usan claves cifradas, la instrucción genera una subclave hash, y se ignora cualquier subclave hash proporcionada por el programa. Por tanto, en una realización, se realiza una determinación si el código de función designa una función de clave no cifrada (es decir, si el código de función es menor o igual a un valor especificado, como 20), CONSULTA 730. Si el código de función designa una función de clave no cifrada (es decir, el código de función es menor o igual a, por ejemplo, 20), entonces se realiza una determinación si el programa ha proporcionado una subclave hash, CONSULTA 732. Si el programa no ha proporcionado una subclave hash (por ejemplo, el control HS es cero), entonces se genera la subclave hash, ETAPA 734. Por ejemplo, 2i
H=AES(0128, Key). Además, la etiqueta hash se almacena en el bloque de parámetros (PL.H) y el control proporcionado por la subclave hash (HS) se establece en uno, ETAPA 736. (PL en la descripción y las figuras se refiere al bloque de parámetros).
Retornando a la CONSULTA 732, si el programa ha proporcionado una subclave hash (por ejemplo, el contro1HS es uno), el procesamiento continúa con el hash de los datos autenticados adicionales, como se describe con referencia a la Figura 7C.
Retornando a la CONSULTA 730, si el código de función designa una función que usa claves cifradas (por ejemplo, el código de función es mayor que 20), entonces la función es una función de clave de envoltura y se calcula H (por ejemplo, H=AES(0128, Key), ETAPA 738, pero no guardado, y el procesamiento continúa con el hash de los datos autenticados adicionales, como se describió con referencias a la Figura 7C.
Con referencia a la Figura 7C, en una realización, se realiza una determinación si ha habido un tiempo de espera dependiente del modelo, CONSULTA 740. Si ha habido un tiempo de espera dependiente del modelo, entonces el procesamiento finaliza con un código de condición de, por ejemplo, 3, en un ejemplo, ETAPA 742. Sin embargo, si no se ha producido un tiempo de espera dependiente del modelo, entonces se realiza una determinación si la longitud del operando 3 (Op3L) es mayor que un valor especificado, como 16, CONSULTA 744. Si es mayor que 16, entonces un bloque completo de datos de autenticación adicionales se dispone para su procesamiento, ETAPA 746. Por ejemplo, la etiqueta 404 en el bloque de parámetros (PL.T) se establece en H • (PL.T © *Op3A), en el que * indica que Op3A es un puntero al tercer operando (Op3A) (es decir, el campo de etiqueta (T) en el bloque de parámetros se aplica XOR con cualquier almacenamiento del registro general designado para apuntar a R3 ); 16 bytes, por ejemplo, se añaden a la dirección del operando 3 (Op3A); y, por ejemplo, se restan 16 bytes de la longitud del operando 3 (Op3L). Op3L es, por ejemplo, la longitud del operando 3 en bytes. El procesamiento continúa luego con la CONSULTA 740.
Retornando a la CONSULTA 744, si la longitud del operando 3 no es mayor que el valor especificado, por ejemplo, 16, entonces se realiza una determinación del último control de datos autenticados adicionales del campo de indicaciones, CONSULTA 750. Si el valor del control es cero, entonces en una realización, se establece, un código de condición, como el código de condición 2, ETAPA 752. Esto indica que hay datos autenticados adicionales para procesar.
Retornando a CONSULTA 750, si el control es uno, entonces se realiza una verificación adicional de la longitud del operando 3 (Op3L), CONSULTA 754. Si la longitud es mayor que cero, entonces se establece la etiqueta 404 del bloque de parámetros, por ejemplo, PL.T = H ■ (PL.T © (*Op3A [Op3L] II zeros[16-Op3L])); la dirección del operando 3 se incrementa en la longitud del operando 3; y la longitud del operando 3 se establece igual a cero, ETAPA 756. El procesamiento continúa luego con el procesamiento de texto sin formato/texto cifrado, como se describe con referencia a la Figura 7D. Además, si la longitud del operando 3 es cero, CONSULTA 754, entonces el procesamiento continúa con el procesamiento de texto sin formato/texto cifrado de la Figura 7D.
Con referencia a la Figura 7D, se realiza una determinación si ha habido un tiempo de espera dependiente del modelo, CONSULTA 760. Si ha habido un tiempo de espera dependiente del modelo, entonces el procesamiento se completa con un código de condición de, por ejemplo, 3, ETAPA 762. De cualquier otra manera, se realiza una determinación si la longitud del operando 2 (Op2L) es mayor que un valor especificado, como 16, CONSULTA 764. Si es así, entonces CB = PL.Jü[12] I +PL.CV, en el que + indica incremento - se incrementa el valor del contador en el bloque de parámetros; y *Op1A = AES(Key,CB) © *Op2A; PL.T = H ■ (PL.T © (M? *Op2A: *Op1A)), ETAPA 766. (En un ejemplo, el texto (M? *Op2A: *Op1A) indica que sea realiza una determinación si M es verdadero o falso (1 o 0). Si es verdadero, entonces *Op2A se usa como puntero a la entrada del texto cifrado en el segundo operando. Si es falso, entonces *Op1A es el puntero al texto cifrado de salida en el primer operando.) Además, la dirección del operando 1 (Op1A) se incrementa, por ejemplo, en 16 bytes, la dirección del operando 2 ( Op2A) se incrementa, por ejemplo, en 16 bytes, y la longitud del operando 2 (Op2L) se decrementa, por ejemplo, en 16 bytes, ETAPA 766. El procesamiento continúa luego con la CONSULTA 760.
Retornando a la CONSULTA 764, si la longitud del operando 2 no es mayor que el valor especificado, por ejemplo, 16, entonces se realiza una verificación del último control de texto sin formato/texto cifrado del campo de indicadores, CONSULTA 768. Si el indicador es igual a cero, entonces se establece un código de condición especificado, por ejemplo, código de condición 2, ETAPA 770. Esto indica que hay más texto sin formato/texto cifrado para procesar. Sin embargo, si el último control de texto sin formato/texto cifrado se establece en uno, entonces se realiza una determinación adicional en cuanto a la longitud del operando 2, CONSULTA 772. Si la longitud es mayor que cero, entonces CB = PL.Jü[12] I +PL.CV; y * Op1A = AES(PL.Key, CB) © (*Op2A[Op2L] I zeros[16-Op2L); PL.T = H ■ (PL.T © (M ? *Op2A: *Op1A[Op2L] I zeros[16=Op2L])), ETAPA 774. Adicionalmente, las direcciones del operando 1 y del operando 2 se incrementan en la longitud del operando 2, y la longitud del operando 2 se establece luego en cero, ETAPA 774. A continuación, o si la longitud del operando 2 es cero, CONSULTA 772, entonces el procesamiento continúa con el procesamiento de la etiqueta final, como se describe con referencia a la Figura 7E.
Con referencia a la Figura 7E, la etiqueta se establece igual a H ■ (PL.T © (PL.TAADL II PL.TPCL), en el que una función hash (por ejemplo, GHASH) se realiza en la longitud total de bits de datos autenticados adicionales y la longitud total de bits de texto cifrado. Luego, la etiqueta se establece igual a AES (PL.Key, PL.J0) © PL.T, en el que el valor hash final es OR exclusivamente con el contador de cifrado inicial (J0) para formar el resultado de etiqueta, ETAPA 780. (Es decir, se aplica XOR a la etiqueta calculada anteriormente con la concatenación de los dos campos de longitud de bits y se aplica GHASH. Luego, el campo J0 se cifra, y se aplica XOR con los resultados del cálculo anterior para formar la etiqueta final). El procesamiento se completa luego y un código de condición de, por ejemplo, 0, se establece, ETAPA 782.
En la presente memoria se describe una capacidad que combina hash y cifrado en una sola instrucción (por ejemplo, una sola instrucción de máquina diseñada) que además incluye controles para asegurar que una instrucción interrumpible se pueda volver a ejecutar correctamente para continuar procesando un mensaje. Una razón para la re-ejecución se describe más abajo.
En una implementación, las instrucciones de cifrado, definidas por z/Architecture, definen la longitud de un mensaje mediante el uso de un registro de 64 bits; por lo tanto, la longitud de un mensaje puede ser de hasta 18.446.744.073.709.551.616 (16E) bytes. La descripción GCM restringe la longitud de un mensaje a 68.719.476.736 (64G) bytes; es decir, el valor máximo de un contador de 32 bits multiplicado por el tamaño de un bloque de mensajes de 128 bits (16 bytes). Sin embargo, para evitar instrucciones de ejecución excesivamente prolongadas, el procesamiento de cualquier instrucción de cifrado individual se limita a una cantidad mucho menor - generalmente 4.096 bytes como máximo. Cuando se completa una instrucción de cifrado, se actualizan los registros especificando la dirección y la longitud de los operandos del mensaje con base en el número de bytes procesados. Si la instrucción solo procesa parcialmente el mensaje, se completa al establecer un código de condición indicativo (por ejemplo, CC3). Si la instrucción procesa completamente el mensaje, se completa al configurar un código de condición indicativo alternativo (por ejemplo, CC0).
Como se describe en la presente memoria, la instrucción Mensaje Cifrado con Autenticación puede acomodar un mensaje muy grande, pero solo procesa una porción del mensaje en una sola ejecución. La instrucción Mensaje Cifrado con Autenticación distingue su progreso en el hash de datos autenticados adicionales y el cifrado y hash de mensaje con base en, por ejemplo, la combinación de dos controles especificados por programa y las longitudes restantes de los operandos que contienen los datos y mensajes autenticados adicionales:
• El último control de datos de autenticación adicionales (LAAD) indica si el programa ha proporcionado todo el operando de datos autenticados adicionales.
• El último indicador de texto sin formato/texto cifrado (LPC) indica si el programa ha proporcionado el texto completo del mensaje para cifrar y autenticar.
Con base en la combinación de los controles LAAD y LPC, junto con los valores en los registros generales que designan la longitud de los respectivos operandos, la instrucción puede realizar algunas verificaciones en la entrada, y rechazar controles inconsistentes.
Al combinar el hash y el cifrado en una sola instrucción, se evita la ejecución de instrucciones separadas para hash de datos autenticados adicionales; se evitan múltiples recuperaciones del operando del mensaje para hash y cifrado; y la operación combinada puede realizarse eficientemente por el coprocesador de hardware. Al usar una sola instrucción, el programa no tiene que emitir instrucciones por separado para encriptar ceros para formar la subclave hash, hash el TAADL y TPCL, y encriptar y hash la etiqueta final mediante el uso de J0 como el contador.
Una realización para facilitar el procesamiento en un entorno informático, que incluye la ejecución de una instrucción Mensaje Cifrado Con Autenticación, se describe con referencias a las Figuras 8A-8B.
Con referencia a la Figura 8A, en una realización, se obtiene, una instrucción para realizar una pluralidad de operaciones, que incluye cifrado y autenticación, ETAPA 800, y se ejecuta la instrucción, ETAPA 802. La ejecución incluye, por ejemplo, cifrar un conjunto de datos proporcionados por la instrucción para obtener datos cifrados, ETAPA 804; colocar los datos cifrados en una ubicación designada, ETAPA 806; autenticar un conjunto de datos adicionales proporcionados por la instrucción, la autenticación genera al menos una parte de una etiqueta de autenticación de mensaje, ETAPA 808; y almacena al menos una parte de la etiqueta de autenticación de mensaje en una ubicación seleccionada, ETAPA 810. En una realización adicional, la ejecución incluye además la autenticación de los datos cifrados, ETAPA 812.
En un ejemplo, el conjunto de datos adicionales incluye al menos un bloque de datos de uno o más bloques de datos (814), y la ejecución incluye además determinar si el conjunto de datos adicionales incluye un último bloque de datos a autenticar, ETAPA 816; y realizar la autenticación con base en si el conjunto de datos adicionales incluye el último bloque de datos a autenticar, ETAPA 818.
La determinación incluye, por ejemplo, verificar un último control de datos autenticados adicionales de la instrucción para determinar si el conjunto de datos adicionales incluye el último bloque de datos a autenticar, ETAPA 820. Además, en un ejemplo, con referencia a la Figura 8B, el único conjunto de datos incluye al menos un bloque de datos de uno o más bloques de datos (822), y la ejecución incluye además determinar si el único conjunto de datos incluye un último bloque de datos a cifrar, ETAPA 824, y realizar el cifrado con base en si el único conjunto de datos incluye el último bloque de datos a cifrar, ETAPA 826.
La determinación incluye, por ejemplo, verificar un último control de texto de la instrucción para determinar si el único conjunto de datos incluye el último bloque de datos a cifrar, ETAPA 828.
Como ejemplos, el cifrado incluye cifrar el único conjunto de datos con base en un control proporcionado por la instrucción que se establece en un valor seleccionado, ETAPA 830, o descifrar el único conjunto de datos con base en un control proporcionado por la instrucción que se establece en un valor particular, ETAPA 832.
En una realización, la autenticación del conjunto de datos adicionales incluye el uso de una técnica hash para generar al menos una parte de la etiqueta de autenticación de mensaje, ETAPA 834. Además, en una realización, la técnica hash usa una subclave hash que se almacena en un bloque de parámetros usado por la instrucción, con base en un control proporcionado por una subclave hash de la instrucción que se establece en un valor elegido, ETAPA 836.
Como ejemplo, el único conjunto de datos incluye al menos una porción de un mensaje, y el conjunto de datos adicionales incluye información de enrutamiento para el mensaje 840.
Como se describió en la presente memoria, en un ejemplo, se proporciona una única instrucción que se configura para realizar: generar un resumen de mensaje (es decir, hash) de datos autenticados adicionales; cifrado de un mensaje; y generar un resumen de mensaje del mensaje cifrado. En otros ejemplos, una o más de las funciones puede que no se proporcionen.
En un ejemplo la instrucción usa un:
Indicador HS que permite al programa indicar que ha proporcionado su propia subclave hash. Esto proporciona una ventaja de rendimiento, si se usa la misma subclave hash. La subclave hash se calcula (y no se almacena) para funciones de clave cifradas.
El indicador LAAD que indica que se ha proporcionado el bloque final de datos autenticados adicionales. Esto permite que una sola instrucción maneje los bloques primero, intermedio y final de datos autenticados adicionales. El indicador LPC que indica que se ha proporcionado el bloque final de texto sin formato/texto cifrado. Esto permite que una sola instrucción maneje los bloques primero, intermedio y final de texto sin formato/texto cifrado; y junto con LAAD, proporciona alguna verificación de validez para el uso de instrucciones.
Los aspectos de la invención se ligan inextricablemente a la tecnología informática, mejorando el procesamiento dentro de un entorno informático, que incluye, entre otros, el procesamiento asociado con la seguridad, como el cifrado/descifrado y/o autenticación de datos, etc.
Muchas variaciones son posibles, que incluyen, entre otras, el uso de otras técnicas de cifrado, como el Estándar de Cifrado de Datos (DES) u otros, y/u otras técnicas de hash, como SHA (Algoritmo de Hash Seguro)-2, SHA-3 u otros.
La presente invención puede ser un sistema, un procedimiento y/o un producto de programa informático en cualquier posible nivel de detalle técnico de integración. El producto de programa de ordenador puede incluir un medio de almacenamiento legible por ordenador (o medios) que tiene instrucciones de programa legibles por ordenador sobre el mismo para hacer que un procesador lleve a cabo aspectos de la presente invención.
El medio de almacenamiento legible por ordenador puede ser un dispositivo tangible que puede retener y almacenar instrucciones para su uso por un dispositivo de ejecución de instrucciones. El medio de almacenamiento legible por ordenador puede ser, por ejemplo, pero no se limita a, un dispositivo de almacenamiento electrónico, un dispositivo de almacenamiento magnético, un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento electromagnético, un dispositivo de almacenamiento de semiconductores o cualquier combinación adecuada de lo anterior. Una lista no exhaustiva de ejemplos más específicos del medio de almacenamiento legible por ordenador incluye lo siguiente: un disquete de ordenador portátil, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una lectura programable borrable. solo memoria (EPROM o memoria Flash), una memoria estática de acceso aleatorio (SRAM), una memoria portátil de solo lectura de disco compacto (CD-ROM), un disco digital versátil (DVD), un dispositivo de memoria, un disquete, un dispositivo mecánico dispositivo codificado tal como tarjetas perforadas o estructuras elevadas en una ranura que tiene instrucciones grabadas al respecto, y cualquier combinación adecuada de lo anterior. Un medio de almacenamiento legible por ordenador, como se usa en la presente memoria, no debe interpretarse como señales transitorias per se, como ondas de radio u otras ondas electromagnéticas que se propagan libremente, ondas electromagnéticas que se propagan a través de una guía de ondas u otros medios de transmisión (por ejemplo, pulsos de luz que pasan a través de ellos). un cable de fibra óptica), o señales eléctricas transmitidas a través de un cable.
Las instrucciones de programa legibles por ordenador que se divulgan en la presente memoria se pueden descargar a los respectivos dispositivos informáticos/de procesamiento desde un medio de almacenamiento legible por ordenador o a un ordenador externo o dispositivo de almacenamiento externo a través de una red, por ejemplo, Internet, una red de área local, una red de área amplia y/o una red inalámbrica. La red puede comprender cables de transmisión de cobre, fibras de transmisión óptica, transmisión inalámbrica, enrutadores, cortafuegos, conmutadores, ordenadores de puerta de enlace y/o servidores de borde. Una tarjeta adaptadora de red o interfaz de red en cada dispositivo de computación/procesamiento recibe instrucciones de programa legibles por ordenador de la red y reenvía las instrucciones de programa legibles por ordenador para su almacenamiento en un medio de almacenamiento legible por ordenador dentro del dispositivo de computación/procesamiento respectivo.
Las instrucciones de programa legibles por ordenador para llevar a cabo las operaciones de la presente invención pueden ser instrucciones de ensamblador, instrucciones de arquitectura de conjunto de instrucciones (ISA), instrucciones de máquina, instrucciones dependientes de máquina, microcódigo, instrucciones de firmware, datos de configuración de estado, datos de configuración para circuitos integrados, o bien código fuente o código objeto escrito en cualquier combinación de uno o más lenguajes de programación, incluido un lenguaje de programación orientado a objetos como Smalltalk, C++ o similares, y lenguajes de programación procesal, como el lenguaje de programación "C" o programación similar idiomas. Las instrucciones del programa legible por ordenador pueden ejecutarse completamente en el ordenador del usuario, en parte en el ordenador del usuario, como un paquete de software independiente, en parte en el ordenador del usuario y en parte en un ordenador remoto o completamente en el ordenador o servidor remoto. En este último caso, el ordenador remoto puede conectarse al ordenador del usuario a través de cualquier tipo de red, que incluye una red de área local (LAN) o una red de área extendida (WAN), o la conexión puede realizarse a un ordenador externo (por ejemplo, a través de Internet mediante el uso de un Proveedor de Servicios de Internet). En algunas realizaciones, los circuitos electrónicos que incluyen, por ejemplo, circuitos lógicos programables, arreglos de compuerta programables en campo (FPGA) o arreglos lógicos programables (PLA) pueden ejecutar las instrucciones de programa legibles por ordenador utilizando información de estado de las instrucciones de programa legibles por ordenador para personalizar la circuitería electrónica, para realizar aspectos de la presente invención.
Los aspectos de la presente invención se describen en la presente memoria con referencia a diagramas de flujo y/o diagramas de bloques de procedimientos, aparatos (sistemas) y productos de programas informáticos de acuerdo con las realizaciones de la invención. Se entenderá que cada bloque de las ilustraciones del diagrama de flujo y/o los diagramas de bloque, y las combinaciones de bloques en las ilustraciones del diagrama de flujo y/o los diagramas de bloque, se pueden implementar mediante instrucciones de programa legibles por ordenador.
Estas instrucciones de programa legibles por ordenador se pueden proporcionar a un procesador de un ordenador de propósito general, ordenador de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de modo que las instrucciones, que se ejecutan a través del procesador de la ordenador u otro aparato de procesamiento de datos programable, crear medios para implementar las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques de diagrama de bloques. Estas instrucciones de programa legibles por ordenador también pueden almacenarse en un medio de almacenamiento legible por ordenador que puede dirigir un ordenador, un aparato de procesamiento de datos programable y/u otros dispositivos para que funcionen de una manera particular, de modo que el medio de almacenamiento legible por ordenador tenga instrucciones almacenadas en el mismo comprende un artículo de fabricación que incluye instrucciones que implementan aspectos de la función/acto especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
Las instrucciones del programa legible por ordenador también se pueden cargar en un ordenador, otro aparato de procesamiento de datos programable u otro dispositivo para hacer que se realicen una serie de etapas operativos en la ordenador, otro aparato programable u otro dispositivo para producir un proceso implementado por ordenador, como que las instrucciones que se ejecutan en la ordenador, otro aparato programable u otro dispositivo implementan las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
El diagrama de flujo y los diagramas de bloques en las Figuras ilustran la arquitectura, la funcionalidad y la operación de posibles implementaciones de sistemas, procedimientos y productos de programas de computadora de acuerdo con diversas realizaciones de la presente invención. Con respecto a esto, cada bloque en el diagrama de flujo o en los diagramas de bloques puede representar un módulo, segmento o porción de instrucciones, que comprende una o más instrucciones ejecutables para implementar las funciones lógicas especificadas. En algunas implementaciones alternativas, las funciones indicadas en el bloque pueden ocurrir fuera del orden indicado en las figuras. Por ejemplo, dos bloques mostrados en sucesión pueden, de hecho, ejecutarse sustancialmente al mismo tiempo, o los bloques pueden algunas veces ejecutarse en el orden inverso, dependiendo de la funcionalidad involucrada. También se observará que cada bloque de los diagramas de bloques y/o la ilustración del diagrama de flujo, y las combinaciones de bloques en los diagramas de bloques y/o la ilustración del diagrama de flujo, pueden implementarse mediante sistemas de hardware de propósito especial que realizan las funciones o actos especificados o llevar a cabo combinaciones de hardware para fines especiales e instrucciones informáticas.
Además de lo anterior, uno o más aspectos pueden ser proporcionados, ofrecidos, desplegados, gestionados, atendidos, etc. por un proveedor de servicios que ofrece gestión de entornos de clientes. Por ejemplo, el proveedor de servicios puede crear, mantener, dar soporte, etc., código informático y/o una infraestructura informática que realice uno o más aspectos para uno o más clientes. A cambio, el proveedor de servicios puede recibir el pago del cliente bajo un acuerdo de suscripción y/o tarifa, como ejemplos. Adicional o alternativamente, el proveedor de servicios puede recibir un pago por la venta de contenido publicitario a uno o más terceros.
En un aspecto, se puede implementar una aplicación para realizar una o más realizaciones. Como un ejemplo, el despliegue de una aplicación comprende proporcionar una infraestructura informática operable para realizar una o más realizaciones.
Como otro aspecto, se puede desplegar una infraestructura informática que comprenda integrar código legible por ordenador en un sistema informático, en el que el código en combinación con el sistema informático es capaz de realizar una o más realizaciones.
Como otro aspecto adicional, se puede proporcionar un proceso para integrar la infraestructura informática que comprende integrar código legible por ordenador en un sistema informático. El sistema informático comprende un medio legible por ordenador, en el que el medio informático comprende una o más realizaciones. El código en combinación con el sistema informático es capaz de realizar una o más realizaciones.
Aunque se describieron varias realizaciones anteriormente, estos son solo ejemplos. Por ejemplo, los entornos informáticos de otras arquitecturas se pueden usar para incorporar y usar una o más realizaciones. Además, se pueden usar diferentes instrucciones, formatos de instrucción, campos de instrucción y/o valores de instrucción. Son posibles muchas variaciones.
Además, otros tipos de entornos informáticos pueden beneficiarse y ser utilizados. Como ejemplo, se puede usar un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar código de programa que incluye al menos dos procesadores acoplados directa o indirectamente a elementos de memoria a través de un bus del sistema. Los elementos de memoria incluyen, por ejemplo, la memoria local empleada durante la ejecución real del código del programa, el almacenamiento masivo y la memoria caché que proporcionan almacenamiento temporal de al menos parte del código del programa para reducir la cantidad de veces que el código debe recuperarse del almacenamiento masivo durante la ejecución.
Los dispositivos de entrada/salida o de E/S (incluidos, entre otros, teclados, pantallas, dispositivos señaladores, DASD, cintas, CD, DVD, unidades de memoria USB y otros medios de memoria, etc.) se pueden acoplar al sistema ya sea directamente o mediante controladores de E/S intervinientes. Los adaptadores de red también se pueden acoplar al sistema para permitir que el sistema de procesamiento de datos se conecte a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento a través de redes privadas o públicas intervenidas. Los módems, los módems de cable y las tarjetas Ethernet son solo algunos de los tipos de adaptadores de red disponibles.
La terminología usada en la presente memoria es solo para el propósito de describir las realizaciones particulares y no pretende ser limitante. Como se usa en la presente memoria, las formas singulares "un", "uno(a)" y "el(la)" se pretende que incluyan las formas plurales también, a menos que el contexto claramente indique lo contrario de cualquier otra manera. Se entenderá además que los términos "comprende" y/o "que comprende", cuando se usan en esta memoria descriptiva, especifican la presencia de características, números enteros, etapas, operaciones, elementos y/o componentes establecidos, pero no excluyen la presencia o la adición de una o más características, números enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Las estructuras, materiales, actos y equivalentes correspondientes de todos los elementos de medios o etapas más funciones en las reivindicaciones a continuación, si las hay, pretenden incluir cualquier estructura, material o acto para realizar la función en combinación con otros elementos reivindicados como se afirma específicamente. La descripción de una o más realizaciones se ha presentado con fines ilustrativos y descriptivos, pero no pretende ser exhaustiva o limitada en la forma divulgada. Muchas modificaciones y variaciones serán evidentes para los expertos en la técnica. La realización se eligió y describió para explicar mejor varios aspectos y la aplicación práctica, y para permitir que otros expertos en la técnica entiendan diversas realizaciones con diversas modificaciones que sean adecuadas para el uso particular contemplado.

Claims (13)

REIVINDICACIONES
1. Un procedimiento para facilitar el procesamiento en un entorno informático, comprendiendo el procedimiento las etapas de:
obtener una instrucción (300) para realizar una pluralidad de operaciones, que incluye cifrado y autenticación, siendo la instrucción una instrucción de máquina de arquitectura de hardware única en una interfaz hardware/software y que incluye un campo de código de operación (302) que tiene un código de operación para indicar un mensaje de cifrado con operación de autenticación, y uno o más campos de registro (304, 306, 308) usados para designar uno o más registros para ser usados por la instrucción; y
ejecutar la instrucción (300), incluyendo la ejecución:
cifrar el único conjunto de datos proporcionados mediante el uso de un registro de uno o más registros (304, 306, 308) de la instrucción para obtener datos cifrados;
colocar los datos cifrados en una ubicación designada;
autenticar un conjunto de datos adicionales proporcionados por la instrucción, generando la autenticación al menos una parte de una etiqueta de autenticación de mensaje; y
almacenar al menos una parte de la etiqueta de autenticación de mensaje en una ubicación seleccionada.
2. El procedimiento de la reivindicación 1, en el que la ejecución comprende además autenticar los datos cifrados.
3. El procedimiento de la reivindicación 1, en el que el conjunto de datos adicionales incluye al menos un bloque de datos de uno o más bloques de datos, y en el que la ejecución incluye, además:
determinar si el conjunto de datos adicionales incluye un último bloque de datos a autenticar; y
realizar la autenticación con base en si el conjunto de datos adicionales incluye el último bloque de datos a autenticar.
4. El procedimiento de la reivindicación 3, en el que la determinación comprende comprobar un último control de datos autenticados adicionales de la instrucción para determinar si el conjunto de datos adicionales incluye el último bloque de datos a autenticar.
5. El procedimiento de la reivindicación 1, en el que el único conjunto de datos incluye al menos un bloque de datos de uno o más bloques de datos, y en el que la ejecución incluye, además:
determinar si el único conjunto de datos incluye un último bloque de datos a cifrar; y
realizar el cifrado con base en si el único conjunto de datos incluye el último bloque de datos a cifrar.
6. El procedimiento de la reivindicación 5, en el que la determinación comprende comprobar un último control de texto de la instrucción para determinar si el único conjunto de datos incluye el último bloque de datos a cifrar.
7. El procedimiento de la reivindicación 1, en el que el cifrado incluye cifrar el único conjunto de datos con base en un control proporcionado por la instrucción que se establece en un valor seleccionado.
8. El procedimiento de la reivindicación 1, en el que el cifrado incluye descifrar el único conjunto de datos con base en un control proporcionado por la instrucción que se establece en un valor particular.
9. El procedimiento de la reivindicación 1, en el que la autenticación del conjunto de datos adicionales incluye el uso de una técnica hash para generar al menos una parte de la etiqueta de autenticación de mensaje.
10. El procedimiento de la reivindicación 9, en el que la técnica hash usa una subclave hash que se almacena en un bloque de parámetros usado por la instrucción, con base en un control proporcionado por una subclave hash de la instrucción que se establece en un valor seleccionado.
11. El procedimiento de la reivindicación 1, en el que el único conjunto de datos incluye al menos una porción de un mensaje y el conjunto de datos adicionales incluye información de enrutamiento para el mensaje.
12. Un sistema que comprende medios adaptados para llevar a cabo todas las etapas del procedimiento de acuerdo con cualquier reivindicación anterior del procedimiento.
13. Un programa informático que comprende instrucciones para llevar a cabo todas las etapas del procedimiento de acuerdo con cualquier reivindicación del procedimiento anterior, cuando dicho programa informático se ejecuta en un sistema informático.
ES17780697T 2016-10-13 2017-10-02 Mensaje cifrado con instrucción de autenticación Active ES2863676T3 (es)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
ES2863676T3 true ES2863676T3 (es) 2021-10-11

Family

ID=59009411

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17780697T Active ES2863676T3 (es) 2016-10-13 2017-10-02 Mensaje cifrado con instrucción de autenticación

Country Status (21)

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

Families Citing this family (11)

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

Family Cites Families (25)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
ES2863676T3 (es) Mensaje cifrado con instrucción de autenticación
US10142101B2 (en) Hardware enforced one-way cryptography
US10313129B2 (en) Keyed-hash message authentication code processors, methods, systems, and instructions
US11269786B2 (en) Memory data protection based on authenticated encryption
KR100745430B1 (ko) 인사이퍼링 또는 디사이퍼링 방법, 장치 및 컴퓨터 판독 가능 기록 매체
TWI773960B (zh) 用於以加密金鑰指令計算數位簽章驗證標記之電腦程式產品、電腦系統及電腦實施方法
Gueron Advanced encryption standard (AES) instructions set
US20170091488A1 (en) Secure modular exponentiation processors, methods, systems, and instructions
IL265552A (en) Finding upholstery operation mode
CN114154174A (zh) 后量子签名设施的状态同步
TWI811514B (zh) 用於計算數位簽章認證標記指令之電腦程式產品、電腦系統及電腦實施方法
CN112416243A (zh) 用于执行安全命令的存储器装置及方法
EP3667505B1 (en) Memory system with an incremental hashing operation and method
US8832450B2 (en) Methods and apparatus for data hashing based on non-linear operations
US12047486B2 (en) Block cipher encryption pipeline
CN114205104A (zh) 针对功率和电磁侧信道攻击的对认证标签计算的保护