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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding 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.
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.
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.
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.
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)})).
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).
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.
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 |
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.
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.
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)
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)
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 |
-
2001
- 2001-07-20 EP EP01955365A patent/EP1307993B1/en not_active Expired - Lifetime
- 2001-07-20 AU AU2001277548A patent/AU2001277548A1/en not_active Abandoned
- 2001-07-20 WO PCT/EP2001/008470 patent/WO2002013452A2/en active IP Right Grant
- 2001-07-20 JP JP2002518682A patent/JP5079204B2/ja not_active Expired - Lifetime
- 2001-07-20 KR KR1020027004264A patent/KR100855890B1/ko active IP Right Grant
- 2001-07-20 DE DE60111746T patent/DE60111746T2/de not_active Expired - Lifetime
- 2001-07-20 ES ES01955365T patent/ES2244639T3/es not_active Expired - Lifetime
- 2001-07-20 CN CNB018030084A patent/CN100431293C/zh not_active Expired - Lifetime
- 2001-07-20 AT AT01955365T patent/ATE298952T1/de not_active IP Right Cessation
- 2001-08-01 US US09/918,831 patent/US7450720B2/en active Active
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)의 하드웨어 암호 엔진 |