ES2314453T3 - Metodo de generacion de secuencia seudoalleatoria. - Google Patents
Metodo de generacion de secuencia seudoalleatoria. Download PDFInfo
- Publication number
- ES2314453T3 ES2314453T3 ES04787093T ES04787093T ES2314453T3 ES 2314453 T3 ES2314453 T3 ES 2314453T3 ES 04787093 T ES04787093 T ES 04787093T ES 04787093 T ES04787093 T ES 04787093T ES 2314453 T3 ES2314453 T3 ES 2314453T3
- Authority
- ES
- Spain
- Prior art keywords
- value
- key
- obtaining
- mkey
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
- H04L9/0668—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator producing a non-linear pseudorandom sequence
-
- 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- 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/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- 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)
- Physics & Mathematics (AREA)
- Nonlinear Science (AREA)
- Storage Device Security (AREA)
- Image Processing (AREA)
- Input From Keyboards Or The Like (AREA)
- Lock And Its Accessories (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Método de generación de una clave secundaria basada en una clave principal (MKEY), comprendiendo las etapas siguientes: - obtención de un primer valor (A1) aplicando una capa de diversificación lineal a la clave principal (MKEY) mezclando la clave principal (MKEY) con una constante, - aplicación de una transformación no lineal al primer valor (A1), esta transformación comprendiendo las etapas siguientes: - obtención de un segundo valor (A2) aplicando el primer valor (A1) 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 comprendiendo al menos una tabla de constantes para la cual la entrada sirve de indicador y la constante indicada sirve de salida, - obtención de un tercer valor (A3) basado en el segundo valor (A2) utilizando una caja de difusión de tipo permutación múltiple, - división del tercer valor (A3) en N bloques de mismo tamaño, obtención de un cuarto valor de salida (A4) formado por N bloques, cada bloque del cuarto valor (A4) siendo el resultado de la combinación de NA bloques del tercer valor (A3), el bloque ausente siendo el bloque del mismo índice, - obtención de un séptimo valor (A7) aplicando una capa de sustitución (señal) al cuarto valor (A4) - obtención de la clave secundaria (RKEY) mediante la aplicación de un módulo de codificación simétrico al séptimo valor (A7), el primer valor (Al1) sirviendo de entrada de clave para este módulo.
Description
Método de generación de secuencia
seudoaleatoria.
La presente invención se refiere a un método
para generar una secuencia pseudoaleatoria criptográficamente
segura basada en una primera semilla o clave.
En muchas ocasiones es necesario generar una
secuencia de datos que dependan de una clave básica. Un primer
campo de aplicación consiste en generar desafíos que son números de
identificación generados cada diez segundos por ejemplo y que
necesitan además un código pin. Este número sólo es válido durante
un corto periodo de tiempo e impide cualquier repetición por parte
de terceros. Tal generador está destinado a reemplazar las listas
antiguas tachadas que eran impresas y enviadas al usuario para la
identificación.
Otro campo de aplicación es la generación de
subclaves en un algoritmo de cifrado usando ciclos múltiples. Una
primera clave debería ser distribuida después para producir varias
subclaves, cada una de estás siendo aplicada a un ciclo. Un ejemplo
de tal método de cifrado de ciclos múltiples está descrito en el
documento US 5,214,703.
Se prevén dos características de tal método de
generación, es decir la no previsibilidad de cualquier otra
secuencia (o de la semilla) mientras se conoce una secuencia y la
reproducción de la secuencia en cualquier dirección. Esta última
característica es usada específicamente cuando la secuencia es
usada como subclave de cifrado ya que el descifrado necesita el uso
de las subclaves en orden inverso.
Una solución común consiste en aplicar la
semilla o clave principal a un LFSR (Registro de desplazamiento con
retroalimentación lineal). Los generadores LFSR producen las
llamadas secuencias recurrentes lineales (LRS) ya que todas las
operaciones son lineales. En términos generales, la longitud de la
secuencia ocurre antes de la repetición, y depende de dos cosas,
las tomas de retroalimentación y el estado inicial. Un LFSR de
cualquier tamaño determinado m (número de registros) es capaz de
producir cada estado posible durante el periodo N = 2^{m} -1,
pero lo hará de esta manera sólo si se han elegido tomas o términos
de retroalimentación apropiados. Tal secuencia es llamada secuencia
de longitud máxima, secuencia máxima, o menos comúnmente, secuencia
de longitud máxima.
En unos métodos conocidos se usa la salida de
tal registro de desplazamiento para generar las subclaves bloque
por bloque para alimentar los ciclos del proceso de cifrado.
Es generalmente aceptado que el conocimiento de
una secuencia generada de esta manera abre la posibilidad de
acceder a las otras secuencias o a la semilla.
Otro método conocido puede ser encontrado en la
patente US 5745577.
El objetivo de esta invención es proponer un
método para generar secuencias o subclaves basadas en una clave
principal, donde cada subclave no proporciona información para
recuperar la clave principal o cualquier otras subclaves.
El objetivo es conseguido con un método usado
para generar subclaves en base a una clave principal (MKEY),
comprendiendo las etapas siguientes:
- -
- obtención de un primer valor (A1) mediante la aplicación sobre la clave principal (MKEY) de una capa de diversificación lineal mediante la mezcla de la clave principal (MKEY) con una constante,
- -
- aplicación en el primer valor (A1) de una transformación no lineal, esta transformación comprendiendo las etapas de:
- -
- obtener un segundo valor (A2) mediante la aplicación del primer valor (A1) en 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 al menos una tabla de constantes para la cual la entrada sirve de indicador y la constante indicada sirve de salida,
- -
- obtener un tercer valor (A3) mediante el uso de una caja de difusión de tipo permutación múltiple en base al segundo valor (A2),
- -
- dividir el tercer valor (A3) en N bloques de mismo tamaño, obteniendo el cuarto valor de salida (A4) formado por N bloques, cada bloque del cuarto valor (A4) siendo el resultado de la combinación de N-1 bloques del tercer valor (A3), el bloque faltante siendo el bloque del mismo índice,
- -
- obtener del séptimo valor (A7) mediante la aplicación sobre el cuarto valor (A4) una capa de sustitución (Sigma),
- -
- obtener la subclave (RKEY) mediante la aplicación al séptimo valor (A7) de un módulo de cifrado simétrico (SENC), el primer valor (A1) sirviendo de entrada de clave para este módulo.
Se puede resumir el método de la manera
siguiente: un primer nivel basado en un módulo de diversificación
lineal y un segundo nivel basado en un módulo de diversificación no
lineal.
La diversificación lineal se consigue mezclando
la clave principal con un valor pseudoaleatorio. Un método común
para producir este valor pseudoaleatorio consiste en aprovechar una
función LFSR. Esta función se utiliza para generar rápidamente
valores sin la necesidad de almacenar una tabla de constantes.
El LFSR es cargado con una primera constante y
desplazada para producir un flujo de bits de la misma longitud que
la longitud de clave. Este flujo de bits es después mezclado (XOR)
con la clave principal para producir el valor A1.
El objetivo del segundo nivel es producir una
diversificación no lineal del valor A1.
Este nivel comprende cinco capas principales. La
primera es una capa de sustitución.
El propósito de la capa de sustitución es
transformar el valor de entrada en un valor de salida sin ninguna
relación algebraica simple. La manera más rápida de conseguir el
resultado de confusión previsto consiste en usar una tabla de
búsqueda conteniendo constantes.
Puesto que en esta forma de realización los
datos de entrada tienen una longitud de 32 bits, el número de
constantes será de 2^{32} valores cada uno de 32 bits de
longitud.
Según una forma de realización preferida, los
datos de entrada son divididos en grupos de 8 bits de longitud
reduciendo así el número de constantes a 256 bytes.
Los datos de entrada de 32 bits o 64 bits son
después divididos en bytes de 8 bits y aplicados en la caja de
sustitución para obtener una salida de 8 bits. Los datos de entrada
son usados como indicador de dirección y la constante señalada 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 o 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 que son todas diferentes, codificadas
por un número de bits igual a la amplitud de la tabla.
La segunda capa principal de este nivel no
lineal es la matriz de permutación múltiple. La matriz de
permutación múltiple es una matriz cuadrada con la propiedad de que
cada submatriz cuadrada posible tiene un determinante diferente 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
definido como la
salida.
salida.
La tercera capa es una capa de mezcla. El valor
de entrada es dividido en varios bloques del mismo tamaño. Para un
bloque de entrada dado i, el bloque de salida i es el resultado de
la función XOR de todos los bloques de entrada excepto el bloque
i.
La cuarta capa es otra capa de sustitución que
aplica la misma operación al valor de entrada que la primera
capa.
La quinta capa es una etapa individual de
cifrado de un método de cifrado de ciclos múltiples. El valor de
entrada es el resultado de la capa precedente y la clave es sacada
del resultado de la capa de diversificación lineal, es decir,
A1.
Varios métodos de cifrado, tales como DES, CAST
o IDEA, podrían ser aplicados. El fin de esta capa es asegurar una
buena diversificación. es decir, conseguir una difusión elevada de
los datos de entrada.
En una forma de realización particular de la
invención, es interesante reutilizar las capas precedentes para el
ciclo de cifrado también. Así, en vez de reutilizar un ciclo de
cifrado conocido, las siguientes etapas serán ejecutadas como un
ciclo de cifrado sobre el valor de entrada A5 para obtener el valor
de salida RA:
- -
- división del valor de entrada A5 en al menos dos valores Y0L y Y0R,
- -
- mezcla de al menos dos valores Y0L y Y0R para formar un valor mixto Y1,
- -
- obtención de un valor Y2 mediante la mezcla de una primera parte A1 H del valor A1 con el valor Y1,
- -
- obtención de un valor Y3 mediante la aplicación del valor Y2 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 al menos una tabla de constantes para la cual la entrada sirve de indicador y la constante señalada sirve de salida,
- -
- obtención de un valor Y4 usando una caja de difusión de tipo permutación múltiple en base al valor Y3,
- -
- obtención de un valor Y5 mediante la mezcla de una segunda parte A1 L del valor A1 con el valor Y4,
- -
- obtención de un valor Y6 mediante la aplicación al valor Y5 de una capa de sustitución,
- -
- obtención de un valor Y7 mediante la mezcla de una primera parte RAH de la subclave RA con el valor Y6,
- -
- mezcla del valor Y7 con los al menos dos valores iniciales Y0L y Y0R para obtener al menos dos valores Y8L y Y8R, Y8L y Y8R representando el valor de salida RA de este ciclo de cifrado.
Según otra forma de realización se añade una
transformación adicional sobre el valor A4 antes de aplicar este
valor a la capa de sustitución.
Esta transformación es una mera adición con una
constante, ejecutada con una función XOR.
En caso de que la longitud de clave provista sea
diferente al tamaño de la clave principal R, la clave habitual
tendría que ser ajustada primero para tener el mismo tamaño que la
clave principal.
En el caso en el que el tamaño de clave actual
sea mayor que la clave principal, la clave es truncada y los bits
restantes son añadidos a la parte truncada (función XOR).
En caso de que el tamaño de clave habitual sea
más pequeño que la clave principal se añadirá un relleno. Para
evitar que este relleno reduzca la calidad de la diversificación,
este relleno es redistribuido con la clave usual para que los bits
de relleno sean distribuidos a lo largo de la clave resultante.
Las características anteriores permiten generar
subclaves que presentan las ventajas siguientes:
- -
- criptográficamente seguras
- -
- generadas en modo bidireccional, hacia adelante y hacia atrás
- -
- uso de clave principal de longitud variable, preferiblemente de bloque de 8 bits.
- La figura 1 muestra el diagrama de bloques de
la generación de subclaves basadas en la clave principal,
- La figura 2 muestra el módulo no lineal basado
en una clave de entrada de 128 bits y de salida de 64 bits,
- La figura 3 muestra el módulo no lineal basado
en una clave de entrada de 256 bits y de salida de 64 bits,
- La figura 4 muestra el diagrama de bloques del
módulo principal en el proceso de cifrado,
- La figura 5 muestra el proceso de cifrado
usando dos módulos MOD y una función de ortomorfismo OR,
- La figura 6 muestra el diagrama de bloques de
la función de ortomorfismo,
- La figura 7 muestra la parte interna del
módulo de cifrado principal MOD.
La figura 1 describe la estructura principal de
esta generación de claves. La primera fase es la de ajuste de
longitud de la clave LA. La clave de entrada AKEY en este ejemplo
tiene un tamaño más pequeño que el tamaño previsto. El proceso PPr
añade datos de relleno en la clave de entrada AKEY para que el
tamaño sea el tamaño nominal. Estos datos de relleno son simplemente
añadidos en el extremo de la clave. La clave PKEY resultante tiene
el tamaño nominal, por ejemplo de 128 o 256 bits.
El segundo proceso es el proceso de
redistribución de relleno MPr. Es importante mezclar los datos de
relleno dentro de la clave para que los datos de relleno no estén
siempre en la misma posición. Esta mezcla se realiza a través de
una secuencia de Fibonacci, que recoge como entrada una clave PKEY
con una longitud ek (expresada en bits). Más formalmente, la clave
rellena PKEY es percibida como un conjunto de ek/8 bytes
PKEY_{1(8)}, 0 \leq L \leq ek/8 -1, y está mezclada
según:
La siguiente fase es la fase de diversificación
LD que es la parte de diversificación lineal DPr. En caso de que la
clave de entrada tenga ya el tamaño previsto, esta clave será
cargada directamente en el registro MKEY.
El objetivo de esta parte de diversificación DPr
es producir una diversificación lineal de la clave MKEY mediante la
mezcla de la clave MKEY con un vector de inicialización. Para cada
subclave generada, el vector de inicialización es diferente. Se
podrían usar diferentes formas de realización para producir este
vector de inicialización.
La forma más simple consiste en almacenar un
conjunto de constantes, cada constante teniendo el mismo tamaño que
el tamaño de clave y actuando como un vector de inicialización. El
número de vectores de inicialización depende del número de ciclos
usados para el proceso de cifrado o el número de subclaves usado
por el sistema.
En una segunda forma de realización, los
vectores de inicialización son generados a través de una parte de
diversificación DPr que se basa en un flujo pseudoaleatorio usando
un Registro de Desplazamiento de Retroalimentación Lineal LFSR. Una
constante inicial es cargada en el LFSR (24 bits en este ejemplo) y
la salida de este registro, es decir el vector de inicialización, es
mezclada con la clave MKEY para producir la clave DKEY.
Esta forma de realización tiene como ventaja
minimizar la cantidad de datos almacenados ya que los vectores de
inicialización no son almacenados sino generados con el LFSR, sólo
la constante inicial es almacenada o forma parte del algoritmo.
En una tercera forma de realización, se carga la
misma clave en un LFSR y la salida de LFSR es directamente la
entrada del módulo siguiente, es decir la clave DKEY.
La fase siguiente, llamada también
diversificación no lineal NLD, es el módulo no lineal NLxPR. Esta
fase está descrita en detalle en las Figuras 2 y 3.
En la Figura 2, la clave DKEY (que corresponde
al valor A1) está dividida en cuatro partes y aplicada a una capa
de sustitución Sigma, 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 de indicador y la
constante indicada sirve de salida. Los datos de salida A2 definen
la salida de la caja Sigma. Un método para generar esta tabla
constante consiste en usar un generador pseudoaleatorio. Durante la
generación de la tabla se tendría que eliminar todos los valores
duplicados para que cada constante en esta tabla sea única.
Dependiendo de la implementación, el número de
caja de sustitución (sbox) puede variar ya que cada caja en la
presente forma de realización tiene una entrada de datos de
8-bits. Los datos de entrada aplicados al módulo
Sigma son separados en partes de 8-bits de longitud
y aplicados a la caja de sustitución. La salida de cada caja es
posteriormente encadenada para formar la salida del módulo
Sigma.
La fase siguiente es una matriz de permutación
múltiple de tipo mu. Esta matriz en una caja de difusión de (n, n)
de tipo permutación múltiple. La entrada de un bloque mu es
dividida en n vectores de entrada. Para este ejemplo, elegiremos
una matriz de 4 elementos. La caja de difusión consiste en
multiplicar los cuatro vectores de entrada (Aa, Ab, Ac, Ad) por una
matriz cuadrada 4x4 Mu4, cuyos elementos pertenecen al campo finito
con 256 elementos; estos elementos son indicados por Mu(i,
j), donde i se refiere al índice de fila y j al índice de columna.
El resultado de la multiplicación del vector de entrada (Aa, Ab,
Ac, Ad) por la matriz Mu4 es un vector (Ya, Yb, Yc, Yd) donde estos
valores son obtenidos como se indica a continuación:
Aquí "+" significa la adición en el campo
finito y "*" su multiplicación. Los elementos de Mu4 son
elegidos de una forma tal que la cantidad de computaciones
necesarias para evaluar las cuatro expresiones más arriba es mínima.
El número de multiplicaciones por la constante "1" (indicado a
continuación por "identidades") ha sido elegido en consecuencia
para ser lo más grande posible.
El valor de salida A3 del bloque mu es la
concatenación de los cuatro valores de salida Ya, Yb, Yc, Yd.
La fase siguiente es una fase de mezcla.
Consiste en dividir el valor A3 en N bloques de mismo tamaño, y
obtener el valor de salida A4 formado por N bloques, cada bloque
del valor A4 siendo el resultado de la combinación de
N-1 bloques del valor A3, el bloque faltante siendo
el bloque del mismo índice.
En el ejemplo de la Figura 2, el número de
bloques es 4. Los tres bloques restantes son mezclados entre sí
para formar parte del valor A4.
La fase siguiente es una fase sumadora que añade
una constante de tal forma que un elemento imprevisible sea
insertado en el proceso.
El valor resultante A5 es aplicado a un inversor
condicional, es decir que se permite la inversión cuando los datos
de relleno han sido añadidos en la clave de entrada AKEY. Cuando se
permite, todos los bits del valor A5 son invertidos para obtener el
valor A6. La inversión se realiza cuando los datos rellenos han
sido añadidos a la clave de entrada AKEY. El objetivo de esta fase
consiste en tener una actitud diferente cuando se usa una clave de
tamaño completo y una clave de relleno. Una clave de tamaño
completo puede tener teóricamente el mismo valor cuando una clave
más pequeña es introducida y unos datos de relleno son añadidos.
Cuando se añaden informaciones de relleno para completar la clave
de entrada para tener el tamaño previsto, la inversión de datos A5
es realizada de tal forma que se introduzca una diversificación
adicional durante el proceso de generación.
El valor A6 obtenido es aplicado después a una
capa de sustitución sigma que ha sido ya descrita
anteriormente.
El valor de salida de la capa de sustitución A7
es reducido a la mitad de su tamaño por la mezcla de dos
elementos.
Este valor reducido A8 es aplicado después a un
módulo de cifrado simétrico SENC en el cual la clave es tomada de
la entrada principal del proceso (es decir DKEY). Como se ha citado
ya, este módulo es básicamente un proceso simple de cifrado
simétrico. En el marco de esta invención, en vez de usar un proceso
de cifrado bien conocido tal como IDEA, DES ... el proceso de
cifrado se realiza usando el proceso descrito en la solicitud de
patente EP 1480371 del mismo solicitante. El número mínimo de
ciclos es determinado para que se pueda usar toda la clave DKEY.
Como la clave es más larga que el tamaño de entrada de la etapa de
cifrado, la clave es dividida y aplicada a diferentes ciclos
conectados en serie.
Este proceso de cifrado está descrito en
referencia a las figuras 4 a 7.
La figura 4 muestra el esqueleto del proceso de
cifrado que representa el módulo MOD. Los datos de entrada de 64
bits en el ejemplo presente, representados en dos partes X0L y X0R
de 32 bits cada una, son mezclados primero dentro del elemento de
mezcla MX para obtener el valor X1. Este elemento de mezcla se
destina a proporcionar una imagen de 32 bits de dos veces 32 bits
de datos. Esto se podría conseguir de diferentes maneras tales como
usando una función XOR, adición con módulo, o usando cualquier ley
de grupo.
La fase siguiente es ilustrada con el bloque f32
que tiene una entrada de 32 bits X1 y una salida de 32 bits X7 así
como usando una subclave DK. La descripción detallada de este
bloque está provista en referencia a la Figura 7 (véase más
abajo).
La salida X7 del bloque f32 es aplicada a los
dos bloques de mezcla MX que son conectados a las dos entradas X0L
y X0H.
Los datos X8L y X8R obtenidos representan la
salida de los dos 64 bits X8 del módulo MOD.
La figura 5 muestra el proceso entero de cifrado
usando dos módulos idénticos MOD, es decir MOD1 y MOD2. Los datos
de entrada A8 son formados por dos partes X0L1 y X0R1, cada uno de
32-bits de longitud.
El proceso de cifrado simétrico lleva la
referencia SENC en la Figura 2. Este módulo corresponde al diagrama
de bloques de la Figura 5.
Las salidas X0L1 y X0R1 son usadas después en
forma de entradas en el primer módulo MOD1. Este primer módulo
procesa los datos mientras se usa una primera subclave DK1. DK1 es
una parte de la clave principal DKEY. El tratamiento para X0L1 y
X0R1 es el mismo que el que se describe en la Fig. 4. Las salidas
de este primer módulo MOD1 son dos salidas X8L1 y X8R1. Una función
de ortomorfismo es aplicada a una de estas salidas, por ejemplo X8L1
tal y como está ilustrado en la Fig. 5. La salida obtenida mediante
esta función de ortomorfismo lleva la referenciada X0L2. El otro
valor X8R1 resultante del tratamiento por el primer módulo MOD1 es
usado en forma de entrada, al igual que la salida X0L2 resultante
de la función de ortomorfismo, en un segundo módulo de tratamiento
MOD2. El módulo MOR es el resultado de un módulo MOD con una
función de ortomorfismo OR en una de las salidas de este
módulo.
Este segundo módulo MOD2 procesará sus datos de
entrada en base a una segunda parte DK2 de la clave principal DKEY.
Las emisiones de este segundo módulo llevan las referencias X8L2 y
X8R2 en la Fig. 4. Estas salidas son ensambladas para formar la
subclave RKEY en el módulo ensamblador AS.
La función de este módulo ensamblador AS podría
ser conseguida de diferentes maneras, por ejemplo seleccionando los
bits mínimos para X8L2 y los bits máximos para X8R2, o cada bit
impar para X8L2 y bit par para X8R2. Otros métodos de ensamblaje de
los datos RKEY obtenidos podrían ser usados siempre que todos los
bits de RKEY estén comprendidos en X8L2 y X8R2.
La figura 7 muestra en detalle las funciones del
bloque f32 de la Figura 4. En este bloque, unos datos de 32 bits de
longitud X1 definen la entrada. Estos datos son separados en
bloques de 8 bits de longitud (X1a, X1b, X1c, X1d) a través de un
bloque de separación SPMU, también llamado X1' en la figura 7.
Este bloque tiene la función de separar los
datos de entrada X1 de tal forma que todos los bits del valor
resultante X1a, X1b, X1c y X1d estén presentes en X1. Estos cuatro
valores son mezclados con el valor máximo DKH de la clave DK, que
podría ser DK1 o DK2 dependiendo del módulo en cuestión (MOR o MOD)
para formar los cuatro valores X2a, X2b, X2c y X2d.
La generación de las dos subclaves DKL y DKH se
realiza a través del módulo de división SP.
Cada uno de estos valores X2a a X2d es aplicado
a una 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 de indicador y la
constante indicada sirve de salida. Los datos de salida llevan la
referencia X3a, X3b, X3c, X3d (formando el valor X3) en la Fig.
7.
Esta capa de sustitución ya fue descrita en
referencia a la figura 2 durante la descripción del módulo sigma.
El valor obtenido es X3.
Lo mismo se aplica para el módulo Mu4 que
corresponde al módulo mu de la figura 2. El valor obtenido es
X4.
Los datos de salida X4 de los datos son
mezclados después con una segunda parte DKL de la subclave DK para
obtener un valor X5a, X5b, X5c, X5d (formando el valor X5).
Cada uno de estos valores X5a a X5d es aplicado
después 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 DKH de la subclave DK para obtener
valores nuevos X7a, X7b, X7c, X7d (formando el valor X7).
Después, estos valores X7a, X7b, X7c, X7d son
ensamblados para formar datos de salida X7 en el módulo ensamblador
AS tal y como se ha descrito con respecto a la Figura 5. Estos
datos corresponden a los datos de salida X7 del bloque f32 de la
Fig. 4
La figura 6 es una ilustración de una forma de
realización de la función de ortomorfismo. Los datos de entrada son
indicados por ZI y los datos de salida por ZO. La longitud de datos
no es una solución para esta función. Los datos de entrada ZI son
divididos primero en dos valores ZL y ZR del mismo tamaño por el
módulo de separación SP. Los dos valores son mezclados después con
el elemento de mezcla llamado MX y la salida del elemento es
aplicada a la unidad ensambladora AS. El otro valor de separación ZR
es aplicado directamente 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 trabaja a la inversa del
módulo de división SP. La particularidad de esta forma de
realización es que las entradas del módulo ensamblador son cruzadas
con respecto a las salidas del módulo separador SP. La salida
derecha ZR del módulo separador SP es aplicada a la entrada
izquierda del módulo ensamblador AS y la salida izquierda ZL del
módulo de separación SP, después de haber sido mezclada con la otra
salida del módulo separador SP, es aplicada a la entrada derecha
del módulo ensamblador AS.
La Figura 3 es otra forma de realización para la
producción de una subclave RKEY en base a una clave principal DKEY.
Frente a módulos que sólo pueden procesar datos de tamaño limitado,
en caso de que unas claves más largas sean procesadas, es necesario
dividir la clave de entrada DKEY en más elementos y manejarlos en
paralelo. El principio descrito con respecto a la figura 2
permanece el mismo con una excepción durante la formación del valor
A4.
Para simplificar, el número de elementos
mezclados entre sí del valor X3 se limita a tres.
En la fase del proceso de cifrado simétrico
SENC, la clave de entrada DKEY es dividida en cuatro partes y
aplicada a tres módulos de cifrado independientes MOR64, estos
módulos teniendo una función de ortomorfismo aplicada a la mitad
del valor obtenido. El último módulo MOD64 es un proceso de cifrado
de un ciclo sin la función de ortomorfismo.
Desde el valor A8 a RKEY, el proceso de cifrado
se realiza en cuatro ciclos, cada ciclo usando una parte de la
clave de entrada DKEY. Los tres primeros ciclos utilizan un módulo
MOR, es decir con una función de ortomorfismo en una de las salidas
del módulo MOD y el último ciclo es del tipo MOD, es decir sin
función de ortomorfismo.
Un punto importante consiste en generar las
subclaves en orden inverso. Esta particularidad es útil cuando se
usan las subclaves en un proceso de cifrado de ciclos
múltiples.
Esto se consigue en la fase de la parte de
diversificación lineal DPr. El grupo de vectores de inicialización
usado para mezclarse con la clave MKEY es aplicado en orden
inverso. Cuando los vectores de inicialización son producidos con
un LFSR, el registro es cronometrado en orden inverso (proceso
hacia atrás) y el valor inicial cargado en el registro es el valor
final representando el último vector de inicialización usado
durante el proceso hacia adelante.
\vskip1.000000\baselineskip
Esta lista de referencias citada por el
solicitante ha sido recopilada exclusivamente para la información
del lector. 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.
- - US 5214703 A [0003]
- - EP 1480371 A [0055]
- US 5745577 A [0008]
Claims (6)
1. Método de generación de una clave secundaria
basada en una clave principal (MKEY), comprendiendo las etapas
siguientes:
- -
- obtención de un primer valor (A1) aplicando una capa de diversificación lineal a la clave principal (MKEY) mezclando la clave principal (MKEY) con una constante,
- -
- aplicación de una transformación no lineal al primer valor (A1), esta transformación comprendiendo las etapas siguientes:
- -
- obtención de un segundo valor (A2) aplicando el primer valor (A1) 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 comprendiendo al menos una tabla de constantes para la cual la entrada sirve de indicador y la constante indicada sirve de salida,
- -
- obtención de un tercer valor (A3) basado en el segundo valor (A2) utilizando una caja de difusión de tipo permutación múltiple,
- -
- división del tercer valor (A3) en N bloques de mismo tamaño, obtención de un cuarto valor de salida (A4) formado por N bloques, cada bloque del cuarto valor (A4) siendo el resultado de la combinación de NA bloques del tercer valor (A3), el bloque ausente siendo el bloque del mismo índice,
- -
- obtención de un séptimo valor (A7) aplicando una capa de sustitución (señal) al cuarto valor (A4)
- -
- obtención de la clave secundaria (RKEY) mediante la aplicación de un módulo de codificación simétrico al séptimo valor (A7), el primer valor (Al1) sirviendo de entrada de clave para este módulo.
2. Método según la reivindicación 1,
caracterizado por el hecho de que una clave proporcionada
(AKEY) tiene un tamaño inferior a la clave principal (MKEY), este
método consistiendo en obtener la clave principal (MKEY) a partir de
la clave proporcionada (AKEY) según las etapas siguientes:
- -
- adición de los datos de relleno para completar la clave provista (AKEY) hasta el tamaño de la clave principal (MKEY),
- -
- mezcla de los datos de relleno con la clave provista (AKEY) para repartir los bits de relleno a lo largo de la clave obtenida (DKEY).
3. Método según las reivindicaciones 1 o 2
caracterizado por el hecho de que la constante mezclada con
la clave principal (MKEY) para obtener el primer valor (A1) es
generada de manera pseudoaleatoria mediante el uso de un LFSR
cargado con una primera constante.
4. Método según las reivindicaciones 1 a 3
caracterizado por el hecho de que en el caso de que el
tamaño de entrada del módulo de cifrado simétrico (SENC) sea
inferior al tamaño del séptimo valor (A7), el método comprende la
etapa de dividir el séptimo valor (A7) por un múltiplo de dos y
mezclar de dos en dos la parte resultante hasta el tamaño de
entrada del módulo de cifrado simétrico (SENC).
5. Método según las reivindicaciones 1 a 4
caracterizado por el hecho de que se añade una constante al
cuarto valor (A4) antes de la aplicación a la capa de sustitución
(sigma).
6. Método según las reivindicaciones 2 a 5
caracterizado por el hecho de que se efectúa una inversión
en todos los bits del valor de entrada (A6) de la capa de
sustitución (sigma) mientras se añaden datos de relleno a la clave
provista (AKEY).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP03103307A EP1513285A1 (en) | 2003-09-05 | 2003-09-05 | Method for generating pseudo-random sequence |
EP03103307 | 2003-09-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2314453T3 true ES2314453T3 (es) | 2009-03-16 |
Family
ID=34130323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES04787093T Active ES2314453T3 (es) | 2003-09-05 | 2004-09-02 | Metodo de generacion de secuencia seudoalleatoria. |
Country Status (23)
Country | Link |
---|---|
US (1) | US7512241B2 (es) |
EP (2) | EP1513285A1 (es) |
JP (1) | JP4673857B2 (es) |
KR (1) | KR101086940B1 (es) |
CN (1) | CN100574183C (es) |
AP (1) | AP1949A (es) |
AT (1) | ATE407493T1 (es) |
AU (1) | AU2004302919B2 (es) |
BR (1) | BRPI0411184A (es) |
CA (1) | CA2525541C (es) |
DE (1) | DE602004016350D1 (es) |
DK (1) | DK1661296T3 (es) |
EA (1) | EA008677B1 (es) |
ES (1) | ES2314453T3 (es) |
HK (1) | HK1085592A1 (es) |
HR (1) | HRP20080526T3 (es) |
IL (1) | IL171934A (es) |
NO (1) | NO20055403L (es) |
NZ (1) | NZ543948A (es) |
PL (1) | PL1661296T3 (es) |
PT (1) | PT1661296E (es) |
SI (1) | SI1661296T1 (es) |
WO (1) | WO2005025123A1 (es) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100622128B1 (ko) * | 2004-12-17 | 2006-09-19 | 한국전자통신연구원 | 병렬 처리 축소 키 생성기 |
US7602906B2 (en) * | 2005-08-25 | 2009-10-13 | Microsoft Corporation | Cipher for disk encryption |
US8145691B2 (en) | 2006-02-24 | 2012-03-27 | Novell, Inc. | Techniques for random bit generation |
WO2011136614A2 (ko) * | 2010-04-29 | 2011-11-03 | 동국대학교 산학협력단 | 이산화된 카오스 함수를 이용한 암호 시스템 |
US9135834B2 (en) * | 2013-04-30 | 2015-09-15 | The United Sates of America as represented by the Secretary of the Air Force | Apparatus and method to prevent side channel power attacks in advanced encryption standard using floating point operation |
US9160523B2 (en) * | 2013-04-30 | 2015-10-13 | The United States Of America As Represented By The Secretary Of The Air Force | Apparatus and method to prevent side channel power attacks in advanced encryption standard |
ES2924347T3 (es) * | 2015-03-26 | 2022-10-06 | Nagravision Sa | Método y sistema para buscar al menos un dato específico en una unidad de usuario |
RU2632119C9 (ru) * | 2016-06-02 | 2017-11-22 | Андрей Валерьевич Менячихин | Устройство для построения ортоморфизмов, использующее парные разности |
US10402169B2 (en) * | 2017-07-12 | 2019-09-03 | Dell Products L.P. | Method and system of secure random seed generation for a cryptographically secure pseudo-random number generator |
US10361627B1 (en) * | 2018-09-12 | 2019-07-23 | Texas Instruments Incorporated | Reduction of low frequency noise in a discrete spread spectrum timebase |
CN110909375B (zh) * | 2019-10-12 | 2022-04-08 | 浙江工业大学 | 一种保留分布特征的地址脱敏方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US44651A (en) * | 1864-10-11 | Improvement in cider-mills | ||
JPH06342257A (ja) * | 1993-06-02 | 1994-12-13 | Matsushita Electric Ind Co Ltd | 逐次暗号方式 |
US5404402A (en) * | 1993-12-21 | 1995-04-04 | Gi Corporation | Clock frequency modulation for secure microprocessors |
US5745577A (en) * | 1996-07-25 | 1998-04-28 | Northern Telecom Limited | Symmetric cryptographic system for data encryption |
US6182216B1 (en) * | 1997-09-17 | 2001-01-30 | Frank C. Luyster | Block cipher method |
JPH11224183A (ja) * | 1998-02-05 | 1999-08-17 | Toyo Commun Equip Co Ltd | 擬似乱数発生装置 |
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 |
JP3679936B2 (ja) * | 1998-11-27 | 2005-08-03 | 東芝ソリューション株式会社 | 暗復号装置及び記憶媒体 |
EP1142191B1 (en) * | 1998-12-30 | 2006-08-09 | Nokia Corporation | Method and device for cryptographically processing data |
US6578061B1 (en) * | 1999-01-19 | 2003-06-10 | Nippon Telegraph And Telephone Corporation | Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon |
US6763363B1 (en) * | 1999-12-02 | 2004-07-13 | Honeywell International Inc. | Computer efficient linear feedback shift register |
US6804355B1 (en) * | 2000-01-06 | 2004-10-12 | Intel Corporation | Block cipher for small selectable block sizes |
US6891951B2 (en) * | 2000-01-21 | 2005-05-10 | Victor Company Of Japan, Ltd. | Cryptosystem-related method and apparatus |
US20020044651A1 (en) * | 2000-05-16 | 2002-04-18 | Tuvell Walter E. | Method and apparatus for improving the security of cryptographic ciphers |
JP2005527853A (ja) * | 2002-05-23 | 2005-09-15 | アトメル・コーポレイション | 高度暗号化規格(aes)のハードウェア暗号法エンジン |
CN1384621A (zh) * | 2002-06-21 | 2002-12-11 | 清华大学 | 量子密钥分配中的加速全效及扩容方法 |
US7028059B2 (en) * | 2002-06-24 | 2006-04-11 | Sun Microsystems, Inc. | Apparatus and method for random number generation |
-
2003
- 2003-09-05 EP EP03103307A patent/EP1513285A1/en not_active Withdrawn
-
2004
- 2004-08-11 US US10/915,421 patent/US7512241B2/en active Active
- 2004-09-02 AP AP2005003444A patent/AP1949A/xx active
- 2004-09-02 PT PT04787093T patent/PT1661296E/pt unknown
- 2004-09-02 DE DE602004016350T patent/DE602004016350D1/de active Active
- 2004-09-02 JP JP2006552404A patent/JP4673857B2/ja active Active
- 2004-09-02 BR BRPI0411184-2A patent/BRPI0411184A/pt not_active Application Discontinuation
- 2004-09-02 NZ NZ543948A patent/NZ543948A/en not_active IP Right Cessation
- 2004-09-02 CA CA2525541A patent/CA2525541C/en not_active Expired - Fee Related
- 2004-09-02 EA EA200501622A patent/EA008677B1/ru unknown
- 2004-09-02 CN CNB2004800181410A patent/CN100574183C/zh active Active
- 2004-09-02 DK DK04787093T patent/DK1661296T3/da active
- 2004-09-02 WO PCT/EP2004/052020 patent/WO2005025123A1/en active IP Right Grant
- 2004-09-02 EP EP04787093A patent/EP1661296B1/en active Active
- 2004-09-02 ES ES04787093T patent/ES2314453T3/es active Active
- 2004-09-02 AU AU2004302919A patent/AU2004302919B2/en active Active
- 2004-09-02 AT AT04787093T patent/ATE407493T1/de active
- 2004-09-02 PL PL04787093T patent/PL1661296T3/pl unknown
- 2004-09-02 KR KR1020057022647A patent/KR101086940B1/ko active IP Right Grant
- 2004-09-02 SI SI200430918T patent/SI1661296T1/sl unknown
-
2005
- 2005-11-14 IL IL171934A patent/IL171934A/en not_active IP Right Cessation
- 2005-11-15 NO NO20055403A patent/NO20055403L/no not_active Application Discontinuation
-
2006
- 2006-06-07 HK HK06106469A patent/HK1085592A1/xx not_active IP Right Cessation
-
2008
- 2008-10-20 HR HR20080526T patent/HRP20080526T3/xx unknown
Also Published As
Publication number | Publication date |
---|---|
DE602004016350D1 (de) | 2008-10-16 |
IL171934A (en) | 2010-11-30 |
SI1661296T1 (sl) | 2009-02-28 |
KR101086940B1 (ko) | 2011-11-29 |
CN1813439A (zh) | 2006-08-02 |
NO20055403L (no) | 2005-11-18 |
EA200501622A1 (ru) | 2006-08-25 |
EA008677B1 (ru) | 2007-06-29 |
HK1085592A1 (en) | 2006-08-25 |
EP1661296A1 (en) | 2006-05-31 |
DK1661296T3 (da) | 2008-12-08 |
US7512241B2 (en) | 2009-03-31 |
NZ543948A (en) | 2007-08-31 |
KR20060119716A (ko) | 2006-11-24 |
CA2525541C (en) | 2013-03-26 |
IL171934A0 (en) | 2006-04-10 |
JP4673857B2 (ja) | 2011-04-20 |
AP2005003444A0 (en) | 2005-12-31 |
AU2004302919A1 (en) | 2005-03-17 |
JP2007532935A (ja) | 2007-11-15 |
HRP20080526T3 (en) | 2008-11-30 |
PL1661296T3 (pl) | 2009-02-27 |
US20050053233A1 (en) | 2005-03-10 |
AU2004302919B2 (en) | 2009-03-05 |
CA2525541A1 (en) | 2005-03-17 |
ATE407493T1 (de) | 2008-09-15 |
AP1949A (en) | 2009-02-05 |
PT1661296E (pt) | 2008-10-08 |
CN100574183C (zh) | 2009-12-23 |
WO2005025123A1 (en) | 2005-03-17 |
EP1513285A1 (en) | 2005-03-09 |
EP1661296B1 (en) | 2008-09-03 |
BRPI0411184A (pt) | 2006-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6829355B2 (en) | Device for and method of one-way cryptographic hashing | |
ES2314453T3 (es) | Metodo de generacion de secuencia seudoalleatoria. | |
ES2244639T3 (es) | Transformacion lineal para cifrado de claves simetricas. | |
US8509427B2 (en) | Hybrid mode cryptographic method and system with message authentication | |
US8452006B2 (en) | Cryptographic processing using a processor | |
US8687802B2 (en) | Method and system for accelerating the deterministic enciphering of data in a small domain | |
ES2323702T3 (es) | Dispositivo y metodo para encriptar y desencriptar un bloque de datos. | |
ES2291675T3 (es) | Metodo de generar un cifrado de flujo utilizando claves multiples. | |
WO2001067425A1 (fr) | Systeme de chiffrage de blocs utilisant la conversion auxiliaire | |
JP2004505289A5 (es) | ||
JP3464797B2 (ja) | 非線形動的置換装置及びブロック置換の方法 | |
IL262556A (en) | Customizable encryption / decryption algorithm | |
JPH10240500A (ja) | 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム | |
JPS61114289A (ja) | デイジタルデータシーケンスを暗号化された形式に変換するための方法及び装置 | |
WO2017103226A1 (en) | Improved system for key sharing | |
KR101076747B1 (ko) | 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 | |
JP3701782B2 (ja) | 符号発生装置 | |
CN115967483A (zh) | 一种运用矩阵转化构造查找表的白盒分组密码加密方法与系统 | |
Sendrier | Code-based one way functions | |
Nakahara Jr | Key-Shedule Analysis of AES Candidates | |
KR20050019086A (ko) | 진보된 암호화 표준(aes)의 하드웨어 암호 엔진 | |
RU2003117834A (ru) | Способ поточного кодирования дискретной информации | |
Fúster-Sabater | New classes of sequences for encryption procedures |