ES2323702T3 - Dispositivo y metodo para encriptar y desencriptar un bloque de datos. - Google Patents

Dispositivo y metodo para encriptar y desencriptar un bloque de datos. Download PDF

Info

Publication number
ES2323702T3
ES2323702T3 ES04741601T ES04741601T ES2323702T3 ES 2323702 T3 ES2323702 T3 ES 2323702T3 ES 04741601 T ES04741601 T ES 04741601T ES 04741601 T ES04741601 T ES 04741601T ES 2323702 T3 ES2323702 T3 ES 2323702T3
Authority
ES
Spain
Prior art keywords
value
values
module
output
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES04741601T
Other languages
English (en)
Inventor
Pascal Junod
Serge Vaudenay
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.)
Nagravision SARL
Original Assignee
Nagravision SA
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 Nagravision SA filed Critical Nagravision SA
Application granted granted Critical
Publication of ES2323702T3 publication Critical patent/ES2323702T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/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
    • 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/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Facsimile Transmission Control (AREA)
  • Complex Calculations (AREA)
  • Semiconductor Memories (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

Método para encriptar o desencriptar bloques de datos X a Y, en base a una clave principal R, este método usando al menos dos módulos principales conectados en serie (MOD), cada módulo principal (MOD) usando una subclave (RA) derivada de la clave principal (R), que incluye las etapas de: - introducir al menos dos valores iniciales X0L y X0R, - mezclar al menos dos valores X0L y X0R para formar un valor mezclado X1, - obtener un valor X2 mezclando una primera parte RAH de la subclave RA con el valor X1, - obtener un valor X3 aplicando el valor X2 a una capa de sustitución, la capa de sustitución comprendiendo al menos una caja de sustitución (sbox), cada caja de sustitución conteniendo una tabla de constantes para la cual la entrada sirve como puntero y la constante indicada sirve como salida, - obtener un valor X4 usando una caja de difusión del tipo de multipermutación en base al valor X3, - obtener un valor X5 mezclando una segunda parte RAL de la subclave RA con el valor X4, - obtener el valor X6 aplicando al valor X5 un bloque de sustitución, - obtener un valor X7 mezclando una primera parte RAH de la subclave RA con el valor X6, - mezclar el valor X7 con al menos dos valores iniciales X0L y X0R para obtener al menos dos valores X8L y X8R, X8L y X8R que representan el valor de salida X8 del módulo, donde para cada módulo principal (MOD) una subclave nueva (RA) es generada a partir de la clave principal (R), los valores iniciales X0L y X0R del primer módulo siendo un subconjunto del dato de entrada X, los valores de salida X8L y X8H del último módulo formando el dato de salida Y, y este método comprendiendo además la fase de aplicación de al menos uno de los valores X8L o X8R una función de ortomorfismo antes de la aplicación de estos valores a la entrada X0R y X0L del siguiente módulo principal.

Description

Dispositivo y método para encriptar y desencriptar un bloque de datos.
La presente invención se refiere a un dispositivo y a un método para encriptar y desencriptar un bloque de datos conocido como cifrado por bloques, siendo el tamaño del bloque de entrada y del bloque de salida el mismo.
Esta operación se controla usando una clave que podría tener el mismo tamaño que el bloque o un tamaño diferente, generalmente un tamaño más grande.
Esta invención se refiere a un método de encriptación/desencriptación simétrica como oposición al método asimétrico. El método simétrico está caracterizado por el hecho de que usa la misma clave para encriptar y desencriptar los datos mientras que el método asimétrico usa una primera clave para encriptar y una segunda clave para desencriptar los datos.
Métodos conocidos son DES (clave de 56 bits), CAST (clave de 128 bits), Blowfish (clave de 448 bits), Twofish (clave de 256 bits), y Rijndael (también conocido como AES, clave de 256 bits). Dependiendo de las aplicaciones a las que estén dirigidos, éstos tienen su propia ventaja y desventaja.
Se han publicado diferentes patentes que describen estos métodos. La patente US 5,214,703 describe el método conocido como IDEA^{TM} que se basa en un proceso de encriptación de 8.5 ciclos de operaciones para una longitud de bloque de 64 bits, cada ciclo usando 6 subclaves derivadas de la clave principal. El núcleo está constituido por un esquema Lai-Massey que utiliza el módulo de adición 2^{16}, el módulo de multiplicación 2^{16} +1 y un operador OR exclusivo a nivel de bit.
Los dos requisitos más importantes para un método de encriptación son la robustez contra cualquier forma de criptoanálisis y la velocidad de cálculo. Un factor clave para la robustez se consigue por el efecto de difusión, es decir cuando se cambia un bit en el dato de entrada, todos los bits de salida se ven afectados de una forma impredecible.
La velocidad de cálculo está principalmente determinada por el tipo de operaciones matemáticas y lógicas requeridas. Unas operaciones más complejas (división, multiplicación) pueden prolongar el tiempo para ejecutar el proceso de encriptación.
El propósito de esta invención es el hecho de proponer un método de encriptación nuevo que ofrezca un nivel alto de seguridad combinado con una velocidad de ejecución alta.
Este objetivo se consigue mediante un método para encriptar o desencriptar bloques de datos X a Y, en base a una clave principal R, este método usando diferentes módulos conectados en serie y cada módulo usando una subclave RA derivada de la clave principal R, que incluye las etapas de:
-
introducir al menos dos valores iniciales X0L y X0R,
-
mezclar al menos dos valores X0L y X0R para formar un valor mezclado X1,
-
obtener un valor X2 mezclando una primera parte RAH de la subclave RA con el valor X1,
-
obtener un valor X3 aplicando el valor X2 a una capa de sustitución, esta capa de sustitución comprendiendo al menos una caja de sustitución (sbox), cada caja de sustitución conteniendo al menos una tabla de constantes para la cual la entrada sirve como puntero y la constante indicada sirve como salida,
-
obtener un valor X4 usando una caja de difusión del tipo de multipermutación en base al valor X3,
-
obtener un valor X5 mezclando una segunda parte RAL de la subclave RA con el valor X4,
-
obtener el valor X6 aplicando una capa de sustitución al valor X5,
-
obtener un valor X7 mezclando una primera parte RAH de la subclave RA con el valor X6,
-
mezclar el valor X7 con al menos los dos valores iniciales X0L y X0R para obtener al menos los dos valores X8L y X8R, X8L y X8R que representan el valor de salida X8 del módulo,
este método usando al menos dos módulos, donde para cada módulo se genera una subclave RA nueva a partir de la clave principal R, los valores iniciales X0 del primer módulo siendo una división del dato de entrada X, los valores de salida X8L y X8H del último módulo formando el dato de salida Y, y este método comprendiendo además la fase de aplicación de una función de ortomorfismo al menos a uno de los valores X8L o X8R antes de aplicar estos valores a la entrada X0R y X0L del siguiente módulo.
Las dos partes principales del método son la capa de sustitución y la matriz de multipermutación.
El propósito de la capa de sustitución es el hecho de transformar el valor de entrada en un valor de salida sin una relación algebraica simple. Es por ello que la vía más rápida es usar una tabla de consulta que contenga las constantes que pueden lograr el resultado de confusión esperado.
Puesto que en esta forma de realización el dato de entrada tiene una longitud de 32 bits, el número de constantes será 2^{32} valores cada uno de 32 bits de longitud.
Según una forma de realización preferida, el dato de entrada se divide en grupos de 8 bits de longitud reduciendo así el número de constantes a 256 bytes.
Luego el dato de entrada de 32 bits ó 64 bits se divide en bytes de 8 bits y se aplica a la caja de sustitución para obtener una salida de 8 bits. El dato de entrada se usa como puntero de dirección y la constante indicada es la salida.
Dependiendo del método de implementación, las tablas de constantes son las mismas para todos los grupos de datos de entrada (32 bits ó 64 bits). En otra forma de realización, las tablas de constantes son diferentes para cada grupo de datos de entrada.
Las constantes almacenadas en esta tabla son una permutación fija de números donde todos son diferentes, codificados por un número de bits igual a la anchura de la tabla.
La segunda parte importante del método es la matriz de multipermutación. La matriz de multipermutación es una matriz cuadrada con la propiedad de que toda submatriz cuadrada posible tiene un determinante distinto de cero; los elementos de la matriz son elementos de un campo finito. La operación de mezcla consiste en multiplicar un vector de elementos de entrada por la matriz, dando como resultado un vector que está definido como la salida.
Breve descripción de los dibujos
- La figura 1 muestra el diagrama esquemático del módulo principal en la versión de 64 bits,
- la figura 2 muestra el proceso principal que incluye un ejemplo con dos módulos,
- la figura 3 muestra la parte interna del módulo principal, en la versión de 64 bits,
- la figura 4 muestra el diagrama esquemático del módulo principal en la versión de 128 bits,
- la figura 5 muestra el diagrama esquemático de la función de ortomorfismo,
- la figura 6 muestra el subsistema para la generación de la caja de sustitución,
- la figura 7 muestra la parte interna del módulo principal, en la versión de 128 bits,
- la figura 8 muestra el proceso principal que incluye un ejemplo con dos módulos en la versión de 128 bits, y
- la figura 9 muestra una versión alternativa de la caja de sustitución.
Descripción detallada de la invención
La Figura 1 muestra el esqueleto del proceso de encriptación (o desencriptación) que representa el módulo MOD. El dato de entrada X0 de 64 bits, que está representado en dos partes X0L y X0R de 32 bits cada una, se mezcla en primer lugar dentro del elemento de mezcla MX para obtener el valor X1. Este elemento de mezcla pretende proporcionar una imagen de 32 bits a partir de dos veces 32 bits de datos. Esto podría conseguirse de distintas formas como por ejemplo, usando una función X0R, adición con el módulo, o usando cualquier ley de grupo.
La siguiente fase está ilustrada con el bloque f32 que tiene una entrada X1 de 32 bits y una salida X7 de 32 bits así como la utilización de una subclave RA. La descripción detallada de este bloque está proporcionada con referencia a la figura 3 (ver más abajo).
La salida X7 del bloque f32 se aplica a los dos bloques de mezcla MX que están conectados con las dos entradas X0L y X0H.
Los datos resultantes X8L y X8R representan las dos salidas X8 de 64 bits del módulo MOD.
La figura 2 muestra el proceso completo que usa al menos dos módulos MOD. El dato de entrada X es aplicado en primer lugar a un módulo separador SP que convierte la entrada X de 64 bits en dos valores de salida X0L1 y X0R1, cada uno de 32 bits de longitud.
La función de este módulo separador SP podría conseguirse de distintas formas como por ejemplo seleccionando los bits más bajos para X0L1 y los bits más altos para X0R1, o todos los bits impares para X0L1 y los bits pares para X0R1. Se podrían usar otros métodos de división del dato de entrada X siempre que todos los bits de X estén comprendidos en X0L1 y X0R1.
Las salidas X0L1 y X0R1 se usan luego como entradas en el primer módulo MOD1. Este primer módulo procesa los datos mientras que usa una primera subclave RA1. El procesamiento para X0L1 y X0R1 es el mismo que el que se describe según la Fig. 1. Las salidas de este primer módulo MOD1 son X8L1 y X8R1. Se aplica una función de ortomorfismo a una de estas salidas, por ejemplo X8L1 como se ilustra en la Fig. 2. La salida que resulta de esta función de ortomorfismo está referenciada como X0L2. El otro valor X8R1 que resulta del procesamiento por el primer módulo MOD1 se usa como entrada, al igual que la salida X0L2 que resulta de la función de ortomorfismo, en un segundo módulo de procesamiento MOD2. Este segundo módulo MOD2 procesará sus datos de entrada en base a una segunda subclave RA2. Las salidas de este segundo módulo están referenciadas como X8L2 y X8R2 en la Fig. 2. Estas salidas se ensamblan para formar el dato encriptado Y dentro del módulo ensamblador AS. Este módulo AS tiene la misma función que el módulo separador SP pero funciona inversamente. Se debe destacar que la manera de reconstruir la salida Y podría ser diferente al módulo separador SP pero el objetivo sigue siendo el mismo. Todo bit de X8L2 y X8R2 debería estar presente en la salida Y.
La figura 3 muestra con detalle las funciones del bloque f32 de la Figura 1. En este bloque, un dato de 32 bits de longitud X1 es la entrada. Este dato está dividido en bloques de 8 bits de longitud (X1a, X1b, X1c, X1d) a través de un bloque separador SPMU, también denominado X1' en la figura 3. Este bloque tiene la misma función que aquella descrita con respecto al bloque SP de la figura 2. Cada uno de estos bloques de 8 bits es mezclado con una primera parte RAH de la subclave RA para obtener un valor X2a, X2b, X2c, X2d (formando el valor X2). Esta operación de mezcla es la misma que aquella descrita con respecto al bloque MX de la figura 1.
La generación de las dos subclaves RAH y RAL se hace a través del módulo separador SP. Este módulo tiene la misma función que aquella descrita en la figura 1.
Cada uno de estos valores X2a a X2d son aplicados a una capa de sustitución, que comprende al menos una caja de sustitución (sbox), cada caja de sustitución conteniendo una tabla de constantes para la cual la entrada sirve como puntero y la constante indicada sirve como la salida. El dato de salida está referenciado como X3a, X3b, X3c, X3d (formando el valor X3) en la Fig. 3.
Un método para generar esta tabla de constantes es el hecho de usar un generador pseudoaleatorio. Se podrían eliminar todos los valores duplicados de modo que cada constante de esta tabla sea única.
Este dato es introducido en una caja de difusión Mu4 del tipo de multipermutación (4,4). El dato de salida de esta caja de difusión está referenciado como X4a, X4b, X4c, X4d respectivamente (formando el valor X4). La caja de difusión consiste en multiplicar el vector de entrada (X4a, X4b, X4c, X4d) por una matriz cuadrada 4x4 Mu4, cuyos elementos pertenecen al campo finito con 256 elementos; estos elementos se denominan Mu(i, j), donde i se refiere al índice de la fila y j al índice de la columna. El resultado de la multiplicación del vector (X4a, X4b, X4c, X4d) por la matriz Mu4 es un vector (Y4a, Y4b, Y4c, Y4d) donde estos valores son obtenidos como sigue:
100
Aquí "+" se refiere a la adición en el campo finito y "*" su multiplicación. Los elementos de Mu4 son elegidos de tal manera que la cantidad de computaciones requeridas para evaluar las cuatro expresiones anteriores sea mínima. El número de multiplicaciones por la constante "1" (más adelante denominada "identidades") ha sido elegido por lo tanto por ser lo más grande posible.
El dato es luego mezclado con una segunda parte RAL de la subclave RA para obtener un valor X5a, X5b, X5c, X5d (formando el valor X5).
Cada uno de estos valores X5a a X5d es luego aplicado a un bloque de sustitución (sbox) para obtener un valor X6a, X6b, X6c, X6d (formando el valor X6). Estos valores son mezclados con una primera parte RAH de la subclave RA para obtener valores nuevos X7a, X7b, X7c, X7d (formando el valor X7).
Luego estos valores X7a, X7b, X7c, X7d son ensamblados para formar el dato de salida X7 dentro del módulo ensamblador AS como se describe con respecto a la figura 2. Este dato corresponde al dato de salida X7 del bloque f32 en la Fig. 1
Durante el proceso de encriptación, la clave principal R está dividida en diferentes subclaves, una por módulo MOD. En el ejemplo de la figura 3, la primera subclave RAI es usada en combinación con el módulo MOD1 y la segunda subclave RA2 es usada en combinación con el módulo MOD2.
Para obtener el dato X en base al dato Y y la clave R, se aplica el mismo proceso que se describe en la referencia a la figura 3 con la única diferencia de que las subclaves se generan en el orden inverso. La subclave RA2 es luego aplicada al primer módulo MOD1 y la subclave RA1 es aplicada al segundo módulo MOD2.
Según el principio general de esta invención, el número de módulos MOD conectados en serie no está limitado a dos módulos. Para conseguir una buena robustez, la experiencia ha mostrado que 9 ciclos son óptimos para obtener un resultado que podría ser calificado como un proceso de encriptación. Este número podría ser extendido a 12 ó más para obtener más robustez.
La figura 4 describe una forma de realización del módulo MOD64 diseñado para tratar datos de 128 bits de longitud. Las entradas X0LL y X0LR son mezcladas entre sí dentro del elemento de mezcla MX para formar el valor de salida XI L y de la misma manera, los valores X0RL y X0RR están mezclados entre sí para formar el valor X1R.
La siguiente fase está ilustrada con la capa f64 que tiene dos entradas X1 L y X1 R de 32 bits y dos salidas X7L y X7R de 32 bits así como usando una subclave RA. La descripción detallada de este bloque se da con referencia a la figura 7 (ver abajo).
Cada una de estas salidas es mezclada con dos datos de entrada del módulo MOD64 dentro del mismo elemento de mezcla MX. En nuestro ejemplo, el valor de salida X7L se mezcla con la entrada X0LL y X0LR respectivamente y el valor de salida X7R está mezclado con la entrada X0RL y X0RR respectivamente. Otra combinación de mezcla es también posible, como la mezcla del valor de salida X7L con X0LL y X0RR en una configuración cruzada.
La figura 5 es una ilustración de una forma de realización de la función de ortomorfismo. El dato de entrada se denomina ZI y el dato de salida se denomina ZO. La longitud del dato no es una consecuencia de esta función. El dato de entrada ZI es dividido en primer lugar mediante el módulo separador SP en dos valores ZL y ZR del mismo tamaño. Luego los dos valores son mezclados con el llamado elemento de mezcla MX y la salida del elemento se aplica a la unidad ensambladora AS. El otro valor de división ZR es directamente aplicado al módulo ensamblador AS sin modificación. Este módulo comprende dos entradas y combina estos datos para formar el valor de salida ZO. Este módulo funciona inversamente al módulo separador SP. La particularidad de esta forma de realización es que las entradas del módulo ensamblador se cruzan con respecto a las salidas del módulo separador SP. La salida derecha ZR del módulo separador SP se aplica en la entrada izquierda del módulo ensamblador AS y la salida izquierda ZL del módulo separador SP, después de mezclarse con la otra salida del módulo separador SP, se aplica en la entrada derecha del módulo ensamblador AS.
En la medida en que la caja de sustitución esté implicada, existirán distintas posibilidades para realizar esta función. Previamente hemos descrito un método únicamente basado en una tabla de constantes. El primer paso para reducir el tamaño de la tabla es dividir la entrada y aplicar esta parte a una tabla mucho más pequeña.
El ejemplo de la figura 3 muestra una caja de sustitución que funciona con una longitud de datos de 8 bits fijando así una tabla de 256 constantes.
En algunos casos, en particular donde el tamaño de memoria es una limitación, se buscan otras alternativas. Una alternativa de este tipo está descrita con referencia a las figuras 6 y 9.
La figura 3 muestra un subsistema Cbox de esta caja de sustitución, este subsistema comprendiendo una entrada C dividida en dos entradas CL y CR y dos salidas CL' y CR'.
El corazón de este subsistema es el módulo TA que comprende una tabla de constantes de 2^{(n/2)} elementos, cada uno de n/2 bits, donde n es la longitud del valor de entrada C.
Para una entrada con una longitud de 8 bits, la tabla de constantes comprende 16 (2^{4}) elementos, cada uno de 4 bits de longitud. Estos elementos son generados de forma aleatoria, teniendo en cuenta que cada elemento tiene un valor único.
La figura 9 describe cómo usar el módulo Cbox para construir una caja de sustitución. El valor de entrada CI es en primer lugar dividido en dos partes CL1 y CR1 y aplicado al primer módulo Cbox1 como se describe con referencia a la figura 3. La salida de dicho módulo Cbox1 se dirige al siguiente módulo Cbox2. Una de las salidas del primer módulo, en este caso CL1', antes de aplicarse al segundo módulo CVBox2, es dado a una función de ortomorfismo OR.
La ejecución de la caja de sustitución usa generalmente al menos dos subsistemas Cbox, cada uno con una tabla de constantes TA diferente. En el ejemplo ilustrado, la caja de sustitución se hace usando tres subsistemas Cbox y las salidas de los últimos subsistemas no tienen función de ortomorfismo OR según la forma de realización.
La figura 7 es una alternativa de la forma de realización descrita en la figura 3, diseñada para datos de 64 bits de longitud. La estructura diseñada para 32 bits es duplicada para procesar datos de 64 bits. El dato de entrada X1 se divide en un vector con elementos de 8 bits de longitud (X1a a XI h) y es procesado de la misma manera que se describe con respecto a la figura 3. La diferencia principal está en la caja de difusión Mu8 que es una matriz cuadrada de 8x8 elementos del campo finito con 256 elementos. Los elementos de la matriz se denominan Mu8(i, j), donde i se refiere al índice de la fila y j al índice de la columna. Para un vector de entrada (X3a, .., X3h), la multiplicación por la matriz Mu8 da el vector de salida (Y3a, .., Y3h) de la siguiente manera ("+" es la adición y "*" es la multiplicación en el campo finito):
101
\vskip1.000000\baselineskip
102
La figura 8 describe el proceso completo usando dos ciclos de ejecución del módulo MOD64. El módulo separador SP divide el dato de entrada X de 128 bits de longitud en cuatro partes, es decir X0LL1, X0LR1, X0RL1 y X0RR1 (formando el valor X0). Dos partes del resultado del módulo MOD64-1 son luego aplicadas a una función de ortomorfismo OR, antes de ser usadas como entrada del siguiente módulo MOD64-2.
\newpage
La posición de la función de ortomorfismo OR con respecto a las salidas del módulo MOD64 no es decisiva. Se pueden seleccionar las dos salidas de la izquierda o las dos salidas de la derecha dependiendo de la implementación de este método.
La salida Y está directamente obtenida a partir del último módulo MOD64, sin tener una función de ortomorfismo OR en una de estas salidas.
Cuando más de dos módulos MOD64 son usados, la función de ortomorfismo OR se coloca entre cada módulo MOD64. Aunque en la forma de realización preferida la posición de la función de ortomorfismo OR es la misma independientemente del número de módulos, en otra forma de realización, la posición de esta función de ortomorfismo OR puede ser cambiada para ser conectada a una salida diferente del módulo MOD64.
\vskip1.000000\baselineskip
Referencias citadas en la descripción
Esta lista de referencias citadas por el solicitante fue recopilada exclusivamente para la información del lector y no forma parte del documento de patente europea. La misma ha sido confeccionada con la mayor diligencia; la OEP, sin embargo, no asume responsabilidad alguna por eventuales errores u omisiones.
Documentos de patente citados en la descripción
\bullet US 5214703 A [0005]

Claims (11)

1. Método para encriptar o desencriptar bloques de datos X a Y, en base a una clave principal R, este método usando al menos dos módulos principales conectados en serie (MOD), cada módulo principal (MOD) usando una subclave (RA) derivada de la clave principal (R), que incluye las etapas de:
-
introducir al menos dos valores iniciales X0L y X0R,
-
mezclar al menos dos valores X0L y X0R para formar un valor mezclado X1,
-
obtener un valor X2 mezclando una primera parte RAH de la subclave RA con el valor X1,
-
obtener un valor X3 aplicando el valor X2 a una capa de sustitución, la capa de sustitución comprendiendo al menos una caja de sustitución (sbox), cada caja de sustitución conteniendo una tabla de constantes para la cual la entrada sirve como puntero y la constante indicada sirve como salida,
-
obtener un valor X4 usando una caja de difusión del tipo de multipermutación en base al valor X3,
-
obtener un valor X5 mezclando una segunda parte RAL de la subclave RA con el valor X4,
-
obtener el valor X6 aplicando al valor X5 un bloque de sustitución,
-
obtener un valor X7 mezclando una primera parte RAH de la subclave RA con el valor X6,
-
mezclar el valor X7 con al menos dos valores iniciales X0L y X0R para obtener al menos dos valores X8L y X8R, X8L y X8R que representan el valor de salida X8 del módulo,
donde para cada módulo principal (MOD) una subclave nueva (RA) es generada a partir de la clave principal (R), los valores iniciales X0L y X0R del primer módulo siendo un subconjunto del dato de entrada X, los valores de salida X8L y X8H del último módulo formando el dato de salida Y, y este método comprendiendo además la fase de aplicación de al menos uno de los valores X8L o X8R una función de ortomorfismo antes de la aplicación de estos valores a la entrada X0R y X0L del siguiente módulo principal.
2. Método de encriptación o de desencriptación según la reivindicación 1, donde el dato de entrada es de una longitud de 64 bits y el dato de entrada X se divide en dos valores iniciales X0L y X0H de 32 bits de longitud, y los dos valores de salida X8L y X8H forman el dato de salida Y.
3. Método de encriptación o de desencriptación según la reivindicación 1, donde el dato de entrada es de 128 bits de longitud y el dato de entrada X se divide en cuatro valores iniciales X0LL, X0LR, X0RL y X0RR de 32 bits de longitud, y los cuatro valores de salida X8LL, X8LR, X8RL y X8RR forman el dato de salida Y de 128 bits, una primera parte X1L del valor X1 se obtiene mezclando el valor X0LR y X0LR y la segunda parte X1R del valor X1 se obtiene mezclando el valor X0RL con X0RR, una primera parte X7L del valor X7 es mezclada con dos de los cuatro valores iniciales X0LL, X0LR, X0RL y X0RR y la segunda parte X7R del valor X7 es mezclada con las dos otras partes de los valores iniciales X0LL, X0LR, X0RL y X0RR.
4. Método de encriptación o de desencriptación según la reivindicación 1, donde la capa de sustitución comprende varias cajas de sustitución (sbox), cada caja con una entrada de 8 bits y una salida de 8 bits, la entrada de la capa de sustitución estando dividida en partes de 8 bits de longitud.
5. Método de encriptación o de desencriptación según la reivindicación 4, donde la tabla de constantes (TA) de la caja de sustitución (sbox) contiene para una entrada dada una salida única.
6. Método de encriptación o de desencriptación según la reivindicación 4, donde la tabla de constantes para cada caja de sustitución (sbox) es la misma.
7. Método de encriptación o de desencriptación según la reivindicación 4, donde la tabla de constantes para cada caja de sustitución (sbox) es diferente.
8. Método de encriptación o de desencriptación según la reivindicación 4, donde la tabla de constantes de la caja de sustitución (sbox) es cambiada en cada ejecución del módulo principal.
9. Método de encriptación o de desencriptación según la reivindicación 1, donde la longitud del dato es de 64 bits y la caja de difusión es una función matricial Y3 = m * X4, el argumento M definiendo adiciones 4*4, multiplicaciones por una constante, o identidades, de las cuales al menos una fila y una columna comprenden tres identidades.
10. Método de encriptación o de desencriptación según la reivindicación 9, donde las filas restantes y las columnas restantes del argumento M comprenden dos identidades.
11. Método de encriptación o de desencriptación según la reivindicación 1, donde la longitud del dato es de 128 bits y la caja de difusión es una función matricial Y3 = N * X3, el argumento N definiendo adiciones 8*8, multiplicaciones por una constante, o identidades, de las cuales al menos una fila y una columna comprenden siete identidades.
ES04741601T 2003-05-23 2004-05-19 Dispositivo y metodo para encriptar y desencriptar un bloque de datos. Expired - Lifetime ES2323702T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03011696A EP1480371A1 (en) 2003-05-23 2003-05-23 Device and method for encrypting and decrypting a block of data
EP03011696 2003-05-23

Publications (1)

Publication Number Publication Date
ES2323702T3 true ES2323702T3 (es) 2009-07-23

Family

ID=33041000

Family Applications (1)

Application Number Title Priority Date Filing Date
ES04741601T Expired - Lifetime ES2323702T3 (es) 2003-05-23 2004-05-19 Dispositivo y metodo para encriptar y desencriptar un bloque de datos.

Country Status (27)

Country Link
US (1) US7499542B2 (es)
EP (2) EP1480371A1 (es)
JP (1) JP4663635B2 (es)
KR (1) KR101050670B1 (es)
CN (2) CN1795638A (es)
AP (1) AP1969A (es)
AT (1) ATE427598T1 (es)
AU (1) AU2004240359B2 (es)
BR (1) BRPI0411139A (es)
CA (1) CA2525591C (es)
CY (1) CY1109170T1 (es)
DE (1) DE602004020333D1 (es)
DK (1) DK1627489T3 (es)
EA (1) EA008183B1 (es)
ES (1) ES2323702T3 (es)
HK (1) HK1082335A1 (es)
HR (1) HRP20090287T1 (es)
IL (1) IL171933A (es)
MA (1) MA27811A1 (es)
MX (1) MXPA05012481A (es)
NO (1) NO335894B1 (es)
NZ (1) NZ543947A (es)
PL (1) PL1627489T3 (es)
PT (1) PT1627489E (es)
SI (1) SI1627489T1 (es)
WO (1) WO2004105305A1 (es)
ZA (1) ZA200509275B (es)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7152165B1 (en) * 1999-07-16 2006-12-19 Intertrust Technologies Corp. Trusted storage systems and methods
AU6104800A (en) * 1999-07-16 2001-02-05 Intertrust Technologies Corp. Trusted storage systems and methods
KR100639764B1 (ko) 2005-04-25 2006-10-30 이병관 블록암호화방법
US20090144561A1 (en) * 2005-07-11 2009-06-04 Davidson Jack W Method and System for Software Protection Using Binary Encoding
US7602906B2 (en) * 2005-08-25 2009-10-13 Microsoft Corporation Cipher for disk encryption
DE602006008600D1 (de) * 2006-06-29 2009-10-01 Incard Sa Verfahren zur Diversifizierung eines Schlüssels auf einer Chipkarte
JP2008058830A (ja) * 2006-09-01 2008-03-13 Sony Corp データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
WO2008059420A2 (en) * 2006-11-17 2008-05-22 Koninklijke Philips Electronics N.V. Cryptographic method for a white-box implementation
US20100303231A1 (en) * 2007-05-22 2010-12-02 Koninklijke Philips Electronics N.V. Updating cryptographic key data
US20080304664A1 (en) * 2007-06-07 2008-12-11 Shanmugathasan Suthaharan System and a method for securing information
CN101321058B (zh) * 2007-06-07 2010-12-15 管海明 一种用于编码和译码数字消息的方法和***
US8369515B2 (en) * 2010-03-18 2013-02-05 Chiou-Haun Lee Cryptographic method of multilayer diffusion in multidimension
CN103546282B (zh) * 2012-07-12 2016-10-05 黄宜豊 具有三维运算、反馈控制与动态替换盒设计的加密方法
JP5772934B2 (ja) * 2013-12-02 2015-09-02 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
CN104022872B (zh) * 2014-04-09 2015-03-25 广州赛意信息科技有限公司 数据加密方法
EP3073407B1 (en) * 2015-03-26 2019-12-18 Nagravision S.A. Method and system for searching for at least a specific datum in a user unit
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
RU2632119C9 (ru) * 2016-06-02 2017-11-22 Андрей Валерьевич Менячихин Устройство для построения ортоморфизмов, использующее парные разности

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4850019A (en) * 1985-11-08 1989-07-18 Nippon Telegraph And Telephone Corporation Data randomization equipment
US5214703A (en) * 1990-05-18 1993-05-25 Ascom Tech Ag Device for the conversion of a digital block and use of same
US5623549A (en) * 1995-01-30 1997-04-22 Ritter; Terry F. Cipher mechanisms with fencing and balanced block mixing
US5727062A (en) * 1995-07-06 1998-03-10 Ritter; Terry F. Variable size block ciphers
US5675653A (en) * 1995-11-06 1997-10-07 Nelson, Jr.; Douglas Valmore Method and apparatus for digital encryption
CA2164768C (en) * 1995-12-08 2001-01-23 Carlisle Michael Adams Constructing symmetric ciphers using the cast design procedure
US6189095B1 (en) * 1998-06-05 2001-02-13 International Business Machines Corporation Symmetric block cipher using multiple stages with modified type-1 and type-3 feistel networks
US6269163B1 (en) * 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
JP3679936B2 (ja) * 1998-11-27 2005-08-03 東芝ソリューション株式会社 暗復号装置及び記憶媒体
US6694025B1 (en) * 1999-06-02 2004-02-17 Koninklijke Philips Electronics N.V. Method and apparatus for secure distribution of public/private key pairs
CN1327586A (zh) * 1999-09-03 2001-12-19 皇家菲利浦电子有限公司 从被记录的公开资料恢复主密钥
JP3499810B2 (ja) * 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
JP5079204B2 (ja) * 2000-08-03 2012-11-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 対称鍵暗号のための線形変換

Also Published As

Publication number Publication date
WO2004105305A9 (en) 2006-01-05
NZ543947A (en) 2007-05-31
NO20055404L (no) 2005-11-18
AU2004240359A1 (en) 2004-12-02
BRPI0411139A (pt) 2006-07-11
DE602004020333D1 (de) 2009-05-14
KR101050670B1 (ko) 2011-07-19
EP1627489B1 (en) 2009-04-01
WO2004105305A1 (en) 2004-12-02
MA27811A1 (fr) 2006-03-01
IL171933A0 (en) 2006-04-10
JP4663635B2 (ja) 2011-04-06
AP2005003445A0 (en) 2005-12-31
HK1082335A1 (en) 2006-06-02
EA200501623A1 (ru) 2006-06-30
ZA200509275B (en) 2007-03-28
SI1627489T1 (sl) 2009-08-31
CN1795638A (zh) 2006-06-28
CN101944992A (zh) 2011-01-12
CA2525591C (en) 2012-10-09
AP1969A (en) 2009-03-11
KR20060014417A (ko) 2006-02-15
CN101944992B (zh) 2012-03-21
NO335894B1 (no) 2015-03-16
AU2004240359B2 (en) 2009-08-27
CY1109170T1 (el) 2014-07-02
PL1627489T3 (pl) 2009-08-31
US7499542B2 (en) 2009-03-03
IL171933A (en) 2010-11-30
US20040247117A1 (en) 2004-12-09
HRP20090287T1 (en) 2009-07-31
DK1627489T3 (da) 2009-07-13
JP2007527028A (ja) 2007-09-20
CA2525591A1 (en) 2004-12-02
ATE427598T1 (de) 2009-04-15
EA008183B1 (ru) 2007-04-27
EP1480371A1 (en) 2004-11-24
EP1627489A1 (en) 2006-02-22
PT1627489E (pt) 2009-06-17
MXPA05012481A (es) 2006-01-30

Similar Documents

Publication Publication Date Title
ES2323702T3 (es) Dispositivo y metodo para encriptar y desencriptar un bloque de datos.
US8175265B2 (en) Systems and methods for implementing block cipher algorithms on attacker-controlled systems
ES2407463T3 (es) Aparato de cifrado en bloques que utiliza una transformación auxiliar
CN108123791B (zh) 一种轻量级分组密码scs的实现方法与装置
US8515059B2 (en) Cryptographic processor with dynamic update of encryption state
CN106034021B (zh) 轻量级双模兼容aes加解密模块及其方法
CN111431697A (zh) 一种新型轻量级分组密码corl的实现方法
WO2010024247A1 (ja) データ変換装置、およびデータ変換方法、並びにプログラム
ES2314453T3 (es) Metodo de generacion de secuencia seudoalleatoria.
CN112287333B (zh) 一种轻量级可调分组密码实现方法、***、电子设备以及可读存储介质
Lee et al. Class of jacket matrices over finite characteristic fields
Abdulwahed Chaos-Based Advanced Encryption Standard
CN111510296A (zh) Sm4/aes双模加密电路
CN113343276B (zh) 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法
Vidhya Secure Format Preserving Encryption for Multiple Data Fields
Nakahara Jr Key-Shedule Analysis of AES Candidates
JPWO2002058037A1 (ja) 暗号回路