•En
1978 Ralph Merkle y
Martin Hellman
proponen un sistema de cifra de clave pública denominado Mochila con Trampa de Merkle y Hellman.
•El
algoritmo se basa en crear una mochila difícil a partir de una mochila simple
de forma que el cifrado se haga con la mochila difícil y el descifrado con la
mochila simple o fácil. Se puede pasar fácilmente de la mochila simple a la
difícil o viceversa usando una trampa.
La
mochila difícil será nuestra clave pública.
Diseño
mochila de Merkle y Hellman (1)
1. Se selecciona una mochila supercreciente de m
elementos.
S’
= {S1’,
S2’,
..., Sm’}.
2. Se
elige un entero m
(módulo
de trabajo) mayor que la suma de los elementos de la mochila.
m
m > S Si’
i = 1 más fácil: m ³ 2*Sm’
3. Se elige un entero w primo relativo con m. mcd(w,m) = 1
Se recomienda que w no tenga factores con los
elementos de S’.
4. Se
multiplica S’ por w mod m. Si = w*Si’ mod m
5. Se
calcula el inverso de w en
el cuerpo m. w-1 = inv(w,m)
Clave privada: m, w-1 Esto se interpreta como encontrar los
Clave pública: mochila S vectores que cumplan con un valor de T.
CIFRADO: DESCIFRADO:
C = S * M M = w-1 *
C mod m
como S = w * S’ mod m Entonces obtenemos:
C = w * S’* M mod m <-------------------> S’* M
Cifrado
mochila de Merkle y Hellman (1)
Vamos a cifrar el mensaje
M = Sol usando
la mochila simple y supercreciente
S’
= {3, 5, 12, 21}.
1.
Elección de m: m ³ 2*S4 ³ 2*21 m = 45
2.
Elección de w: mcd(w, m) = 1 w =
32 (w-1 = 38)
3.
Mochila S: S = w * S’ mod m
S1 = 32
* 3 mod 45 = 96 mod 45 =
6
S2 = 32
* 5 mod 45 = 160 mod 45 =
25
S3 = 32
* 12 mod 45 = 384 mod 45 =
24
S4 = 32
* 21 mod 45 = 672 mod 45 =
42
Clave pública: S = {6,25,24,42} Clave privada: m=45, w-1=38
Cifrado
mochila de Merkle y Hellman (2)
Clave pública: S = {6,25,24,42} Clave privada: m=45, w-1=38
Como m = 4, cifraremos bloques
de 4 bits,
convirtiendo el mensaje a
su equivalente en binario del código ASCII.
Cifrado: M = Sol = 0101
0011 0110 1111 0110 1100
C = (25+42), (24+42), (25+24),
(6+25+24+42), (25+24), (6+25)
C = 67, 66, 49, 97, 49, 31
Descifrado
mochila de Merkle y Hellman
Clave pública: S = {6,25,24,42} Clave privada: m =
45, w-1 = 38
Cifrado: M = Sol = 0101 0011 0110 1111
0110 1100
C = (25+42), (24+42), (25+24),
(6+25+24+42), (25+24), (6+25)
C = 67, 66, 49, 97, 49, 31 Como S’ = {3,5,12,21}
Descifrado:
38*67 mod
45=2546 mod 45 =
26 38*97 mod
45=3686 mod 45 =
41
38*66 mod
45=2508 mod 45 =
33 38*49 mod
45=1862 mod 45 =
17
38*49 mod
45=1862 mod 45 =
17 38*31 mod
45=1178 mod 45 =
8
M = 0101 0011 0110 1111
0110 1100 = Sol
Valores
de diseño de mochilas M-H (1)
Merkle y Hellman
proponen los siguientes parámetros:
a) Tamaño de la mochila m ³ 100
b) Módulo m
uniforme en el siguiente intervalo:
Intervalo m: [22m+1+1, 22m+2-1] Þ 2m+2 bits
Si m
= 100:
todos los elementos de S son de 202 bits.
c)
Valores de Si’ elegidos uniformemente en el
intervalo:
Intervalo Si’:
[(2i-1-1)*2m +1, 2i-1*2m]
Si m
= 100:
1 £
S1’ £ 2100 £ S2’ £ 2101 £ S3’ £ 2102 ...
d) Elegir un valor x en el intervalo [2, m-2]. El
factor w se calcula como: w =
mcd
(m, x)
Fortaleza
de las mochilas M-H
En el año 1982 Adi
Shamir
y Richard Zippel
encuentran debilidades a las
mochilas de Merkle-Hellman:
•Si se conoce el módulo m (o
puede deducirse) ...
•Y si los dos primeros elementos (S1 y S2) de
la mochila difícil se corresponden
con los dos primeros elementos (S1’ y S2’) de
la mochila simple y son primos con m ...
•Entonces
podemos generar la mochila simple a partir de la difícil ya
que encontraremos
la clave secreta w-1 ... M
•Esta debilidad, aunque tenga
fuertes restricciones, no
hace recomendable
el uso de las mochilas
M-H para el cifrado de la información ... L
Criptoanálisis
de Shamir y Zippel
El ataque para m = 100 supone:
a) Que los dos primeros elementos de S’
de 100 y 101 bits son mucho
más pequeños que el módulo m de
202 bits.
b) Que podemos identificar los elementos
S1 y S2 en
la mochila difícil y hacerlos
corresponder con S1’ y S2’.
c) Que conocemos el módulo m o
podemos deducirlo.
•Con
estos datos se trata de encontrar los valores de S1’ y S2’
además del
factor de multiplicación w.
•Con
estos valores podemos generar la mochila fácil.
Pasos
del ataque de Shamir y Zippel (1)
1. Se calcula q = (S1/S2) mod m
Como
Si = Si’* w mod m
entonces:
q
= (S1’/S2’) mod m = [S1’* inv(S2’, m)] mod m
Esto
implica una condición: mcd (S2’,
m) =
1
2. Se calculan todos los múltiplos
modulares del valor q con multiplicadores
en el rango.
[1, 2m+1] = [1, 2101]
CM
= {1*q mod m, 2*q mod m,
..., 2m+1*q mod m}
3. El candidato para S1’ será el valor más pequeño de CM.
4.
Encontrado el candidato para S1’se
calcula:
w = (S1/S1’) mod m = [S1* inv(S1’, m)] mod m
Esto implica una nueva condición: mcd
(S1’,
m) =
1
5.
Conocido w encontramos w-1 =
inv(w, m) y
así calculamos todos los elementos de la mochila Si’ = Si * w-1 mod m que
debería ser del tipo supercreciente.
6. Si
no se genera una mochila supercreciente, se
elige el siguiente valor más pequeño del conjunto CM y así hasta recorrer todos
sus valores. Si con este conjunto CM no se obtiene una mochila simple, se
repite el punto 2 tomando ahora valores en el rango
2m+i
con i = 2, 3, ...
Este archivo forma parte de un curso
completo sobre Seguridad Informática y Criptografía. Se autoriza su uso,
reproducción en computador e impresión en papel sólo para fines docentes,
respetando siempre los derechos del autor.
http://es.scribd.com/doc/4679988/Seguridad-Informatica-y-Criptografia-Cifrado-Asimetrico-con-Mochilas#scribd
http://es.scribd.com/doc/4679988/Seguridad-Informatica-y-Criptografia-Cifrado-Asimetrico-con-Mochilas#scribd



No hay comentarios.:
Publicar un comentario