ES2314453T3 - Metodo de generacion de secuencia seudoalleatoria. - Google Patents

Metodo de generacion de secuencia seudoalleatoria. Download PDF

Info

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
Application number
ES04787093T
Other languages
English (en)
Inventor
Serge Vaudenay
Pascal Junod
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 ES2314453T3 publication Critical patent/ES2314453T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom 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/0668Pseudorandom 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
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • 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)
  • 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.
Campo de la invención
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.
Estado de la técnica
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.
Resumen de la invención
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.
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.
Breve descripción de los dibujos
- 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.
Descripción detallada de la invención
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:
1
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:
2
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
Referencias citadas en la descripción
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.
Documentos de patente citados en la descripción
- 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).
ES04787093T 2003-09-05 2004-09-02 Metodo de generacion de secuencia seudoalleatoria. Active ES2314453T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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