ES2291675T3 - Metodo de generar un cifrado de flujo utilizando claves multiples. - Google Patents
Metodo de generar un cifrado de flujo utilizando claves multiples. Download PDFInfo
- Publication number
- ES2291675T3 ES2291675T3 ES03757595T ES03757595T ES2291675T3 ES 2291675 T3 ES2291675 T3 ES 2291675T3 ES 03757595 T ES03757595 T ES 03757595T ES 03757595 T ES03757595 T ES 03757595T ES 2291675 T3 ES2291675 T3 ES 2291675T3
- Authority
- ES
- Spain
- Prior art keywords
- order
- function
- octet
- random
- octets
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000003252 repetitive effect Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000007620 mathematical function Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241000321453 Paranthias colonus Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000126 substance Substances 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/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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
- Saccharide Compounds (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
Un método de generar un cifrado de flujo que tiene x octetos de longitud, cuyo método comprende los pasos de: i) seleccionar un número n que representa varias claves secundarias, y n números primos singulares mn, cada uno de los cuales representa una clave secundaria no repetitiva singular de mn octetos de longitud; ii) generar n números aleatorios singulares, cada uno de los cuales tiene mn octetos de longitud no repetitiva; iii) generar un número R aleatorio de orden n+1; iv) para cada octeto cuya posición en dicho número aleatorio de orden n sea p, siendo p = Modmn(R), aplicar consecutivamente una función a cada octeto de orden p de cada uno de dichos n números aleatorios para generar un valor; v) incrementar en 1 del valor de p; y vi) repetir los pasos iv) y v) y concatenar cada valor citado obtenido en el paso iv) al valor previo obtenido en el paso iv) hasta que se haya obtenido dicho cifrado de flujo de x octetos de longitud.
Description
Método de generar un cifrado de flujo utilizando
claves múltiples.
El invento se refiere al campo de los métodos de
cifrado y, más particularmente, a un método de generar un cifrado
de flujo para cifrar comunicaciones electrónicas que pueden ser
extremadamente largas.
En la técnica son bien conocidos diversos
métodos de cifrado para proporcionar comunicaciones electrónicas
seguras. En los métodos de cifrado simétrico, el emisor y el
receptor utilizan el mismo código o clave para cifrar y descifrar
el mensaje. El único cifrado completamente seguro que, posiblemente,
no puede romperse o descifrarse es el de "libreta de un solo
uso" (OTP). Un OPT toma una cadena de bits que contiene el
mensaje de texto común y una cadena de bits aleatoria, secreta, de
la misma longitud que el texto (la clave). Para cifrar el texto con
la clave, cada par de bits de la clave y del texto son sometidos en
secuencia a la acción de la función O-exclusiva
para obtener el bit de texto cifrado. El texto cifrado no puede
descifrarse si la clave es realmente aleatoria y se la mantiene en
secreto frente a terceros no autorizados. El problema que se
plantea con este método es que la clave debe tener, al menos, la
misma longitud que el mensaje. Si se utiliza una clave más corta y
se la repite, entonces puede romperse el cifrado. En algunos casos,
el volumen de datos que es necesario cifrar es extremadamente
grande.
El documento US 4.058.673 describe un método
para generar un cifrado de flujo con una longitud de x bits. i) Se
selecciona un número n que representa varias claves secundarias.
Además, se seleccionan n números primos relativamente singulares
mn, cada uno de los cuales representa una clave secundaria singular
con mn bits de longitud. ii) Se generan N números singulares cada
uno de los cuales tiene una longitud de mn bits. iii) Se genera un
número R (n + 1), iv) Para cada bit cuya posición en dicho enésimo
número aleatorio corresponde a p, siendo p<mn y siendo p función
de R, se aplica una función de cada bit de orden p de cada uno de
dichos n números aleatorios para generar un valor. v) Se incrementa
en uno el valor de p. vi) Se repiten los pasos iv) y v) y cada
valor obtenido en el paso iv) se concatena con el valor previo
obtenido en el paso iv) hasta que se obtiene el cifrado de flujo de
x bits de longitud.
Por tanto, existe la necesidad de un método de
generar una clave aleatoria, u OTP, que sea de longitud variable y
que permita el cifrado de cantidades muy grandes de datos.
El presente invento proporciona un método y un
producto de programa de ordenador de acuerdo con las
reivindicaciones adjuntas.
El invento proporciona, además, un producto de
programa de ordenador para llevar a la práctica el método.
En los dibujos, que muestran una realización
preferida del invento:
la Fig. 1 es una ilustración esquemática de un
sistema de ordenador para llevar a la práctica el método del
invento; y
la Fig. 2 es una gráfica de flujo que ilustra el
método del invento.
La Fig. 2 ilustra, mediante una gráfica de
flujo, el método de generar la clave de cifrado del presente
invento. En particular, combinando claves secundarias se forma una
clave de cifrado, un cifrado de flujo no repetitivo de longitud
indefinida denominado en esta memoria superclave. Dependiendo de la
aplicación, pueden especificarse cualquier número n de claves
secundarias K_{1}, K_{2}, ..., K_{n}. Cuanto mayor sea el
número de claves secundarias, mayor será la longitud de la
superclave no repetitiva. La longitud de cada clave secundaria es
un número primo de octetos (preferiblemente números primos mayores
que 10).
El primer paso del proceso consiste en
determinar cómo será de grande una superclave, o cifrado de flujo,
a desplegar. Se seleccionan el número n de claves secundarias y la
longitud m_{n} no repetitiva de cada clave secundaria, en
octetos. Cada una de las claves secundarias tiene una longitud
singular, no repetitiva, es decir, no hay dos claves secundarias
con la misma longitud no repetitiva. De preferencia, las longitudes
no repetitivas de las claves secundarias son números primos de
octetos. Preferiblemente, la longitud de las claves secundarias, en
octetos, son números primos del orden de 2, 3, 5, ..., 1021,
contándose con 172 números primos diferentes en este margen. La
selección puede realizarse manualmente introduciendo el número de
claves secundarias y sus longitudes no repetitivas de números
primos. Alternativamente, el número de claves y sus longitudes no
repetitivas de números primos se programan en una aplicación, o un
programa selecciona al azar el número de claves secundarias y su
longitud no repetitiva. Para n claves secundarias K_{n}, la
longitud no repetitiva de la superclave será
Tamaño(K_{1}) \times Tamaño(K_{2}) \times
Tamaño(K_{3})... \times Tamaño(K_{n}). Por
ejemplo, supongamos que se utilizan 10 claves secundarias con las
siguientes longitudes no repetitivas de números primos:
Clave secundaria 1 = 13 octetos = K_{1}
Clave secundaria 2 = 17 octetos = K_{2}
Clave secundaria 3 = 19 octetos = K_{3}
Clave secundaria 4 = 23 octetos = K_{4}
Clave secundaria 5 = 29 octetos = K_{5}
Clave secundaria 6 = 31 octetos = K_{6}
Clave secundaria 7 = 37 octetos = K_{7}
Clave secundaria 8 = 41 octetos = K_{8}
Clave secundaria 9 = 43 octetos = K_{9}
Clave secundaria 10 = 47 octetos = K_{10}.
La longitud de la superclave no repetitiva
resultante es 13 \times 17 \times 19 \times 23 \times 29
\times 31 \times 37 \times 41 \times 43 \times 47 =
256.186.053.068.611 octetos. Así, utilizando un pequeño número de
claves secundarias, cada pequeña longitud no repetitiva de números
primos da como resultado una superclave no repetitiva,
extremadamente larga. La definición total del tamaño de la
superclave anterior está contenida en 300 octetos (la suma de las
longitudes de las claves secundarias no repetitivas) y la cabecera
(número de claves secundarias y sus longitudes). Así, la definición
total de una superclave será una fracción del tamaño de la
superclave.
Si bien, preferiblemente, la longitud no
repetitiva de cada clave secundaria es un número primo de octetos,
para mejorar la aleatoriedad del cifrado resultante, el método
también servirá si se utilizan longitudes de números no primos, en
tanto el cifrado resultante sea muy grande.
Preferiblemente, para seleccionar el número de
claves secundarias, éste se calcula tomando los dos primeros
dígitos generados por una cadena aleatoria, se aplica una función
mod 50 y se suma 50 para obtener un número de claves de entre 50 y
99.
Cada clave secundaria del proceso de múltiples
claves puede crearse como sigue. Primero, se genera un número
aleatorio que no sea un cuadrado perfecto, preferiblemente mediante
una fuente sumamente aleatoria. Preferiblemente, se trata de un
entero en el margen de 500 a 700 dígitos. Éste sirve como "primer
valor generador" O. se verifica que el valor O seleccionado no
sea un cuadrado perfecto. Si lo es, entonces se generarán valores
aleatorios adicionales hasta que uno de ellos satisfaga este
criterio. El segundo valor generador es un valor de 32 bits que se
utiliza para iniciar la función generadora de valores aleatorios del
ordenador. Los generadores de números aleatorios incluidos en los
sistemas operativos de la mayoría de los ordenadores son
pseudo-aleatorios y no muy robustos. Sin embargo,
estos valores son suficientes como punto de partida. El segundo
número aleatorio P es generado, también, por la función generadora
de números aleatorios del ordenador. Luego, es sometido a la
función mod 100 para fijar el punto de partida. Se calcula la raíz
cuadrada Q del primer valor generador O, obteniendo como resultado
un número Q irracional (uno que se extiende hasta el infinito tras
la coma decimal y no es repetitivo). La cadena de dígitos
resultante tras la coma decimal es potencialmente infinita en cuanto
a longitud, y es sumamente aleatoria. El ordenador desecha los
dígitos por delante de la coma decimal y calcula el número Q hasta
P dígitos tras la coma. Luego, partiendo del dígito de orden P de Q
tras la coma decimal, el ordenador selecciona en secuencia 4
dígitos de una vez y calcula el valor Mod 256 de los 4 dígitos. Esto
da como resultado un valor de 8 bits. Este valor se utiliza como
primer octeto de la clave secundaria. Este proceso se repite con 4
dígitos cada vez, continuando con los siguientes dígitos en
secuencia, hasta que se completa una cadena de datos aleatorios
igual a la longitud no repetitiva de número primo aleatorio de la
clave secundaria que se está creando. Este proceso se repite para
todas las claves secundarias hasta que se han creado las longitudes
no repetitivas de todas las claves secundarias. Cada clave
secundaria se forma, entonces, tomando la cadena no repetitiva de
octetos así creada, y repitiéndola con tanta frecuencia como sea
necesario para formar una clave secundaria de longitud suficiente
para crear la superclave en combinación con las otras claves
secundarias.
El algoritmo para generar las claves secundarias
puede describirse como sigue:
- 1.
- Tratar seed1 (generador1) como la representación decimal de un entero del orden de 500-700 dígitos.
- 2.
- Sea X: = seed1
- 3.
- Sea Y: = \sqrt{X} el número irracional creado extrayendo la raíz cuadrada de X
- 4.
- Sean Z_{1}, Z_{2}, Z_{3}, Z_{4}... los dígitos tras la coma decimal en la representación decimal de Y. Cada Z_{i} está en el margen de 0....9.
- 5.
- Llamar a srand(seed1) //sólo la primera vez
- 6.
- Llamar a rand() para obtener el punto de partida irracional, start.
- 7.
- Sea start: = rand()mod 100. start está en el margen de 0, 1...99.
- 8.
- Descartar Z_{1} y Z_{2} totalmente hasta Z_{start}
- 9.
- Sea tmp: = 10*Z_{(start + 1)} + Z_{(start + 2)}. Descartar los valores usados
- 10.
- Sea n: = 50 + (tmp mod 50), n está en el margen de 50, 51,...99.
- 11.
- Para i: = 1,2,...,n, hacer:
- 12.
- Sea j = 3*(i-1)
- 13.
- Sea tmp el siguiente octeto de la cadena Z
- 14.
- Sea tmp: = 100*Z_{j+1} + 10*Z_{j+2} + Z_{j+3}
- 15.
- sea t: = 172 - (tmp mod 172), t está en el margen de 1,2,..., 172.
- 16.
- Sea u el número primo de orden t entre la secuencia 2,3,5,...,1021.
- 17.
- Si u es igual a cualquiera de 1^{1}, 1^{2},..., 1^{\{i-1\}}, hacer t igual a (t + 1)mod 172 ir a 16
- 18.
- Hacer 1^{i} = u
- 19.
- Siguiente I: ir a 11 hasta que se fijen todos los tamaños de las claves secundarias.
- 20.
- Para i: = 1,2,...,n, hacer:
- 21.
- Para j: = 0,1,2,...,1^{i}, hacer:
- 22.
- Sea k: = 4*j
- 23.
- Sea tmp el siguiente octeto de la cadena Z.
- 24.
- Sea tmp: = (1000*Z_{k} + 100*Z_{k+1} + 10*Z_{k+2} + Z_{k+3})mod 256
- 25.
- Sea s^{i}_{j}:tmp
- 26.
- Siguiente j:Siguiente octeto de clave secundaria
- 27.
- Siguiente I:Siguiente clave secundaria
- 28.
- Para i: = 0,1,2,...,255, hacer:
- 29.
- Sea j: = 4*i
- 30.
- Sea tmp: = (1000*Z_{j} + 100*Z_{+1} + 10*Z_{j+2} + Z_{j+3})mod 256
- 31.
- Si tmp es igual a cualquiera de S[0], S[1],..., S[i-1], fijar a (tmp + 1)mod 256 ir a 31
- 32.
- Hacer S[i]: = tmp
- 33.
- Siguiente i
- 34.
- Sea desplazamiento: = Z_{i}Z_{i+1}...Z_{i+9}
- 35.
- Volver n, (1^{1},1^{2},...,1^{n}),(s^{1},s^{2},...s^{n}), S[256] y desplazamiento
- 36.
- Salvar en fichero de claves y añadir seed1 y valor inicial a base de datos
- 37.
- Incrementar seed1 e ir a 2 // repetir hasta que se creen suficientes claves.
Una vez que se han creado todas las claves
secundarias como antes se ha indicado, se crea la superclave
(cifrado) con la longitud requerida. Esto quiere decir que se
continuará creando la superclave para cifrar los datos asociados a
cifrar y se continuará creando solamente hasta que se hayan cifrado
todos los datos. Primero, se genera un número R aleatorio
("tercer valor generador", o el desplazamiento de partida para
la superclave, en oposición al punto de partida P para el número
Q). Empezando con cualquiera de las n claves secundarias de
longitud m_{n}, se calcula el Modm_{n} de R y el octeto de orden
Modm_{n}(R) de cada clave secundaria es sometido
consecutivamente a una función X/OR (O-exclusiva)
con el correspondiente octeto de orden Modm_{n}(R) de
cada otra clave secundaria. Por ejemplo, si R = 100 y la longitud de
la primera clave secundaria es de 97 octetos y la de la segunda
clave secundaria es de 43 octetos, entonces se selecciona el tercer
octeto de la clave secundaria 1 y se somete a la función
O-exclusiva con el octeto de orden 14 de la clave
secundaria 2 y los correspondientes octetos de las otras claves
secundarias restantes seleccionadas del mismo modo basadas en R. El
proceso se repite hasta que todos los octetos seleccionados de cada
clave secundaria han sido sometidos a la función
O-exclusiva. El valor resultante puede ser sometido,
entonces, a un cifrado de sustitución u otra función de
deslinealización para deslinealizar la cadena de la superclave, como
se describe adicionalmente en lo que sigue. El valor binario
resultante se suma entonces a la superclave por concatenación. El
próximo octeto subsiguiente de la clave secundaria 1 es sometido
entonces a la función O-exclusiva con el siguiente
octeto de la clave secundaria 2 y así sucesivamente. De nuevo, el
proceso se repite hasta que todos los octetos seleccionados de cada
clave secundaria han sido sometidos a la función
O-exclusiva y han sido deslinealizados. El valor
binario resultante de cada función se suma otra vez a la superclave
por concatenación. Si bien se prefiere la función
O-exclusiva, será evidente que pueden aplicarse
otras funciones. Por ejemplo, pueden utilizarse funciones
matemáticas de adición o sustracción. A medida que se genera cada
octeto de la superclave, se cifra entonces el correspondiente
octeto del mensaje de texto común con el octeto correspondiente de
la superclave mediante la función O-exclusiva o
alguna otra función matemática. Una vez que han sido cifrados todos
los octetos del mensaje de texto, termina la generación de la
superclave. Entonces, el mensaje cifrado puede descifrarse
aplicándole la inversa de la función de cifrado y la
superclave.
superclave.
Para ilustrar adicionalmente la generación de la
superclave a partir de las clave secundarias, supongamos que
S^{\{i\}}_{j} designa el octeto de orden j de la "clave
secundaria" de orden i. Supongamos que \ell^{\{i\}} designa
la longitud de la clave secundaria de orden i. Por ejemplo,
podríamos tener \ell^{\{i\}} = 13, \ell^{\{2\}} = 17 y así
sucesivamente. A partir de la "clave secundaria" i creamos la
secuencia sinfín de octetos
Supongamos que S^{\{i\}}_{j} designa el octeto
de orden j de la secuencia anterior, si j es cualquier número
natural de 0 a \infty; el valor más bajo de j como sufijo de
S^{\{i\}}_{j} es Rmódulo \ell{i}, siendo R un número aleatorio.
Entonces, el octeto de orden j de la superclave, denominado Z_{j}
está definido por
Aquí, "\oplus" designa la operación
O-exclusiva. El primer octeto de la superclave
es:
Donde Rmod\ell^{\{i\}} devuelve un entero en
el margen de 0,1,2,...,(\ell^{\{i\}} -1). La "superclave"
tiene un valor j que va de 0 a (\ell^{\{1\}} \times
\ell^{\{2\}} \times \ell^{\{3\}} ... \ell^{\{n\}}
-1).
Supongamos que
P_{0},P_{1},P_{2},P_{3},... sean los octetos del texto, y
C_{0},C_{1,.....} los octetos del texto cifrado, en orden.
Asimismo, Z_{0},Z_{1},..... designan los octetos de la
"superclave" (calculados como ya se ha descrito en lo que
antecede). Definimos el texto cifrado por C_{i}: = P_{i}
O-exclusiva S[Z_{i}]. El texto cifrado se
forma concatenando los octetos C_{0}, C_{1}.... y luego se
devuelve C como resultado del proceso de cifrado. El descifrado,
como es obvio, trabaja a la
inversa.
inversa.
Para cifrar un texto de L octetos, se genera una
superclave de L octetos y se utiliza un contador T de números
grandes para contar el número de octetos del texto. La salida es un
texto cifrado de L octetos. Para descifrar el texto cifrado, se
utiliza el mismo contador T para números grandes y la salida es el
texto de L octetos.
\newpage
Con el fin de reducir la linealidad del texto
cifrado utilizando el presente método, puede aplicarse otro paso a
la superclave antes de cifrar el mensaje de texto. En la realización
preferida, se aplica un cifrado de sustitución a la superclave y la
cadena resultante se utiliza, luego, para cifrar el mensaje de
texto. Por ejemplo, se crea una agrupación de 256 octetos
singulares, de 1 a 256 ordenados aleatoriamente. El primer octeto
de la superclave es sustituido entonces por el valor del octeto de
la posición x + 1 de la superclave, siendo x el primer valor de la
agrupación de 256 octetos. El segundo octeto de la superclave es
sustituido, entonces, por el valor del octeto en posición y + 2 de
la superclave, siendo y el segundo valor de la agrupación de 256
octetos, y así sucesivamente. La agrupación de 256 octetos puede
formarse a partir de una de las claves secundarias, incorporando
octetos de una clave secundaria en la agrupación en tanto no se
repita una entrada anterior en la agrupación.
La linealidad del texto cifrado puede reducirse
también aplicando el cifrado de sustitución al mensaje cifrado
(texto cifrado); sin embargo, es más efectivo aplicar el cifrado de
sustitución a la superclave antes del cifrado. Para romper la
linealidad pueden utilizarse otras utilidades, además del cifrado de
sustitución, por ejemplo utilidades de función no lineal invertible
(INLF) disponibles de SANDIA Labs. Resultan útiles para
proporcionar protección contra el ataque
Berlekamp-Massey.
Aunque, de preferencia, la cadena no repetitiva
aleatoria que forma cada clave secundaria es generada en la forma
descrita en lo que antecede, el método también funcionará si la
cadena no repetitiva de cada clave secundaria es generada,
simplemente, por un generador de números aleatorios para formar cada
clave secundaria, en tanto la longitud total resultante de la
superclave sea lo bastante grande para que la superclave resultante
tenga un tamaño, al menos, doble del de los datos a cifrar.
El método anterior puede utilizarse para
producir un sistema de seguridad personal mediante el cual se
utilice la clave para cifrar ficheros personales que el usuario
desea mantener seguros. En ese caso, no se requerirá método alguno
de distribución de la clave. Cuando se cifra cada fichero se crea un
nuevo fichero cuyo nombre tiene la estructura
{OLDFILENAME}.{OFFSET}.wn
({NOMBRE-ANTIGUO}.{DESPLAZAMIENTO}.wn). El
OLDFILENAME incluye la extensión para permitir un fácil descifrado
y para mantener el mismo formato de fichero por motivos funcionales.
Cuando se cifra cada fichero, es descifrado inmediatamente y
comparado con el original y, luego, se suprimen tanto la copia de
prueba como el fichero original utilizando un proceso de borrado
limpio (se graban "ceros" en todo el fichero y, luego, se
graban "unos" y, luego, se le borra).
Un formato de fichero de clave preferido es como
sigue:
El anterior formato de fichero de clave es
estándar. El único valor diferente es el desplazamiento que se
almacena en una cadena de dígitos decimales que están delineados por
comillas. Un ejemplo de ello sería
"98-7654321", que permite valores que llegan
hasta 1000 dígitos de longitud, lo que evita la reutilización de
secciones de la cadena de clave si el desplazamiento se ejecuta
apropiadamente.
El presente invento se describe en lo que
antecede como un método llevado a la práctica en un ordenador, por
ejemplo para cifrar y descifrar comunicaciones entre ordenadores 14
y 16 en la red 12. También puede incorporarse como un aparato de
hardware para ordenadores, un código de software para ordenadores o
una combinación de ellos. El invento también puede incorporarse
como un medio de almacenamiento legible por ordenador que incorpore
código para llevar a la práctica el invento. Dicho medio de
almacenamiento puede ser un disco duro o flexible, magnético u
óptico, un CD-ROM, lógica inalterable u otros medios
de almacenamiento. El invento también puede incorporarse en una
señal portadora modulada, legible por ordenador.
Como será evidente para los expertos en la
técnica, a la vista de la exposición anterior, en la práctica de
este invento son posibles muchas alteraciones y modificaciones sin
apartarse de su alcance. En consecuencia, el alcance del invento ha
de considerarse de acuerdo con la sustancia definida por las
siguientes reivindicaciones.
\vskip1.000000\baselineskip
La lista de referencias citadas por el
solicitante es, únicamente, para conveniencia del lector. No forma
parte del documento de patente europea. Si bien se ha tenido gran
cuidado al compilar las referencias, no pueden excluirse errores u
omisiones y la OEP declina toda responsabilidad a este respecto.
\bullet US 4058673 A
Claims (18)
1. Un método de generar un cifrado de flujo que
tiene x octetos de longitud, cuyo método comprende los pasos
de:
- i)
- seleccionar un número n que representa varias claves secundarias, y n números primos singulares m_{n}, cada uno de los cuales representa una clave secundaria no repetitiva singular de m_{n} octetos de longitud;
- ii)
- generar n números aleatorios singulares, cada uno de los cuales tiene m_{n} octetos de longitud no repetitiva;
- iii)
- generar un número R aleatorio de orden n + 1;
- iv)
- para cada octeto cuya posición en dicho número aleatorio de orden n sea p, siendo p = Modm_{n}(R), aplicar consecutivamente una función a cada octeto de orden p de cada uno de dichos n números aleatorios para generar un valor;
- v)
- incrementar en 1 del valor de p; y
- vi)
- repetir los pasos iv) y v) y concatenar cada valor citado obtenido en el paso iv) al valor previo obtenido en el paso iv) hasta que se haya obtenido dicho cifrado de flujo de x octetos de longitud.
2. El método de la reivindicación 1, en el que
dicha longitud m_{n} seleccionada de cada una de dichas claves
secundarias es un número primo mayor que 10.
3. El método de la reivindicación 1, en el que
dicha función aplicada consecutivamente a cada uno de dichos
octetos de orden p de dichos n números aleatorios, es la función
O-exclusiva, que se aplica obteniendo el resultado
de aplicar la función O-exclusiva inicialmente al
par de orden n y de orden n + 1 de octetos de orden p, siendo n = 1
e incrementando luego consecutivamente n en 1 y aplicando la función
O-exclusiva a dicho resultado y al siguiente octeto
de orden p.
4. El método de la reivindicación 1, que
comprende el paso adicional de aplicar una función de
deslinealización a dicho cifrado de flujo.
5. El método de la reivindicación 4, en el que
dicha función de deslinealización es un cifrado de sustitución.
6. El método de la reivindicación 1, en el que
cada uno de dichos n números aleatorios es generado:
- i)
- generando un número aleatorio de orden n + 2 que no sea un cuadrado perfecto;
- ii)
- calculando la raíz cuadrada de dicho número aleatorio de orden n + 2;
- iii)
- generando un número aleatorio de orden n + 3;
- iv)
- comenzando con un dígito cuya posición en dicha raíz cuadrada de dicho número aleatorio de orden n + 2, se calcula basándose en dicho número aleatorio de orden n + 3, tomando secuencialmente cadenas finitas de dígitos de dicha raíz cuadrada del citado número aleatorio de orden n + 2 y convirtiendo cada cadena finita en un octeto;
- v)
- concatenando cada octeto en secuencia hasta que se ha alcanzado la longitud m_{n} seleccionada de cada uno citado de dichos n números aleatorios.
7. El método de la reivindicación 6, en el que
dichas cadenas finitas de dígitos tienen, al menos, 4 dígitos de
longitud.
8. El método de la reivindicación 7, en el que
dicha cadena finita es convertida en un octeto aplicando una
función mod.
9. El método de la reivindicación 8, en el que
dicha cadena finita es convertida en un octeto aplicando una
función mod 256.
10. Un producto de programa de ordenador para
generar un cifrado de flujo que tiene x octetos de longitud,
comprendiendo dicho producto de programa de ordenador un medio
utilizable en un ordenador con medios de código de programa
legibles por ordenador incorporados en dicho medio para:
- i)
- generar n números aleatorios singulares, cada uno de los cuales tiene m_{n} octetos de longitud no repetitiva, siendo m_{n} un número primo;
- ii)
- generar un número R aleatorio de orden n + 1;
- iii)
- para cada octeto cuya posición en dicho número aleatorio de orden n sea p, siendo p = Modm_{n}(R), aplicar consecutivamente una función a cada octeto de orden p de cada uno de dichos n números aleatorios para generar un valor;
- iv)
- incrementar en 1 del valor de p; y
- v)
- repetir los pasos iii) y iv) y concatenar cada valor citado obtenido en el paso iii) al valor previo obtenido en el paso iii) hasta que se haya obtenido dicho cifrado de flujo de x octetos de longitud.
11. El producto de programa de ordenador de la
reivindicación 10, en el que dicha longitud m_{n} seleccionada
de cada una de dichas claves secundarias es un número primo mayor
que 10.
12. El producto de programa de ordenador de la
reivindicación 10, en el que dicha función aplicada consecutivamente
a cada uno de dichos octetos de orden p de dichos n números
aleatorios, es la función O-exclusiva, que se
aplica consecutivamente obteniendo el resultado de aplicar la
función O-exclusiva inicialmente al par de orden n
y de orden n + 1 de octetos de orden p, siendo n = 1 e incrementando
luego consecutivamente n en 1 y aplicando la función
O-exclusiva a dicho resultado y al siguiente octeto
de orden p.
13. El producto de programa de ordenador de la
reivindicación 10, en el que dicho medio utilizable en un ordenador
tiene medios de código de programa legibles por ordenador
incorporados en dicho medio para el paso adicional de aplicar una
función de deslinealización a dicho cifrado de flujo.
14. El producto de programa de ordenador de la
reivindicación 13, en el que dicha función de deslinealización es
un cifrado de sustitución.
15. El producto de programa de ordenador de la
reivindicación 10, en el que cada uno de dichos n números aleatorios
es generado:
- i)
- generando un número aleatorio de orden n + 2 que no sea un cuadrado perfecto;
- ii)
- calculando la raíz cuadrada de dicho número aleatorio de orden n + 2;
- iii)
- generando un número aleatorio de orden n + 3;
- iv)
- comenzando con un dígito cuya posición en dicha raíz cuadrada de dicho número aleatorio de orden n + 2, se calcula basándose en dicho número aleatorio de orden n + 3, tomando secuencialmente cadenas finitas de dígitos de dicha raíz cuadrada del citado número aleatorio de orden n + 2 y convirtiendo cada cadena finita en un octeto;
- v)
- concatenando cada octeto en secuencia hasta que se ha alcanzado la longitud m_{n} seleccionada de cada uno citado de dichos n números aleatorios.
16. El producto de programa de ordenador de la
reivindicación 15, en el que dichas cadenas finitas de dígitos
tienen, al menos, 4 dígitos de longitud.
17. El producto de programa de ordenador de la
reivindicación 15, en el que dicha cadena finita es convertida en
un octeto aplicando una función mod.
18. El producto de programa de ordenador de la
reivindicación 17, en el que dicha cadena finita es convertida en
un octeto aplicando una función mod 256.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/299,847 US7190791B2 (en) | 2002-11-20 | 2002-11-20 | Method of encryption using multi-key process to create a variable-length key |
| US299847 | 2002-11-20 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2291675T3 true ES2291675T3 (es) | 2008-03-01 |
Family
ID=32297785
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES03757595T Expired - Lifetime ES2291675T3 (es) | 2002-11-20 | 2003-10-06 | Metodo de generar un cifrado de flujo utilizando claves multiples. |
Country Status (13)
| Country | Link |
|---|---|
| US (1) | US7190791B2 (es) |
| EP (1) | EP1566009B1 (es) |
| JP (1) | JP4608319B2 (es) |
| KR (1) | KR100994841B1 (es) |
| CN (1) | CN100568802C (es) |
| AT (1) | ATE370569T1 (es) |
| AU (1) | AU2003273688B2 (es) |
| BR (2) | BR0316473A (es) |
| CA (2) | CA2414261A1 (es) |
| DE (1) | DE60315700T2 (es) |
| ES (1) | ES2291675T3 (es) |
| MX (1) | MXPA05005358A (es) |
| WO (1) | WO2004047361A1 (es) |
Families Citing this family (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7006629B2 (en) * | 2000-12-19 | 2006-02-28 | International Business Machines Corporation | Method and system for processing a data set |
| FR2838262B1 (fr) * | 2002-04-08 | 2004-07-30 | Oberthur Card Syst Sa | Procede de securisation d'une electronique a acces crypte |
| AU2005255946C1 (en) * | 2004-06-14 | 2009-10-29 | The University Of North Carolina At Greensboro | Systems and methods for digital content security |
| US9166782B2 (en) * | 2006-04-25 | 2015-10-20 | Stephen Laurence Boren | Dynamic distributed key system and method for identity management, authentication servers, data security and preventing man-in-the-middle attacks |
| US20080304664A1 (en) * | 2007-06-07 | 2008-12-11 | Shanmugathasan Suthaharan | System and a method for securing information |
| US20100235689A1 (en) * | 2009-03-16 | 2010-09-16 | Qualcomm Incorporated | Apparatus and method for employing codes for telecommunications |
| US8948377B2 (en) * | 2010-08-24 | 2015-02-03 | Mitsubishi Electric Corporation | Encryption device, encryption system, encryption method, and encryption program |
| CN102647393B (zh) * | 2011-02-21 | 2017-02-22 | 鸿合科技有限公司 | 一种数字标牌的内容防盗播方法 |
| US8767954B2 (en) * | 2011-12-01 | 2014-07-01 | Colloid, Llc | Methods and systems for deriving a cryptographic framework |
| WO2015102839A1 (en) * | 2013-12-30 | 2015-07-09 | Jvl Ventures, Llc | Systems, methods, and computer program products for providing application validation |
| CN106209736B (zh) * | 2015-05-04 | 2020-01-17 | 腾讯科技(深圳)有限公司 | 流媒体数据播放方法、终端及流媒体服务器 |
| CN105406960B (zh) * | 2015-12-20 | 2019-02-22 | 河南思维自动化设备股份有限公司 | 一种信息加密和解密的方法 |
| EP3408747A4 (en) * | 2016-01-28 | 2019-09-18 | Tfor LLC | REMOVAL OF INFORMATION FROM DATA |
| FI20165911A (fi) * | 2016-11-30 | 2018-05-31 | Sam Widlund | Menetelmä ja järjestelmä tiedon salaukseen |
| CN106953875A (zh) * | 2017-04-26 | 2017-07-14 | 吉林大学珠海学院 | 基于多密钥流密码的顺序加密方法 |
| ZA202004225B (en) | 2019-07-11 | 2023-07-26 | Entersekt International Ltd | System and method for secure input at a remote service |
| US11621837B2 (en) | 2020-09-03 | 2023-04-04 | Theon Technology Llc | Secure encryption of data using partial-key cryptography |
| US11310042B2 (en) | 2020-09-11 | 2022-04-19 | Crown Sterling Limited, LLC | Methods of storing and distributing large keys |
| US11552780B2 (en) * | 2020-12-23 | 2023-01-10 | Theon Technologies, Inc. | Homomorphic one-time pad encryption |
| US11755772B2 (en) * | 2021-09-20 | 2023-09-12 | Crown Sterling Limited, LLC | Securing data in a blockchain with a one-time pad |
| US11791988B2 (en) | 2021-11-22 | 2023-10-17 | Theon Technology Llc | Use of random entropy in cryptography |
| US11943336B2 (en) | 2021-11-22 | 2024-03-26 | Theon Technology Llc | Use of gradient decent function in cryptography |
| US11902420B2 (en) | 2021-11-23 | 2024-02-13 | Theon Technology Llc | Partial cryptographic key transport using one-time pad encryption |
| US12405781B2 (en) | 2022-08-25 | 2025-09-02 | National Technology & Engineering Solutions Of Sandia, Llc | Systems and methods for automatically updating system firmware |
| US12261952B2 (en) | 2022-11-04 | 2025-03-25 | Crown Sterling Limited, LLC | Multiple vector one-time key pad |
| US12250310B2 (en) | 2023-01-09 | 2025-03-11 | Crown Sterling Limited, LLC | Use of irrational numbers in elliptic curve cryptography |
Family Cites Families (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3706941A (en) * | 1970-10-28 | 1972-12-19 | Atomic Energy Commission | Random number generator |
| US4058573A (en) * | 1971-07-02 | 1977-11-15 | Ciba-Geigy Corporation | Process for the addition of gaseous non-halogenated olefins and acetylenes to perfluoroalkyl iodides |
| SE385644B (sv) | 1974-10-17 | 1976-07-12 | Ericsson Telefon Ab L M | Anordning vid kryptering och dekryptering av meddelanden |
| US4375579A (en) * | 1980-01-30 | 1983-03-01 | Wisconsin Alumni Research Foundation | Database encryption and decryption circuit and method using subkeys |
| US4791594A (en) * | 1986-03-28 | 1988-12-13 | Technology Inc. 64 | Random-access psuedo random number generator |
| JPH0769662B2 (ja) * | 1988-08-03 | 1995-07-31 | 松下電器産業株式会社 | 二元擬似乱数発生器 |
| US5414771A (en) * | 1993-07-13 | 1995-05-09 | Mrj, Inc. | System and method for the creation of random sequences and for the cryptographic protection of communications |
| US5454039A (en) * | 1993-12-06 | 1995-09-26 | International Business Machines Corporation | Software-efficient pseudorandom function and the use thereof for encryption |
| JPH08181679A (ja) | 1994-12-26 | 1996-07-12 | Nec Corp | 疑似乱数雑音発生装置 |
| US5533128A (en) * | 1995-01-18 | 1996-07-02 | Vobach; Arnold | Pseudo-random transposition cipher system and method |
| JP3557037B2 (ja) * | 1996-04-22 | 2004-08-25 | 株式会社東芝 | 乱数生成装置及び方法、鍵系列生成装置及び方法、暗号化装置及び方法、並びに復号装置及び方法 |
| CA2247478A1 (en) * | 1996-02-21 | 1997-08-28 | Yoshimi Baba | Communication method using common key |
| US5666414A (en) * | 1996-03-21 | 1997-09-09 | Micali; Silvio | Guaranteed partial key-escrow |
| JP2000502822A (ja) * | 1996-08-16 | 2000-03-07 | ベル コミュニケーションズ リサーチ,インコーポレイテッド | 高速で安全な暗号化のための改良された暗号的に安全な疑似ランダム・ビット・ジェネレータ |
| US6307940B1 (en) * | 1997-06-25 | 2001-10-23 | Canon Kabushiki Kaisha | Communication network for encrypting/deciphering communication text while updating encryption key, a communication terminal thereof, and a communication method thereof |
| US6307936B1 (en) * | 1997-09-16 | 2001-10-23 | Safenet, Inc. | Cryptographic key management scheme |
| US6345359B1 (en) * | 1997-11-14 | 2002-02-05 | Raytheon Company | In-line decryption for protecting embedded software |
| US6151676A (en) * | 1997-12-24 | 2000-11-21 | Philips Electronics North America Corporation | Administration and utilization of secret fresh random numbers in a networked environment |
| US6243470B1 (en) * | 1998-02-04 | 2001-06-05 | International Business Machines Corporation | Method and apparatus for advanced symmetric key block cipher with variable length key and block |
| CN1240318A (zh) * | 1998-03-04 | 2000-01-05 | 朗迅科技公司 | 产生伪随机数的方法 |
| US6490353B1 (en) * | 1998-11-23 | 2002-12-03 | Tan Daniel Tiong Hok | Data encrypting and decrypting apparatus and method |
| US6415032B1 (en) * | 1998-12-01 | 2002-07-02 | Xilinx, Inc. | Encryption technique using stream cipher and block cipher |
| US20030210783A1 (en) * | 2000-07-27 | 2003-11-13 | Ross Filippi | Method and system of encryption |
| JP4596686B2 (ja) * | 2001-06-13 | 2010-12-08 | 富士通株式会社 | Dpaに対して安全な暗号化 |
| US20030016823A1 (en) * | 2001-07-05 | 2003-01-23 | Shine Chung | Method and apparatus of using irrational numbers in random number generators for cryptography |
| US7197142B2 (en) * | 2001-08-24 | 2007-03-27 | Alten Alexander I | System and methods for a vernam stream cipher |
| EP2148463A3 (en) * | 2001-10-19 | 2015-04-22 | Panasonic Intellectual Property Management Co., Ltd. | A numerical array output device, a numerical array output method, an encryption device, and a decryption device |
-
2002
- 2002-11-20 US US10/299,847 patent/US7190791B2/en not_active Expired - Lifetime
- 2002-12-16 CA CA002414261A patent/CA2414261A1/en not_active Withdrawn
-
2003
- 2003-10-06 CA CA2505338A patent/CA2505338C/en not_active Expired - Lifetime
- 2003-10-06 BR BR0316473-0A patent/BR0316473A/pt not_active IP Right Cessation
- 2003-10-06 WO PCT/CA2003/001538 patent/WO2004047361A1/en not_active Ceased
- 2003-10-06 KR KR1020057008993A patent/KR100994841B1/ko not_active Expired - Fee Related
- 2003-10-06 BR BRPI0316473-0A patent/BRPI0316473B1/pt unknown
- 2003-10-06 AT AT03757595T patent/ATE370569T1/de not_active IP Right Cessation
- 2003-10-06 EP EP03757595A patent/EP1566009B1/en not_active Expired - Lifetime
- 2003-10-06 JP JP2004552295A patent/JP4608319B2/ja not_active Expired - Fee Related
- 2003-10-06 DE DE60315700T patent/DE60315700T2/de not_active Expired - Lifetime
- 2003-10-06 CN CNB2003801037554A patent/CN100568802C/zh not_active Expired - Fee Related
- 2003-10-06 MX MXPA05005358A patent/MXPA05005358A/es active IP Right Grant
- 2003-10-06 AU AU2003273688A patent/AU2003273688B2/en not_active Ceased
- 2003-10-06 ES ES03757595T patent/ES2291675T3/es not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| KR100994841B1 (ko) | 2010-11-16 |
| CA2414261A1 (en) | 2004-05-20 |
| CA2505338C (en) | 2012-09-04 |
| MXPA05005358A (es) | 2005-08-03 |
| CA2505338A1 (en) | 2004-06-03 |
| EP1566009A1 (en) | 2005-08-24 |
| BRPI0316473B1 (pt) | 2018-03-13 |
| EP1566009B1 (en) | 2007-08-15 |
| JP4608319B2 (ja) | 2011-01-12 |
| US7190791B2 (en) | 2007-03-13 |
| US20040096056A1 (en) | 2004-05-20 |
| AU2003273688A1 (en) | 2004-06-15 |
| ATE370569T1 (de) | 2007-09-15 |
| DE60315700T2 (de) | 2008-06-05 |
| JP2006506668A (ja) | 2006-02-23 |
| CN100568802C (zh) | 2009-12-09 |
| BR0316473A (pt) | 2005-10-11 |
| WO2004047361A1 (en) | 2004-06-03 |
| KR20050086746A (ko) | 2005-08-30 |
| CN1714531A (zh) | 2005-12-28 |
| AU2003273688B2 (en) | 2009-06-25 |
| DE60315700D1 (de) | 2007-09-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4608319B2 (ja) | 複数鍵を用いたストリーム暗号の生成方法 | |
| JP3339688B2 (ja) | 非決定論的ミクスチャー発生器ストリーム暗号化システム | |
| CN100431293C (zh) | 对称-密钥加密的线性变换方法和系统 | |
| KR101267109B1 (ko) | 준군을 이용한 암호화 프리미티브, 에러 코딩, 및 의사난수 향상 방법 | |
| JP2008299330A (ja) | 閉ガロア体組合せ | |
| US20120314857A1 (en) | Block encryption device, block decryption device, block encryption method, block decryption method and program | |
| JP2008513811A (ja) | 計算変換の方法及びシステム | |
| JP7136226B2 (ja) | 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラム | |
| Panduranga et al. | Hybrid approach for image encryption using SCAN patterns and carrier images | |
| US20150172045A1 (en) | Method of cryption | |
| Jose et al. | Hash and Salt based Steganographic Approach with Modified LSB Encoding | |
| CN109639423B (zh) | 一种解密算法的构成装置 | |
| WO2005076521A1 (en) | Method of generating a stream cipher using multiple keys | |
| CN117725605B (zh) | 一种远端自动编制电子档案文件信息保密的方法和系统 | |
| KR100578550B1 (ko) | 스트림 암호를 이용한 메시지 인증 코드 구성 방법 | |
| Sokouti et al. | An approach in improving transposition cipher system | |
| KR20110031822A (ko) | 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 | |
| RU2266622C1 (ru) | Способ блочного шифрования информации | |
| KR101153880B1 (ko) | 갈로아 변환을 이용한 키 생성 방법 | |
| Wahba | Memristive Coupled Neural Network Based Audio Signal Encryption | |
| JP6735062B2 (ja) | 乱数列生成装置、方法及びプログラム | |
| Krendelev et al. | Block cipher based on modular arithmetic and methods of information compression | |
| Anandh et al. | NR2-A Novel Graph-Based Encryption Algorithm | |
| Abbas et al. | Audio cryptosystem based on LFSH and Chaotic map with ECC key management | |
| Kak | Lecture 15: Hashing for Message Authentication |