ES2293665T3 - Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits. - Google Patents
Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits. Download PDFInfo
- Publication number
- ES2293665T3 ES2293665T3 ES97951348T ES97951348T ES2293665T3 ES 2293665 T3 ES2293665 T3 ES 2293665T3 ES 97951348 T ES97951348 T ES 97951348T ES 97951348 T ES97951348 T ES 97951348T ES 2293665 T3 ES2293665 T3 ES 2293665T3
- Authority
- ES
- Spain
- Prior art keywords
- binary vector
- subblock
- conversion
- subblocks
- value
- 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
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 82
- 238000000034 method Methods 0.000 title claims abstract description 52
- 239000013598 vector Substances 0.000 claims abstract description 113
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 14
- 230000009466 transformation Effects 0.000 claims 2
- 238000004891 communication Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 16
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000015654 memory Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Emergency Protection Circuit Devices (AREA)
- Analogue/Digital Conversion (AREA)
- Nitrogen And Oxygen Or Sulfur-Condensed Heterocyclic Ring Systems (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Método para la conversión criptográfica de bloques (B) de entrada de L bits de datos digitales en bloques de salida de L bits, que comprende una pluralidad de fases, incluyendo cada fase las etapas de subdividir un bloque de datos en N 2 subbloques (b1...bN), realizar una primera etapa de conversión de confusión de subbloques sobre un primer subbloque, primera etapa que comprende utilizar al menos un vector binario para modificar el primer subbloque, y realizar una segunda etapa de conversión de confusión de subbloques sobre un segundo subbloque, posterior a la primera etapa de conversión de confusión de subbloques, segunda etapa que comprende generar al menos un vector binario (V) dependiendo del valor de uno de los subbloques (b1...bN) y del valor del vector binario utilizado en la primera etapa de conversión de confusión de subbloques, y modificar el segundo subbloque utilizando el vector binario (V).
Description
Método para la conversión criptográfica de
bloques de entrada de L bits de información de datos digitales en
bloques de salida de L bits.
La presente invención se refiere al campo de la
comunicación eléctrica y de la ingeniería informática, y más
particularmente, al campo de los métodos y dispositivos
criptográficos para cifrar datos digitales. El método comprende
dividir un bloque de datos en N \geq 2 subbloques, convertir estos
subbloques uno después de otro generando al menos un vector binario
según el valor del subbloque y modificar el subbloque utilizando el
vector binario. La novedad del método reivindicado radica en
generar el vector binario en la etapa posterior de la conversión
del subbloque dependiendo de la estructura del vector binario en la
etapa anterior de la conversión del subbloque. La novedad también
radica en generar dos vectores binarios y convertir uno de ellos
mediante la operación de desplazamiento cíclico sobre un número de
bits igual al valor del segundo vector binario. Además, la novedad
radica en modificar uno de los subbloques aplicándolo a una
operación de desplazamiento cíclico sobre un número de bits igual
al valor actual del vector binario. La novedad también radica en la
utilización, en una conversión de subbloques, de un número T \geq
2 de tablas de relleno, por el que el número (v) de la tabla se
calcula según vector binario, y el subbloque se modifica mediante
una operación de relleno por la tabla v-ésima.
La invención se refiere al campo de la
comunicación eléctrica y de la ingeniería informática, y en
particular, al campo de métodos y dispositivos criptográficos para
cifrar mensajes (información).
Los siguientes términos se utilizan en la
descripción del método reivindicado, tomado en la totalidad de sus
características:
- -
- La clave secreta es información binaria que sólo conoce el usuario autorizado;
- -
- La conversión criptográfica es conversión de información digital que garantiza la influencia de un bit de datos fuente en múltiples bits de datos de salida, por ejemplo, con el fin de proteger la información de una lectura no autorizada, formar una suscripción digital, generar un código de detección de modificación; algunos de los tipos importantes de conversiones criptográficas son conversión unilateral, hashing y cifrado;
- -
- El Hashing de información es un cierto método de generación del llamado código hash cuyo tamaño está fijado normalmente (generalmente 128 bits) para cualquier tamaño de mensaje; los métodos de hashing se utilizan ampliamente basándose en funciones hash iterativas que utilizan mecanismos de bloques de conversión de información criptográfica (véase Lai X., Massey J.L Hash Functions Base on Block Ciphers/Workshop on the Theory and Applications of Cryptographic Techniques, EUROCRYPT'92, Hungría, del 24 al 28 de mayo de 1992, Proceedings, páginas 53 a 66);
- -
- El cifrado es el proceso de conversión de información que depende de la clave secreta y transforma el texto fuente en un texto cifrado representado mediante una secuencia seudoaleatoria de caracteres de manera que es prácticamente imposible obtener alguna información de la misma sin conocer la clave secreta;
- -
- El descifrado o desencriptación es el proceso inverso del procedimiento de cifrado; el descifrado permite recuperar la información según el criptograma siempre y cuando el operador conozca la clave secreta;
- -
- La cifra es una combinación de etapas elementales para convertir datos de entrada utilizando la clave secreta; la cifra puede implementarse en la forma de un programa informático o como un dispositivo separado;
- -
- Un vector binario es una cierta secuencia de bits activados y desactivados, por ejemplo 101101011; una estructura específica del vector binario puede interpretarse como un número binario si se considera que la posición de cada bit corresponde con un orden binario, es decir, el vector binario puede compararse con un valor numérico que se determina de manera unívoca por la estructura del vector binario;
- -
- El criptoanálisis es la técnica para calcular la clave secreta para obtener un acceso no autorizado a la información encriptada o la elaboración de un método que proporciona acceso a la información encriptada sin tener que calcular la clave secreta;
- -
- La conversión unilateral es una conversión de bloques de datos de entrada de L bits en un bloque de datos de salida de L bits tal que permite calcular fácilmente el bloque de salida según el bloque de entrada, mientras que calcular el bloque de entrada que se convertiría en bloque de salida seleccionado de manera aleatoria es de hecho una tarea impracticable;
- -
- La función unilateral es una función cuyo valor se calcula fácilmente según el argumento dado, aunque calcular el argumento según el valor de la función dada es un problema difícil en cuanto a la computación; las funciones unilaterales se implementan como una secuencia de procedimiento de conversión unilateral de cierto bloque de entrada (argumento) cuyo valor de salida se toma para el valor de la función;
- -
- La resistencia criptográfica constituye la medida de fiabilidad de la protección de la información cifrada y representa la intensidad de trabajo medida como el número de operaciones elementales que van a realizarse para recuperar la información según el criptograma en condiciones en las que el operador conoce el algoritmo de conversión y no la clave secreta; en el caso de conversiones unilaterales, se entiende por resistencia criptográfica la complejidad de calcular el valor de entrada del bloque según su valor de salida;
- -
- Las operaciones de desplazamiento cíclico dependientes de los subbloques que están convirtiéndose o dependientes del vector binario son operaciones de desplazamiento cíclico sobre un número de bits determinado por el valor del subbloque o por el valor del vector binario; la operación de desplazamiento cíclico a la izquierda (a la derecha) se designa con el símbolo "\langle\langle\langle" ("\rangle\rangle\rangle"), por ejemplo, la notación B_{1} \langle\langle\langle B_{2} denota la operación de desplazamiento cíclico a la izquierda del subbloque B_{1} sobre el número de bits igual al valor del vector binario B_{2}; tales operaciones son básicas para la cifra RC5 (R. Rivest, The RC5 Encryption Algorithm/Fast Software Encryption, Second Internacional Workshop Proceeding (Lovaina, Bélgica, del 14 al 16 de diciembre de 1994) Lecture Notes in Computer Science, v. 1008, Springer-Verlag, 1995, páginas 86 a 96);
- -
- Una operación unaria es una operación que se ejecuta sobre un único operando (un bloque de datos o vector binario); el valor del subbloque, después de realizar ciertas operaciones unarias dadas depende solo de su valor inicial; un ejemplo de operaciones unarias son las operaciones de desplazamiento cíclico;
- -
- Una operación binaria es una operación que se ejecuta sobre dos operandos; el resultado de realizar ciertas operaciones binarias dadas depende del valor de cada operando; un ejemplo de operaciones binarias son las operaciones de suma, resta, multiplicación, etc.
Se conocen métodos de encriptación de bloques de
datos, véase, por ejemplo, US Standard DES (oficina nacional de
normas. norma para la encriptación de datos Publicación de normas de
procesamiento de información federal 46, Enero de 1977). En este
método, la encriptación de bloques de datos se lleva a cabo formando
una clave secreta, subdividiendo el bloque de datos convertido en
dos subbloques, I y R, y modificar alternativamente el último por
medio de la realización de una operación de suma bit a bit módulo 2
sobre el subbloque L y se genera un vector binario como el valor de
salida de cierta función F según el valor del subbloque R. Después
de esto, los bloques se permutan. La función F del método anterior
se implementa realizando operaciones de permutación y relleno
ejecutadas sobre el subbloque R. Este método garantiza una alta
velocidad de conversión cuando se implementa en la forma de un
circuito electrónico especializado.
Sin embargo, el método conocido de la técnica
anterior utiliza la clave secreta de pequeño tamaño (56 bits) que
lo hace vulnerable al criptoanálisis según una selección de claves.
Esto último se debe al alto rendimiento global computacional de los
ordenadores modernos que se utilizan de manera generalizada.
La técnica anterior más próxima al método
reivindicado para la conversión criptográfica de bloques de entrada
de L bits de datos digitales en bloques de salida de L bits es un
método descrito en el trabajo (Kaliski B.S., Robshaw M.J.B, Fast
Block Chipre Proposal/Fast Software Encryption, Proceedings of the
Cambrigde Security Workshop, Lecture Notes in Computer Science,
v. 809, Springer-Verlag, 1994, páginas 26 a 39;
véase también B. Schneier, "Applied Cryptography",
segunda edición, John Wiley & Sons, Inc., Nueva York, 1966,
páginas 342 a 344). El método de la técnica anterior más próximo
comprende generar una clave secreta, subdividir un bloque de datos
de entrada de 1024 bytes en subbloques B_{0}, B_{1}, B_{2},
..., B_{255} de 32 bits y convertir subbloques alternos. La clave
secreta se genera como una tabla de permutación y una secuencia
ordenada de 2048 subclaves Q_{0}, Q_{1}, Q_{2}, ...,
Q_{2047}, cada una de las cuales tiene una longitud de 32 bits.
La encriptación de los bloques de datos se realiza como cuatro fases
de conversión. Una fase de conversión consiste en lo siguiente.
Según la tabla de permutación dirigida por la clave secreta, se
realiza la permutación de los subbloques de datos. Después, todos
los subbloques se convierten alternativamente. Un subbloque, por
ejemplo el subbloque B_{1}, se transforma como sigue. Se genera un
vector V binario de 32 bits según los valores B_{h}, B_{k},
B_{j}, del subbloque en los que h, i, j, k son números diferentes
según la expresión analítica V= B_{h} + F(B_{h}, B_{k},
B_{j}) + Q_{q}, en la que el signo "+" designa la
operación de suma de módulo 2^{32}, y q es el número de la
subclave actual. Los números h, i, j, k se seleccionan dependiendo
del número de la fase de cifrado y el número de la etapa de
conversión del subbloque. El vector binario generado se utiliza
para convertir el subbloque B_{1} como sigue. Se realiza una
operación de suma bit a bit de módulo 2 en el subbloque B_{1} y
V, y el valor obtenido después de la finalización de esta operación
se asigna al subbloque B_{1}. Esto se registra como la relación
B_{1} \leftarrow B_{1} \oplus V, en la que el signo
"\leftarrow" denota la operación de asignación y el símbolo
"\oplus" denota la operación de suma bit a bit de módulo 2.
Posteriormente, de manera similar, se lleva a cabo la conversión de
otro subbloque, etc., hasta que se convierten todos los bloques.
Cada nueva etapa de formación del vector binario de 32 bits se
realiza independientemente del valor del vector binario que se ha
generado en la etapa anterior. En una fase de encriptación, el
índice i asume, en un cierto orden de prioridad, 256 valores
diferentes correspondientes a todos los números de los subbloques
(de 0 a 255).
\newpage
Este método proporciona una alta resistencia
criptográfica debido a una gran longitud de bloques de datos y a la
utilización de un gran número de operaciones de conversión
realizadas sobre un subbloque.
Sin embargo, la técnica anterior más próxima
presenta algunas desventajas, concretamente, cuando se implementa
en software, falla al proporcionar una alta velocidad de conversión
criptográfica de datos requerida para crear sistemas de software de
protección de información informática que funcionarían en tiempo
real. Por ejemplo, para el procesador Pentium/200 la velocidad de
encriptación no supera los 6 Mbit/s. Esta desventaja se debe al
hecho de que para garantizar la resistencia al criptoanálisis
diferencial, es necesario llevar a cabo un gran número de
operaciones de conversión sobre un único bit de datos de
entrada.
También se conoce a partir de MOLDOVYAN N A;
MOLDOVYAN A A; SOVETOV B YA: "Software oriented ciphers for
computer communication protection" PROCEEDINGS OF THE FOURTH
INTERNATIONAL CONFERENCE, APPLICATIONS OF COMPUTER SYSTEMS, 14 de
noviembre de 1997 (14/11/1977), páginas 441 a 450, Szezecin,
Polonia, SCHNEIER B: "Applied cryptography, second
edition" APPLIED CRYPTOGRAPHY. PROTOCOLS, ALGORITHMS, AND
SOURCE CODE IN C, NEW YORK, NY: JOHN WILEY & SONS, EEUU, 1996,
XP002192446 ISBN:
0-471-11709-9, y el
documento US-A-5442705, para
convertir una pluralidad de subbloques de datos modificando cada
subbloque generando a su vez un vector binario y convertir el
subbloque según el vector binario. La técnica anterior da a conocer
un método de conversión criptográfica de bloques de entrada de L
bits de datos digitales en bloques de salida de L bits, que
comprende subdividir un bloque de datos en N \geq 2 subbloques, y
realizar una etapa de conversión de los subbloques que comprende
generar al menos un vector binario dependiendo del valor de uno de
los subbloques, y modificar el subbloque utilizando el vector
binario.
La base de la presente invención radica en la
tarea de desarrollar un método de conversión criptográfica de
bloques de entrada de L bits de datos digitales en bloques de salida
de L bits, en el que la conversión de datos de entrada se
efectuaría de tal manera para reducir el número de operaciones de
conversión sobre un único bit de los datos de entrada, con la
provisión simultánea de una alta resistencia al criptoanálisis
diferencial por lo que se incrementa la velocidad de
encriptación.
Esta tarea se consigue debido al hecho de que en
el método de conversión criptográfica de bloques de entrada de L
bits de datos digitales en bloques de salida de L bits se utiliza
una pluralidad de fases, consistiendo cada fase en subdividir un
bloque de datos en N \geq 2 subbloques, convertir subbloques
alternos generando al menos un vector binario según el valor del
subbloque y modificar el subbloque utilizando el vector binario, la
nueva característica, según la invención, es que el vector binario
se genera en la etapa de conversión de subbloques posterior
dependiendo de la estructura del vector binario en la etapa anterior
de la conversión de subbloques.
Con tal solución, se garantiza una mejor
disipación de la influencia de bits del bloque de datos de entrada
sobre los bits del bloque de salida, debido a lo cual se proporciona
una alta resistencia al criptoanálisis diferencial con reducción
simultánea en el número de operaciones de conversión que se
realizan, lo que garantiza el incremento en la velocidad de la
conversión criptográfica. Se proporciona una mejor disipación debido
al hecho de que los bits de los subbloques transformados en las
etapas de conversión anteriores afectan al proceso de convertir el
bloque actual de dos maneras: (1) influyendo directamente en el
valor del vector binario actual, y (2) influyendo en el valor del
vector binario actual a través del valor del vector binario en las
etapas de conversión anteriores.
También, una característica novedosa es que se
generan dos vectores binarios y uno de ellos se convierte utilizando
una operación de desplazamiento cíclico sobre un número de bits
igual al valor del segundo vector binario.
Tal solución permite mejorar adicionalmente la
resistencia criptográfica frente a la conversión de bloques de
información de longitud de L = 512, 1024, 2048, 4096 y 8192 bits ya
que las operaciones de desplazamiento cíclico de este tipo son no
lineales y define una función más compleja de generación de vectores
binarios.
También, una característica novedosa es el hecho
de que la modificación de uno de los bloques se realiza aplicándolo
a una operación de desplazamiento cíclico sobre un número de bits
que es igual al valor del vector binario actual.
Con tal solución, es posible garantizar la
mejora adicional de la resistencia criptográfica de la conversión
ya que las operaciones de desplazamiento cíclico de este tipo son no
lineales y se realizan directamente sobre los subbloques que están
convirtiéndose.
También, una característica novedosa es que en
la conversión de subbloques se utilizan tablas de relleno, cuyo
número es T \geq 2, por lo que el número (v) de la tabla se
calcula según el vector binario y el subbloque se modifica
utilizando una operación de relleno dada por la tabla v-ésima.
Debido a tal solución, se proporciona una mejora
adicional de la resistencia criptográfica de convertir bloques de
información de longitud de L = 64 y 128 bits ya que las operaciones
de relleno son no lineales y son efectivas en la implementación
cuando el tamaño del bloque de información que está transformándose
es relativamente pequeño. La utilización de operaciones de relleno
no predeterminadas es un método para conseguir alta resistencia
criptográfica frente a los métodos de criptoanálisis más fuertes, en
particular, al criptoanálisis diferencial tal como se describe, por
ejemplo, en el trabajo (Biham E., Shamir A., Differential
Cryptanalysis of DES-like Cryptosystems/Journal of
Cryptology, v. 4, n. 1, 1991, páginas 3 a 72).
La esencia de la presente invención se explica a
continuación en mayor detalle por medio de algunas de sus
realizaciones realizadas con referencias a los dibujos adjuntos.
\vskip1.000000\baselineskip
La figura 1 es un diagrama generalizado de
conversión criptográfica según el método reivindicado.
La figura 2 es un esquema de encriptación
correspondiente al ejemplo 2.
La figura 3 es un esquema de conversión
unilateral correspondiente al ejemplo 3.
\vskip1.000000\baselineskip
La invención se aplica con la ayuda de un
diagrama generalizado de conversión criptográfica de bloques de
datos según el método reivindicado presentado en la figura 1, en el
que: B es el bloque que está convirtiéndose, b_{1},
b_{2}, ..., b_{n} son los subbloques que están convirtiéndose F es un bloque de operación que efectúa modificaciones en los subbloques, f es un bloque de operación que efectúa la generación de vectores binarios, V_{0} es el valor inicial del vector binario. El bloque de datos de entrada digitales de L bits, en el que L es el número de dígitos binarios en el bloque, se subdivide en N \geq 2 subbloques cada uno de los cuales tiene el tamaño de L/N bits. La línea continua se corresponde con la transferencia de subbloques que están convirtiéndose, la línea discontinua se corresponde con la transferencia del vector binario.
b_{2}, ..., b_{n} son los subbloques que están convirtiéndose F es un bloque de operación que efectúa modificaciones en los subbloques, f es un bloque de operación que efectúa la generación de vectores binarios, V_{0} es el valor inicial del vector binario. El bloque de datos de entrada digitales de L bits, en el que L es el número de dígitos binarios en el bloque, se subdivide en N \geq 2 subbloques cada uno de los cuales tiene el tamaño de L/N bits. La línea continua se corresponde con la transferencia de subbloques que están convirtiéndose, la línea discontinua se corresponde con la transferencia del vector binario.
Los bloques se transforman alternativamente
modificándose con la utilización del bloque F de operación que se
utiliza en las conversiones del valor del vector binario que
condiciona la dependencia del valor de salida del subbloque que
está convirtiéndose sobre el valor del vector binario. El bloque f
de operación para convertir el vector binario utiliza el valor del
subbloque que se ha convertido en la etapa anterior, es decir, el
bloque de operación genera un vector binario según la estructura de
uno de los subbloques que está convirtiéndose y según el valor del
vector binario que tuvo en la etapa previa de conversión del
subbloque utilizando el vector binario. Esto condiciona la
dependencia del valor del vector binario sobre los datos que se
están convirtiendo. La realización de procedimientos de conversión
definidos por la función F sobre un subbloque se denominará como
una etapa de generación del vector binario. Una etapa de conversión
de subbloques incluye una etapa de generación de vectores binarios
y una etapa de modificación de subbloques. Las etapas de conversión
se ejecutan secuencialmente sobre todos los subbloques seguidas por
una permutación de subbloques.
En casos particulares de la implementación del
método reivindicado, la permutación de subbloques puede no
utilizarse. El realizar N etapas de modificación de subbloques, N
etapas de generación de vectores binarios y permutación de
subbloques mostradas en la figura 1, constituye una fase de la
conversión. El valor del vector binario después de la etapa N-ésima
de la generación de los vectores binarios sirve como un valor
inicial del vector binario para la siguiente fase de la conversión
en la construcción de funciones unilaterales de conversión de
bloques de datos digitales de L bits. Al crear cifras el valor
inicial del vector binario para cada fase se genera dependiendo de
la clave secreta. El número de fases de conversión puede definirse
dependiendo de versiones específicas de formación de los bloques F
y f de operación. Lo que es importante en el diagrama anterior, es
que el vector binario se genera dependiendo de su estructura en la
etapa anterior de la conversión de subbloques utilizando el vector
binario.
Por conversión de subbloques utilizando el
vector binario se entiende (1) ejecutar una operación binaria cuyos
operandos son un subbloque y un vector binario, o (2) ejecutar una
operación unaria sobre un subbloque (por ejemplo, permutación o
rellenado de bits), cuya modificación se selecciona dependiendo del
valor del vector binario, o (3) ejecutar una operación binaria
realizada sobre un subbloque y una subclave cuyo número depende del
valor del vector binario. Por ejemplo, en el primer caso esto puede
ser la conversión de un subbloque B de 32 bits cuando se asigna a
este bloque el valor igual al resultado de la suma de módulo
2^{32} del subbloque B y el vector binario V: B \leftarrow B +
V. En el segundo caso, esto puede ser una operación de
desplazamiento a la izquierda cíclico realizada sobre un subbloque
B sobre un número de órdenes igual al valor del vector binario
expresado analíticamente con la relación B \leftarrow b <
\langle\langle\langle V. En el tercer caso, esto puede ser,
por ejemplo, una conversión fijada por la expresión B \leftarrow
B \oplus Q_{V1} en la que Q_{v} es una subclave con el número
v calculado por el valor del vector binario v = V mod 2^{11}. La
última relación define la selección del número igual al valor de los
11 dígitos de orden más bajo del vector binario.
Un caso especial importante de la segunda
versión del vector binario utilizado en conversiones de subbloques
es realizar una operación de relleno dependiente del vector binario
sobre un subbloque. Tal tipo de relleno puede utilizarse para
definir una pluralidad de tablas de relleno diferentes, a las que se
asigna a cada una un número ordinal, y para realizar la operación
de relleno sobre el subbloque en el que se utiliza la tabla, cuyo
número se selecciona dependiendo del valor V, por ejemplo, cuando se
utilizan 32 tablas de relleno, el número de la tabla puede
calcularse mediante la fórmula v = V mod 2^{5}. El significado de
seleccionar la tabla de relleno que se utiliza para realizar la
operación de relleno en el subbloque en la etapa actual según un
vector binario especialmente generado consiste en hacer una
selección indefinida de tablas de relleno indefinida para cada
etapa de conversión de subbloques que mejora la resistencia de la
conversión criptográfica.
Por generación de vectores binarios se entiende
un registro de una cierta secuencia de bits activados o desactivados
creada, por ejemplo, para un registro o una celda de memoria de un
ordenador. Por generación de vectores binarios dependiendo de su
estructura en la etapa de conversión de subbloques anterior
utilizando el vector binario se entiende una especificación de
dependencia del valor actual del vector binario que está generándose
sobre el valor que el vector binario tenía en la etapa anterior, en
funcionamiento, en la conversión de los subbloques de datos. Por
ejemplo, supóngase que el subbloque B_{i} se ha convertido
utilizando el valor V de vector binario. Antes de la utilización
del vector binario en cualquier otra etapa de conversión, por
ejemplo, del subbloque B_{j}, el vector binario puede generarse
según la expresión V \leftarrow V + Q_{b}, en la que b =
B_{i} mod 2^{11}, dependiendo el número de subclave calculado
del valor del subbloque B_{j}.
La posibilidad de implementación técnica del
método reivindicado se explica con los siguientes ejemplos
específicos de su realización.
Ejemplo
1
Este ejemplo es una versión del método
reivindicado que ejecuta el cifrado de bloques de datos de 512 bytes
(4096 bits). La utilización de tal tamaño de bloques de entrada
está condicionada por el hecho de que este tamaño de bloque es
estándar en los sistemas informáticos. Cuando se utilizan cifras de
bloques que procesan bloques de tal tamaño, existe la posibilidad
de acceso arbitrario a los datos almacenados en el soporte magnético
integrado en una forma encriptada. En este ejemplo, se utiliza una
clave secreta de 8192 bytes representada en la forma de la
totalidad de 2048 subclaves numeradas de 32 bits {Q_{v}} en la que
v = 0, 1, 2, ..., 2047. La clave secreta se forma, por ejemplo,
copiándola del soporte magnético a la memoria de trabajo del
ordenador. La conversión criptográfica según el ejemplo 1 se
describe con el siguiente algoritmo.
Algoritmo 1: Cifrado de bloques de 4096
bits.
Entrada: bloque de 4096 bits representado como
una totalidad de 128 subbloques de 32 bits {B_{1}, B_{2}, ...,
B_{128}}.
- 1.
- Fijar el número del bloque que está procesándose i = 1 y los valores iniciales de los vectores binarios V_{1}, V_{2} y V_{3}, y v: V_{1} \leftarrow Q_{1}; V_{2} \leftarrow Q_{2}; V_{3} \leftarrow Q_{3}; v \leftarrow 79.
- 2.
- Generar el vector binario v según la estructura del vector binario V_{1}: v \leftarrow v \oplus (V_{1} mod 2^{11}), en la que "\oplus" es la operación de suma de módulo 2.
- 3.
- Generar el vector binario V_{2}: V_{2} \leftarrow [(V_{2} + Q_{V}) \oplus V_{1}]\rangle\rangle\rangle, donde "+" es la operación de suma de módulo 2^{32}.
- 4.
- Generar el vector binario v según la estructura del vector binario V_{2}: v \leftarrow V \oplus (V_{2} mod 2^{11}).
- 5.
- Generar el vector binario V_{3}: V_{3} {[V_{3} \rangle\rangle\rangle V_{2}) \oplus Q_{v}] - V_{1}} \rangle\rangle\rangle 22, donde "-" designa la operación de resta de módulo 2^{32}.
- 6.
- Generar el vector binario v según la estructura del vector binario V_{3}: v \leftarrow v \oplus (V_{3} mod 2^{11}).
- 7.
- Generar el vector binario V_{1}: V_{1} \leftarrow V_{1} + Q_{V}.
- 8.
- Convertir el subbloque B_{1}: B_{1} \leftarrow [(B_{1} \langle\langle\langle V_{2}) \ominus V_{3}] + V,.
- 9.
- Generar el vector binario V_{1}: V_{1} \leftarrow B_{1}.
- 10.
- Convertir el subbloque B_{1}: B_{1} \leftarrow B_{1} + V_{2}.
- 11.
- Si i#128, modificar el valor del número i: i \leftarrow i + 1 y pasar a la etapa 2.
- 12.
- Permutar los subbloques en orden inverso.
Salida: bloque de texto de cifras de 4096 bits
en la forma de la totalidad de subbloques {B_{1}, B_{2}, ...,
B_{128}} convertidos.
El algoritmo 1 describe una fase de cifrado.
Después de la primera fase, se realiza una segunda fase de cifrado
tomando el bloque de salida de la primera fase como un bloque de
entrada para la segunda fase. Después, se realiza una tercera
(última) fase de cifrado tomando el bloque de salida de la segunda
fase como un bloque de entrada de la tercera fase. Cuando se
implementa en software, la velocidad de encriptación que utiliza
las tres fases de conversión es de aproximadamente 30 Mbit/s para el
microprocesador Pentium/200.
Ejemplo
2
Considérese una realización del método
reivindicado utilizando operaciones de relleno definidas por las
tablas de relleno. Permítase que se ejecuten las operaciones de
relleno en los subbloques de datos que tengan una longitud de k
bits, donde k es un entero. Entonces, para definir la operación de
relleno que transforma un subbloque de entrada de k bits en un
subbloque de salida de k bits, será necesario utilizar una tabla que
contenga dos filas de números:
| 0 | 1 | 2... | N-1 |
| a_{0} | a_{1} | a_{2} | a_{N-1}, |
donde N =
2^{k}.
La tabla dada contiene, en su fila inferior,
todos los posibles valores del bloque de k bits de manera uniforme
en un momento dado pero en un orden arbitrario. La secuencia
apropiada de la posición de los números en la línea inferior define
una versión específica de la tabla de relleno y, por consiguiente,
también una versión específica de la operación de relleno realizada
utilizando esta tabla. La operación de relleno se realiza de la
siguiente manera. Se selecciona un número de la fila superior que
sea igual al valor del bloque de entrada. El valor en la línea
inferior situado debajo de este número se selecciona como un bloque
de salida. Así, la tabla de relleno puede ubicarse en una memoria
de trabajo de un ordenador como una notación secuencial de palabras
de ordenador de k bits ubicadas en celdas con las direcciones
w_{0}, w_{1}, w_{2}, ..., w_{N-1}. En este
caso, el valor de bloque de entrada b sirve para calcular la
dirección de la palabra w_{0} + b que se toma como un bloque de
entrada. Este método de representación de la tabla de relleno
requiere la utilización de un tamaño de memoria igual a kN
bits.
Selecciónese el número de tablas de relleno
igual a 2^{L} (el tamaño de la memoria requerida en este caso
será de 2^{L}kN bits) y dispóngase las tablas de relleno de manera
ininterrumpida una tras otra. Tómese como una dirección de la tabla
con el número v el valor de la dirección w_{0} de su primera
palabra de k bits. Supóngase que el número de la tabla con el
número 0 sea s. En este caso, la dirección de la tabla de relleno
con un número arbitrario v es s + vN. Si se define un vector binario
que determine el número de la tabla de relleno actual, v, y el
subbloque de entrada actual para realizar la operación de relleno,
entonces se ejecuta reemplazando el bloque de entrada actual por
una palabra de k bits ubicada en la dirección s + vN + b, donde b es
el valor del subbloque sobre el que se realiza la operación de
relleno actual. Al utilizar esta relación, es fácil definir una
selección de la tabla de relleno que tenga el número v y realizar
relleno en el subbloque con el valor b. En el caso considerado, el
establecimiento de dependencia de las tablas de relleno sobre el
valor del vector binario y la realización de la operación de relleno
se efectúan por microprocesador muy rápidamente cuando se
seleccionan valores de los parámetros L y k apropiados, por ejemplo,
cuando L = 5 y
k = 8. Con estos parámetros, para ubicar las tablas de relleno se requiere una memoria de trabajo de 8 Kbytes, lo que es aceptable ya que los ordenadores modernos tienen una memoria de trabajo con un tamaño muy superior a este valor (de 1 a 64 Mbytes y superior).
k = 8. Con estos parámetros, para ubicar las tablas de relleno se requiere una memoria de trabajo de 8 Kbytes, lo que es aceptable ya que los ordenadores modernos tienen una memoria de trabajo con un tamaño muy superior a este valor (de 1 a 64 Mbytes y superior).
Supóngase que L = 5 y k = 8, es decir, existen
32 tablas que definen las operaciones de relleno sobre subbloques
de datos de 8 bits. Supóngase que se forma una clave secreta
representada como una totalidad de 7R subclaves de
8 bits
8 bits
donde R es el número de fases de
cifrado. Durante la r-ésima fase de cifrado, se utiliza a r-ésima
fila de
subclaves.
Desígnese las tablas de relleno empleadas de la
siguiente manera: T_{0}, T_{1}, T_{2}, ..., T_{31}, y la
operación de relleno definida por la tabla T_{V} como S_{V},
donde v = 0, 1, 2, ..., 31. Las tablas de relleno T_{0}, T_{1},
T_{2}, ..., T_{15} pueden seleccionarse de manera arbitraria,
mientras que las tablas T_{16}, T_{17}, ..., T_{31} se toman
de tal manera que las operaciones de relleno S_{V} y
S_{31-V} son mutualmente inversas. La última
condición se cumple cuando los pares de tablas T_{16} y
T_{15}, T_{17} y T_{14}, T_{18} y T_{13}, ..., T_{31} y
T_{0}, proporcionarán operaciones de relleno mutuamente inversas.
Para un conjunto de tablas de relleno arbitrarias T_{0}, T_{1},
T_{2}, ..., T_{15}, es fácil crear tablas correspondientes a
operaciones de relleno inversas. Por ejemplo, para la operación de
relleno fijada por la siguiente tabla
| 0 | 1 | 2... | 255 |
| a_{0} | a_{1} | a_{2}... | a_{255}, |
mientras que el relleno inverso se fija por la
tabla
| 0 | 1 | 2... | 255 |
| Z_{0} | Z_{1} | Z_{2} | Z_{255}, |
en la que la fila (z_{0},
z_{1}, z_{2}, ..., z_{255}) resulta ser la fila superior
después de que se han ordenado las columnas de las tablas anteriores
en el orden de números crecientes en la fila
inferior.
La figura 2 muestra el diagrama de la primera
fase de cifrado. En la figura 2, la línea vertical continua se
corresponde con la transmisión de subbloques de datos de 8 bits, la
línea discontinua corresponde a la transmisión de subbloques de 5
bits, la línea horizontal continua corresponde a la transmisión de
subclaves de 8 bits. La operación de suma bit a bit de módulo 2 se
designa mediante el signo "\oplus", v designa el número de
la tabla de relleno seleccionada, el bloque S designa la operación
de relleno, k_{11}, k_{12}, ..., k_{17} son las subclaves
utilizadas durante la primera fase. Las fechas sobre las líneas
indican la dirección de la transmisión de la señal. El ejemplo 2
corresponde a una encriptación de bloques de datos digitales con un
tamaño de 64 bits. El cifrado se realiza como sigue. Un bloque de
entrada se subdivide en 8 subbloques, b_{0}, b_{1}, b_{2},
..., b_{7}, cada uno con un tamaño de 8 bits. Después, se genera
un vector binario v que tiene el valor de los 5 bits de orden
inferior del subbloque b_{0}: v \leftarrow mod 2^{5}. Después
se realiza la operación de suma bit a bit de módulo 2 sobre el
subbloque b_{1}, y la subclave k_{11} y el valor de salida de
esta operación se asigna al bloque b1 que puede escribirse
analíticamente como sigue: b_{1} \leftarrow b_{1} \ominus
r_{11}. Entonces, según la tabla de relleno con el número v se
lleva a cabo la operación sobre el subbloque b_{1}: b_{1}
\leftarrow S_{V} (b_{1}). Después, según el valor b_{1}, se
genera un vector binario v, v: v \leftarrow v \oplus (b_{1}
mod 2^{5}), por el que el nuevo valor del vector binario depende
de su valor anterior. A continuación, se realiza la conversión del
subbloque b_{2}: b_{2} \leftarrow b_{2} \oplus k_{12} y
entonces b_{2} \leftarrow S_{V}(b_{2}).
De manera similar se lleva a cabo la conversión
de los subbloques b_{3}, b_{4}, b_{5}, b_{6} y b_{7}.
Durante la última etapa de cada fase de cifrado, los subbloques se
permutan en el orden inverso, es decir, los bloques b_{7} y
b_{0}, b_{6} y b_{1}, b_{5} y b_{2}, b_{4} y b_{3} se
intercambian por parejas.
La segunda fase se realiza de manera similar,
excepto que se utiliza la segunda fila de subclaves en lugar de la
primera fila de subclaves. Entonces se lleva a cabo la tercera fase
del cifrado utilizando la tercera fila de subclaves, etc. Teniendo
esto en cuenta, se realizan R fases de cifrado cuando R = 4. Cuando
se implementa en software, esta realización del método reivindicado
proporciona una velocidad de encriptación de aproximadamente 25
Mbit/s para el microprocesador Pentium/200. Si se requiere, puede
fijarse otro número de fases, por ejemplo, R = 2, 3, 5, 6.
Ejemplo
2
El ejemplo se describe mediante al siguiente
algoritmo.
Algoritmo
2.
Entrada. Un bloque de entrada de datos digitales
de 64 bits representado como una concatenación de subbloques de 8
bits b_{0} | b_{1} | b_{2} | b_{3} | b_{4} |
b_{5} | b_{6} | b_{7} en la que el signo "|"
denota la operación de concatenación.
- 1.
- Fijar el número de fases de cifrado R = 4 y el contador del número de fases r = 1.
- 2.
- Fijar el contador i = 1.
- 3.
- Generar el vector binario v: v \leftarrow b_{i-1} mod 2^{5}.
- 4.
- Convertir subbloque b_{i}: b \leftarrow b_{i} \oplus k_{ri}, b_{i} \leftarrow S_{V} (b_{i}), donde la operación de relleno S_{V} se realiza utilizando la tabla de relleno con el número v.
- 5.
- Generar el vector binario v: v \leftarrow v \oplus (b_{i} mod 2^{5}).
- 6.
- Si i \neq 7, entonces incrementar i \leftarrow i + 1 y pasar a la etapa 4.
- 7.
- Si r \neq R, entonces incrementar r \leftarrow r + 1. Si no, PARAR.
- 8.
- Permutar los subbloques en orden inverso y pasar a la etapa 3.
Salida: bloque de texto de cifras de 64
bits.
En este ejemplo, se observa que el número de la
tabla de relleno empleada depende de los bloques que están
convirtiéndose y no está predeterminado por la etapa de conversión
actual, es decir, no se conoce de antemano la operación de relleno
para todas las etapas de conversión. Se determina por una clave
secreta y el bloque de datos que está convirtiéndose. El descifrado
se lleva a cabo de manera similar y se describe mediante el
siguiente algoritmo.
Algoritmo
3.
Entrada: bloque de texto de cifras de entrada de
64 bits b_{0} | b_{1} | b_{2} | b_{3} | b_{4} |
b_{5} | b_{6} | b_{7}.
- 1.
- Fijar el número de fases de cifrado R = 4 y el contador del número de fases r = 1.
- 2.
- Fijar el contador i = 1.
- 3.
- Generar el vector binario v: v \leftarrow b_{i-1} mod 2^{5}.
- 4.
- Almacenar el número del b_{i} en la variable g: g \leftarrow b_{i}. Convertir el subbloque b_{i}: b_{i} \leftarrow S_{31-V} (b_{i}), b_{1} \leftarrow b_{i} \oplus k_{r'i}, donde r' = 5-r.
- 5.
- Generar el vector binario v: v \leftarrow v \oplus (g mod 2^{5}).
- 6.
- Si i \neq 7, entonces incrementar i \leftarrow i + 1 y pasar a la etapa 4.
- 7.
- Si r \neq R, entonces incrementar r \leftarrow r + 1. Si no, PARAR.
- 8.
- Permutar los subbloques en orden inverso y pasar a la etapa 3.
Salida: bloque de 64 bits de texto original.
Los anteriores algoritmos de cifrado y
descifrado pueden modificarse fácilmente para convertir bloques de
datos de otro tamaño, por ejemplo, 128 y 256 bits.
Ejemplo
3
Este ejemplo se refiere a la creación de una
función unilateral basada en el método reivindicado para la
conversión criptográfica. Como en los ejemplos 1 y 2, se supone la
utilización de 32 tablas de relleno T_{0}, T_{1}, T_{2}, ...,
T_{31}. Se supone que se conocen las tablas de relleno y no se
utilizan claves secretas. La función unilateral se proporciona por
el algoritmo 4. La secuencia de operaciones de conversión de los
subbloques de datos para una única fase de conversión se muestra en
la figura 2.
Algoritmo
4.
Entrada. Bloque de datos de entrada de 64 bits
representado como una concatenación de subbloques de 8 bits
b_{0} | b_{1} | b_{2} | ... | b_{7}.
b_{0} | b_{1} | b_{2} | ... | b_{7}.
- 1.
- Fijar el número de fases de conversión R = 8, el contador del número de fases r = 1 y el valor inicial del vector binario v = 13.
- 2.
- Fijar el contador i = 1.
- 3.
- Generar el vector binario v: v \leftarrow v \oplus (b_{i-1} mod 2^{5)}.
- 4.
- Convertir el subbloque b_{i-1}: b_{i-1} \leftarrow b_{i-1} \rangle\rangle\rangle r, b_{i-1} S_{V} (b_{i-1}).
- 5.
- Si i \neq 8, entonces incrementar i \leftarrow i + 1 y pasar a la etapa 3.
- 6.
- Permutar los subbloques b_{0}, b1, ..., b_{7} en orden inverso.
- 7.
- Si r \neq R, entonces incrementar r \leftarrow + 1 y pasar a la etapa 2. Si no, PARAR.
Salida: valor de 64 bits de la función F.
De manera similar, es posible crear una función
unilateral para convertir un bloque de datos de 128 bits que puede
utilizarse para aplicar métodos hash a los datos.
Los ejemplos anteriores muestran que el método
propuesto de conversiones criptográficas de bloques de datos
digitales es técnicamente viable y permite resolver el problema
actual.
El método reivindicado puede implementarse, por
ejemplo, en ordenadores personales y proporciona la posibilidad de
crear a partir de él módulos software de encriptación de alta
velocidad y de reemplazar equipos de encriptación especializados
costosos por un ordenador personal dotado de un sistema software de
alta velocidad de encriptación.
Claims (4)
1. Método para la conversión criptográfica de
bloques (B) de entrada de L bits de datos digitales en bloques de
salida de L bits, que comprende una pluralidad de fases, incluyendo
cada fase las etapas de
subdividir un bloque de datos en N \geq 2
subbloques (b1 ... b_{N}),
realizar una primera etapa de conversión de
confusión de subbloques sobre un primer subbloque, primera etapa
que comprende utilizar al menos un vector binario para modificar el
primer subbloque, y
realizar una segunda etapa de conversión de
confusión de subbloques sobre un segundo subbloque, posterior a la
primera etapa de conversión de confusión de subbloques, segunda
etapa que comprende generar al menos un vector binario (V)
dependiendo del valor de uno de los subbloques (b1 ... b_{N}) y
del valor del vector binario utilizado en la primera etapa de
conversión de confusión de subbloques, y modificar el segundo
subbloque utilizando el vector binario (V).
2. Método según la reivindicación 1,
caracterizado porque se generan dos vectores binarios y uno
de ellos se convierte utilizando una operación de desplazamiento
cíclico sobre un número de bits que es igual al valor de dicho
segundo vector binario.
3. Método según la reivindicación 1,
caracterizado porque uno de dichos subbloques se modifica
aplicándole una operación de desplazamiento cíclico sobre un número
de bits que es igual al valor actual del vector binario.
4. Método según la reivindicación 1,
caracterizado porque en la conversión de confusión de
subbloques se utilizan tablas de transformación cuyo número es T
\geq 2, calculándose el número de tabla v según dicho vector
binario y modificándose dicho subbloque utilizando la operación de
transformación definida por dicha tabla v-ésima.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/RU1997/000394 WO1999000930A1 (en) | 1997-11-28 | 1997-11-28 | Method for the cryptographic conversion of l-bit input blocks of digital data into l-bit output blocks |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2293665T3 true ES2293665T3 (es) | 2008-03-16 |
Family
ID=20130174
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES97951348T Expired - Lifetime ES2293665T3 (es) | 1997-11-28 | 1997-11-28 | Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits. |
Country Status (10)
| Country | Link |
|---|---|
| US (1) | US7142673B1 (es) |
| EP (1) | EP1043863B1 (es) |
| JP (1) | JP2001509608A (es) |
| KR (1) | KR100350207B1 (es) |
| AT (1) | ATE363783T1 (es) |
| DE (1) | DE69737773D1 (es) |
| ES (1) | ES2293665T3 (es) |
| PL (1) | PL341508A1 (es) |
| UA (1) | UA55496C2 (es) |
| WO (1) | WO1999000930A1 (es) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070061835A1 (en) * | 2005-08-05 | 2007-03-15 | Realnetworks, Inc. | System and method for registering users and devices |
| KR100972517B1 (ko) * | 2008-02-28 | 2010-07-28 | 쌍용자동차 주식회사 | 자동차용 시트의 엑티브 헤드레스트 |
| CN104022872B (zh) * | 2014-04-09 | 2015-03-25 | 广州赛意信息科技有限公司 | 数据加密方法 |
| US9774443B2 (en) * | 2015-03-04 | 2017-09-26 | Apple Inc. | Computing key-schedules of the AES for use in white boxes |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CH558993A (de) * | 1973-03-19 | 1975-02-14 | Patelhold Patentverwertung | Verfahren und einrichtung zur verschluesselten nachrichtenuebertragung. |
| DE3905667A1 (de) * | 1989-02-24 | 1990-08-30 | Ant Nachrichtentech | Verfahren zum ver- und entschluesseln eines nachrichtenstromes |
| DE4016203A1 (de) * | 1990-05-19 | 1991-11-21 | Rolf Prof Dr Trautner | Verfahren zur blockweisen chiffrierung von digitalen daten |
| US5142578A (en) * | 1991-08-22 | 1992-08-25 | International Business Machines Corporation | Hybrid public key algorithm/data encryption algorithm key distribution method based on control vectors |
| RU2024209C1 (ru) * | 1991-10-30 | 1994-11-30 | Борис Владимирович Березин | Устройство шифрования двоичной информации "албер" |
| RU2032990C1 (ru) * | 1992-04-28 | 1995-04-10 | Борис Владимирович Березин | Способ шифрования двоичной информации |
| JPH0812537B2 (ja) * | 1993-03-11 | 1996-02-07 | 日本電気株式会社 | 暗号化装置 |
| US5511123A (en) * | 1994-08-04 | 1996-04-23 | Northern Telecom Limited | Symmetric cryptographic system for data encryption |
| US5778074A (en) * | 1995-06-29 | 1998-07-07 | Teledyne Industries, Inc. | Methods for generating variable S-boxes from arbitrary keys of arbitrary length including methods which allow rapid key changes |
| EP0839418B1 (en) * | 1996-05-20 | 2003-05-02 | Koninklijke Philips Electronics N.V. | Cryptographic method and apparatus for non-linearly merging a data block and a key |
| US6031911A (en) * | 1996-07-18 | 2000-02-29 | Entrust Technologies, Ltd. | Practical S box design |
| US6301362B1 (en) * | 1998-06-12 | 2001-10-09 | International Business Machines Corporation | Method and apparatus for cryptographically transforming an input block into an output block |
| US6937727B2 (en) * | 2001-06-08 | 2005-08-30 | Corrent Corporation | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
-
1997
- 1997-11-28 DE DE69737773T patent/DE69737773D1/de not_active Expired - Lifetime
- 1997-11-28 UA UA2000063692A patent/UA55496C2/uk unknown
- 1997-11-28 US US09/554,107 patent/US7142673B1/en not_active Expired - Fee Related
- 1997-11-28 ES ES97951348T patent/ES2293665T3/es not_active Expired - Lifetime
- 1997-11-28 KR KR1020007005721A patent/KR100350207B1/ko not_active Expired - Fee Related
- 1997-11-28 JP JP2000500742A patent/JP2001509608A/ja active Pending
- 1997-11-28 PL PL97341508A patent/PL341508A1/xx unknown
- 1997-11-28 AT AT97951348T patent/ATE363783T1/de not_active IP Right Cessation
- 1997-11-28 WO PCT/RU1997/000394 patent/WO1999000930A1/ru not_active Ceased
- 1997-11-28 EP EP97951348A patent/EP1043863B1/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| UA55496C2 (uk) | 2003-04-15 |
| DE69737773D1 (de) | 2007-07-12 |
| WO1999000930A1 (en) | 1999-01-07 |
| US7142673B1 (en) | 2006-11-28 |
| EP1043863A1 (en) | 2000-10-11 |
| EP1043863A4 (en) | 2002-05-22 |
| KR20010032479A (ko) | 2001-04-25 |
| KR100350207B1 (ko) | 2002-08-28 |
| EP1043863B1 (en) | 2007-05-30 |
| ATE363783T1 (de) | 2007-06-15 |
| PL341508A1 (en) | 2001-04-23 |
| JP2001509608A (ja) | 2001-07-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5623548A (en) | Transformation pattern generating device and encryption function device | |
| Brown et al. | Improving resistance to differential cryptanalysis and the redesign of LOKI | |
| JP5055993B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
| CN101162557B (zh) | 密码处理装置和密码处理方法 | |
| JP6406350B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
| JP2015191106A (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
| RU2124814C1 (ru) | Способ шифрования блоков цифровых данных | |
| US7801307B2 (en) | Method of symmetric key data encryption | |
| JP2002032018A (ja) | データ暗号化標準アルゴリズムを利用した暗号化装置 | |
| JP3044565B2 (ja) | 暗号装置 | |
| TWI546731B (zh) | 輸入-相依隨機數產生裝置及其方法 | |
| JP2015191107A (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
| ES2287978T3 (es) | Metodo para la conversion criptografica de bloques de datos binarios. | |
| CN105472602A (zh) | 一种加密装置及加密方法 | |
| ES2293665T3 (es) | Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits. | |
| JP4470135B2 (ja) | 擬似乱数生成システム | |
| RU2188513C2 (ru) | Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки | |
| JP5182295B2 (ja) | 暗号化装置及び暗号処理方法 | |
| RU2140713C1 (ru) | Способ блочного криптографического преобразования двоичной информации | |
| KR101076747B1 (ko) | 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 | |
| RU2140709C1 (ru) | Способ криптографического преобразования блоков цифровых данных | |
| CN111510296B (zh) | Sm4/aes双模加密电路 | |
| CN212115336U (zh) | Sm4/aes双模加密电路 | |
| RU2140716C1 (ru) | Способ криптографического преобразования блоков цифровых данных | |
| KR100308893B1 (ko) | 엘.에프.에스.알을 이용한 확장 알.씨.4 암호화 방법 |