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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000006467 substitution reaction Methods 0.000 claims abstract description 5
- 238000009792 diffusion process Methods 0.000 claims abstract description 4
- 239000011159 matrix material Substances 0.000 claims description 13
- 238000007792 addition Methods 0.000 claims 2
- 230000006870 function Effects 0.000 description 21
- 230000008569 process Effects 0.000 description 15
- 239000000203 mixture Substances 0.000 description 6
- 102100032919 Chromobox protein homolog 1 Human genes 0.000 description 5
- 101000797584 Homo sapiens Chromobox protein homolog 1 Proteins 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 241001441724 Tetraodontidae Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001131 transforming effect Effects 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
-
- 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/0625—Block 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
-
- 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
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.
- 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.
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:
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):
\vskip1.000000\baselineskip
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
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.
\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.
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)
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)
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 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 対称鍵暗号のための線形変換 |
-
2003
- 2003-05-23 EP EP03011696A patent/EP1480371A1/en not_active Withdrawn
-
2004
- 2004-05-14 US US10/845,063 patent/US7499542B2/en active Active
- 2004-05-19 NZ NZ543947A patent/NZ543947A/en not_active IP Right Cessation
- 2004-05-19 BR BRPI0411139-7A patent/BRPI0411139A/pt not_active Application Discontinuation
- 2004-05-19 SI SI200431132T patent/SI1627489T1/sl unknown
- 2004-05-19 AU AU2004240359A patent/AU2004240359B2/en not_active Ceased
- 2004-05-19 WO PCT/EP2004/050854 patent/WO2004105305A1/en not_active Application Discontinuation
- 2004-05-19 EA EA200501623A patent/EA008183B1/ru not_active IP Right Cessation
- 2004-05-19 ES ES04741601T patent/ES2323702T3/es not_active Expired - Lifetime
- 2004-05-19 CN CNA200480014205XA patent/CN1795638A/zh active Pending
- 2004-05-19 CN CN2010102948886A patent/CN101944992B/zh not_active Expired - Lifetime
- 2004-05-19 ZA ZA200509275A patent/ZA200509275B/en unknown
- 2004-05-19 JP JP2006519708A patent/JP4663635B2/ja not_active Expired - Fee Related
- 2004-05-19 CA CA2525591A patent/CA2525591C/en not_active Expired - Lifetime
- 2004-05-19 AP AP2005003445A patent/AP1969A/xx active
- 2004-05-19 PL PL04741601T patent/PL1627489T3/pl unknown
- 2004-05-19 DK DK04741601T patent/DK1627489T3/da active
- 2004-05-19 PT PT04741601T patent/PT1627489E/pt unknown
- 2004-05-19 AT AT04741601T patent/ATE427598T1/de active
- 2004-05-19 EP EP04741601A patent/EP1627489B1/en not_active Expired - Lifetime
- 2004-05-19 MX MXPA05012481A patent/MXPA05012481A/es active IP Right Grant
- 2004-05-19 KR KR1020057022268A patent/KR101050670B1/ko active IP Right Grant
- 2004-05-19 DE DE602004020333T patent/DE602004020333D1/de not_active Expired - Lifetime
-
2005
- 2005-11-14 IL IL171933A patent/IL171933A/en not_active IP Right Cessation
- 2005-11-15 NO NO20055404A patent/NO335894B1/no not_active IP Right Cessation
- 2005-11-22 MA MA28621A patent/MA27811A1/fr unknown
-
2006
- 2006-03-03 HK HK06102831.3A patent/HK1082335A1/xx not_active IP Right Cessation
-
2009
- 2009-05-19 HR HR20090287T patent/HRP20090287T1/xx unknown
- 2009-06-22 CY CY20091100649T patent/CY1109170T1/el unknown
Also Published As
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) | 暗号回路 |