ES2244639T3 - Transformacion lineal para cifrado de claves simetricas. - Google Patents

Transformacion lineal para cifrado de claves simetricas.

Info

Publication number
ES2244639T3
ES2244639T3 ES01955365T ES01955365T ES2244639T3 ES 2244639 T3 ES2244639 T3 ES 2244639T3 ES 01955365 T ES01955365 T ES 01955365T ES 01955365 T ES01955365 T ES 01955365T ES 2244639 T3 ES2244639 T3 ES 2244639T3
Authority
ES
Spain
Prior art keywords
matrix
code
block
linear transformation
columns
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES01955365T
Other languages
English (en)
Inventor
Petrus L. A. Roelse
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Application granted granted Critical
Publication of ES2244639T3 publication Critical patent/ES2244639T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Storage Device Security (AREA)
  • Collating Specific Patterns (AREA)
  • Detection And Correction Of Errors (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Reverberation, Karaoke And Other Acoustics (AREA)
  • Image Processing (AREA)
  • Lock And Its Accessories (AREA)
  • Holo Graphy (AREA)

Abstract

Un método de cifrado que utiliza un cifrador de clave simétrica, el cual incluye las etapas de: - recibir (110) un bloque de datos de entrada; - llevar a cabo (120) una transformación lineal sobre el bloque de datos de entrada o sobre una derivada del bloque de datos de entrada, utilizando una matriz de transformación lineal A, y suministrar como salida (130) el bloque de datos de entrada procesado o tratado, de tal manera que dicha matriz A ha sido generada por medio de: - generar (510) un código de corrección de errores binario de [n, k, d], representado por una matriz generadora G Z2kn en una forma estándar G = Ik-B, con B Z2k(n-k), donde k < n < 2k, y d es la distancia mínima del código de corrección de errores binario; caracterizado por - extender (520) la matriz B con 2k-n columnas, de tal manera que una matriz resultante C es no singular, y - deducir (530) la matriz A a partir de la matriz C, a través de - determinar (532, 534, 536) dos matrices de permutación P1, P2 Z2kk, de tal manera que todas las palabras de código contenidas en un código de corrección de errores de [2k, k, d], representadas por la matriz generadora igual a I-P1 C P2, tengan un peso de múltiples bits predeterminado; y - utilizar (540) P1 C P2 como matriz A.

Description

Transformación lineal para cifrado de claves simétricas.
La invención se refiere a un método para generar una transformación lineal para uso en un cifrador de clave simétrica basado en un código de corrección de errores binario.
La aplicación de la criptografía en el área de la protección de los derechos de autor, o "copyright", de vídeo y/o audio digitales está llegando a ser cada vez más importante. Estas aplicaciones incluyen la encriptación/desencriptación de contenidos y funciones de gestión del acceso. Para tales aplicaciones pueden utilizarse cifradores de bloques. Una familia bien conocida de cifradores de bloques son los cifradores de Feistel. En un cifrador de Feistel, el bloque de datos de entrada es procesado en un cierto número de rondas o ciclos. En cada ciclo, se opera sobre los dos sub-bloques (mitades) del bloque de forma diferente. Un primer sub-bloque se combina con la salida de una función de ciclo; el segundo sub-bloque se deja sin modificar. Al final del ciclo, los dos sub-bloques se intercambian, lo que garantiza que el sub-bloque sin modificar se procesará o tratará en el siguiente ciclo. La función de ciclo toma como entrada el segundo sub-bloque y una clave de ciclo. Normalmente, la función de ciclo combina la clave de ciclo con el segundo sub-bloque, por ejemplo, utilizando una operación XOR (O exclusiva). Adicionalmente, la función de ciclo lleva a cabo una operación no lineal y una transformación lineal sobre el segundo sub-bloque. Típicamente, la transformación no lineal consiste en una capa de cajas de sustitución (caja-S -"S-box"), que consiste en un cierto número de cajas-S que operan en paralelo sobre sub-bloques más pequeños, de, por ejemplo, entre 4 y 8 bits. Tras la capa de cajas-S, una operación lineal garantiza que se produzca una difusión adecuada, de tal manera que los cambios de bits causados por las cajas-S individuales sean propagados a lo largo de tantas cajas-S como sea posible en el(los) siguiente(s) ciclo(s).
Un ejemplo bien conocido de un cifrador de Feistel es el DES, que consiste en dieciséis ciclos. En cada ciclo, se expanden, en primer lugar, los 32 bits de la mitad derecha de los datos a 48 bits. A continuación, una clave de ciclo de 48 bits, que se computa a partir de una clave de DES de 56 bits por medio de un algoritmo de organización temporal de clave, se añade en forma de bits, en módulo dos, a estos 48 bits. A continuación, una capa de cajas-S lleva a cabo una operación no lineal sobre los datos. En el DES, la capa de cajas-S consiste en ocho cajas-S de paso de seis a cuatro bits en paralelo, es decir, que cada una de las cajas-S convierte un bloque de entrada de seis bits en un bloque de salida de cuatro bits utilizando una tabla de relación de correspondencia fija por cada caja-S. La salida de la capa de cajas-S es un bloque de datos de 32 bits. La transformación lineal, que se lleva a cabo sobre este bloque de datos de 32 bits, es una permutación de bits, lo cual garantiza que los cambios en los bits ocasionados por una caja-S se propagan a lo largo de muchas otras en el(los) siguiente(s) ciclo(s). Una desventaja del DES es su pequeño tamaño de clave, de 56 bits, que se considera insuficiente en la actualidad para ofrecer un nivel de seguridad elevado. Sin embargo, es posible evitar una búsqueda de clave exhaustiva mediante el uso de una clave más larga, combinada con un algoritmo de organización temporal de clave diferente para computar las dieciséis claves de ciclo de 48 bits. Los dos ataques más poderosos sobre el DES publicados en la literatura abierta o de dominio público son los criptoanálisis diferencial y lineal, los cuales constituyen ataques generales que pueden ser aplicados a un amplio abanico de cifradores de bloques. Se ha demostrado que el DES no puede ser reforzado en gran medida contra estos ataques mediante la modificación de la longitud de la clave y/o del algoritmo de organización temporal de clave. Sin embargo, ciertos cambios en la función de ciclo del algoritmo pueden influir considerablemente en su resistencia contra estos ataques.
En cuanto a la transformación lineal, se desea que la transformación presente unas buenas propiedades de difusión. Recientemente, S. Vaudenay propuso utilizar códigos de corrección de errores lineales para construir transformaciones lineales, de lo cual puede encontrarse una descripción en la publicación "On the Need for Multi-Permutations: Cryptanalysis of MD4 and SAFER" ("En la necesidad de permutaciones múltiples: criptoanálisis de MD4 y SAFER"), Fast Software Encryption (2^{nd}), LNCS 1008, Springer, 1995, págs. 286-297. Las propiedades de difusión de la transformación lineal están asociadas con la distancia de Hamming mínima del código de corrección de errores correspondiente; cuanto mayor sea esta distancia, mejores serán las propiedades de difusión de la matriz de transformación lineal asociada. Vaudenay propuso el uso de códigos separables de distancia máxima (MDS -"Maximum Distance Separable codes") a lo largo de campos finitos, lo que conduce a la denominada ligadura de Singleton y proporciona, en consecuencia, una difusión óptima. Sin embargo, esta construcción presenta la desventaja de que la transformación lineal resultante contiene estructura matemática adicional, por ejemplo, linealidad a lo largo del campo finito (y de todos sus sub-campos), que fue utilizada para la construcción, lo cual podría ser aprovechado en el criptoanálisis.
Es un objeto de la invención proporcionar una transformación lineal invertible, representada por una matriz binaria no singular, para uso en cifradores de clave simétrica de manera que se garanticen las características de difusión óptimas en el nivel de bits y basándose en un código de corrección de errores lineal y binario que sea óptimo. Esta transformación tiene la ventaja, con respecto a la construcción de MDS, de que es más irregular, en el sentido de que se evita la estructura matemática adicional de la transformación lineal resultante, que podría aprovecharse en el criptoanálisis.
El objeto de la invención se satisface gracias a un método de acuerdo con la reivindicación 1. Una matriz deducida de un código de corrección de errores es extendida o prolongada con un cierto número de columnas, de tal manera que la longitud del código es igual al doble de la dimensión, y la matriz C resultante, que puede ser utilizada como la base para la transformación lineal, es no singular. Esto evita ataques basados en la no uniformidad de la función de
ciclo.
La matriz C se permuta para encontrar una matriz de transformación lineal en la que el código de corrección de errores lineal asociado tenga un peso predeterminado de múltiples bits.
Como se define en lo que toca a la reivindicación dependiente 2, las nuevas columnas pueden generarse de forma pseudo-aleatoria con el fin de encontrar las columnas adecuadas.
Como se define en lo tocante a la reivindicación dependiente 3, el peso de múltiples bits de la matriz C garantiza la adecuada difusión a lo largo de las cajas-S del cifrador. Por ejemplo, para una capa de cajas-S que consiste en un cierto número de cajas-S que operan en paralelo, en las cuales cada caja-S proporciona una salida de m bits, es relevante observar la difusión de las partes de m bits de las palabras del código de corrección de errores binario asociado, el cual puede ser expresado con el peso de m bits mínimo a lo largo de todas las palabras de código que sean distintas de cero.
Estos y otros aspectos de la invención resultarán evidentes de la referencia a las realizaciones mostradas en los dibujos, y podrán aclararse por medio de la misma.
La Figura 1 muestra un diagrama de bloques de un sistema criptográfico;
La Figura 2 muestra una ronda o ciclo de un cifrador que incorpora la transformación lineal;
La Figura 3 ilustra las etapas de la función de ciclo;
La Figura 4 muestra una disposición preferida de una construcción de cajas-S; y
La Figura 5 muestra las etapas de la generación de la matriz de transformación lineal.
Con el propósito de explicar la invención, el sistema criptográfico, en el que se utiliza la transformación lineal, se describe como un cifrador de bloques en el modo de Libro de Códigos Electrónico (ECB -"Electronic Codebook"). Las personas expertas en la técnica serán capaces también de utilizar el sistema en otros modos. Éstos incluyen los modos de FIPS estándar de funcionamiento de DES, es decir, el modo de funcionamiento de encadenamiento de bloques de cifrador (CBC -"Cipher Block Chaining"), el de retroalimentación de cifrador (CFB -"Cipher Feedback") y el de retroalimentación de salida (OFB -"Output Feedback"). Además, el sistema puede utilizarse también en construcciones bien conocidas para generadores de números pseudo-aleatorios, códigos de autentificación de mensajes (MACs -"Message Authentication Codes") y códigos de detección de manipulación (MDCs -"Manipulation Detection Codes").
La Figura 1 muestra un diagrama de bloques de un aparato criptográfico 100 proporcionado a modo de ejemplo. El aparato criptográfico 100 comprende una entrada 110 destinada a obtener un bloque de entrada digital X. El bloque de entrada digital X puede ser de cualquier tamaño adecuado. El aparato comprende adicionalmente un procesador criptográfico 120 para convertir el bloque de entrada digital X en un bloque de salida digital E(X). Ventajosamente, el bloque de salida digital tiene sustancialmente la misma longitud que el bloque de entrada digital. El aparato 100 comprende una salida 130 destinada a suministrar como salida el bloque de salida digital. En una realización preferida, el procesador criptográfico convierte el bloque de entrada digital en el bloque de salida digital fusionando o uniendo el bloque de entrada digital con bits de clave K, para producir el bloque de salida E(X, K), el cual depende de manera no lineal del bloque de entrada X y de la clave K. A fin de obtener la clave (o bien una clave inicial que suministre un organizador temporal de clave), el aparato criptográfico comprende una segunda entrada 140. Se apreciará que el aparato criptográfico puede ser llevado a la práctica utilizando una computadora convencional, tal como un PC, o bien con el uso de un dispositivo de encriptación/desencriptación de uso exclusivo o dedicado. El bloque de entrada digital puede obtenerse de diversas maneras, tales como a través de una red de comunicación, a partir de un medio de almacenamiento de datos, tal como un disco duro o un disco flexible, o bien al ser introducido directamente por un usuario. De forma similar, el bloque de salida digital puede ser suministrado como salida de diversas maneras, tales como a través de una red de comunicación, mediante su almacenamiento en un medio de almacenamiento de datos, o su presentación visual a un usuario. Preferiblemente, se utilizan medios seguros para fin. El procesador criptográfico puede ser un procesador convencional, tal como, por ejemplo, los que se utilizan en computadoras personales, aunque puede ser también un procesador criptográfico dedicado. El procesador se hace funcionar habitualmente bajo el control de un programa adecuado ("firmware" (programa de instalación fija en el hardware)), a fin de llevar a cabo las etapas del algoritmo de acuerdo con la invención. Este producto de programa informático se carga, normalmente, desde un almacenamiento antecesor, tal como un disco duro una ROM. El producto de programa informático puede ser almacenado en el almacenamiento antecesor tras haber sido distribuido en un medio de almacenamiento, como un CD-ROM, o a través de una red, como la red pública Internet. Se distribuye y almacena preferentemente de una forma segura información sensible, como una clave de encriptación. Las técnicas para llevar esto a cabo son generalmente conocidas y no se describen adicionalmente. El aparato criptográfico puede ser implementado, en parte o en su totalidad, en una tarjeta inteligente.
La transformación lineal de acuerdo con la invención, que se lleva a cabo por parte del procesador criptográfico, se describirá en la forma de una función de ronda o ciclo f dentro de un cifrador de bloques, como aplicación ejemplar. En sí, las personas expertas en la técnica serán capaces de utilizar la transformación lineal también en otros sistemas criptográficos, así como en otros cifradores diferentes del que se describe con detalle más adelante.
Notaciones y definiciones
Se emplea la siguiente notación para la descripción del algoritmo que se proporciona a modo de ejemplo. Sea Z_{2}^{n} el conjunto de todos los vectores binarios de longitud n (n \geq 1), con la adición \oplus: Z_{2}^{n} \times Z_{2}^{n} \rightarrow Z_{2}^{n}, la cual se define como la adición en coordenadas en módulo 2 (al que se hace referencia también como una O exclusiva, o XOR). Por ejemplo, (1,0,1,0) y (0,1,1,0) son elementos de Z_{2}^{4}, y (1,0,1,0) \oplus (0,1,1,0) = (1,0,0,0). Además, la multiplicación o producto escalar \cdot: Z_{2}^{n} \times Z_{2}^{n} \rightarrow Z_{2}^{n} se define como 1\cdotx = x y 0\cdotx = (0,0,...,0) \in Z_{2}^{n} para todo x \in Z_{2}^{n}. Si n es par y x \in Z_{2}^{n}, entonces x^{(L)} \in Z_{2}^{n/2} y x^{(R)} \in Z_{2}^{n/2} se definen como las mitades izquierda y derecha, respectivamente, de x. Por ejemplo, si x = (1,0,1,1,0,0,1,0) \in Z_{2}^{8}, entonces x^{(L)} = (1,0,1,1) \in Z_{2}^{4} y x^{(R)} = (0,0,1,0) \in Z_{2}^{4}. El símbolo || se utiliza para denotar una concatenación de vectores, por ejemplo, x = (x^{(L)} || x^{(R)}). Los elementos (también denominados bits) de un vector x \in Z_{2}^{n} están numerados de cero a n-1 de la izquierda a la derecha, es decir, x =: (x_{0},x_{1},x_{2},...,x_{n-1}). La distancia de Hamming d_{H}: Z_{2}^{n} \times Z_{2}^{n} \rightarrow Z entre dos elementos x \in Z_{2}^{n} e y \in Z_{2}^{n} se define como el número de coordenadas en el que difieren los dos vectores, esto es, d_{H}(x,y) = #{x_{i} \neq y_{i} | i = 0,1,...,n-1}. El peso de Hamming w_{H}: Z_{2}^{n} \rightarrow Z de un elemento x \in Z_{2}^{n} se define como el número de coordenadas distintas de cero, esto es, w_{H} = #{x_{i} \neq 0 | i = 0,1,...,n-1}.
El conjunto de k \times m matrices (k, m \geq 1) sobre Z_{2} se denota como Z_{2}^{k\times m}. La matriz de identidad k \times k sobre Z_{2} se denota como I_{k}. El símbolo || se utiliza también para denotar una concatenación de matrices con número igual de filas, por ejemplo, si A \in Z_{2}^{4\times 6} y B \in Z_{2}^{4\times 8}, entonces C := (A || B) \in Z_{2}^{4\times 14}.
Un código de corrección de errores binario C de longitud (bloques) n es un subespacio lineal de Z_{2}^{n}. Se hace referencia a los elementos de este subespacio como palabras de código. Si la dimensión del subespacio es k, entonces C recibe el nombre código [n,k]. Tal código puede ser representado por una matriz generadora G \in Z_{2}^{k\times n}, para la cual las filas forman una base para C, es decir, C = {mG | \in Z_{2}^{k}}. La distancia mínima d del código se define como el mínimo de todas las distancias entre dos palabras de código cualesquiera distintas, es decir, d = min{d_{H}(x,y) | x,y \in C y x \neq y}. Se hace también referencia a un código [n,k] con una distancia de Hamming mínima d como código [n,k,d]. Nótese que d_{H}(x,y) = w_{H}(x \oplus y), lo cual implica que la distancia de Hamming mínima de un código lineal es igual al peso de Hamming mínimo a lo largo de todas las palabras de código distintas de cero.
Estructura de cifrador de bloques
El cifrador de bloques que se proporciona como ejemplo es un cifrador de Feistel y consiste en dieciséis rondas o ciclos (como DES). La longitud de los bloques es igual a 64 bits y la longitud de clave es igual a 128 bits. La encriptación en el modo de Libro de Códigos Electrónico (ECB) de un texto lleno X \in Z_{2}^{64} en su texto cifrado C \in Z_{2}^{64} bajo la clave K \in Z_{2}^{128}, se denota por C = E(K,X).
La función de ciclo se denota por f y es una relación de correspondencia de Z_{2}^{40} \times Z_{2}^{32} con Z_{2}^{32}. Esta función de ciclo incorpora la transformación lineal de la invención y será descrita con mayor detalle más adelante. El primer argumento de entrada de la función de ciclo es la clave de ciclo K_{i} \in Z_{2}^{40} (donde i indica el número de ciclo, i = 1,2,...,16). Estas claves de ciclo se computan a partir de la clave K de 128 bits con un algoritmo denominado de organización temporal de clave. Es posible utilizar cualquier algoritmo de organización temporal de clave adecuado, de manera que éste no se describe en detalle. El segundo argumento de entrada es la mitad derecha del resultado intermedio después del ciclo i. Este resultado intermedio se denota por X_{i} \in Z_{2}^{64}(i = 0,1,...,16) con X =: (X_{0}^{(R)} || X_{0}^{(L)}).
Con esta notación, la computación del texto de cifrado C \in Z_{2}^{64} consiste en las siguientes etapas, tal y como se ilustra en la Figura 2:
1. Computar X_{i}^{(R)} = X_{i-1}^{(L)} \oplus f(K_{i},X_{i-1}^{(R)}), y establecer X_{i}^{(L)} = X_{i-1}^{(R )} para i = 1,2,...,15.
2. Computar X_{16}^{(L)} = X_{15}^{(L)} \oplus f(K_{16},X_{15}^{(R)}), y establecer X_{16}^{(R)} = X_{15}^{(R )}. El texto de cifrado se define como C := (X_{16}^{(L)} || X_{16}^{(R)}).
La Figura 2A muestra la estructura de cifrador utilizada para los quince primeros ciclos (i = 1,2,...,15). La Figura 2B muestra el último ciclo, el decimosexto. Nótese el intercambio irregular de la Figura 2B, en comparación con los ciclos previos de la Figura 2A. Esto se hace habitualmente en las estructuras de Feistel debido a que, en este caso, el algoritmo de desencriptación (es decir, la computación X = E^{-1}(K,C)) es el mismo que el algoritmo de encriptación (con las claves de ciclo en orden inverso). No tiene ningún significado en un sentido criptográfico.
Función de ciclo
La Figura 3 muestra una diagrama de bloques global de una realización preferida de la función de ciclo f. En primer lugar, una parte de la clave de ciclo, de, por ejemplo, 32 bits, se añade a los bits de datos en la etapa 310. A continuación, en la etapa 320, las cajas S llevan a cabo una sustitución no lineal, preferiblemente proporcionando una resistencia óptima (local) contra el criptoanálisis diferencial y lineal. Además, de manera preferida, las características no triviales (locales) con una probabilidad máxima predeterminada se hacen dependientes de la clave (ciclo), tal como se describe con mayor detalle más adelante. Finalmente, en la etapa 330 se utiliza una transformación lineal para proporcionar una elevada difusión a lo largo de múltiples ciclos. El método para generar tal transformación lineal a partir de un código de corrección de errores se describirá con mayor detalle más adelante.
La estructura de Feistel no impone restricción alguna en la subjetividad de la función de ciclo. Sin embargo, de manera preferida, la función de ciclo es biyectiva para todas las elecciones, para la clave (ciclo) fijada. Esto evita ataques basados en la no uniformidad de la función de ciclo.
La Figura 4 proporciona más detalles de una disposición preferida que incorpora las cajas S. En este sistema proporcionado a modo de ejemplo, la función de ciclo f es una relación de correspondencia de Z_{2}^{40} \times Z_{2}^{32} en Z_{2}^{32}. El primer argumento de entrada es la clave de ciclo K_{i}\in Z_{2}^{40}, y el segundo la mitad derecha del resultado intermedio X_{i-1}. La salida se denota por f(K_{i}, X_{i-1}^{(R)}) \in Z_{2}^{32}. En esta Figura, K_{i}^{(1)} \in Z_{2}^{32} y K_{i}^{(2)} \in Z_{2}^{8} se definen como K_{i} =: (K_{i}^{(1)} || K_{i}^{(2)}). En la etapa 310 tiene lugar la adición de clave, seguida, en la etapa 320, por una capa de cajas de sustitución (caja-S) dependientes de clave. En este ejemplo, la capa de cajas-S consiste en ocho cajas-S más pequeñas (S_{0}, S_{1}, S_{2}, ..., S_{7}), cada una de las cuales opera sobre 1/8 del bloque de datos. La transformación de cajas-S es una relación de correspondencia de Z_{2}^{8} \times Z_{2}^{32} en Z_{2}^{32}, el primer argumento de entrada en la ronda o ciclo i es la clave de ciclo K_{i}^{(2)}, el segundo el resultado de la adición de clave, es decir, X_{i-1}^{(R)} \oplus K_{i}^{(1)}. La salida de 32 bits de la transformación de caja-S se denota por S(K_{i}^{(2)}, X_{i-1}^{(R)} \oplus K_{i}^{(1)}). Más adelante se dará una descripción de esta relación de correspondencia. Finalmente, en la etapa 330, se aplica la transformación lineal de Z_{2}^{32} en Z_{2}^{32}. La entrada es S(K_{i}^{(2)}, X_{i-1}^{(R)} \oplus K_{i}^{(1)}), y su salida se denota por (S(K_{i}^{(2)}, X_{i-1}^{(R)} \oplus K_{i}^{(1)})). Con esta notación, la función f viene dada por:
f(K_{i}, X_{i-1}{}^{(R)}) = L(S(K_{i}{}^{(2)}, X_{i-1}{}^{(R)} \oplus K_{i}{}^{(1)})).
Cajas-S
En principio, cualquier capa de cajas-S adecuada puede ser utilizada en el cifrador de bloques. En una realización preferida que se describe aquí, cada caja-S opera sobre un sub-bloque de 4 bits. Se apreciará que también es posible utilizar sub-bloques de otros tamaños. Preferiblemente, para cada caja-S se utiliza un conjunto de al menos dos permutaciones predeterminadas, en el que, cada vez, antes de utilizar la caja-S, se selecciona una de estas permutaciones de una manera (pseudo-) aleatoria. Preferiblemente, la clave de ciclo se utiliza para esta selección. En una realización preferida, cada caja-S está asociada con dos permutaciones, de tal manera que se emplea un bit predeterminado de la clave de ciclo para seleccionar cuál de ambas permutaciones se utiliza. El uso de cajas-S relativamente pequeñas, tales como unas que operan sobre sub-bloques de 4 bits, requerirá normalmente una fila de cajas-S paralelas, cada una de las cuales está asociada con un conjunto respectivo de al menos dos permutaciones no lineales.
La Figura 4 ilustra una realización preferida de un cifrador de bloques que opera sobre bloques de 32 bits y que utiliza cajas-S de 4 bits, lo que da lugar a ocho cajas-S que se utilizan en paralelo, cada una de las cuales consiste en dos permutaciones. Para esta realización se utiliza la siguiente notación. Sean los bits del primer argumento de entrada K_{i}^{(2)} de la transformación de caja-S denotados por k_{j}^{(i)} (j = 0,1,...,7), es decir, K_{i}^{(2)} =: (k_{0}^{(i)}, k_{1}^{(i)}, ..., k_{7}^{(i)}). Los vectores N_{j}^{(i)} \in Z_{2}^{4} (j = 0,1,...,7) se definen como X_{i-1}^{(R)} \oplus K_{i}^{(1)} =: (N_{0}^{(i)} || N_{1}^{(i)} ||...|| N_{7}^{(i)}). La relación de correspondencia de cajas-S consiste en una concatenación de ocho relaciones de correspondencia S_{j} : Z_{2} \times Z_{2}^{4} \rightarrow Z_{2}^{4} (j = 0,1,...,7). El primer argumento de entrada es el bit de clave k_{j}^{(i)}, que selecciona cuál de las dos permutaciones para S_{j} se utiliza. El segundo argumento de entrada es N_{j}^{(i)}, que es la entrada para la permutación de 4 bits seleccionada para S_{j}. La salida de 4 bits correspondiente de esta permutación es también la salida de la caja-S, y se denota por S_{j}(k_{j}^{(i)}, N_{j}^{(i)}). Con esta notación, la función S viene dada por:
S(K_{i}{}^{(2)},X_{i-1}{}^{(R)} \oplus K_{i}{}^{(1)}) = (S_{0}(k_{0}{}^{(i)},N_{0}{}^{(i)})||S_{1}(k_{1}{}^{(i)},N_{1}{}^{(i)})||...||S_{7}(k_{7}{}^{(i)},N_{7}{}^{(i)})).
Es posible utilizar cualquier capa de cajas-S adecuada. Preferiblemente, se utilizan cajas-S de acuerdo con la Solicitud de Patente Internacional co-dependiente Nº WO 02/003605 (PHNL000365).
Matriz de transformación lineal
Después de la función de sustitución de caja-S, se lleva a cabo una transformación lineal L. En la realización preferida con sub-bloques de 32 bits, L: Z_{2}^{32} \rightarrow Z_{2}^{32}. Utilizando la construcción de cajas-S preferida que se ha descrito, la entrada para esta transformación lineal es el vector S(K_{i}^{(2)}, X_{i-1}^{(R)}\oplus K_{i}^{(1)}). Las coordenadas de este vector se denotarán por y_{j}^{(i)} (j = 0,1,...,31), es decir, S(K_{i}^{(2)}, X_{i-1}^{(R)} \oplus K_{i}^{(1)}) =: (y_{0}^{(i)},y_{1}^{(i)},..., y_{31}^{(i)}). La relación de correspondencia L puede ser descrita ahora como una multiplicación de vector-matriz, y la matriz se denota por A \in Z_{2}^{32\times 32}:
L(S(K_{i}{}^{(2)},X_{i-1}{}^{(R)} \oplus K_{i}{}^{(1)})) = L((y_{0}{}^{(i)},y_{1}{}^{(i)},...,y_{31}{}^{(i)})) = (y_{0}{}^{(i)},y_{1}{}^{(i)},...,y_{31}{}^{(i)})A.
Construyendo la matriz de transformación lineal
La transformación lineal L, que se define por L(x) = xA, se construye de manera que satisfaga los siguientes criterios de diseño:
1. linealidad sobre Z_{2}.
2. susceptibilidad de inversión, es decir, la matriz A es no singular sobre Z_{2}.
3. elevadas propiedades de difusión.
La construcción de la función L está basada en códigos de corrección de errores lineales binarios. La relación de correspondencia L se identifica con una matriz generadora G = (I_{k}||A) \in Z_{2}^{k\times 2k} para un código de corrección de errores binario. Nótese que para todas las palabras de código (x||xA) \in Z_{2}^{2k}, con x \in Z_{2}^{k}, la x de la mitad izquierda corresponde a la entrada para L, en tanto que la xA de la mitad derecha corresponde a la salida. Nótese que el criterio de diseño (i) se satisface para todos los códigos de corrección de errores binarios, en tanto que (ii) se satisface si, y sólo si, A es no singular sobre Z_{2}. Nótese también que el criterio (iii) puede ser expresado en términos del peso de Hamming mínimo de las palabras de código; cuanto mayor sea esta distancia mínima, mejores serán las propiedades de difusión.
La construcción de A se ilustrará para bloques de 32 bits (es decir, k = 32 y A \in Z_{2}^{32\times 32}), y se sirve de un código binario extendido de Bose-Chaudhuri-Hocquenghem (XBCH -"extended Bose-Chaudhuri-Hocquenghem") como punto de partida para la construcción de un código de [64,32] con una distancia de Hamming mínima igual a 12. Es bien conocido que dicho código es óptimo, es decir, cualquier código binario de [64,32] tiene una distancia mínima más pequeña o igual que 12. Esto implica que el peso de Hamming mínimo de cualquier palabra de código no nula es al menos 12, puesto que el código es lineal. Nótese que esto significa que las propiedades de difusión de la relación de correspondencia L son óptimas en el nivel de los bits, en el sentido de que cambios (pequeños) en la entrada de t bits (t > 0) implican un cambio de al menos max{0,12-t} bits en la salida.
La matriz generadora para el código binario de [64,32,12] que contiene la matriz A se construye como sigue, tal como se ilustra en la Figura 5:
(i) En la etapa 510, se toma una matriz generadora G'' de forma estándar (es decir, G'' = (I_{32}||B) con B \in Z_{2}^{32\times 28}) que se corresponde con el código de corrección de errores lineal binario. Dicha matriz generadora G'' se construye, preferiblemente, de la siguiente manera, comenzando desde un código de Bose-Chaudhuri-Hocquenghem (BCH):
(a)
En la etapa 512, se construye una matriz generadora G \in Z_{2}^{36\times 63} para el código BCH de [63,36,11] binario con un polinomio generador g(x) := x^{27} + x^{22} + x^{21} + x^{19} + x^{18} + x^{17} + x^{15} + x^{8} + x^{4} + x + 1, donde la fila j (j = 0,1,...35) de G corresponde al polinomio x^{I} g(x). Más precisamente, si g(x) =: \Sigma_{i=0,1,...,27}g_{i}x^{I}, con g_{i} \in Z_{2}, la primera fila de la matriz viene dada por (g_{0},g_{1},g_{2},...,g_{27},0,0,...,0) \in Z_{2}^{63}. La fila j de la matriz generadora (j=1,2,...,35) viene dada por un desplazamiento cíclico hacia la derecha de esta primera fila en j posiciones.
(b)
En la etapa 514, este código es acortado hasta un código de [59,32,11] al borrar al menos las cuatro últimas filas y columnas de G,
(c)
En la etapa 518, este código acortado es extendido hasta un código de [60,32,12] al añadir un símbolo de comprobación de paridad a cada palabra de código. Nótese que, mediante la adición de una comprobación de la paridad, la adición de una columna da lugar a un incremento de la distancia mínima. La matriz generadora de 32\times60 para este código de [60,32,12] se denota por G'.
(d)
En la etapa 520 se lleva a cabo una eliminación de Gauss sobre G' para obtener una matriz generadora G'' de forma estándar, es decir, G'' = (I_{32}||B) con B \in Z_{2}^{32\times 28}. Nótese que ésta es una matriz generadora para un código de XBCH de [60,32,12] acortado.
(ii) Extender B con cuatro columnas, de tal manera que la matriz resultante C \in Z_{2}^{32\times 32} sea no singular sobre Z_{2}. Preferiblemente, las cuatro columnas son seleccionadas de manera (pseudo-) aleatoria:
(a)
crear cuatro columnas, cada una de ellas con 32 elementos binarios seleccionados de manera (pseudo-) aleatoria,
(b)
crear una matriz de ensayo mediante la extensión de B con las cuatro nuevas columnas (en sí mismas, las posiciones de columna de las nuevas columnas añadidas no son importantes),
(c)
comprobar si la matriz de ensayo es invertible. Para esta comprobación puede utilizarse cualquier método adecuado, por ejemplo, un método basado en la eliminación de Gauss.
(d)
si es así, detener el procedimiento (se ha encontrado una matriz); en caso contrario, comenzar de nuevo generando al menos una nueva columna.
Se apreciará que, en lugar de utilizar un procedimiento de creación aleatorio, los elementos de las cuatro columnas pueden ser generados también de cualquier otra manera adecuada.
Debido a la construcción de la función de ronda o ciclo con las cajas-S de múltiples bits, son deseables también buenas propiedades de difusión en este nivel de múltiples bits. Para cuatro cajas-S de cuatro bits, esto puede ser expresado como sigue (las variaciones para otro número de bits caen de lleno dentro de los conocimientos de las personas expertas en la técnica). Si los vectores n_{i} de 4 bits (i = 0,1,...,7) de una palabra de código c \in Z_{2}^{32} se definen como c =: (n_{0}||n_{1}||...||n_{7}), entonces el peso de recorte ("nibble weight") de c se define como NW(c) := #{i || n_{i} \neq (0,0,0,0), i = 0,1,...,7)}. Las propiedades de difusión en el nivel de recorte pueden ser expresadas en términos del mínimo peso de recorte a lo largo de todas las palabras de código distintas de cero; cuanto más alto sea este peso mínimo, mejores serán las propiedades de difusión en el nivel de recorte. Con el fin de conseguir una elevada difusión en el nivel de múltiples bits (en el ejemplo, en el nivel de recorte), en la etapa 530 se seleccionan dos matrices de permutación P_{1}, P_{2} \in Z_{2}^{32\times 32}, de tal manera que todas las palabras de código contenidas en el código de [64,32,12] con la matriz generadora (I||P_{1} C P_{2}), tienen un elevado peso de recorte. La matriz encontrada finalmente A := P_{1} C P_{2} se utiliza para la transformación lineal. En una realización preferida, las matrices de permutación P_{1} y P_{2} son generadas (pseudo-) aleatoriamente. Puede comprobarse que el peso de recorte mínimo del código generado por (I||A) es igual a siete.
Las filas de una matriz de transformación lineal A generadas de esta manera se proporcionan en la siguiente tabla (a_{0} es la primera fila, a_{1} la segunda, ..., a_{31} la última). Nótese que el producto de vector-matriz corresponde a un XOR (O exclusiva) de las filas a_{k} para las que y_{k}^{(i)} = 1 (k = 0,1,...,31).
K a_{k} K a_{k} k a_{k} k a_{k}
0 29124175 8 6c2bcc57 16 b6ca16ad 24 8a25ce9f
1 0f2bf8fb 9 cdd3af3c 17 c54458f0 25 ce31ac5a
2 2dee5791 10 62a9ecb2 18 992cbd93 26 a1f6d9d7
3 019d7e7c 11 a4b5a428 20 16d7adf7 27 a6926fcc
4 c8bf5445 12 3f5226b4 21 f934a9dd 28 c6081f0b
5 8556a980 13 45f11e76 22 4f1ae1e8 29 eae05244
6 b48d6594 14 33d96699 23 e7fd8aaa 30 d07cb31f
7 42fed829 15 1b066723 22 7a53217e 31 7adf972f
Comparación con el código de MDS
El uso de transformaciones lineales basadas en un código de MDS en cifradores de clave simétrica se conoce por S. Vaudenay, "On the Need for Multi-Permutations: Cryptanalysis of MD4 and SAFER" ("En la necesidad de permutaciones múltiples: criptoanálisis de MD4 y SAFER"), Fast Software Encryption (2^{nd}), LNCS 1008, Springer, 1995, págs. 286-297. La siguiente tabla compara la distribución de pesos de recorte de la construcción utilizada en la matriz basada en XBCH de acuerdo con la invención, con la distribución de pesos (de recorte) del código de MDS. Las entradas representan el número de palabras de código no nulas con el peso de recorte dado.
Peso de recorte XBCH MDS
7 428 0
8 7783 0
9 102440 171600
10 1075180 840840
11 8794864 9238320
12 54987542 54463500
13 253742392 254142000
14 815652460 815459400
15 1631276420 1631330640
16 1529327786 1529320995
Como puede observarse a partir de esta tabla, las distribuciones de pesos de recorte de las dos construcciones son muy similares. El peso de recorte mínimo de la construcción de XBCH es únicamente dos menos que el peso mínimo de la construcción de MDS, lo que puede demostrarse que es óptimo con respecto a este criterio. Sin embargo, la construcción de MDS tiene la desventaja de que contiene estructura matemática adicional, tal como la linealidad sobre (sub-campos de) F_{16} de la transformación lineal asociada, que podría ser aprovechada en el criptoanálisis del cifrador de bloques. Es decir, se podrían describir las cajas-S (y, consecuentemente, el cifrador de bloques completo) por medio de relaciones de correspondencia de F_{18} \rightarrow F_{18}. Además, la configuración descrita en este documento garantiza la difusión óptima en el nivel de bits.

Claims (7)

1. Un método de cifrado que utiliza un cifrador de clave simétrica, el cual incluye las etapas de:
- recibir (110) un bloque de datos de entrada;
- llevar a cabo (120) una transformación lineal sobre el bloque de datos de entrada o sobre una derivada del bloque de datos de entrada, utilizando una matriz de transformación lineal A, y suministrar como salida (130) el bloque de datos de entrada procesado o tratado, de tal manera que dicha matriz A ha sido generada por medio de:
- generar (510) un código de corrección de errores binario de [n, k, d], representado por una matriz generadora G \in Z_{2}^{k\times n} en una forma estándar G = I_{k} || B, con B \in Z_{2}^{k\times (n-k)}, donde k < n < 2k, y d es la distancia mínima del código de corrección de errores binario;
caracterizado por
- extender (520) la matriz B con 2k-n columnas, de tal manera que una matriz resultante C es no singular, y
- deducir (530) la matriz A a partir de la matriz C, a través de
- determinar (532, 534, 536) dos matrices de permutación P_{1}, P_{2} \in Z_{2}^{k\times k}, de tal manera que todas las palabras de código contenidas en un código de corrección de errores de [2k, k, d], representadas por la matriz generadora igual a I || P_{1} C P_{2}, tengan un peso de múltiples bits predeterminado; y
- utilizar (540) P_{1} C P_{2} como matriz A.
2. Un método de acuerdo con la reivindicación 1, en el cual la etapa de extender la matriz B con 2k-n columnas incluye:
de una manera iterativa:
- generar de forma pseudo-aleatoria (522) 2k-n columnas, cada una de ellas con k elementos binarios;
- formar (524) una matriz de ensayo consistente en las n-k columnas de B y las 2k-n columnas generadas; y
- comprobar (526) si la matriz de ensayo es no singular,
hasta que se haya encontrado una matriz de ensayo no singular; y
utilizar la matriz de ensayo encontrada como la matriz C.
3. Un método de acuerdo con la reivindicación 1, en el cual el cifrador incluye una función de ronda o ciclo con una capa de cajas-S con cajas-S que operan sobre sub-bloques de m bits, y el peso de múltiples bits predeterminado mínimo a lo largo de todas las palabras de código distintas de cero, es igual a un peso de m bits predetermi-
nado.
4. Un método de acuerdo con la reivindicación 1, en el cual la etapa (532) de determinar las dos matrices de permutación P_{1} y P_{2} incluye generar iterativamente las matrices de una forma pseudo-aleatoria.
5. Un método de acuerdo con la reivindicación 1, en el cual el cifrador incluye una función de ciclo que opera sobre bloques de 32 bits, y en el que la etapa de generar un código de corrección de errores de [n, k, d] incluye:
generar un código de Bose-Chaudhuri-Hocquenghem binario extendido, al que se hace referencia aquí en lo sucesivo como código de XBCH, de [64,36,12]; y
acortar esté código hasta un código de XBCH acortado de [60, 32, 12], mediante el borrado de cuatro filas.
6. Un producto de programa informático, de tal manera que el producto de programa comprende medios de software o programación destinados a llevar a cabo las etapas de la reivindicación 1.
7. Un sistema (100) para convertir criptográficamente un bloque de datos de entrada en un bloque de datos de salida; de tal manera que los bloques de datos comprenden n bits de datos; incluyendo el sistema:
- una entrada (110) destinada a recibir el bloque de datos de entrada;
- unos medios de almacenamiento en los cuales se almacena una matriz de transformación lineal A, medios de transformación lineal destinados a llevar a cabo una transformación lineal sobre el bloque de datos de entrada, o bien una derivada del bloque de datos de entrada con el uso de dicha matriz A, de tal forma que dicha matriz A ha sido generada por medio de:
- generar (510) un código de corrección de errores binario de [n, k, d], representado por una matriz generadora G \in Z_{2}^{k\times n} en una forma estándar G = I_{k} || B, con B \in Z_{2}^{k\times (n-k)}, donde k < n z 2k, y de es la distancia mínima del código de corrección de errores binario;
- extender (520) la matriz B con 2k-n columnas, de tal manera que una matriz resultante C sea no singular, y
- deducir (530) la matriz A de la matriz C por medio de:
- determinar (532, 534, 536) dos matrices de permutación P_{1}, P_{2} \in Z_{2}^{k\times k}, de tal manera que todas las palabras de código contenidas en un código de corrección de errores [2k, k, d], representadas por la matriz generadora igual a I || P_{1} C P_{2}, tengan un peso de múltiples bits predeterminado; y
- utilizar (540) P_{1} C P_{2} como la matriz A.
ES01955365T 2000-08-03 2001-07-20 Transformacion lineal para cifrado de claves simetricas. Expired - Lifetime ES2244639T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP00202753 2000-08-03
EP00202753 2000-08-03

Publications (1)

Publication Number Publication Date
ES2244639T3 true ES2244639T3 (es) 2005-12-16

Family

ID=8171882

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01955365T Expired - Lifetime ES2244639T3 (es) 2000-08-03 2001-07-20 Transformacion lineal para cifrado de claves simetricas.

Country Status (10)

Country Link
US (1) US7450720B2 (es)
EP (1) EP1307993B1 (es)
JP (1) JP5079204B2 (es)
KR (1) KR100855890B1 (es)
CN (1) CN100431293C (es)
AT (1) ATE298952T1 (es)
AU (1) AU2001277548A1 (es)
DE (1) DE60111746T2 (es)
ES (1) ES2244639T3 (es)
WO (1) WO2002013452A2 (es)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1193537C (zh) * 2000-07-04 2005-03-16 皇家菲利浦电子有限公司 将输入数据块加密转换成输出数据块的方法和系统
JP2003302899A (ja) * 2002-04-11 2003-10-24 Sony Corp ブーリアン・マトリクスに基づく暗号化および復号処理方法、並びに装置
US7840803B2 (en) 2002-04-16 2010-11-23 Massachusetts Institute Of Technology Authentication of integrated circuits
EP1387519A3 (fr) * 2002-07-09 2004-02-18 Cp8 Procédé de sécurisation d'un ensemble électronique contre des attaques par introduction d'erreurs
US20040078587A1 (en) * 2002-10-22 2004-04-22 Cameron Brackett Method, system, computer product and encoding format for creating anonymity in collecting patient data
EP1480371A1 (en) * 2003-05-23 2004-11-24 Mediacrypt AG Device and method for encrypting and decrypting a block of data
US7289629B2 (en) * 2004-02-09 2007-10-30 Microsoft Corporation Primitives for fast secure hash functions and stream ciphers
KR20050087271A (ko) * 2004-02-26 2005-08-31 삼성전자주식회사 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
EP1842203A4 (en) 2004-11-12 2011-03-23 Verayo Inc KEYS OF VOLATILE DEVICES, AND THEIR APPLICATIONS
WO2006070322A1 (en) 2004-12-28 2006-07-06 Koninklijke Philips Electronics N.V. Key generation using biometric data and secret extraction codes
US7702099B2 (en) * 2005-06-30 2010-04-20 Chiou-Haun Lee Multipoint synchronous diffused encryption/decryption method
ATE504884T1 (de) 2006-01-24 2011-04-15 Verayo Inc Signalgeneratorbasierte vorrichtungssicherheit
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
DE102006039327B4 (de) * 2006-08-22 2008-06-26 Nokia Siemens Networks Gmbh & Co.Kg Verfahren zur Authentifizierung
JP4967544B2 (ja) 2006-09-01 2012-07-04 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8559625B2 (en) * 2007-08-07 2013-10-15 Inside Secure Elliptic curve point transformations
ATE544123T1 (de) 2007-09-19 2012-02-15 Verayo Inc Authentifizierung mit physikalisch unklonbaren funktionen
US9548758B2 (en) * 2010-01-05 2017-01-17 Alcatel-Lucent Usa Inc. Secure compressive sampling using codebook of sampling matrices
US8712156B2 (en) * 2010-01-10 2014-04-29 Bronstein Bronstein Kimmel Technologies Ltd. Comparison of visual information
CN104396181B (zh) * 2012-02-09 2018-02-23 爱迪德技术有限公司 用于生成和保护密码密钥的系统和方法
WO2014131546A1 (fr) * 2013-02-27 2014-09-04 Morpho Procede d'encodage de donnees sur une carte a puce par des codes de poids constant
WO2014154273A1 (en) * 2013-03-27 2014-10-02 Irdeto B.V. Aes implementation with error correction
US11303436B2 (en) * 2016-06-23 2022-04-12 Cryptography Research, Inc. Cryptographic operations employing non-linear share encoding for protecting from external monitoring attacks
US10404667B2 (en) 2016-11-17 2019-09-03 Bank Of America Corporation Secure, autonomous file encryption and decryption
CN111786680B (zh) * 2019-04-03 2023-01-13 华为技术有限公司 一种生成矩阵的确定方法及装置
CN111431697B (zh) * 2020-03-31 2022-06-21 衡阳师范学院 一种新型轻量级分组密码corl的实现方法
US11610004B2 (en) * 2021-04-14 2023-03-21 Bank Of America Corporation System for implementing enhanced file encryption technique

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2725610B2 (ja) * 1994-09-27 1998-03-11 日本電気株式会社 秘密鍵暗号方法及び装置
US5991414A (en) * 1997-09-12 1999-11-23 International Business Machines Corporation Method and apparatus for the secure distributed storage and retrieval of information
JP3017726B2 (ja) * 1998-01-27 2000-03-13 日本電信電話株式会社 データ変換装置
US6363485B1 (en) * 1998-09-09 2002-03-26 Entrust Technologies Limited Multi-factor biometric authenticating device and method
EP1065593A1 (en) * 1999-07-02 2001-01-03 Institut Eurecom G.I.E. Process for securing the execution of a mobile code in an untrusted environment
US6947558B1 (en) * 1999-08-29 2005-09-20 Intel Corporation Stream cipher having a shuffle network combiner function

Also Published As

Publication number Publication date
DE60111746D1 (de) 2005-08-04
KR20020041815A (ko) 2002-06-03
DE60111746T2 (de) 2006-05-18
ATE298952T1 (de) 2005-07-15
WO2002013452A2 (en) 2002-02-14
US20020101986A1 (en) 2002-08-01
JP5079204B2 (ja) 2012-11-21
EP1307993A2 (en) 2003-05-07
JP2004506246A (ja) 2004-02-26
CN100431293C (zh) 2008-11-05
AU2001277548A1 (en) 2002-02-18
EP1307993B1 (en) 2005-06-29
US7450720B2 (en) 2008-11-11
WO2002013452A3 (en) 2002-07-25
CN1398467A (zh) 2003-02-19
KR100855890B1 (ko) 2008-09-03

Similar Documents

Publication Publication Date Title
ES2244639T3 (es) Transformacion lineal para cifrado de claves simetricas.
JP4990908B2 (ja) 暗号化保護方法
US7295671B2 (en) Advanced encryption standard (AES) hardware cryptographic engine
US6314186B1 (en) Block cipher algorithm having a robust security against differential cryptanalysis, linear cryptanalysis and higher-order differential cryptanalysis
ES2805125T3 (es) Arquitectura e instrucciones flexibles para el estándar de cifrado avanzado (AES)
US8712036B2 (en) System for encrypting and decrypting a plaintext message with authentication
US8050401B2 (en) High speed configurable cryptographic architecture
US8509427B2 (en) Hybrid mode cryptographic method and system with message authentication
JP6084757B2 (ja) 可変入力長調整可能暗号の構造および使用
US8428251B2 (en) System and method for stream/block cipher with internal random states
US20080084996A1 (en) Authenticated encryption method and apparatus
ES2291675T3 (es) Metodo de generar un cifrado de flujo utilizando claves multiples.
US7913083B2 (en) Secret-key-controlled reversible circuit and corresponding method of data processing
US6961427B1 (en) Methods and apparatus for keystream generation
Bhatt Encrypt Password with Using New Key Generation Processed Random Key
Cho et al. A Cube Attack on a Reduced-Round Sycon. Electronics 2022, 11, 3605
CN115967483A (zh) 一种运用矩阵转化构造查找表的白盒分组密码加密方法与系统
KR20000066440A (ko) 엘.에프.에스.알을 이용한 확장 알.씨.4 암호화 방법
Jeong et al. Update on SEED: SEED-192/256
JPH0830195A (ja) 暗号の拡大鍵生成方法・復号方法及び暗号の拡大鍵生成装置・復号装置
Lee Cryptography for Confidentiality and Integrity
Erdem et al. Use of Rijndael Block Cipher on J2ME Devices for encryption and hashing
KR20050019086A (ko) 진보된 암호화 표준(aes)의 하드웨어 암호 엔진