ES2312922T3 - Procedimiento de cifrado de una palabra que comprende n digitos. - Google Patents
Procedimiento de cifrado de una palabra que comprende n digitos. Download PDFInfo
- Publication number
- ES2312922T3 ES2312922T3 ES04100189T ES04100189T ES2312922T3 ES 2312922 T3 ES2312922 T3 ES 2312922T3 ES 04100189 T ES04100189 T ES 04100189T ES 04100189 T ES04100189 T ES 04100189T ES 2312922 T3 ES2312922 T3 ES 2312922T3
- Authority
- ES
- Spain
- Prior art keywords
- digits
- word
- function
- rounds
- words
- 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 43
- 230000006870 function Effects 0.000 claims abstract description 84
- 230000015654 memory Effects 0.000 claims abstract description 35
- 238000006243 chemical reaction Methods 0.000 abstract description 12
- 238000004364 calculation method Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000002441 reversible effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000013478 data encryption standard Methods 0.000 description 3
- 230000000135 prohibitive effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000002955 isolation Methods 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
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Reverberation, Karaoke And Other Acoustics (AREA)
- Stereo-Broadcasting Methods (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Procedimiento de generación de una permutación seudo-aleatoria de una palabra que comprenda N dígitos, por el que: - se pone en práctica un esquema de Feistel generalizado (202-205), - las funciones de ronda del esquema de Feistel generalizado utilizadas son funciones (F i) tales que: - las palabras de entrada de las funciones de ronda son generadas por la conversión de palabras de dígitos en palabras binarias, - después, se aplica a estas palabras binarias una función de sentido único, - por último, la salida de dígitos es una función de estas palabras binarias, - se lee en una memoria (104) una palabra de dígitos a cifrar, caracterizado porque: - la función de sentido único consiste en la función de picado SHA-1 - el esquema de Feistel generalizado utilizado comprende, al menos, T = 5 rondas, y, como máximo, T = 30 rondas.
Description
Procedimiento de cifrado de una palabra que
comprende N dígitos.
La invención tiene por objeto un procedimiento
de cálculo seudo-aleatorio de una permutación de una
palabra que comprenda N dígitos. El campo de la invención es el de
la criptografía. Más concretamente, el campo de la invención es el
de la criptografía aplicada al cifrado de palabras compuestas por
dígitos.
Un objeto de la invención consiste en conseguir
el cifrado robusto de una palabra compuesta por N dígitos, estando
comprendido N en el intervalo [7, 30].
Otro objeto de la invención consiste en
conseguir un cifrado rápido de una palabra compuesta por N dígitos,
estando comprendido N en el intervalo [7, 30].
Otro objeto de la invención consiste en
determinar una permutación seudo-aleatoria robusta
en un conjunto con un número de elementos igual a 10^{N}, no
siendo este número, por tanto, una potencia de 2.
Otro objeto de la invención consiste en realizar
el cifrado de identificadores basados en el empleo de dígitos,
como, por ejemplo, números de teléfono.
Otro objeto de la invención consiste en generar
una cadena de N dígitos seudo-aleatoria, es decir,
que una persona que no conozca la clave secreta utilizada para
generar esta cadena no pueda distinguirla de una cadena realmente
aleatoria.
Otro objeto de la invención consiste en generar
cadenas de N dígitos tales que el proceso de generación garantice
que la misma cadena no sea generada dos veces.
De acuerdo con el estado de la técnica, se
entiende por bit una magnitud que puede presentar el valor 0 o el
valor 1. Estos dos valores se representan físicamente, en un
ordenador o una memoria, mediante una señal eléctrica que puede
presentar 2 valores, uno asociado a 0, el otro asociado a 1. Una
palabra binaria es una sucesión ordenada de
bits.
bits.
Un dígito es una magnitud que puede presentar
uno de los valores siguientes: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Un
dígito puede ser codificado mediante bits. En este caso, a cada
dígito corresponde una palabra binaria. En general esta palabra
binaria tiene una longitud de 4 bits, pero puede ser una palabra
binaria de 8 bits de longitud (código ASCII) o más. Una palabra de
dígitos es una sucesión ordenada de dígitos.
Una permutación es una aplicación biyectiva en
un conjunto finito.
Se denomina "permutación
seudo-aleatoria" una permutación generada
mediante un programa informático, muy sencilla de calcular a partir
de una clave secreta K, que presenta la propiedad siguiente: una
persona que no conozca la clave K, en la práctica, sería incapaz de
distinguir entre una permutación de este tipo y una permutación
realmente aleatoria (con las mismas longitudes de entrada y salida),
pues el número de cálculos a realizar para distinguirlas mediante
los métodos conocidos es superior a lo que resulta factible de
manera realista.
Actualmente, se considera que si se tienen que
hacer 2^{80} cálculos elementales (o más) para resolver un
problema, este número de cálculos resulta demasiado grande para
posibles atacantes.
De acuerdo con el estado de la técnica, se
conocen permutaciones en conjuntos cuyo número de elementos sea una
potencia de 2. Se conocen, también, intentos para adaptar estas
permutaciones a conjuntos cuyo número de elementos no sea una
potencia de 2. Una técnica de este tipo, para cifrar los elementos
de un conjunto E que comprenda n elementos, consiste en utilizar
una permutación P que trabaje con un superconjunto SE de E que
comprenda un número de elementos que sea potencia de 2. Para
determinar C_{k}(x), es decir, el cifrado de un elemento x
de E mediante la clave k, se empieza por calcular el conjunto V de n
elementos determinado por la expresión
V =
\{P_{k}(i)\},
donde i describe
E
Como todos los elementos de V son diferentes, se
genera un conjunto W de n elementos reemplazando cada elemento de V
por el orden de este elemento en oV, siendo oV el conjunto V
ordenado. Entonces, se obtiene que C_{k}(x) es el elemento
de orden x de W.
Un inconveniente de este método consiste en que
para cifrar/descifrar una palabra, es necesario cifrar/descifrar
todas las palabras del conjunto de partida. Ello da lugar a tiempos
de cálculo importantes y prohibitivos. En efecto, tales cálculos
llevan mucho tiempo, lo que reduce los tiempos de respuesta de un
servidor en el caso de una aplicación
cliente-servidor. Si el cliente es un aparato
portátil autónomo, tal como un teléfono móvil, que tenga que poner
en práctica un procedimiento de este tipo, resulta todavía más
desventajoso, al disponer de menos potencia de cálculo que un
servidor.
Otro método conocido para conseguir una
permutación de un conjunto E que comprenda un número de elementos
que no sea potencia de 2 consiste en considerar un superconjunto SE
de E, que comprenda un número de elementos que sea potencia de 2, y
una permutación P del conjunto SE. Entonces, C_{k}(x), es
decir el cifrado de x mediante una clave k, se obtiene mediante el
algoritmo recurrente siguiente:
Algoritmo\
C_{k}(x)
y =
P_{k}(x)
si y pertenece a E, entonces,
devolver,
y,
si no, devolver
C_{k}(y)
fin
La debilidad de este método radica en el tiempo
de convergencia del algoritmo utilizado. En efecto, puede suceder
que sea necesario efectuar muchos cálculos, y, en ese caso, el
tiempo de cálculo se vuelve prohibitivo.
De acuerdo con el estado de la técnica, se
conocen otras soluciones de cifrado no basadas en permutaciones, es
decir, no basadas en aplicaciones biyectivas. Pero en la medida en
que se busque efectuar un cifrado reversible es necesario
asegurarse que el resultado de un cifrado sea único. Así,
actualmente, con ciertas aplicaciones, algunos empresarios u
operadores, para garantizar la unicidad del cifrado almacenan desde
hace años todas las cadenas de dígitos generadas. De ese modo
pueden asegurarse de que cada cadena sea nueva, ya que, si generan
una cadena ya utilizada, la detectan y no la vuelven a poner en
circulación, sino que generan otra. Pero un procedimiento de este
tipo es costoso y se muestra a la larga poco práctico, pues requiere
disponer, rápidamente, de mucha memoria, y disponer de medios de
salvaguarda importantes y accesibles rápidamente en locales muy
protegidos. Además, el número de cálculos a realizar aumenta con el
número de valores ya generados, y, por tanto, aumenta con el
tiempo.
tiempo.
En particular, estas tres soluciones no
presentan buenos resultados cuando se trata de generar permutaciones
de números del tipo de tarjeta de crédito o de teléfono. En efecto,
el número de cálculos a efectuar puede ser prohibitivo y la
seguridad criptográfica puede no estar garantizada. En lugar de
estas tres soluciones, puede utilizarse un generador de
permutaciones seudo-aleatorias de dígitos, como se
describirá en lo que sigue. El hecho de que el mismo valor no sea
generado dos veces se garantizará merced al carácter biyectivo del
generador (genera permutaciones).
Actualmente todas las funciones de cifrado
estándar, en criptografía de clave secreta, utilizan como entrada
cierto número de bits, y entregan como salida cierto número de bits.
Es el caso, por ejemplo, de las funciones SHA-1,
DES, AES, etc. Pero en ciertas aplicaciones industriales, por
ejemplo en telefonía, no se desea tener como entrada y como salida
cierto número de bits, sino cierto número de dígitos. Para ello, una
solución sería modificar funciones específicas, pero su estudio
puede consumir mucho tiempo, y, evidentemente, habrán sido mucho
menos analizadas por la comunidad criptográfica internacional. O
bien, de acuerdo con la invención, se pueden construir esquemas que
tengan entradas y salidas de dígitos, pero que utilicen internamente
funciones criptográficas clásicas de bits con el fin de garantizar
la seguridad. Un método de este tipo, para un problema particular,
se pone en práctica en este
caso.
caso.
El documento de Black y Rogaway "Ciphers with
Arbitrary Finite Domains/Cifradores con dominios finitos
arbitrarios" (Topics in Cryptology/Tópicos de criptología,
CT-RSA 2002; The Cryptographer's Track/La pista del
criptógrafo, RSA Conference/Conferencia RSA, 2002, actas;
Springer-Verlag, Lecture Notes in Computer
Science/Apuntes de Informática, Vol. 2271; 18/22.02.2002; San José,
California, EE.UU.; ISBN
3-540-43224-8;
páginas 114-130), describe un procedimiento de
generación de una permutación seudo-aleatoria de una
palabra que comprenda cierto número de dígitos, y que pone en
práctica un esquema de Feistel generalizado.
Para una mejor comprensión del sujeto y del
objeto de la presente invención, se hace alusión en este caso,
sucintamente, a algunas nociones relativas a los esquemas de
Feistel. En primer lugar, definimos lo que se denomina esquema de
Feistel.
Sea un número entero natural. Designaremos por
I_{n} = {0, 1}^{n} el conjunto de las cadenas de n bits.
Sea f_{1} una función cualquiera de I_{n} en
I_{n}.
Sean G y D dos elementos de I_{n}.
Se denomina [G, D] el elemento de I_{2n} cuyos
n primeros bits valgan G, y, los siguientes, valgan D.
Se denomina \psi(f_{1}) la aplicación
biyectiva de I_{2n} en I_{2n}, tal que: para todo [G, D] de
I_{2n}, y para todo [U, V] de I_{2n}, \psi(f_{1})[G,
D] = [U, V] si y sólo si:
S = D,\ y\ T =
G\oplus
f_{1}(D),
representando el símbolo \oplus
la operación "O exclusiva" (o adición bit a bit, módulo
2).
\psi(f_{1}) es, efectivamente, una
aplicación biyectiva, pues la función inversa es la función g, tal
que:
g[U,\
V] = [T\oplus f_{1}(S),\ S] = [G,\
D].
Por último, siendo T un número entero que
represente el número de rondas del esquema de Feistel, y siendo
f_{1}, f_{2},...,f_{T} T funciones de I_{n} en I_{n} que
representen las T funciones de rondas, se denomina
\psi(f_{1}, f_{2},...,f_{T}) la aplicación biyectiva
de I_{2n} en I_{2n} siguiente:
\psi (f_{1},\
f_{2},\ ..., f_{T}) = \psi (f_{T})... \circ \psi (f_{2})\circ \psi
(f_{1}),
que representa la ley de
composición de las
funciones.
La aplicación biyectiva \psi(f_{1},
f_{2},...,f_{T}) se denomina "esquema de Feistel de T
rondas".
Definamos ahora lo que se denomina un esquema de
Feistel generalizado. La idea subyacente a esta forma diferente del
esquema de Feistel se describe a continuación. En lugar de cortar en
dos partes iguales de n bits, con el fin de obtener 2n bits, se
puede, de manera más general, en cada ronda, cortar de manera que se
obtenga una parte con a bits y otra con b bits, siendo a + b = N
(N, en este caso, es el número total de bits de la entrada y la
salida). Es posible, también, hacer variar a y b en función del
número i de ronda, denominándose a_{i} y b_{i} los valores de a
y b hechos variar con las rondas. Se obtiene, entonces, lo que se
denomina un esquema de Feistel generalizado. Esta definición puede
precisarse del modo siguiente:
siendo n un número natural
cualquiera, se denomina siempre I_{n} = {0, 1}^{n} el conjunto
de las cadenas de n
bits.
Sean a, b y n tres números naturales, tales que:
a + b = n.
Sea f_{1} una función cualquiera de I_{b} en
I_{a}.
Sea G un elemento de I_{a}, y D un elemento de
I_{b}.
Se denomina [G, D] el elemento de I_{n} cuyos
a primeros bits valgan G, y los b siguientes valgan D.
Se denomina \psi'(f_{1}) la aplicación
biyectiva de I_{n} en I_{n}, tal que: para todo [G, D] de
I_{n}, y para todo [U, V] de I_{n}, \psi'(f_{1})[G, D] =
[U, V], si y solamente si:
U = G \oplus
f_{1}(D),\ y\
V=D
representando el símbolo \oplus
la operación "O exclusiva" (o adición bit a bit, modulo
2).
Y siendo \lambda la función que haga rotar los
a bits (el nuevo primer bit será el antiguo bit de orden (a+1), el
nuevo segundo bit será el antiguo bit de orden (a+2), etc.), se
tiene:
\psi(f_{1}) = \lambda
\circ \psi\
'(f_{1})
Por último, siendo T un número entero que
represente el número de rondas del esquema de Feistel generalizado,
y siendo f_{i}, 1\leqi\leqT, funciones de I_{bi} en I_{ai}
que representen las funciones de ronda, se denomina
\psi(f_{1}, f_{2},...f_{T}) la aplicación biyectiva
de I_{2n} en I_{2n} siguiente:
\psi (f_{1},\
f_{2},\ ...f_{T}) = \psi (f_{T})... \circ \psi (f_{2})\circ \psi
(f_{1}),
que designa la ley de composición
de las
funciones.
La aplicación biyectiva \psi(f_{1},
f_{2},...f_{T}) se denomina "esquema de Feistel generalizado
de T rondas".
\newpage
Pueden preverse, igualmente, casos particulares
de esquemas de Feistel generalizados, por ejemplo, que alternen a
bits y b bits. De ese modo resulta posible, también, hacer alternar
funciones que cambien a bits y funciones que cambien b bits, como
se describirá en lo que sigue.
Así, por ejemplo, todas las rondas impares
podrán presentar una transformación del tipo:
\psi(f_{i})[G,\ D] = [U,\
V]
si, y solamente
si:
U = G \oplus
f_{i}(D),\ y\
V=D,
siendo f_{i} una función de
I_{b} en
I_{a},
y todas las rondas pares podrán presentar una
transformación del tipo:
\psi(f_{j})[G,\ D] = [U,\
V]
si, y solamente
si:
U = G,\ y\ V =
D \oplus
f_{j}(G),
siendo f_{j} una función de
I_{a} en
I_{b}.
Estos problemas se resuelven mediante la
invención utilizando un esquema de Feistel generalizado. El esquema
de Feistel generalizado utilizado consiste en un esquema que
comprenda, como mínimo, 5 rondas, y, en un ejemplo preferido, 6
rondas. Pero algunas veces se consigue mejorar la resistencia al
análisis criptográfico mediante un número mayor de rondas. Se puede
llegar, también, hasta un número de 30 rondas sin superar tiempos de
cálculo compatibles con tiempos de respuesta de un sistema que
ponga en práctica la invención. Las funciones de ronda del esquema
de Feistel generalizado utilizan como entrada a dígitos y entregan
como salida b dígitos. Dichas funciones, que tienen que trabajar
con palabras binarias, se ponen en práctica como sigue:
- 1.
- Se calcula una palabra binaria A a partir de estos b dígitos, de una clave K y del número i de ronda; se trata, en este caso, por ejemplo, de una simple conversión en código binario de la concatenación de estos valores,
- 2.
- Se calcula B=f(A), siendo f una función de sentido único aplicable a bits; esta etapa es, en general, la más importante para la seguridad, por el carácter de sentido único de la función f,
- 3.
- Se calcula C = g(B), siendo g una función que utiliza como entrada una palabra binaria y entrega como salida una palabra que comprenda a dígitos; se trata, en este caso, por ejemplo, de una simple conversión de una palabra binaria en dígitos; con frecuencia, se utilizará durante la etapa 2 una función f tal que B presente exactamente el formato apropiado para una conversión directa de este tipo.
Así, las palabras binarias de salida de las
funciones de ronda son transformadas de dígitos. Una función de
ronda de este tipo se basa, por ejemplo, en el algoritmo de picado
SHA-1 (Secure Hash Algorithm/algoritmo de picado
seguro). Mediante esta construcción se obtiene una permutación
seudo-aleatoria a partir de un conjunto de
elementos compuestos por dígitos. La permutación, es decir, el
carácter biyectivo, se garantiza por construcción, merced a la
utilización de un esquema de Feistel. El aspecto
seudo-aleatorio, a su vez, está garantizado, ya que
ningún ataque criptográfico conocido puede tener éxito contra este
modo de cifrado, debido a que, en este caso, se utilizan, al menos,
5 rondas.
Por tanto, la invención tiene por objeto un
procedimiento de generación de una permutación
seudo-aleatoria de una palabra que comprenda N
dígitos, por el que:
- -
- se pone en práctica un esquema de Feistel generalizado (202-205),
- -
- las funciones de ronda del esquema de Feistel generalizado utilizado son funciones (F_{i}) tales que:
- -
- las palabras de entrada de las funciones de ronda son generadas por la conversión de palabras de dígitos en palabras binarias,
- -
- a continuación, se aplica a estas palabras binarias una función de sentido único,
- -
- por último, la salida, de dígitos, es una función de estas palabras binarias.
- -
- se lee en una memoria (104) una palabra de dígitos a cifrar,
caracterizado
porque:
- -
- la función de sentido único consiste en la función de picado SHA-1,
- -
- el esquema de Feistel generalizado utilizado comprende, al menos, T = 5 rondas, y, como máximo, T = 30 rondas.
La invención se comprenderá mejor a partir de la
lectura de la descripción que sigue y del examen de las figuras que
la acompañan. Estas figuras se presentan a título indicativo de la
invención, sin carácter limitativo alguno. Las figuras
muestran:
- la figura 1: una ilustración de medios útiles
para la puesta en práctica del procedimiento de la invención;
- la figura 2: una ilustración de las etapas del
procedimiento de la invención.
De manera general, las acciones descritas se
ejecutan mediante un dispositivo que comprende un microprocesador y
una memoria que comprende códigos de instrucciones destinados a
controlar este microprocesador. Estos códigos de instrucciones
corresponden a la puesta en práctica de las etapas del procedimiento
de la invención. Una palabra, ya sea binaria o de dígitos, consiste
en una representación eléctrica, o, también, una señal eléctrica,
de una magnitud en una memoria o un registro. Cuando se asigna una
acción a un aparato, dicha acción es realizada por un
microprocesador de este aparato controlado mediante códigos de
instrucciones registrados en una memoria del mismo.
La figura 1 muestra un aparato 101 que pone en
práctica el procedimiento, por etapas, de la invención. Un aparato
de este tipo, en la práctica, consiste en un servidor de un operador
de una red de telecomunicaciones. Pero el procedimiento de la
invención puede ser puesto en práctica mediante cualquier
dispositivo o sistema conforme a la figura 1. Por ejemplo, de
manera no exhaustiva, se consideran aparatos que puedan poner en
práctica el procedimiento de la invención: un teléfono móvil, un
asistente personal, un ordenador portátil, fijo o en bastidor,
etc.
La figura 1 muestra que el aparato 101 comprende
un microprocesador 102, una memoria 103 de programa, una memoria
104 de palabras de dígitos de entrada, una memoria 105 de palabras
de dígitos de salida, una memoria 106 de clave, una memoria 107 de
número de rondas y circuitos 108 de interfaz. Los elementos 102 a
108 están interconectados mediante un bus 109.
En la figura 1 las memorias 103 a 107 se
representan como memorias separadas. En la práctica estas memorias
pueden ser, perfectamente, un único componente de memoria o un
componente de memoria y registros de un circuito especializado ASIC
(circuito integrado de aplicación específica).
La memoria 104 permite registrar una palabra de
dígitos que tenga que ser cifrada mediante el procedimiento de la
invención. La memoria 105 permite registrar el resultado del
cifrado, mediante el procedimiento de la invención, de la palabra
registrada en la memoria 104. La memoria 106 permite registrar una
clave utilizada por el procedimiento de cifrado de la invención. La
memoria 107 permite registrar el número de rondas del esquema/red
de Feistel del procedimiento de la invención.
La memoria 103 está dividida en varias zonas que
corresponden a diferentes funciones realizadas por el
microprocesador 102. Una zona 103a comprende códigos de
instrucciones que corresponden a la puesta en práctica de un esquema
de Feistel. Una zona 103b comprende códigos de instrucciones que
corresponden a la puesta en práctica de una función de picado, en
nuestro ejemplo, SHA-1. Una zona 103c corresponde a
la puesta en práctica de funciones de comunicación, más
concretamente, los códigos de instrucciones de la zona 103c que
permiten controlar los circuitos 108. Una zona 103d comprende
códigos de instrucciones para la puesta en práctica de una función
de ronda.
La memoria 103 comprende otras zonas, de trabajo
y almacenamiento, no representadas en la figura 1.
Los circuitos 108 permiten conectar el aparato
101 con dispositivos exteriores, como una red, un teclado, una
pantalla. Merced a estos circuitos 108 y los códigos de
instrucciones de la zona 103c, es posible leer y/o escribir en las
memorias 104 a 107, que son, también, memorias de definición de
parámetros y de configuración del procedimiento de la
invención.
La figura 2 ilustra el funcionamiento de un
esquema de Feistel generalizado de acuerdo con la invención. La
figura 2 muestra una etapa 201 preliminar en la que un usuario
registra la palabra de dígitos que se desee cifrar. Este registro
consiste en escribir en la memoria 104 la palabra M de dígitos a
cifrar. Durante la etapa 201 el usuario indica, también, el
contenido de la memoria 106 de clave, así como el contenido de la
memoria 107 de número de rondas. La actualización de estas memorias
se realiza mediante los circuitos 108.
A continuación se pasa a la primera etapa del
procedimiento de cifrado propiamente dicho, que consiste en una
etapa 202 de corte de la palabra M de dígitos para convertirla en
dos palabras G_{0} y D_{0} binarias. Este corte es tal que M =
[G_{0}, D_{0}]. Por construcción y definición, G_{0} es la
parte izquierda de M y D_{0} es la parte derecha de M.
Considérese, por ejemplo, que M comprende 10 dígitos, es decir, que
N vale 10. En el caso de un esquema de Feistel estándar la palabra a
cifrar se corta en dos partes de igual longitud. El esquema de
Feistel generalizado será tratado en lo que sigue. En nuestro
ejemplo G_{0} y D_{0} son palabras binarias que corresponden,
cada una, a 5 dígitos. Por tanto, en este ejemplo, se tiene A = B =
5, siendo A la longitud en dígitos de la
\hbox{palabra G _{0} , y B la longitud en dígitos de la palabra D _{0} .}
Una palabra de dígitos tiene una representación
binaria en memoria. Esta representación es, casi siempre, una serie
de cuartetos (4 bits), o, respectivamente, una serie de octetos (8
bits, en el caso del código ASCII). Entonces, cada cuarteto, o, en
su caso, octeto, corresponderá a un dígito. Si consideramos el caso
del empleo de cuarteto, de manera conocida, la conversión de una
palabra de dígitos en una palabra en código binario se realiza,
simplemente, por yuxtaposición de las palabras binarias que
correspondan a cada dígito. Así, 0 corresponde al cuarteto 0000, 1
al cuarteto 0001, 2 al cuarteto 0010, etc., y, así sucesivamente,
hasta 9, que corresponde al cuarteto 1001. Mediante este modo de
codificación, la conversión binaria, por ejemplo, de la palabra de
dígitos 12345, es la palabra binaria 00010010001101000101, compuesta
por 5 cuartetos.
Otra manera de convertir una palabra de dígitos
en una palabra binaria es la del modo de realización preferido de
la invención. Esta otra manera de conversión consiste en convertir
una palabra de dígitos utilizando la palabra binaria con el mismo
valor decimal que la palabra de dígitos leída. Así la palabra de
dígitos 12345 es convertida en una palabra binaria que corresponda
a su valor decimal, a saber, la palabra binaria 11000000111001.
Por tanto, al final de la etapa 202 se ha
cortado la palabra M de dígitos para dar lugar a dos palabras
G_{0} y D_{0} binarias. Por ejemplo, si la palabra de dígitos
es 1234567890, entonces, G_{0} es la conversión en código binario
de 12345, y D_{0} es la conversión en código binario de 67890.
Después, se pasa a una etapa 202, o primera ronda del esquema de
Feistel de acuerdo con la invención.
Durante la etapa 202 se calcula una palabra
binaria G_{1} que, en realidad, es igual a D_{0}. Se calcula,
también, una palabra binaria D_{1}, de manera que D_{1} =
G_{0} \oplus F_{1}(D_{0}). En esta expresión el
símbolo \oplus corresponde a una "O exclusiva" conocida,
también, con el nombre de función XOR. La función F_{1} es la
primera función de ronda del esquema de Feistel de acuerdo con la
invención. De manera general, se denomina F_{i} la función de
ronda de orden i del esquema de Feistel de acuerdo con la invención.
La función F_{i} se expresa, por ejemplo, como sigue:
F_{i}(x) =\
< SHA\_1(i\ ||\ K\ ||\ x\ ||\ j)>\
(1)
En esta expresión SHA_1 () es la función de
picado del mismo nombre. En la práctica se puede emplear otro
algoritmo de picado como, por ejemplo, MD5. Se puede emplear,
también, otra función, como AES (Advanced Encryption
Standard/Estándar de cifrado avanzado) o TDES (Triple Data
Encryption Standard/Estándar de cifrado de datos triple). Se trata
de funciones seudo-aleatorias estándar de
criptografía aplicables a palabras binarias. De manera más general,
se puede emplear cualquier función o función
seudo-aleatoria aplicables a bits.
El operador || es un operador de
concatenación, K es la clave leída en la memoria 106, e i es el
índice de la ronda de la función de Feistel. La notación < ||
j > significa que se inicializa el índice j, dándole el valor 0,
y, después, se separan los 17 bits más significativos de la salida
de la función SHA_1. Si estos 17 bits corresponden exactamente a 5
dígitos, se guarda esta salida, en otro caso, se aumenta j en una
unidad y se reevalúa la expresión (1) hasta que presente esta
propiedad. Esta iteración de j corresponde, de hecho, a una
conversión de un número binario en número de dígitos. Así, las
palabras de entrada de las funciones de ronda son generadas por la
conversión de palabras de dígitos en palabras binarias. Las palabras
binarias de salida de las funciones de ronda son convertidas en
palabras de dígitos. Para que 17 bits correspondan exactamente a 5
dígitos, es necesario que la conversión en decimal de esta palabra
de 17 bits se exprese mediante 5 cifras.
El hecho de que se separen 17 bits está
relacionado con el hecho de que se trabaje con palabras de 5 dígitos
de longitud. Más concretamente, está relacionado con el hecho de
que la función de ronda considerada genere una palabra de 5
dígitos. En la práctica, el número de bits separados está
relacionado con la longitud de la palabra de dígitos generada
merced a la consideración siguiente: el número de bits separados
corresponde a la longitud de una palabra binaria que permita
codificar el mayor valor decimal representable mediante el número
de dígitos de la palabra generada. Así, con 5 dígitos, el mayor
valor decimal representable es 99 999. Se necesitan 17 bits para
codificar este valor en binario. Si se considera, por ejemplo, una
palabra de 7 dígitos, el mayor valor decimal representable será 9
999 999. En este caso, es necesario separar 24 bits. Este
razonamiento se aplica a cualquier número de dígitos.
De acuerdo con una variante, se pone fin a la
iteración de j una vez que los bits separados correspondan a un
valor decimal representable mediante el número de dígitos a generar
por la función de ronda.
Se recuerda que las palabras tratadas presentan
una longitud de 5 dígitos porque la palabra M tiene una longitud de
10 dígitos y ha sido convertida en 2 palabras de 5 dígitos cada
una.
La función descrita mediante la expresión (1) no
es reversible, es decir, es una función de un solo sentido, ya que
pone en práctica una función de picado no reversible. No reversible
significa que no se puede determinar la entrada de una función
conociendo su salida. De manera general, la irreversibilidad de la
función de ronda está relacionada con el hecho de que se separen
cierto número de bits de su salida, por lo que no puede ser una
aplicación biyectiva.
Al final de la etapa 203 se tiene una palabra
M_{1} = [G_{1}, D_{1}]. Se continúa con una etapa 204 de
cálculo de una palabra M_{2} = [G_{2}, D_{2}], siendo G_{2}
= D_{1}, y D_{2} = G_{1} \oplus F_{2}(D_{1}). La
etapa 204 es la segunda ronda del esquema de Feistel de acuerdo con
la invención. La etapa 204 es idéntica a la etapa 203, excepto
porque durante etapa 204 se trabaja con la palabra M_{1} mientras
que durante la etapa 203 se trabaja con la palabra M.
En el caso general de un esquema de Feistel, la
ronda de orden i genera una palabra M_{i} = [G_{i}, D_{i}],
siendo G_{i} = D_{i-1}, y D_{j} =
G_{i-1} \oplus
F_{i}(D_{i-1}).
En nuestro ejemplo, se considera un esquema de
Feistel de 5 rondas, por lo que T vale 5. Así, después de la etapa
204 se efectúan la tercera y la cuarta rondas, como se ha descrito
para el caso general.
Durante la ronda de orden T, en este caso, la
quinta ronda y la etapa 205, se genera una palabra M_{T} =
[G_{T}, D_{T}], siendo G_{T} = G_{T-1}
\oplus F_{T}(D_{T-1}), y D_{T} =
G_{T-1}. Así, la palabra M_{T} puede ser
utilizada como entrada del esquema de Feistel, con la clave K, y se
obtendrá como salida la palabra M de partida. La palabra M_{T} es
el resultado del cifrado de la palabra M mediante el procedimiento
de la invención. Al final de la etapa 205, la palabra M_{T} se
registra en la memoria 105. Una expresión resumida del
procedimiento de la invención puede escribirse:
M_{T} =
Cif(M,\ K,\
T),
que indica que M_{T} es el
resultado del cifrado (Cif) de M por el procedimiento de la
invención mediante la clave K y un número T de rondas. Entonces, la
función de descifrado es la misma, y se
tiene:
M =
Cif(M_{T},\ K,\
T)
La memoria 105 es leída por medio de los
circuitos 108, lo que permite utilizar el resultado del cifrado.
En nuestro ejemplo, el esquema de Feistel
comprende T = 5 rondas. De acuerdo con una realización preferida,
el esquema de Feistel comprende 6 rondas. En la práctica se puede
llegar hasta 30 rondas. Pero es necesario establecer un compromiso
con la rapidez de ejecución. En efecto, cuanto mayor sea el número
de rondas, mayor será el tiempo de cálculo. En la práctica, 6
rondas son suficientes para protegerse contra todos los ataques
conocidos no basados en la fuerza bruta. Mediante la potencia de
cálculo disponible actualmente se puede llegar hasta 30 rondas sin
deteriorar sensiblemente el tiempo de respuesta de un sistema que
ponga en práctica el procedimiento de la invención. Por tanto, en
la práctica, el número T de rondas es inferior a 30.
En el ejemplo de la descripción se ha
considerado que la palabra M comprende 10 dígitos. En la práctica,
la palabra M puede comprender un número impar de dígitos. Asimismo,
en la práctica, se puede efectuar un corte no simétrico de la
palabra M. En estos dos casos se utiliza un esquema de Feistel
generalizado, es decir, de manera que A sea diferente de B. Se hace
notar que el caso A = B es un caso particular del esquema
generalizado.
Considérese, por ejemplo, que M comprende N = 11
dígitos, y que A vale 5 y B vale 6. Se tiene, efectivamente, N = A
+ B. Se tiene, también, G_{0} con una longitud de 5 dígitos y
D_{0} con una longitud de 6 dígitos. Al final de la primera ronda
de la función de Feistel generalizada, se tiene G_{1} = D_{0},
con 6 dígitos, y D_{1} = G_{0} \oplus
F_{1}(D_{0}), con 5 dígitos. En este caso la función
F_{1} trabaja con una palabra de 6 dígitos de longitud para
generar una palabra de 5 dígitos de longitud, y, por tanto, se
separan 17 bits de la salida de la función SHA_1, tal como se ha
descrito en lo que antecede.
Al final de la segunda ronda del esquema de
Feistel, se tiene G_{2} = D_{1}, con 5 dígitos. Se tiene también
D_{2} = G_{1} \oplus F_{2}(D_{1}), con 6 dígitos.
En este caso la función F_{2} trabaja con una palabra de 5
dígitos de longitud para generar una palabra de 6 dígitos de
longitud, y, por tanto, se separan 20 bits de la salida de la
función SHA_1, de acuerdo con las consideraciones ya vistas.
En el caso de un esquema de Feistel
generalizado, el corte de la palabra a cifrar no es simétrico, y,
por tanto, las funciones de ronda no trabajan con el mismo número
de dígitos, en función de que el índice de la ronda sea par o
impar. Así, durante rondas de índice impar la función de ronda del
esquema de Feistel trabaja con una palabra con B dígitos de
longitud para generar una palabra con A dígitos de longitud. En el
caso de rondas de índice par, la función de ronda del esquema de
Feistel trabaja con una palabra con A dígitos de longitud para
generar una palabra con B dígitos de longitud.
De manera general, A y B pueden presentar
valores cualesquiera, en tanto que A + B = N. En la práctica, se
prefiere cortar una palabra de dígitos de manera simétrica. En el
caso de que N sea par, ello no supone problema alguno, se tiene A =
B = N/2. En el caso de que N sea impar, se hace que A sea igual a la
parte entera de N/2, y B sea igual a N - A. Se tiene así,
efectivamente, A + B = N. Merced a este modo de corte, B nunca
supera a A en más de una unidad, y, por tanto, se consigue el corte
entero más aproximado posible a un corte simétrico.
Este procedimiento de cifrado se utiliza para
cifrar palabras de dígitos utilizadas habitualmente. Tales palabras
pueden ser, de manera no exhaustiva, números de teléfono (8 a 10
dígitos), números de tarjetas de crédito (16 dígitos), números de
seguridad social (13 dígitos), números de cuentas bancarias, bonos
electrónicos, etc. Además, estos números pueden concatenarse para
formar un número mayor, con el fin de conseguir una palabra con una
longitud de 30 dígitos.
De manera general, mediante el procedimiento de
la invención, cuanto más larga sea la palabra a cifrar, es decir,
cuanto mayor sea N, mejor será la resistencia al análisis
criptográfico.
Con una palabra de entrada, una clave de cifrado
determinada y cierto número de rondas del esquema de Feistel, se
obtiene, siempre, la misma palabra cifrada. Con el fin de reforzar
el cifrado y, especialmente, evitar los estudios de comportamiento
basados en un identificador electrónico, pueden concatenarse cierto
número de dígitos a cifrar con una variable aleatoria de dígitos.
Por ejemplo, para cifrar un número de teléfono, en primer lugar,
puede concatenarse con el número de segundos transcurridos desde el
inicio de la hora en curso. A continuación se cifra el resultado de
esta concatenación. De ese modo, raramente se obtiene la misma
palabra cifrada para un número de teléfono determinado. El tipo de
variable aleatoria utilizada puede ser cualquiera, de manera no
exhaustiva, puede tratarse, por ejemplo, de un simple contador que
aumente con cada utilización, de un número obtenido a partir de una
serie seudo-aleatoria precalculada, etc.
Así, entre las utilizaciones posibles del
procedimiento de la invención puede mencionarse la posibilidad de
cifrar informaciones entre su emisor y su destinatario. Se menciona,
también, la posibilidad de aislar una red de otra. Este aislamiento
puede realizarse, por ejemplo, mediante un servidor del operador de
una primera red. Este servidor, merced al procedimiento de la
invención, transcodifica un identificador de la primera red para
generar un identificador en la segunda red. De ese modo las
entidades que operen en la segunda red, a excepción del operador de
la primera red, no podrán identificar al usuario de la primera
red.
Por tanto, la invención se aplica,
particularmente, y, de modo muy ventajoso, a la telefonía. Así, en
el ámbito de la protección de la vida privada de los abonados a un
operador de telefonía, y de la lucha contra el correo no solicitado
(conocido, también, con el nombre de "spamming"), todos los
protocolos utilizan el número MSISDN (número de teléfono
internacional de un abonado), codificado con 15 dígitos, como
identificador del abonado, y, entonces, esta información puede ser
desviada por el proveedor de servicios con el fin de establecer un
perfil del usuario o enviar mensajes no solicitados. Se puede tratar
de ocultar este valor mediante cifrado, pero, en tal caso, es
necesario que el resultado sea compatible con el formato de los
protocolos de telecomunicaciones y, especialmente, que el operador
pueda descifrarlo fácilmente. Estos dos objetivos se consiguen
mediante el procedimiento de la invención.
El caso del bono electrónico es, igualmente, un
buen ejemplo de aplicación de la invención. La interfaz de un
teléfono móvil se limita al teclado numérico, y, por tanto, el
usuario está limitado, en su registro, al uso de dígitos. En el
contexto de la generación de un bono electrónico (un número de bono
es equivalente a un valor financiero, por ejemplo, 30 euros) y cada
registro de bono permite abonar una cuenta. La gestión de los bonos
en las oficinas del proveedor de servicios se simplifica si el
generador de estos valores utiliza algoritmos simétricos que
trabajen con dígitos. Un contador presenta valores sucesivos, de 1 a
M, y el cifrado del contador ofrece datos
seudo-aleatorios, todos diferentes. De ese modo
resulta posible generar códigos seudo-aleatorios a
partir de N dígitos, gestionables fácilmente por el proveedor de
servicios, porque sólo se almacena el último valor de contador
utilizado y no todos los valores de bonos ya generados para
asegurarse de la unicidad de los mismos.
De manera general, en las "grandes" bases
de datos, el almacenamiento se hace sin cifrar, la estructura puede
ser compuesta (formatos no homogéneos, numéricos y alfanuméricos),
pero las necesidades de seguridad obligan a un cifrado. En este
caso, igualmente, un cifrado mediante dígitos permite proteger
eficazmente los datos, y ello, sin modificar su estructura, y con
un coste muy reducido.
Estos ejemplos de puesta en práctica de la
invención no limitan sus ámbitos de aplicación.
Claims (7)
1. Procedimiento de generación de una
permutación seudo-aleatoria de una palabra que
comprenda N dígitos, por el que:
- se pone en práctica un esquema de Feistel
generalizado (202-205),
- las funciones de ronda del esquema de Feistel
generalizado utilizadas son funciones (F_{i}) tales que:
- -
- las palabras de entrada de las funciones de ronda son generadas por la conversión de palabras de dígitos en palabras binarias,
- -
- después, se aplica a estas palabras binarias una función de sentido único,
- -
- por último, la salida de dígitos es una función de estas palabras binarias,
- -
- se lee en una memoria (104) una palabra de dígitos a cifrar,
caracterizado porque:
- la función de sentido único consiste en la
función de picado SHA-1
- el esquema de Feistel generalizado utilizado
comprende, al menos, T = 5 rondas, y, como máximo, T = 30
rondas.
2. Procedimiento según la reivindicación 1,
caracterizado porque el número de rondas T del esquema de
Feistel es igual a 6.
3. Procedimiento según cualquiera de las
reivindicaciones 1 o 2, caracterizado porque, durante las
rondas impares del esquema de Feistel la función de ronda trabaja
con una palabra de longitud B, y, durante las rondas pares del
esquema de Feistel, la función de ronda trabaja con palabras de A
dígitos de longitud, siendo A + B = N.
4. Procedimiento según la reivindicación 3,
caracterizado porque A es igual a la parte entera de N/2 y B
es igual a N - A.
5. Procedimiento según cualquiera de las
reivindicaciones 1 a 4, caracterizado porque N es un número
entero comprendido en el intervalo [7, 30].
6. Procedimiento según cualquiera de las
reivindicaciones 1 a 5, caracterizado porque N es un número
entero comprendido en el intervalo [10, 30].
7. Procedimiento según cualquiera de las
reivindicaciones 1 a 6, caracterizado porque N es un número
entero comprendido en el intervalo [13, 30].
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0350038A FR2851862B1 (fr) | 2003-02-27 | 2003-02-27 | Procede de generation d'une permutation pseudo-aleatoire d'un mot comportant n digits |
FR0350038 | 2003-02-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2312922T3 true ES2312922T3 (es) | 2009-03-01 |
Family
ID=32799793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES04100189T Expired - Lifetime ES2312922T3 (es) | 2003-02-27 | 2004-01-21 | Procedimiento de cifrado de una palabra que comprende n digitos. |
Country Status (10)
Country | Link |
---|---|
US (1) | US20040208321A1 (es) |
EP (1) | EP1455478B1 (es) |
JP (1) | JP2004258667A (es) |
CN (1) | CN1536810A (es) |
AT (1) | ATE407492T1 (es) |
DE (1) | DE602004016236D1 (es) |
DK (1) | DK1455478T3 (es) |
ES (1) | ES2312922T3 (es) |
FR (1) | FR2851862B1 (es) |
PT (1) | PT1455478E (es) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050182946A1 (en) * | 2004-02-13 | 2005-08-18 | Will Shatford | Fast hashing function for pseudo-random generator |
US7760874B2 (en) | 2004-07-14 | 2010-07-20 | Broadcom Corporation | Method and system for implementing FI function in KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets |
US20060013387A1 (en) * | 2004-07-14 | 2006-01-19 | Ruei-Shiang Suen | Method and system for implementing KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets |
US7688972B2 (en) | 2004-07-14 | 2010-03-30 | Broadcom Corporation | Method and system for implementing FO function in KASUMI algorithm for accelerating cryptography in GSM (global system for mobile communication)GPRS (general packet radio service)edge(enhanced data rate for GSM evolution) compliant handsets |
US20060037995A1 (en) * | 2004-08-20 | 2006-02-23 | Texas Instruments Incorporated | Heatslug to leadframe attachment |
US7627115B2 (en) | 2004-08-23 | 2009-12-01 | Broadcom Corporation | Method and system for implementing the GEA3 encryption algorithm for GPRS compliant handsets |
JP2007199156A (ja) * | 2006-01-24 | 2007-08-09 | Sony Corp | 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム |
US8295250B2 (en) * | 2006-07-24 | 2012-10-23 | Qualcomm Incorporated | Code interleaving for a structured code |
JP4882598B2 (ja) * | 2006-07-28 | 2012-02-22 | ソニー株式会社 | 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム |
JP5023624B2 (ja) * | 2006-09-01 | 2012-09-12 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP4967544B2 (ja) * | 2006-09-01 | 2012-07-04 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
WO2008053650A1 (en) * | 2006-10-30 | 2008-05-08 | Nec Corporation | Common key block encrypting device, its method, its program, and recording medium |
FR2927497B1 (fr) * | 2008-02-07 | 2010-02-12 | Alcatel Lucent | Dispositif de conversion bidirectionnelle d'identifiants de communication en adresses de communication pour l'interfonctionnement entre reseaux de types differents. |
CN103595539B (zh) * | 2013-11-26 | 2016-08-24 | 南开大学 | 保留格式的数值型个人识别信息的加密方法 |
WO2017068468A1 (en) * | 2015-10-21 | 2017-04-27 | Atul JINDAL | System and method for customer engagement and reward computation |
GB2570015B (en) * | 2018-06-29 | 2020-03-11 | Txtnation Holdings Ltd | Improved gateway system and method |
GB2581266B (en) * | 2018-06-29 | 2021-08-25 | Txtnation Holdings Ltd | Improved gateway system and method |
FR3084760A1 (fr) | 2018-08-03 | 2020-02-07 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Generateur d'une permutation pseudo-aleatoire |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB762284A (en) * | 1954-01-07 | 1956-11-28 | Nat Res Dev | Digital encoders and decoders |
FR1205568A (fr) * | 1957-05-14 | 1960-02-03 | Ibm | Dispositifs à superconduction traitant des informations et utilisant des écrans magnétiques |
US3071739A (en) * | 1961-04-21 | 1963-01-01 | Bell Telephone Labor Inc | Digital phase equalizer, automatically operative, in accordance with time-inverted impulse response of the transmission circuit |
US3358083A (en) * | 1964-07-28 | 1967-12-12 | Bell Telephone Labor Inc | Time-division multiplex digital transmission arrangement employing a linear digital filter |
BE771162A (fr) * | 1970-08-17 | 1972-02-11 | Automatisme Cie Gle | Systeme de localisation de mobiles sur une trajectoire donnee |
US3740725A (en) * | 1971-06-16 | 1973-06-19 | Nasa | Automated attendance accounting system |
US3956615A (en) * | 1974-06-25 | 1976-05-11 | Ibm Corporation | Transaction execution system with secure data storage and communications |
US4183096A (en) * | 1978-05-25 | 1980-01-08 | Bell Telephone Laboratories, Incorporated | Self checking dynamic memory system |
US4195350A (en) * | 1978-06-19 | 1980-03-25 | Cbs Inc. | Method and apparatus for eliminating deadband in digital recursive filters |
US4785290A (en) * | 1980-06-23 | 1988-11-15 | Light Signatures, Inc. | Non-counterfeitable document system |
DE3400665A1 (de) * | 1984-01-11 | 1985-07-18 | Robert Bosch Gmbh, 7000 Stuttgart | Differentielles pulscodemodulationssystem |
US6614914B1 (en) * | 1995-05-08 | 2003-09-02 | Digimarc Corporation | Watermark embedder and reader |
KR0156152B1 (ko) * | 1995-05-12 | 1998-11-16 | 구본준 | 최대값 선택회로 |
CA2164768C (en) * | 1995-12-08 | 2001-01-23 | Carlisle Michael Adams | Constructing symmetric ciphers using the cast design procedure |
CA2173688C (en) * | 1996-04-09 | 2000-01-18 | Hideo Shimizu | Encryption apparatus and method capable of controlling encryption process in accordance with an internal state |
US6031911A (en) * | 1996-07-18 | 2000-02-29 | Entrust Technologies, Ltd. | Practical S box design |
US5802054A (en) * | 1996-08-15 | 1998-09-01 | 3Com Corporation | Atomic network switch with integrated circuit switch nodes |
US5913203A (en) * | 1996-10-03 | 1999-06-15 | Jaesent Inc. | System and method for pseudo cash transactions |
US5949884A (en) * | 1996-11-07 | 1999-09-07 | Entrust Technologies, Ltd. | Design principles of the shade cipher |
US6182216B1 (en) * | 1997-09-17 | 2001-01-30 | Frank C. Luyster | Block cipher method |
US6189095B1 (en) * | 1998-06-05 | 2001-02-13 | International Business Machines Corporation | Symmetric block cipher using multiple stages with modified type-1 and type-3 feistel networks |
JP2000066587A (ja) * | 1998-08-24 | 2000-03-03 | Toshiba Corp | データ処理装置及び通信システム並びに記録媒体 |
IL132898A (en) * | 1999-11-11 | 2009-09-01 | Nds Ltd | System for bitstream generation |
AU2086301A (en) * | 1999-12-10 | 2001-06-18 | Auripay, Inc. | Method and apparatus for improved financial instrument processing |
WO2001050428A1 (en) * | 2000-01-05 | 2001-07-12 | Colin Mitchell | Method and apparatus for authenticating financial transactions |
AU2002214613A1 (en) * | 2000-11-08 | 2002-05-21 | Digimarc Corporation | Content authentication and recovery using digital watermarks |
WO2002084879A2 (en) * | 2001-04-13 | 2002-10-24 | The Code Coproration | System and method for encoding and decoding data and references to data in machine-readable graphical codes |
CA2449171C (en) * | 2001-06-06 | 2009-08-11 | Spectra Systems Corporation | Marking and authenticating articles |
JP2003122726A (ja) * | 2001-06-07 | 2003-04-25 | Hitachi Ltd | コンテンツ制御方法及びその実施装置並びにその処理プログラム |
US6889349B2 (en) * | 2001-08-22 | 2005-05-03 | Hewlett-Packard Development Company, L.P. | Digital event sampling circuit and method |
US7236592B2 (en) * | 2002-02-01 | 2007-06-26 | International Business Machines Corporation | Efficient stream cipher system and method |
US7221756B2 (en) * | 2002-03-28 | 2007-05-22 | Lucent Technologies Inc. | Constructions of variable input length cryptographic primitives for high efficiency and high security |
US20030200489A1 (en) * | 2002-04-18 | 2003-10-23 | Laszlo Hars | Secure method of and system for rewarding customers |
US7082449B2 (en) * | 2002-05-03 | 2006-07-25 | Sun Microsystems, Inc. | Method and apparatus for generating pseudo-random numbers |
US7248696B2 (en) * | 2002-09-12 | 2007-07-24 | International Business Machines Corporation | Dynamic system bus encryption using improved differential transitional encoding |
JP4141775B2 (ja) * | 2002-09-20 | 2008-08-27 | 株式会社ルネサステクノロジ | 半導体集積回路装置 |
-
2003
- 2003-02-27 FR FR0350038A patent/FR2851862B1/fr not_active Expired - Fee Related
-
2004
- 2004-01-21 AT AT04100189T patent/ATE407492T1/de not_active IP Right Cessation
- 2004-01-21 DE DE602004016236T patent/DE602004016236D1/de not_active Expired - Lifetime
- 2004-01-21 PT PT04100189T patent/PT1455478E/pt unknown
- 2004-01-21 EP EP04100189A patent/EP1455478B1/fr not_active Expired - Lifetime
- 2004-01-21 DK DK04100189T patent/DK1455478T3/da active
- 2004-01-21 ES ES04100189T patent/ES2312922T3/es not_active Expired - Lifetime
- 2004-02-05 US US10/772,798 patent/US20040208321A1/en not_active Abandoned
- 2004-02-27 JP JP2004053763A patent/JP2004258667A/ja active Pending
- 2004-02-27 CN CNA2004100060827A patent/CN1536810A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
FR2851862A1 (fr) | 2004-09-03 |
PT1455478E (pt) | 2009-01-02 |
EP1455478A1 (fr) | 2004-09-08 |
US20040208321A1 (en) | 2004-10-21 |
DE602004016236D1 (de) | 2008-10-16 |
EP1455478B1 (fr) | 2008-09-03 |
DK1455478T3 (da) | 2008-12-15 |
CN1536810A (zh) | 2004-10-13 |
JP2004258667A (ja) | 2004-09-16 |
FR2851862B1 (fr) | 2006-12-29 |
ATE407492T1 (de) | 2008-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2312922T3 (es) | Procedimiento de cifrado de una palabra que comprende n digitos. | |
JP3339688B2 (ja) | 非決定論的ミクスチャー発生器ストリーム暗号化システム | |
Al-Ghamdi et al. | Security enhancement of shares generation process for multimedia counting-based secret-sharing technique | |
KR101246490B1 (ko) | 갈루아 폐체 암호 시스템 | |
KR101267109B1 (ko) | 준군을 이용한 암호화 프리미티브, 에러 코딩, 및 의사난수 향상 방법 | |
US20040101142A1 (en) | Method and system for an integrated protection system of data distributed processing in computer networks and system for carrying out said method | |
JP2008513811A (ja) | 計算変換の方法及びシステム | |
Sarkar et al. | Role of cryptography in network security | |
EP3970399B1 (en) | A computer-implemented method of performing feistel-network-based block-cipher encryption of plaintext | |
Stallings | NIST block cipher modes of operation for authentication and combined confidentiality and authentication | |
JP7136226B2 (ja) | 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラム | |
Tarawneh | Cryptography: Recent Advances and Research Perspectives | |
Geetha et al. | Survey on security mechanisms for public cloud data | |
KR100308893B1 (ko) | 엘.에프.에스.알을 이용한 확장 알.씨.4 암호화 방법 | |
Dworkin | Block cipher modes of operation: The CCM mode for authentication and confidentiality | |
Upadhyay et al. | Secure migration of mobile agent using AES & secret sharing approach | |
Chase et al. | Extending the Hill Cipher | |
RU2140709C1 (ru) | Способ криптографического преобразования блоков цифровых данных | |
Tarawneh | Perspective Chapter: Cryptography–Recent Advances and Research Perspectives | |
AU750408B2 (en) | A method of combining a serial keystream output with binary information | |
JP2001509608A (ja) | デジタル・データのlビットの入力ブロックをlビットの出力ブロックに暗号変換するための方法 | |
Biswas | Triple layered Security on Android based SMS transaction | |
Arshad et al. | The design and implementation of database encryption | |
AU750323B2 (en) | A method of generating a key for a public key encryption system | |
CN118101241A (zh) | 基于密钥封装机制的电子医疗数据隐私保护方法及系统 |