ES2364826A1 - Clave de encriptado precalculada. - Google Patents
Clave de encriptado precalculada. Download PDFInfo
- Publication number
- ES2364826A1 ES2364826A1 ES200800722A ES200800722A ES2364826A1 ES 2364826 A1 ES2364826 A1 ES 2364826A1 ES 200800722 A ES200800722 A ES 200800722A ES 200800722 A ES200800722 A ES 200800722A ES 2364826 A1 ES2364826 A1 ES 2364826A1
- Authority
- ES
- Spain
- Prior art keywords
- key
- encryption
- data
- aes
- dispersion
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 31
- 239000006185 dispersion Substances 0.000 claims description 56
- 238000004364 calculation method Methods 0.000 claims description 15
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000000354 decomposition reaction Methods 0.000 claims 1
- 230000009466 transformation Effects 0.000 description 42
- 230000006870 function Effects 0.000 description 19
- 238000000844 transformation Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 9
- 230000010365 information processing Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- UVGUPMLLGBCFEJ-SWTLDUCYSA-N sucrose acetate isobutyrate Chemical compound CC(C)C(=O)O[C@H]1[C@H](OC(=O)C(C)C)[C@@H](COC(=O)C(C)C)O[C@@]1(COC(C)=O)O[C@@H]1[C@H](OC(=O)C(C)C)[C@@H](OC(=O)C(C)C)[C@H](OC(=O)C(C)C)[C@@H](COC(C)=O)O1 UVGUPMLLGBCFEJ-SWTLDUCYSA-N 0.000 description 1
- 235000010983 sucrose acetate isobutyrate Nutrition 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Un método de encriptado autenticado comprende la recepción, por parte de un dispositivo de Norma de Encriptado Avanzado (Advanced Encryption Standard (AES)), de una clave de cifrado y el cálculo de una clave de dispersión ("hash") utilizando la clave de cifrado recibida. La clave de dispersión calculada es guardada en una memoria de almacenaje. El dispositivo AES recibe entonces un paquete de datos y lo encripta utilizando la clave de cifrado recibida. La clave de dispersión es enviada desde la memoria de almacenaje a un dispositivo GHASH que se utiliza para autenticar el paquete de datos. El encriptado del paquete de datos se lleva a cabo después de que la clave de dispersión haya sido almacenada en la memoria. Se autoriza al flujo de entrada del paquete de datos de almacenar en la memoria de almacenaje la clave de dispersión.
Description
Clave de encriptado precalculada.
La presente invención se refiere de forma
general al sistema y método para proporcionar encriptado o cifrado y
desencriptado o descifrado autenticados. De manera más especifica,
la presente invención se refiere a un método para el cálculo de una
clave de encriptado en un sistema que tiene múltiples canales de
algoritmos de cifrado de bloques según Norma de Encriptado Avanzada
(AES).
Cuando dos partes comunican frecuentemente
necesitan proteger su privacidad y la autenticidad de los datos
transmitidos. La protección de la privacidad de los datos asegura
que otras partes no autorizadas no comprenderán el contenido de las
transmisiones. La protección de la autenticidad de los datos
proporciona la seguridad a la parte que recibe el mensaje de que el
remitente real de un mensaje coincide con el remitente declarado del
mismo. Por lo tanto, proporciona seguridad al receptor de que el
mensaje no ha sido modificado accidentalmente o intencionadamente en
tránsito.
En un método de encriptado autenticado, el
remitente encripta un mensaje utilizando una clave y un término
especifico ("nonce") (llamado también vector de inicialización
o IV) para conseguir un texto cifrado. El receptor desencripta el
texto cifrado utilizando una clave y un término especifico
("nonce") para lograr o bien un mensaje o un símbolo especial
de invalidación que indica al receptor que el texto cifrado debe ser
considerado como no auténtico.
El encriptado exclusivamente con privacidad
calcula un texto cifrado a partir de un texto normal, una clave y un
término especifico ("nonce"). Un código de autenticación (MAC)
calcula una etiqueta de autenticación a partir de un mensaje y una
clave. Al MAC un mensaje significa el cálculo de su etiqueta de
autenticación utilizando un código de autenticación del mensaje.
A modo de antecedente adicional, el algoritmo de
cifrado bloque en Norma de Encriptado Avanzado (AES), o cifra AES,
en un algoritmo de cifrado iterativo con el significado de que los
datos son manipulados de forma similar en un número predeterminado
de pasadas. La longitud del bloque está fijada en 128 bits y la
longitud de la clave se puede disponer de forma independiente en
128, 192 ó 256 bits. La cifra AES permite también un número variable
de pasadas (Nr) cuyo total puede ser de 10, 12 ó 14, que dependen de
la longitud del bloque y de la longitud de la clave.
La cifra AES encripta un bloque de datos
llevando a cabo 9, 11 o 13 transformaciones de pasadas completas
seguido de una transformación de pasada incompleta final. La
transformación de pasada incompleta comprende un paso menos que una
transformación de pasada completa. La cadena de datos sobre la que
se opera durante cada pasada es llamada "Estado" que se puede
representar como conjunto rectangular de bits que tiene cuatro filas
y un número de columnas (Nb) que varia con la longitud del bloque.
De manera específica, el valor de Nb es igual a la longitud del
bloque (128, 192 ó 256) dividido por 32, significando que tiene un
valor de 4, 6 ó 8. Cada una de las pasadas completas comprende las
cuatro siguientes transformaciones llevadas a cabo en el orden
siguiente: (1) Bitsub; (2) ShiftRow; (3) MixColumn; y (4)
AddRoundKey. La transformación de pasada incompleta no comprende la
transformación MixColumn.
De manera similar al encriptado, la cifra AES
desencripta datos llevando a cabo el mismo número de pasadas
completas seguido de una pasada incompleta. Dado que las
transformaciones de encriptado se pueden invertir, el Estado de cada
pasada de desencriptado es operado por el inverso de las
transformaciones antes indicadas. Además, las características de las
transformaciones y las transformaciones inversas permiten la
simetría en los algoritmos de encriptado y desencriptado. En otras
palabras, cada pasada de desencriptado completa comprende las
siguientes transformaciones inversas que se pueden llevar a cabo en
el orden indicado (1) InvBitsub; (2) InvShiftRow; (3) InvMixColumn;
e (4) InvAddRoundKey. También en este caso, de manera similar al
encriptado, la transformación de pasada de desencriptado incompleta
no incluye la transformación InvMixColumn.
Se puede encontrar mayor detalle de la cifra AES
en una publicación de norma general de proceso de transformación de
información ("Federal Information Processing Standards
Publication" (FIPS-PUBS)) emitida por el
Instituto Nacional de Normas y Tecnología ("National Institute of
Standards and Technology" (NIST)). La publicación es la Norma de
Encriptado Avanzado ("Advanced Encryption Standard" (AES)), de
26 de Noviembre de 2001 y se puede conseguir electrónicamente en
http://csrc.nist.gov/publications/. Esta publicación se
incorpora en la presente invención, en su totalidad, a titulo de
referencia.
La cifra AES soporta diferentes modalidades
operativas, incluyendo encadenado de bloques de cifras (CBC), libro
de códigos electrónico (ECB) y modalidad de contaje Galois (GCM). El
GCM es una modalidad operativa de cifrado de bloques que utiliza
dispersión ("hashing") por medio de un campo Galois binario
para proporcionar encriptado autenticado. El documento detallado
titulado "La modalidad operativa de contaje Galois (GCM)"
("The Galois/Counter Mode of Operation" (GCM)) se puede
encontrar en
csrc.nist.gov/CryptoToolkit/modes/proposedmodes/
gcm/gcm-spec.pdf. Esta publicación se incorpora también en su totalidad a titulo de referencia a la presente descripción.
gcm/gcm-spec.pdf. Esta publicación se incorpora también en su totalidad a titulo de referencia a la presente descripción.
Un sistema convencional de cifrado de bloques
GCM-AES comprende encriptado realizado durante 10,
12 ó 14 pasadas utilizando claves de pasada ("round keys"). Se
calcula una clave de dispersión a partir de las claves de pasada
para proporcionar el encriptado autenticado para cada bloque o
paquete que es transmitido a un receptor remoto. Esto requiere 10,
12 ó 14 ciclos de reloj para cada bloque o paquete que es
transmitido por el remitente o emisor. De manera similar, durante el
desencriptado el receptor requiere 10, 12 ó 14 ciclos de reloj para
calcular la clave de dispersión desde las claves de pasada para cada
bloque o paquete. Esto resulta de manera desventajosa en una
generación total incrementada y retardo por el procesador en la
autenticación del bloque o paquete correspondiente. La presente
invención se dirige a solucionar y, según una de sus
características, soluciona esta deficiencia.
Para satisfacer esta y otras necesidades y
teniendo en cuenta sus objetivos, la presente invención da a conocer
un método de encriptado autenticado. El método comprende las
siguientes etapas: (a) recibir mediante un dispositivo de Norma de
Encriptado Avanzado (AES) ("Advanced Encryption Standard") una
clave de cifrado; (b) calcular mediante un dispositivo AES una clave
de dispersión ("hash key") utilizando la clave de filtrado
recibida; (c) almacenar la clave de dispersión calculada en una
memoria de almacenaje; (d) recibir, mediante el dispositivo AES un
paquete de datos; (e) encriptado mediante el dispositivo AES del
paquete de datos utilizando la clave de cifrado recibida; (f)
recibir la clave de dispersión mediante un dispositivo GHASH, a
partir de la memoria de almacenaje; y (g) autenticar el paquete de
datos, por el dispositivo GHASH, utilizando la clave de dispersión.
La etapa de encriptado comprende la utilización de una modalidad de
contaje en el dispositivo AES para encriptar el paquete de datos. La
utilización de la modalidad de contaje comprende el someter
iterativamente XOR (a) a una parte de texto normal del paquete de
datos con (b) un valor encriptado de datos de contaje utilizando una
clave de cifrado y obteniendo de esta manera un texto cifrado
("ciphertext") de datos. La etapa de autenticado comprende la
transmisión del texto cifrado al dispositivo GHASH y multiplicar
iterativamente el texto cifrado, por el dispositivo GHASH,
utilizando la clave de dispersión. El encriptado del paquete de
datos es llevado a cabo después de que la tecla de dispersión ha
sido almacenada en la memoria de almacenaje.
Después de que la tecla de dispersión ha sido
almacenada en la memoria de almacenaje se habilita el flujo de
entrada del paquete de datos. El paquete de datos es encriptado
usando la tecla de encriptado y después de habilitar el flujo de
entrada del paquete de datos, dicho paquete de datos es autenticado
utilizando la tecla de dispersión almacenada en la memoria de
almacenaje.
La tecla de dispersión es calculada llevando a
cabo 10 pasadas de expansiones de clave en la clave de cifrado
recibida si la clave de cifrado recibida es un bloque de datos de
128 bits, y llevando a cabo 12 pasadas de expansiones de clave en la
clave de cifrado recibida si la clave de cifrado recibida es un
bloque de datos de 192 bits, y llevando a cabo 14 pasadas de
expansiones de clave en la clave de cifrado recibida si la clave de
cifrado recibida es un bloque de datos de 256 bits.
El método de la invención incluye la recepción,
como mínimo, de dos claves de cifrado separadas a partir de canales
de datos respectivos y calcular, como mínimo, dos claves de
dispersión separadas correspondientes a las dos o más claves de
cifrado recibidas separadamente. La recepción del paquete de datos
comprende la recepción durante un intervalo de tiempo de un número
predeterminado de paquetes de datos. El cálculo de la clave de
dispersión comprende el cálculo de la clave de dispersión una vez
por intervalo de tiempo y almacenar la clave de dispersión calculada
comprende el almacenaje de la clave de dispersión calculada una vez
por intervalo de tiempo.
Otra realización de la invención comprende un
módulo de encriptado autenticado. El módulo de encriptado comprende
un dispositivo AES para utilizar una clave de cifrado para calcular
una clave de dispersión, una memoria de almacenaje para almacenar la
clave de dispersión calculada y un dispositivo GHASH para recibir la
clave de dispersión calculada almacenada en la memoria de almacenaje
para autenticar un paquete de datos. El dispositivo AES encripta el
paquete de datos para formar un texto cifrado. El dispositivo GHASH
recibe el texto cifrado del dispositivo AES para multiplicar el
texto cifrado recibido por la clave de dispersión calculada. Se
calcula una etiqueta de autenticación utilizando el texto cifrado
multiplicado con la clave de dispersión calculada. Un controlador
posibilita el flujo de entrada del paquete de datos después de que
se ha almacenado la clave de dispersión en la memoria de almacenaje.
El paquete de datos comprende datos autenticados adicionales (AAD) y
el dispositivo GHASH está configurado para recibir el AAD para
multiplicar el AAD con la clave de dispersión calculada.
El dispositivo AES está configurado para
recibir, como mínimo, dos claves de encriptado diferentes
procedentes de diferentes canales de datos. El dispositivo AES
comprende dos módulos de encriptado para encriptar, como mínimo, dos
paquetes distintos de datos recibidos a partir de canales de datos
respectivos utilizando las dos o más claves de encriptado distintas.
El paquete de datos comprende múltiples paquetes de datos y la clave
de dispersión es calculada por el dispositivo AES una vez para todos
los múltiples paquetes de datos recibidos. La clave de dispersión es
almacenada en la memoria de almacenaje una vez para todos los
múltiples paquetes de datos recibidos.
Se comprenderá que la descripción general
anterior y la siguiente descripción detallada tienen carácter de
ejemplo pero no son restrictivas de la presente invención.
La presente invención se comprenderá mejor a
partir de la siguiente descripción detallada en relación con los
dibujos adjuntos:
La figura 1 es un diagrama de bloques funcional
que muestra a titulo de ejemplo el encriptado y autenticación de un
paquete (o bloque) de datos.
La figura 2 es un diagrama de bloques funcional
que muestra a titulo de ejemplo un desencriptado y autenticación de
un paquete encriptado (o bloque) de datos.
La figura 3 es un diagrama de bloques de un
módulo de encriptado AES-GCM con una memoria externa
SA de acuerdo con una realización de la presente invención.
La figura 4 es un diagrama de bloques funcional
de una operación de encriptado autenticada, mostrando encriptado
descifrado de bloque y multiplicación sobre campo Galois.
La figura 5 es un diagrama de bloques funcional
de una operación de desencriptado autenticada mostrando encriptado
descifrado de bloque y multiplicación sobre campo Galois.
La figura 6 es un diagrama de bloques de un
módulo de dispositivo AES que comprende cuatro canales de flujo de
datos de entrada y dos módulos de transformación de cifrado de
acuerdo con una realización de la presente invención.
La figura 7 es un diagrama de bloques de un
dispositivo GHASH de acuerdo con una realización de la presente
invención.
La figura 8 es un diagrama de flujo que muestra
un método para la autenticación de un paquete de datos de acuerdo
con una realización de la presente invención.
La figura 9 es un diagrama de flujo de un método
de autenticación de un paquete de datos encriptado de acuerdo con la
realización a título de ejemplo de la presente invención.
La presente invención comprende una modalidad de
funcionamiento AES-GCM. El GCM tiene dos
operaciones, encriptado autenticado y desencriptado autenticado. La
operación de encriptado autenticado tiene cuatro entradas, cada una
de los cuales es una cadena de bits del modo siguiente:
- (1)
- Clave secreta K, cuya longitud es apropiada para el cifrado del bloque subyacente;
- (2)
- Vector de inicialización IV ("nonce");
- (3)
- Texto normal P; y
- (4)
- Datos autenticados adicionales (AAD) que se indican como A.
- Estos datos están autenticados pero no encriptados
\vskip1.000000\baselineskip
La operación autenticada de encriptado tiene dos
salidas del modo siguiente:
- (1)
- Un texto cifrado C, cuya longitud es exactamente la del texto normal P, y
- (2)
- Una etiqueta de autenticado T. La longitud de la etiqueta está designada como t.
\vskip1.000000\baselineskip
Si la anchura cifrada del bloque es la operación
de desencriptado autenticada y len() es el número de bits de un
argumento, entonces
Se ha mostrado en la figura 1 un encriptado y
autenticación a titulo de ejemplo de un paquete (o bloque) de datos.
Tal como se ha mostrado, el paquete de entrada (11) comprende un
campo de encabezamiento, un campo de secuencia y un campo de datos
normales. El campo de datos es encriptado y autenticado por el
módulo de encriptado GCM (12). El campo de encabezamiento puede ser
autenticado en el módulo de encriptado GCM al incluirlo en el campo
AAD. El campo de secuencia puede ser incluido en el IV y enviado al
módulo de encriptado GCM. De este modo el módulo de encriptado GCM
encripta y autentica el paquete (11). El paquete de salida, mostrado
como paquete (13), es transmitido al receptor y comprende (1) el
campo de datos encriptado, (2) la etiqueta de autenticación que es
llevada en el campo de valor de comprobación de integridad (ICV), y
el campo de encabezamiento añadido (3) y campo de secuencia (4).
Al incluir el número de secuencia en el IV, se
puede satisfacer la exigencia de que los valores IV sean únicos. Los
datos que forman el IV tienen que ser conocidos tanto para el lado
de encriptado como el de desencriptado, pero el IV no es necesario
que sea incluido en el paquete y puede ser enviado separadamente. Se
apreciará que la longitud del texto normal del paquete de entrada
(11) es la misma que la longitud que del texto cifrado del paquete
de salida (13).
Haciendo referencia a continuación a la figura
2, se ha mostrado el módulo de desencriptado GCM (16) que
desencripta y verifica la autenticidad del paquete de entrada
recibido (15). El módulo de encriptado GCM desencripta el texto
cifrado para proporcionar el texto normal del paquete de salida
(17). La etiqueta de autenticación es comparada con una etiqueta de
autenticación calculada internamente para verificar la autenticidad
del paquete de entrada (15). El paquete de salida final comprende el
campo de encabezamiento y el campo de secuencia tal como se ha
mostrado.
La operación de desencriptado autenticada tiene
cinco entradas: K, IV, C, A y T. La operación de desencriptado
autenticada tiene solamente una sola salida, el valor de texto
normal P o un símbolo especial FAIL que indica que los datos de
entrada no son auténticos. El texto cifrado C, el vector de
inicialización IV, los datos autenticados adicionales A y la
etiqueta T son auténticos para la clave K, cuando son generados por
la operación de encriptado del módulo de encriptado GCM (12) con
entradas K. IV. A y texto normal P. La operación de desencriptado
autenticado del módulo de desencriptado GCM (16), con alta
probabilidad, devuelve FAIL siempre que sus entradas no fueron
creadas por la operación de encriptado con la clave idéntica.
Los datos autenticados adicionales A son
utilizados para proteger información que necesita ser autenticada,
pero que se debe dejar sin encriptar. Cuando se utiliza el GCM para
asegurar un protocolo de red los datos A pueden incluir direcciones,
puertos, números de secuencia, números de versión de protocolo y
otros campos que indican la forma en la que se debe manipular el
texto normal, se debe enviar o debe procesarse. En muchas
situaciones puede ser deseable autenticar estos campos si bien deben
ser dejados libres para permitir que la red o sistema funcione de
manera apropiada. Cuando estos datos son incluidos en el AAD, se
facilita la autenticación sin copiado de datos en el texto
cifrado.
El objetivo principal del IV es constituir un
texto temporal o "nonce" es decir, ser distinto para cada
invocación de la operación de encriptado para una clave fijada. Es
aceptable que el IV sea generado al azar siempre que el carácter
distintivo de los valores IV sea altamente probable. El IV es
autenticado, y no es necesario incluirlo en el campo AAD.
La potencia de la autenticación de P, IV y A es
determinada por la longitud de la etiqueta de autenticación. Cuando
la longitud de P es cero, GCM actúa como MAC en la entrada A. La
modalidad de funcionamiento que utiliza GCM como código de
autenticación de mensaje autónomo se indica como GMAC.
Las ecuaciones utilizadas por el módulo de
encriptado GCM (12), mostrado en la figura 1, se describirán a
continuación. Lo siguiente supone que la anchura del bloque de
cifrado de w es de 128 bits.
Se supondrá que n y u indican un par de enteros
positivos, de manera tal que el número total de bits en el texto
normal es (n-1)128+u, en la que 1 \leq u
\leq 128. El texto normal consiste en una secuencia de n cadenas
de bits, en la que la longitud de bits de la última cadena de bits
es u, y la longitud de bits de las otras cadenas de bits es 128. La
secuencia es designada como P_{1}, P_{2}, ...,
P_{n-1}, P^{*}_{n}, y las cadenas de bits son
llamadas bloques de datos, si bien la última cadena de bits
P^{*}_{n}, puede no ser un bloque completo. De manera similar,
el texto cifrado se designa como C_{1},
C_{2}, ..., C_{n-1}, C^{*}_{n}, en la que el número de bits del bloque final C^{*}_{n} es u. Los datos autenticados adicionales A se indican como A_{1}, A_{2}, ..., A_{m-1}, A^{*}_{m}, en los que la última cadena de bits A^{*}_{m} puede ser un bloque parcial de longitud v y m y v indican el par de enteros positivos de manera que el número total de bits de A es (m-1)128+v y 1 \leq v \leq 128.
C_{2}, ..., C_{n-1}, C^{*}_{n}, en la que el número de bits del bloque final C^{*}_{n} es u. Los datos autenticados adicionales A se indican como A_{1}, A_{2}, ..., A_{m-1}, A^{*}_{m}, en los que la última cadena de bits A^{*}_{m} puede ser un bloque parcial de longitud v y m y v indican el par de enteros positivos de manera que el número total de bits de A es (m-1)128+v y 1 \leq v \leq 128.
\newpage
La operación de encriptado autenticada se define
por las siguientes ecuaciones, en las que w se utiliza como anchura
de cifrado del bloque:
Se generan sucesivos valores de contador
utilizando la función incr (), que trata los 32 bits de la derecha
de su argumento como entero no negativo con el bit menos
significativo en la derecha e incrementa este valor módulo
2^{32}.
La función len () devuelve una cadena de 64 bits
que contiene el entero no negativo que describe el número de bits en
su argumento, con el bit menos significativo a la derecha. La
expresión 0^{1} indica una cadena de I bits cero y
A \parallel B indica la concatenación de dos cadenas de bits A y B. La función MSB_{t}(S) devuelve la cadena de bits que contiene solamente los t bits más significativos (de la izquierda) de S, y el símbolo {} indica la cadena de bits con longitud cero.
A \parallel B indica la concatenación de dos cadenas de bits A y B. La función MSB_{t}(S) devuelve la cadena de bits que contiene solamente los t bits más significativos (de la izquierda) de S, y el símbolo {} indica la cadena de bits con longitud cero.
La función GHASH es definida por GHASH (H, A, C)
= X_{m+n+1}, en la que las entradas A y C están formateadas tal
como se ha descrito anteriormente, y las variables para i = 0, ...,
m+n+1 se definen del modo siguiente:
La operación de desencriptado autenticada es
similar a la operación de encriptado, pero con el orden de la etapa
de dispersión y de la etapa de encriptado invertidas. De manera más
formal, se define por las siguientes ecuaciones:
La etiqueta T' que es calculada por la operación
de desencriptado es comparada con la etiqueta T asociada con el
texto cifrado C. Si las dos etiquetas se corresponden (tanto en
longitud como en valor), entonces el texto cifrado se devuelve. De
otro modo, se devuelve el símbolo especial FAIL.
Haciendo referencia a continuación a la figura
3, se ha mostrado un diagrama de bloques funcional del módulo de
encriptado AES-GCM, indicado de manera general como
(30). La memoria SA (34), que es externa al módulo de encriptado
AES-GCM, almacena la clave de encriptado K y la
clave de dispersión H. Tal como se ha descrito en lo anterior,
que será encriptado del cifrado de
bloque del valor O^{w} con la clave
K.
\vskip1.000000\baselineskip
La clave de encriptado K es facilitada al
dispositivo AES (31) y la clave de dispersión H es facilitada al
dispositivo GHASH (32). El aparato de estado finito (FSM), indicado
en general con el numeral (33), recibe señales de control de entrada
y controla el módulo de encriptado AES-GCM (30). El
dispositivo AES (31) puede ser accionado en la modalidad de libro de
código electrónico (ECB), modalidad de encadenado del bloque de
cifrado (CBC) y la parte de contador (CTR) del GCM tanto para
encriptado como desencriptado. El dispositivo AES soporta diferentes
tamaños de bloques de clave, incluyendo 128 bits, 192 bits y 256
bits.
El dispositivo AES ejecuta un algoritmo que
tiene operaciones realizadas en una disposición bidimensional de
bits llamada el "State". El State consiste en cuatro filas de
bits cada una de las cuales contiene Nb bits, siendo Nb la longitud
del bloque dividido por 32. El State incluye una entrada y una
salida. Al inicio del cifrado y cifrado inverso, la entrada, que es
el conjunto de bits de entrada, es copiada en el conjunto State. Las
operaciones de cifrado o cifrado inverso son realizadas entonces en
esta disposición State después de lo cual es copiado su valor final
a la salida que es otro conjunto de bits de salida.
Para el algoritmo del dispositivo AES la
longitud del bloque de entrada, el bloque de salida y el State es de
128 bits. Esto es representado por Nb=4 que refleja el número de
palabras de 32 bits (número de columnas) en el State. La longitud de
la clave de cifrado K es 128, 192 o 256 bits. La longitud de la
clave es representada por Nk=4, 6 u 8, que refleja el número de
palabras de 32 bits (número de columnas) en la clave de cifrado. El
número de pasadas realizadas durante la ejecución del algoritmo
depende de las dimensiones de la clave. El número de pasadas es
representado por Nr, donde Nr=10 cuando Nk=4, Nr=12 cuando Nk=6, y
Nr=l4 cuando Nk=8.
Tanto para el cifrado como cifrado inverso el
algoritmo del dispositivo AES utiliza una función de pasada que está
compuesta de cuatro transformaciones con orientación de bit
diferentes: (1) sustitución de bit utilizando una tabla de
sustitución (S-box), (2) desplazamiento de filas del
conjunto State por diferentes desplazamientos, (3) mezclar los datos
dentro de cada columna del conjunto State y (4) añadir una clave de
pasada ("round key") al State. Estas transformaciones (y sus
inversos) se describen en la publicación de la Norma AES a la que se
ha hecho referencia en lo anterior y que es incorporada a esta
descripción a titulo de referencia. Estas combinaciones
clave-bloque-pasada se resumen en la
siguiente tabla:
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
Al inicio del cifrado la entrada es copiada en
el conjunto State tal como se ha descrito anteriormente. Después de
una adición de clave de pasada inicial el conjunto State es
transformado implementando una función de pasada 10, 12 ó 14 veces
(dependiendo de la longitud de la clave), difiriendo la pasada final
ligeramente de las primeras Nr-1 pasadas. El State
final es copiado en la salida tal como se ha descrito
anteriormente.
Tal como se ha descrito el cifrado comprende
cuatro transformaciones. Estas transformaciones
individuales-SubBits(), ShiftRows(), MixColums(), y
AddRoundKey()- procesan el State. Todas la Nr pasadas son idénticas
a excepción de la pasada final que no incluye la transformación
MixColums().
Se apreciará que el cifrado antes mencionado
puede ser invertido y a continuación implementado en orden inverso
para producir un cifrado inverso para el algoritmo del dispositivo
AES. Las transformaciones individuales utilizadas en el cifrado
inverso- InvShiftRows(), InvSubBits(), InvMixColums(), y
AddRoundKey()- procesan el State y se describen en la publicación de
la norma AES.
La presente invención, si las dimensiones de la
clave es 128 bits, calcula la clave de dispersión H utilizando el
dispositivo AES (31) ejecutando 10 pasadas de cálculo (10 periodos
de reloj). Después de haber calculado la última pasada la clave de
dispersión H es enviada a la memoria SA (34) para su almacenaje. De
forma similar la presente invención si las dimensiones de la clave
son de 192 bits, calcula la clave de dispersión H ejecutando 12
pasadas de cálculo (12 periodos de reloj) y a continuación
almacenando la clave de dispersión H n la memoria SA (34). Además,
la presente invención si las dimensiones de la clave es de 256 bits,
calcula la clave de dispersión H ejecutando 14 pasadas de calculo
(14 periodos de reloj). Después de la última pasada, la presente
invención almacena la clave de dispersión H en la memoria SA.
El dispositivo AES es programado de manera
ventajosa para calcular y almacenar la clave de dispersión H antes
del momento de intercambio de clave entre el remitente y el
receptor. Este precalculo ahorra 10, 12 ó 14 ciclos de reloj por
paquete o bloque que de otro modo se requerirían para calcular la
clave de dispersión H de cada paquete o bloque.
Haciendo referencia a continuación a la figura 4
y recordando las ecuaciones de encriptado autenticado, se indicará a
modo de ejemplo la forma en la que se determina la etiqueta de
autenticación por la operación de encriptado autenticado indicada de
manera general con el numeral (40). La operación de autenticación
(40) comprende dos funciones principales utilizadas en GCM que son
el encriptado cifrado del bloque y la multiplicación sobre el campo
GF (2^{128}). Tal como se ha mostrado, la función E_{K}
(designada como 43a, 43b y 43c) indica el encriptado de la cifra
bloque utilizando la clave K. La función multH (designada como 44a,
44ab, 44c y 44d) indica multiplicación en GF (2^{128}) por la
clave de dispersión H. La función incr (designada como 41a y 41b)
designa la función de incremento de contador (CTR). A efectos de
simplicidad, solamente se ha mostrado un bloque único de datos
autenticados adicionales (designados Auth Data 1) y dos bloques de
texto normal (designados Plaintext 1 y Plaintext 2).
La adición de dos elementos X e Y en GF
(2^{128}) consiste en añadir un polinomio representando a X con
otro polinomio representando a Y. Esta operación es idéntica a la
exclusión por bits o (XOR) de X e Y. Las operaciones XOR se han
mostrado en la figura 4 como XOR (45a) hasta XOR (45f). La
multiplicación de dos elementos X e Y consiste en la multiplicación
del polinomio que representa X con el polinomio que representa Y,
dividiendo el polinomio resultante de 256 bits por un polinomio de
campo; siendo el resultado un resto de 128 bits. El polinomio de
campo es fijo y determina la representación del campo. El GCM
utiliza el polinomio f = 1+ \alpha + \alpha^{2} +
\alpha^{7} + \alpha^{128}.
En general, haciendo referencia a la figura 4,
proporciona la salida de contador Yi que es encriptada con la clave
de encriptado K en el módulo (43b, c) de E_{K}. La salida
encriptada es sometida a XOR con texto normal 1, 2, obteniendo de
esta manera texto cifrado 1, 2. Separadamente, el estado CTR Yo
(contador 0) es encriptado por el módulo (43a) de E_{K} para
obtener E(K, Yo). Los datos Auth Data 1 son operados por
multH (44a) y a continuación sometidos a XOR con el texto cifrado 1,
que es operado a continuación por mult_{H} (44b). La salida de
multH (44b) es sometida a XOR con el texto de cifrado 2, que es
operado a continuación por mult_{H} (44c). La salida de multH es
sometida a XOR con la concatenación de cadenas de bits A y C, siendo
finalmente sometida a XOR con E(K, Yo) para obtener la
etiqueta de autenticación T que se ha descrito anteriormente. Se
apreciará que la variable Xi anteriormente descrita resulta de las
operaciones iterativas de multiplicación de la clave de dispersión H
con el texto cifrado o el AAD. A su vez, la función GHASH es
definida por GHASH (H, A, C) = Xi.
Haciendo referencia a la figura 5 y recordando
las ecuaciones de encriptado autenticado antes descritas, se muestra
como método (50) la forma en la que la etiqueta de autenticación es
obtenida durante la operación de desencriptado. El método (50) es
similar al método (40), excepto que el texto cifrado cuando es
sometido a XOR con la sal ida del módulo E_{K} produce el texto
normal. Tal como se ha mostrado, el módulo E_{K} (designado 53a,
53b y 53c) produce el desencriptado de la cifra bloque utilizando la
clave K. La función multH (designada como 54a, 54b, 54c y 54d)
indica multiplicación en GF (2^{128}) por la clave de dispersión
H. La función incr (designada como 51a, 51b) indica la función de
incremento de contador (CTR). A efectos de simplicidad solamente se
ha mostrado un bloque único de datos autenticados adicional
(designado Auth Data 1) y dos bloques de texto cifrado (designados
ciphertext 1 y ciphertext 2) (texto cifrado 1 y texto cifrado
2).
Un diagrama de bloques a titulo de ejemplo de un
módulo de dispositivo AES ha sido mostrado en la figura 6 designado
de manera general con el numeral (60). El módulo del dispositivo AES
comprende cuatro canales de flujo de datos que comparten dos módulos
de transformación de cifras. Los dos módulos de transformación de
cifras se han mostrado indicados como (70a, 70b). Se comprenderá que
se pueden incluir hasta cuatro módulos de transformaciones de
cifras, de manera que cada uno de los cuatro canales tiene su propio
módulo de transformación de cifras. Cuatro registros de entrada (82)
se han mostrado en la figura. Los registros de entrada (82) son
registros de tipo primero en entrar primero en salir
("first-in-first-out"
(FIFO)), si bien se pueden utilizar otros tipos de registros. Cada
uno de los registros de entrada recibe una cadena de datos de una
primera longitud de bits predeterminada desde su canal de sistema
correspondiente. En la realización a titulo de ejemplo, la longitud
de bits predeterminada (designada 85) es de 64 bits, si bien se
pueden utilizar cadenas de datos más largas.
Las señales de control (83), clave (84) (un dato
de clave por canal) y el control del tampón de entrada del conjunto
de estado ("state") (SAIB) (también 84) están dispuestos como
señales de entrada para el módulo (60) del dispositivo AES. Las
señales de control están acopladas, una para cada uno, a cuatro
controladores de máquina de estado finito (FSM) (76). Existe
solamente un FSM (76) asociado con cada canal, cada uno de los
cuales, en respuesta a las señales de control recibidas, controlan
el funcionamiento del módulo (60) del dispositivo AES.
Los registros de entrada (82) están acoplados a
los registros tampón (80a, 80b). Cada uno de los registros tampón
bajo control de uno de los FSM, recupera selectivamente y almacena
cadenas de datos de una longitud de bits predeterminada desde uno de
los registros FIFO (82) hasta que se ha almacenado un bloque de
datos de una longitud de bits predeterminada en el registro de
entrada FIFO (80a, 80b) del tampón (registro BIF, 80a, 80b). La
longitud de bits predeterminada del bloque de datos es una longitud
de bloque soportada por la cifra bloque AES, es decir, una longitud
de 128 bits.
El módulo (60) del dispositivo AES comprende un
registro (81) de almacenaje de la clave de cifrado para cada canal
del sistema. El registro (81) de almacenaje de la clave de cifrado
recibe de la SA la clave de cifrado K asociada con cada canal del
sistema (cuatro canales). Bajo control de su respectivo FSM el
registro de almacenaje de clave de cifrado transmite la clave de
cifrado almacenada K a un bloque (75) de expansión de clave. El
bloque (75) de expansión de clave genera una sola clave de pasada
("round key") llevando a cabo una sola operación de expansión
de calve para cada pasada de la cifra bloque de AES.
Los datos de salida del registro tampón (80a,
80b) son acoplados al circuito XOR (77, 78) para llevar a cabo la
operación lógica XOR. Cada uno de los circuitos XOR recibe el bloque
de datos de cada uno de los registros tampón (80a, 80b) y otro
bloque de datos de cada uno de cuatro registros (IV/OR/CTR) (79).
Estos dos bloques de datos son sometidos a XOR. Existe un registro
(IV/OR/CTR) para cada canal del sistema. Estos registros almacenan
el IV ("nonce") para calcular Yo durante el estado O de contaje
de la modalidad AES-GCM, y/o calculando Yi durante
el otro estado de contaje (CTR) de la modalidad
AES-GCM. También se han mostrado otras dos
modalidades, a saber la modalidad ECB y la modalidad CBC. Como
respuesta a una señal de control ECB/CBC los datos almacenados en
registros (79) IV/OR/CTR es transmitido al circuito XOR (77, 78) o
se transmite una cadena de ceros al circuito XOR (77, 78). En la
modalidad CBC el IV es sometido a XOR con los datos en BIF (80a,
80b) antes de ser enviado a los módulos de encriptado (70a, 70b). En
la modalidad ECB no se utiliza IV. En la modalidad CTR/GCM se
utiliza el contador 1, 2, 3, 4 para introducir datos en los módulos
de encriptado (70a, 70b) para la operación de encriptado. El OR de
IV/OR/CRT 1-4 (designado (79)) es un registro de
salida que almacena los datos encriptados facilitados desde los
módulos de encriptado (70a, 70b).
Antes de cada pasada de la cifra bloque de AES,
el bloque de expansión (75) de la clave trasmite la clave de pasada
a uno de los bloques funcionales AddRoundKey (74a, 74b). Se pueden
tener hasta cuatro bloques funcionales AddRoundKey (uno para cada
canal). El bloque de datos de uno de los registros tampón (80a, 80b)
que había sido sometido a XOR con el bloque de datos procedente del
registro (79) es transferido al bloque funcional AddRoundKey (74a,
74b). El bloque (74a, 74b) de la función AddRoundKey recibe un
bloque de datos y lleva a cabo una transformación inicial
AddRoundKey sobre el bloque de datos de acuerdo con la cifra bloque
de AES. El bloque de datos del bloque funcional (74a, 74b)
AddRounKey es transmitido a continuación a un registro de entrada
del módulo de transformación de cifra (74a, 74b) (uno por
canal).
El bloque de datos transmitido al registro de
entrada del bloque de cifras de los bloques de transformación (70a,
70b) es operado a continuación por transformaciones de cifras de
bloques AES para cualquier encriptado o desencriptado. De forma
especifica, si las señales de control recibidas dan instrucciones al
FSM para que el canal específico encripte datos, entonces las
transformaciones de encriptado son operativas. Inversamente, si las
señales de control recibidas dan instrucciones al FSM para que el
canal específico desencripte datos, entonces las transformaciones de
desencriptado son operativas. Las funciones de transformación
comparten circuitos lógicos combinados para llevar a cabo las
transformaciones de encriptado o desencriptado. De este modo una
primera transformación lleva a cabo la transformación
Bitsub/InvBitsub sobre el bloque de datos recibidos. De manera
similar la segunda y tercera transformaciones llevará a cabo
respectivamente ShiftRow/InvShiftRow y MixCol/InvMixCol, basándose
en la señal recibida desde el canal específico FSM. El bloque de
datos es operado sucesivamente por esas transformaciones y a
continuación es transmitido a un segundo bloque AddRoundKey del
bloque de transformación (70a, 70b).
Después de esta pasada de transformación inicial
el bloque de datos es realimentado al registro de entrada del bloque
de cifras para la siguiente pasada de transformación. Además,
dependiendo del estado, el bloque de datos es transmitido al
contador encriptado FIFO (ECF) (73) (uno por canal) y/o IV/OR/CTR
(79) (uno por canal).
\newpage
Si el bloque de datos esta siendo desencriptado,
entonces el bloque de datos es realimentado al registro de entrada
del bloque de cifras del módulo de transformación (70a, 70b),
mediante (1) los registros de desencriptado de texto normal (68a,
68b) (uno por canal) (2) multiplexador (71) y (3) circuito XOR (72).
Los registros de desencriptado de texto normal (68a, 68b) reciben
datos de los registros de texto normal (69) (uno por canal).
Después de haber completado el número
predeterminado de pasadas de transformación, la última clave de
pasada en el bloque de expansión de clave (75) es almacenada en una
memoria externa del módulo (60) del dispositivo
AES-GCM. Está última clave de pasada queda entonces
disponible para su utilización como valor de clave de pasada inicial
durante una subsiguiente operación de desencriptado. El valor de la
clave de pasada es transmitido a la memoria SA (figura 3) mediante
el registro (67) clave/cbc - múltiplex de datos incluido en los
datos/control del tampón de salida de SA (SAOB).
Las cadenas de datos transferidas al registro
tampón (80a, 80b) desde uno de los registro de entrada de canal (82)
son también transferidos al registro apropiado de texto normal (69).
Las cadenas de datos son almacenadas en el registro de almacenaje de
texto normal hasta que las otras cadenas de datos han sido
encriptadas (o desencriptadas) un número predeterminado de pasadas
por los circuitos de encriptado/desencriptado. Los datos llamados
"de texto normal" en el registro (69) de almacenaje de texto
normal son transmitidas entonces al registro (65) de 64 bits.
Las cadenas de datos de salida de Ci (texto
cifrado) son facilitadas del registro (79) IV/OR/CTR (uno por canal)
como datos de salida mediante el mux (66) de 4x64 bits. Las cadenas
de datos de salidas de Ci son utilizadas como datos de entrada para
calcular el GHASH (H, A, C) en módulos GHASH (61) (o dispositivo
GHASH (32) mostrado en la figura 3).
La salida del mux (66) de 4x64 bits y la salida
del registro (65) están acoplados a los cuatro módulos GHASH (61)
(uno por canal) mediante un multiplexador (63). Las salidas del mux
(66) de 4x64 bits y el registro (65) están también acoplados a
cuatro registros FIFO (62) (uno por canal) mediante el multiplexador
(64). El multiplexador (63) proporciona las cadenas de datos Ci o el
AAD (texto normal) a módulos GHASH (61) para llevar a cabo la
multiplicación de Galois (ver figura 4). El multiplexador (64)
proporciona el texto normal/texto cifrado como salida mediante los
registros FIFO (62). La clave HASH es facilitada como salida
mediante el mux/registro (67) clave/cbc-datos a la
memoria SA para almacenaje.
Haciendo referencia a continuación a la figura
7, se ha mostrado un dispositivo GHASH a titulo de ejemplo indicado
de forma general con el numeral (90). Se pueden tener hasta cuatro
de dichos dispositivos GHASH. El dispositivo GHASH (90) comprende el
controlador GHASH (91), el módulo de alineación GHASH (95), el
módulo GMULT (101), el módulo de configuración ghash (103) y el
módulo de interfaz GHASH (107). El controlador GHASH (91) recibe
datos de control para almacenaje en los registros de control (92).
La secuencia de la máquina de estado es detectada en el módulo (93)
de flujo FSM mientras que el control del módulo GMULT (101) es
proporcionado por el módulo de lógica de control (94).
El módulo (95) de alineación GHASH recibe
bloques de datos de texto cifrado (Ci) que es calculado en el
dispositivo AES (31) (figura 3). En el mismo bus de datos de
entrada, el módulo (95) de alineación GHASH recibe también los bits
AAD (A_{i}). Los bloques de datos son enviados al módulo de
alineación (97) mediante el conducto (96) y son activados en bits en
el registro (98). Después de alineación de bits, se facilitan 128
bits al registro (100). Cuando es necesario el multiplexador (99)
recubre alguno de los bits con bits cero que son recibidos desde el
módulo de recubrimiento ("padding") (102).
El texto cifrado y/o los bits ADD son
facilitados al módulo GMULT (101) para llevar a cabo la
multiplicación del texto cifrado y/o del AAD con la clave de
dispersión. Se pueden tener hasta cuatro claves de dispersión
almacenadas en la memoria SA (una por canal). El módulo lógico (94)
del controlador empieza la multiplicación GHASH. Tal como se ha
mostrado, la clave de dispersión (una, hasta cuatro claves de
dispersión) es facilitada al módulo GMULT mediante el registro de
clave (104). Se comprenderá que la clave de dispersión ha sido ya
calculada por el dispositivo AES (31) (figura 3) y almacenada en la
memoria SA (34). De acuerdo con ello, cuando los datos del texto
cifrado son recibidos por el módulo (95) de alineación GHASH, la
clave de dispersión se encuentra lista para su utilización por el
módulo GMULT (101) mediante el registro de clave (104).
El resultado de la multiplicación de dispersión
es emitido hacia el registro MAC (105). De este modo el GHASH (H, A,
C) que está definido por X_{i} es emitido por intermedio del mult
iplexador (106) y el registro de salida de datos (109) bajo el
control del registro de direcciones (108). El cálculo final de la
etiqueta de autenticación T es llevada a cabo en cualquier otro
lugar después de someter a XOR el GHASH (H, A, C) con el E (K, Yo)
(ver
figura 4).
figura 4).
Haciendo referencia a continuación a la figura
8, se ha mostrado un método para autenticar un paquete de datos de
acuerdo con una realización a título de ejemplo de la presente
invención. Tal como se ha mostrado, la etapa (141) proporciona un
intercambio de clave entre el remitente y el receptor. De esta
manera se obtiene la clave de encriptado (clave de cifras) K. Este
intercambio de clave puede ser llevado a cabo por ejemplo, una vez
cada 100 paquetes o bien una vez cada 1000 paquetes. A continuación
la etapa (142) calcula la etapa GHASH H utilizando el dispositivo
AES (31) (figura 3). La clave de dispersión H es calculada llevando
a cabo expansiones de clave utilizando diez pasadas de expansiones
en la clave de cifra K (10 ciclos de reloj) para una clave de
cifrado de 128 bits o 12 pasadas (12 ciclos de reloj) para una clave
de cifrado de 192 bits o 14 pasadas (14 ciclos de reloj) para una
clave de cifrado de 256 bits. La etapa (143) reserva la clave de
cifrado recibida K y la clave de dispersión calculada H en la
memoria SA (34)
(figura 3).
(figura 3).
Después de que la clave de cifrado K y la clave
de dispersión H están guardadas en la memoria SA, la etapa (144)
utiliza un controlador lógico para autorizar la entrada del paquete
en el dispositivo AES (31). La etapa (145) lleva a cabo el
encriptado utilizando la modalidad operativa
AES-CTR. Finalmente la etapa (146) autentica el
paquete mediante el dispositivo GHASH (32) (figura 3) utilizando el
multiplicador de Galois.
De manera similar, la figura 9 muestra un método
de autenticado de un paquete encriptado de datos en el terminal
receptor de acuerdo con una realización a titulo de ejemplo de la
presente invención. Tal como se ha mostrado, la etapa (151)
proporciona un intercambio de clave entre el emisor y el receptor.
De está manera se obtiene la clave de desencriptado (clave de
descifrado) K. Este intercambio de clave puede ser llevado a cabo
por ejemplo, una vez cada 100 paquetes o bien una vez cada 1000
paquetes. La etapa (152) calcula entonces la clave GHASH H
utilizando el dispositivo AES (31) (figura 3). La clave de
dispersión H es calculada llevando a cabo expansiones de clave
utilizando diez pasadas de expansiones en la clave de descifrado K
(10 ciclos de reloj) para una clave de descifrado de 128 bits o 12
pasadas (12 ciclos de reloj), para una clave de descifrado de 192
bits o 14 pasadas (14 ciclos de reloj), para una clave de descifrado
de 256 bits. La etapa (153) reserva la clave de descifrado K
recibida y la clave de dispersión calculada H en la memoria SA (34)
(figura 3).
Después de que la clave de descifrado K y la
clave de dispersión H han sido guardadas en la memoria SA, la etapa
(154) utiliza un controlador lógico para autorizar el flujo de
entrada del paquete encriptado en el dispositivo AES (31). La etapa
(155) lleva a cabo el desencriptado utilizando la modalidad
AES-CTR de funcionamiento. Finalmente, la etapa
(156) autentica el paquete mediante el dispositivo GHASH (32)
(figura3) utilizando el multiplicador de Galois.
Si bien la invención se ha mostrado y descrito
haciendo referencia a realizaciones específicas, la invención no
esta destinada a su limitación a los detalles que se han mostrado.
En vez de ello, varias modificaciones pueden ser introducidas en los
detalles dentro del ámbito y alcance de los equivalentes de las
reivindicaciones y sin salir de la presente invención.
Claims (20)
1. Método de encriptado autenticado que
comprende las siguientes etapas:
(a) recibir mediante un dispositivo de Norma de
Encriptado Avanzado (Advanced Encryption Standard (AES)) una clave
de cifrado;
(b) calcular, mediante el dispositivo AES una
clave de dispersión ("hash") utilizando la clave de cifrado
recibida;
(c) almacenar la clave de dispersión calculada
en una memoria de almacenamiento;
(d) recibir, mediante el dispositivo AES un
paquete de datos;
(e) encriptado del paquete de datos por el
dispositivo AES utilizando la clave de cifrado recibida;
(f) recibir la clave de dispersión mediante un
dispositivo GHASH a partir de la memoria de almacenamiento y;
(g) autenticar el paquete de datos por el
dispositivo GHASH utilizando la clave de dispersión.
\vskip1.000000\baselineskip
2. Método según la reivindicación 1 en el
que
la etapa de encriptado comprende la utilización
de una modalidad de contaje en el dispositivo AES para el encriptado
del paquete de datos.
\vskip1.000000\baselineskip
3. Método según la reivindicación 2, en el
que
la utilización de la modalidad de contaje
comprende someter a XOR iterativamente (a) una parte de texto normal
del paquete de datos con (b) un valor encriptado de datos de contaje
utilizando la clave de cifrado obteniendo de esta manera un texto
cifrado de datos.
\vskip1.000000\baselineskip
4. Método según la reivindicación 1, en el
que
la etapa de autenticación comprende
transmisión del texto cifrado al dispositivo
GHASH, y
multiplicar iterativamente el texto cifrado por
el dispositivo GHASH utilizando la clave de dispersión.
\vskip1.000000\baselineskip
5. Método según la reivindicación 1, en el
que
el encriptado del paquete de datos es llevado a
cabo después de almacenar la clave de dispersión en la memoria de
almacenamiento.
\vskip1.000000\baselineskip
6. Método según la reivindicación 1 que
comprende además la etapa de:
posibilitar el flujo del paquete de datos
después de que la clave de dispersión ha sido almacenada en la
memoria de almacenamiento.
\vskip1.000000\baselineskip
7. Método según la reivindicación 6 en el
que
después de posibilitar el flujo del paquete de
datos, se procede al encriptado del paquete de datos utilizando la
clave de encriptado mediante el dispositivo AES, y
después de posibilitar el flujo del paquete de
datos, autenticar el paquete de datos utilizando la clave de
dispersión almacenada en la memoria de almacenamiento por el
dispositivo GHASH.
\vskip1.000000\baselineskip
8. Método según la reivindicación 1 en el
que
el cálculo de la clave de dispersión comprende
llevar a cabo 10 pasadas de expansión de clave en la clave de
cifrado recibida si la clave de cifrado recibida es un bloque de 128
bits de datos, y
el cálculo de la clave de dispersión comprende
la realización de 12 pasadas de expansión de clave en la clave de
cifrado recibida si la clave de cifrado recibida es un bloque de 192
bits de datos, y
el cálculo de la clave de dispersión comprende
la realización de 14 pasadas de expansión de clave en la clave de
cifrado recibida si la clave de cifrado recibida es un bloque de 256
bits de datos.
\vskip1.000000\baselineskip
9. Método según la reivindicación 1 en el
que
la recepción de la clave cifrada incluye la
recepción, como mínimo, de dos claves de cifrado separadas, a partir
de respectivos canales de datos, y
el cálculo de la clave de dispersión comprende
el cálculo, como mínimo, de dos claves de dispersión separadas que
corresponden a las dos o más claves de cifrado recibidas
separadamente.
\vskip1.000000\baselineskip
10. Método según la reivindicación 1 en el
que
la recepción del paquete de datos comprende la
recepción durante un intervalo de tiempo de un número
predeterminado de paquetes de datos,
el cálculo de la clave de dispersión comprende
el cálculo de la clave de dispersión una vez por el intervalo de
tiempo, y
el almacenamiento de la clave de dispersión
calculada comprende el almacenamiento de la clave de dispersión
calculada una vez por intervalo de tiempo.
\vskip1.000000\baselineskip
11. Método de desencriptado autenticado que
comprende las siguientes etapas:
(a) recibir, mediante un dispositivo de Norma de
Encriptado Avanzado (Advanced Encryption Standard (AES)) una clave
de cifrado;
(b) calcular, mediante el dispositivo AES una
clave de dispersión ("hash") utilizando la clave de cifrado
recibida;
(c) almacenar la clave de dispersión calculada
en una memoria de almacenamiento;
(d) recibir, mediante el dispositivo AES un
paquete de datos;
(e) desencriptar, por medio del dispositivo AES
el paquete de datos utilizando la clave de cifrado recibida;
(f) recibir la clave de dispersión mediante un
dispositivo GHASH desde la memoria de almacenamiento; y
(g) autenticar el paquete de datos por el
dispositivo GHASH utilizando la clave de descomposición.
\vskip1.000000\baselineskip
12. Método según la reivindicación 11 en el
que
la etapa de desencriptado comprende la
utilización de una modalidad de contaje en el dispositivo AES para
desencriptar el paquete de datos.
\vskip1.000000\baselineskip
13. Método según la reivindicación 11 en el
que
el desencriptado del paquete de datos es llevado
a cabo después de que la clave de dispersión ha sido almacenada en
la memoria de almacenamiento.
\vskip1.000000\baselineskip
14. Método según la reivindicación 11 que
comprende además la etapa de:
posibilitar el flujo del paquete de datos
después de que la clave de dispersión ha sido almacenada en la
memoria de almacenamiento.
\vskip1.000000\baselineskip
15. Método según la reivindicación 14 en el
que
después de posibilitar el flujo del paquete de
datos, proceder al desencriptado del paquete de datos utilizando la
clave de encriptado mediante el dispositivo AES, y
después de posibilitar el flujo del paquete de
datos, autenticar el paquete de datos utilizando la clave de
dispersión almacenada en la memoria de almacenamiento por el
dispositivo GHASH.
\vskip1.000000\baselineskip
16. Módulo de encriptado autenticado que
comprende:
un dispositivo de Norma de Encriptado Avanzado
(Advanced Encryption Standard (AES)) para utilizar una clave de
cifrado para calcular una clave de dispersión ("hash"),
una memoria de almacenamiento para almacenar la
clave de dispersión calculada, y
un dispositivo GHASH para recibir la clave de
dispersión calculada almacenada en la memoria de almacenamiento para
autenticar un paquete de datos.
en el que (a) el dispositivo AES encripta el
paquete de datos para formar texto cifrado, (b) el dispositivo
GHASH recibe el texto cifrado desde el dispositivo AES para
multiplicar el texto cifrado recibido con la clave de dispersión
calculada y, (c) se calcula una etiqueta de autenticación utilizando
el texto cifrado multiplicado por la clave de dispersión
calculada.
\vskip1.000000\baselineskip
17. Módulo según la reivindicación 16 que
comprende
un controlador para posibilitar flujo de entrada
del paquete de datos después de que la clave de dispersión calculada
ha sido almacenada en la memoria de almacenamiento.
\vskip1.000000\baselineskip
18. Módulo según la reivindicación 16 en el
que
el paquete de datos comprende datos autenticados
adicionales (AAD), y
el dispositivo GHASH está configurado para
recibir el AAD para multiplicar el AAD por la clave de dispersión
calculada.
\vskip1.000000\baselineskip
19. Módulo según la reivindicación 16 en el
que
el dispositivo AES está configurado para recibir
como mínimo dos claves de encriptado distintas desde respectivos
canales de datos, y
el dispositivo AES comprende dos módulos de
encriptado para encriptar, como mínimo, dos paquetes distintos de
datos recibidos desde los canales de datos respectivos utilizando
las dos o más claves de encriptado distintas.
\vskip1.000000\baselineskip
20. Módulo según la reivindicación 16 en el
que
el paquete de datos comprende múltiples paquetes
de datos, y
la clave de dispersión es calculada por el
dispositivo AES una vez para todos los paquetes múltiples recibidos
de datos, y
la clave de dispersión es almacenada en la
memoria de almacenamiento una vez para todos los múltiples paquetes
de datos recibidos.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/716.916 | 2007-03-12 | ||
US11/716,916 US9209967B2 (en) | 2007-03-12 | 2007-03-12 | Precalculated encryption key |
US11/716,916 | 2007-03-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
ES2364826A1 true ES2364826A1 (es) | 2011-09-15 |
ES2364826B2 ES2364826B2 (es) | 2013-02-06 |
Family
ID=39327893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES200800722A Expired - Fee Related ES2364826B2 (es) | 2007-03-12 | 2008-03-12 | Clave de encriptado precalculada. |
Country Status (6)
Country | Link |
---|---|
US (1) | US9209967B2 (es) |
AU (1) | AU2008201156B2 (es) |
DE (1) | DE102008013785A1 (es) |
ES (1) | ES2364826B2 (es) |
GB (1) | GB2447552B (es) |
IT (1) | ITTO20080186A1 (es) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8467527B2 (en) | 2008-12-03 | 2013-06-18 | Intel Corporation | Efficient key derivation for end-to-end network security with traffic visibility |
US8355499B2 (en) | 2008-12-12 | 2013-01-15 | Micron Technology, Inc. | Parallel encryption/decryption |
US8356177B2 (en) * | 2008-12-30 | 2013-01-15 | Cisco Technology, Inc. | Key transport in authentication or cryptography |
CN101827107A (zh) * | 2010-05-11 | 2010-09-08 | 南京大学 | 一种基于ieee802.1ae协议的gcm高速加解密器 |
DE102011009008A1 (de) | 2011-01-20 | 2012-07-26 | Rohde & Schwarz Gmbh & Co. Kg | Authentifizierung von verschlüsselten Datenblöcken |
DE102011082741A1 (de) | 2011-09-15 | 2013-03-21 | Rohde & Schwarz Gmbh & Co Kg | Verschlüsselung basierend auf Netzwerkinformationen |
US9544075B2 (en) | 2012-02-22 | 2017-01-10 | Qualcomm Incorporated | Platform for wireless identity transmitter and system using short range wireless broadcast |
US10419907B2 (en) | 2012-02-22 | 2019-09-17 | Qualcomm Incorporated | Proximity application discovery and provisioning |
US10360593B2 (en) | 2012-04-24 | 2019-07-23 | Qualcomm Incorporated | Retail proximity marketing |
US9176838B2 (en) | 2012-10-19 | 2015-11-03 | Intel Corporation | Encrypted data inspection in a network environment |
US9400744B2 (en) | 2012-10-30 | 2016-07-26 | Mangstor, Inc. | Magnetic random access memory journal for multi-level cell flash memory |
EP2909962B1 (en) * | 2012-11-29 | 2018-02-28 | BlackBerry Limited | Authenticated encryption method using working blocks |
US9264222B2 (en) | 2013-02-28 | 2016-02-16 | Apple Inc. | Precomputing internal AES states in counter mode to protect keys used in AES computations |
WO2015015702A1 (ja) * | 2013-08-02 | 2015-02-05 | 日本電気株式会社 | 認証暗号装置、認証暗号方法および認証暗号用プログラム |
US9304941B2 (en) * | 2014-02-27 | 2016-04-05 | Mangstor, Inc. | Self-encrypting flash drive |
EP3032523B1 (en) * | 2014-04-10 | 2019-03-27 | Fuji Electric Co., Ltd. | Information processing device, program, and storage medium |
US8990556B1 (en) | 2014-08-13 | 2015-03-24 | Gimbal, Inc. | Sharing beacons |
US9806887B1 (en) * | 2014-09-23 | 2017-10-31 | Amazon Technologies, Inc. | Authenticating nonces prior to encrypting and decrypting cryptographic keys |
AU2015357253B2 (en) * | 2014-12-03 | 2018-03-08 | Nagravision S.A. | Block cryptographic method for encrypting/decrypting messages and cryptographic devices for implementing this method |
US9107152B1 (en) | 2015-03-11 | 2015-08-11 | Gimbal, Inc. | Beacon protocol advertising bi-directional communication availability window |
US9665699B2 (en) * | 2015-03-13 | 2017-05-30 | Nxp B.V. | Implementing padding in a white-box implementation |
US10108557B2 (en) * | 2015-06-25 | 2018-10-23 | Intel Corporation | Technologies for memory confidentiality, integrity, and replay protection |
CN105227298B (zh) * | 2015-09-30 | 2018-02-16 | 大连理工大学 | 基于改进型gcm的智能变电站报文安全传输实现方法 |
US10110376B1 (en) * | 2016-03-28 | 2018-10-23 | Secturion Systems, Inc. | Systolic parallel Galois hash computing device |
US10491377B2 (en) * | 2017-02-28 | 2019-11-26 | Google Llc | Hashing using data parallel instructions |
EP3661115B1 (en) * | 2017-09-01 | 2024-01-17 | Mitsubishi Electric Corporation | Encryption device, decryption device, encryption method, decryption method, encryption program, and decryption program |
KR102602696B1 (ko) * | 2017-10-13 | 2023-11-16 | 삼성전자주식회사 | 암호화 장치 및 복호화 장치, 이들의 동작방법 |
CN109670320B (zh) * | 2017-10-13 | 2023-04-25 | 三星电子株式会社 | 加密设备和解密设备、以及其操作方法 |
US11070373B2 (en) | 2018-02-21 | 2021-07-20 | Ebay Inc. | Masked key hopping |
CN109714151A (zh) * | 2019-01-14 | 2019-05-03 | 盛科网络(苏州)有限公司 | 基于aes-gcm的芯片数据处理方法及系统 |
US11838402B2 (en) | 2019-03-13 | 2023-12-05 | The Research Foundation For The State University Of New York | Ultra low power core for lightweight encryption |
US11394531B2 (en) * | 2019-07-12 | 2022-07-19 | Intel Corporation | Overhead reduction for link protection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030223580A1 (en) * | 2002-05-23 | 2003-12-04 | Snell Dorian L. | Advanced encryption standard (AES) hardware cryptographic engine |
WO2004002057A2 (en) * | 2002-06-25 | 2003-12-31 | Koninklijke Philips Electronics N.V. | Round key generation for aes rijndael block cipher |
US20060002549A1 (en) * | 2004-06-17 | 2006-01-05 | Prasad Avasarala | Generating keys having one of a number of key sizes |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6937727B2 (en) * | 2001-06-08 | 2005-08-30 | Corrent Corporation | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
US20060034456A1 (en) * | 2002-02-01 | 2006-02-16 | Secure Choice Llc | Method and system for performing perfectly secure key exchange and authenticated messaging |
US7418100B2 (en) * | 2004-10-20 | 2008-08-26 | Cisco Technology, Inc. | Enciphering method |
KR100675837B1 (ko) * | 2004-12-13 | 2007-01-29 | 한국전자통신연구원 | 고속 gcm-aes 블록 암호화 장치 및 방법 |
US7886143B2 (en) * | 2006-11-30 | 2011-02-08 | Broadcom Corporation | Multi-data rate cryptography architecture for network security |
-
2007
- 2007-03-12 US US11/716,916 patent/US9209967B2/en active Active
-
2008
- 2008-03-11 GB GB0804483.6A patent/GB2447552B/en active Active
- 2008-03-12 DE DE102008013785A patent/DE102008013785A1/de not_active Withdrawn
- 2008-03-12 ES ES200800722A patent/ES2364826B2/es not_active Expired - Fee Related
- 2008-03-12 AU AU2008201156A patent/AU2008201156B2/en active Active
- 2008-03-12 IT IT000186A patent/ITTO20080186A1/it unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030223580A1 (en) * | 2002-05-23 | 2003-12-04 | Snell Dorian L. | Advanced encryption standard (AES) hardware cryptographic engine |
WO2004002057A2 (en) * | 2002-06-25 | 2003-12-31 | Koninklijke Philips Electronics N.V. | Round key generation for aes rijndael block cipher |
US20060002549A1 (en) * | 2004-06-17 | 2006-01-05 | Prasad Avasarala | Generating keys having one of a number of key sizes |
Non-Patent Citations (1)
Title |
---|
David A. McGrew;John Viega. "The Galois/Counter Mode of Operation (GCM)". 31-05-2005. Disponible en: http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf * |
Also Published As
Publication number | Publication date |
---|---|
AU2008201156B2 (en) | 2011-06-23 |
GB2447552B (en) | 2012-02-08 |
ITTO20080186A1 (it) | 2008-09-13 |
ES2364826B2 (es) | 2013-02-06 |
US20100027783A1 (en) | 2010-02-04 |
DE102008013785A9 (de) | 2008-12-24 |
DE102008013785A1 (de) | 2008-09-18 |
US9209967B2 (en) | 2015-12-08 |
GB0804483D0 (en) | 2008-04-16 |
GB2447552A (en) | 2008-09-17 |
AU2008201156A1 (en) | 2008-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2364826B2 (es) | Clave de encriptado precalculada. | |
Wu et al. | AEGIS: A fast authenticated encryption algorithm | |
US10320554B1 (en) | Differential power analysis resistant encryption and decryption functions | |
US8301905B2 (en) | System and method for encrypting data | |
US20110255689A1 (en) | Multiple-mode cryptographic module usable with memory controllers | |
Karthigaikumar et al. | Simulation of image encryption using AES algorithm | |
RU2005104953A (ru) | Эффективное шифрование и аутентификация для систем обработки данных | |
US20110231673A1 (en) | Cryptographic processing using a processor | |
JP2004363739A (ja) | 改竄検知可能な、共通鍵暗号の暗号化装置または復号化装置 | |
CN111066077B (zh) | 加密装置、加密方法、解密装置以及解密方法 | |
US8442217B2 (en) | Method of implementing one way hash functions and apparatus therefor | |
Sarkar et al. | Role of cryptography in network security | |
Stallings | NIST block cipher modes of operation for authentication and combined confidentiality and authentication | |
Joshy et al. | Text to image encryption technique using RGB substitution and AES | |
Paar et al. | Message authentication codes (MACs) | |
Buell | Modern symmetric ciphers—Des and Aes | |
JP4395527B2 (ja) | 情報処理装置 | |
JP6631989B2 (ja) | 暗号化装置、制御方法、及びプログラム | |
Landge et al. | VHDL based Blowfish implementation for secured embedded system design | |
KR100494560B1 (ko) | Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법 | |
Yap et al. | Security analysis of GCM for communication | |
KR102348802B1 (ko) | Aes 암호화 및 복호화 회로 | |
KR100546777B1 (ko) | Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기 | |
Jagetiya et al. | Evolution of Information Security Algorithms | |
KR20080075725A (ko) | 와이브로 무선인터넷 보안을 위한 다중모드 보안장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG2A | Definitive protection |
Ref document number: 2364826 Country of ref document: ES Kind code of ref document: B2 Effective date: 20130206 |
|
PC2A | Transfer of patent |
Owner name: EXELIS, INC. Effective date: 20130311 |
|
FD2A | Announcement of lapse in spain |
Effective date: 20240426 |