Você está na página 1de 15

Códigos y Criptografía 76

TEMA 2. CRIPTOGRAFÍA

Criptografía y Criptoanálisis

Criptología = Criptografía + Criptoanálisis

Etimológicamente criptología quiere decir “escritura secreta”. Actualmente tiene el


significado de ciencia de la comunicación segura; su objetivo es que dos partes puedan
intercambiar información sin que una tercera parte no autorizada, a pesar de que capte
los datos, sea capaz de descifrar la información. La criptografía actúa mediante
criptosistemas; un criptosistema o sistema cifrado es un sistema que permite cifrar los
mensajes de tal forma que una persona no autorizada no pueda descifrar el mensaje. La
criptografía es la ciencia de diseñar criptosistemas.

El criptoanálisis trata de romper los criptosistemas para apoderarse de la información


cifrada.

Criptosistemas Clásicos(Simétricos)

Un criptosistema clásico está formado por un quinteto de conjuntos (P, C, K, e, D), donde:

P es un conjunto finito cuyos elementos se llaman “textos claros” (plain text), estos
serían los mensajes que se quieren enviar tal cual.
C es un conjunto finito cuyos elementos se llaman “criptotextos”, esto sería lo que
resulta una vez que la información se cifra.
K es un conjunto finito cuyos elementos se llaman “claves” (keys).
E = {Ek / k ∈ K} donde Ek: P → C, Ek → transformaciones criptográficas
D = {Dk / k ∈ K} donde Dk: C → P, cumpliendo que Dk(Ek(x)) = x ∀ x ∈ P.

Esto se basa en que las 2 partes se ponen de acuerdo en la clave y en mantenerla secreta.
La clave k da las transformaciones Ek y Dk.

Un criptoanalista intercepta c pero como no conoce la clave k no es capaz de recuperar


p. Cualquier persona que conozca la clave k puede descifrar el mensaje. La clave debe
intercambiarse por un canal seguro y además el conjunto de las claves debe ser enorme.

Este criptosistema se llama simétrico ya que el conocimiento de la clave permite las


operaciones de cifrar y descifrar.

a→0

Tema 2. Criptografía
Códigos y Criptografía 77

b→1
.
.
z → 26

Z27 → Alfabeto

1- P = C = K = Z27
Para cada k ∈ Z27

Ek(x) := x+k (mod 27) ∀ x ∈ Z27


Dk(x) := x-k (mod 27) ∀ x ∈ Z27

k=3

E3(CESAR) = FHVDQ
E3(ZAMORA) = CDORUD

Este sistema se conoce como cifra de César.

Como sólo hay 27 posibles claves se prueban todas las posibles claves hasta que se
encuentra la correcta.

2- P = C = Z27
K = S27 = {σ : Z27 → Z27 / σ es biyectiva (permutación)}

Eσ(x) := σ(x) ∀ x ∈ Z27


Dσ(x) := σ -1(x) ∀ x ∈ Z27

|K| = 27! > 1028

El que |K| sea tan grande implica que este criptosistema no se pueda analizar a lo bruto.
Este criptosistema se llama criptosistema de sustitución.

Principio de Kerchhoff: El criptoanalista conoce el criptosistema que se usa.

Este criptosistema es fácilmente analizable. Su debilidad es el análisis de frecuencias,


esto es debido a la redundancia inherente de los lenguajes naturales. Cada lenguaje
natural tiene una distribución de frecuencias del alfabeto que es característica; por
ejemplo, en castellano:
e → 14.75 %
a → 13.25 %

en inglés
e→
t→
a→

Tema 2. Criptografía
Códigos y Criptografía 78

Cualquier idioma tiene una distribución de frecuencias característica.


Se compara la distribución de frecuencias del texto claro con la distribución de
frecuencias de los símbolos del criptotexto.
También se puede hacer una análisis de frecuencias de pares de letras consecutivas, de
ternas de letras...

Estos dos criptosistemas son criptosistemas de sustitución monoalfabética, la


transformación sustituye una letra por otra, pero siempre es la misma.

3-Criptosistema afín.
P = C = Z27
K = {(a,b) ∈ Z27 x Z27 / mcd (a,27) = 1}

Si k = (a,b)

Ek(x) := ax+b (mod 27) ∀ x ∈ Z27


Dk(x) := a-1(x-b) (mod 27) ∀ x ∈ Z27

a se toma primo con 27 para que tenga inverso en Z27. En este caso |K| = 27 · 29. Este es
un subsistema del caso anterior.

Se diseñaron los sistemas polialfabéticos en los que cada símbolo del alfabeto se
sustituye por otro pero dependiendo de la posición de la letra se cambia por una letra u
otra, así analizando la distribución de símbolos en el criptotexto no permite descifrar el
mensaje.

Criptosistemas de sustitución monoalfabética → Análisis de frecuencias

Criptosistemas Polialfabéticos:

Ejemplo:

Cifra de Vigêner (s. XVI)

P = C = K = (Z27)m, con m ∈ Z27, m ≠ 0


k ∈ K, k = (k1, k2….km) con ki ∈ Z27

Ek(x1....xm) = (x1+k1, x2+k2,….xm+km) (mod 27)


Dk(x1....xm) = (x1-k1, x2-k2,…. xm-km) (mod 27)

Consideramos una sucesión periódica de desplazamientos. El primer símbolo se


desplaza k1 posiciones, el segundo k2 posiciones y así hasta el último y luego repetimos
el proceso para los siguiente m símbolos.

k = VIGENERE , m = 8
k = (22, 9, 7, ...)

Tema 2. Criptografía
Códigos y Criptografía 79

MENSAJE SECRETO se cifraría como:

m → 13 → (13+22) (mod 27) = 8


e → 5 → (5+9) (mod 27) = 14
n → 14 → (14+7) (mod 27) = 21

El criptotexto ya no se puede analizar mediante el análisis de frecuencias. Esta cifra


perduró durante siglos, hasta que en el s. XIX se descifró. Se debe aplicar el Test de
Kasiski: En los textos hay palabras que se repiten a menudo y si la distancia entre partes
iguales del texto es múltiplo de m entonces se van a cifrar de la misma forma. Se buscan
estas coincidencias a lo largo del texto. Al conocer la longitud de la palabra se puede
aplicar análisis de frecuencias sobre los símbolos en las posiciones congruentes módulo
m.

Shanonn demostró que se puede encontrar un criptosistema incondicionalmente seguro,


esto es aunque el criptoanalista disponga de infinitos recursos de computación y de
infinito tiempo no va a poder descifrar el criptosistema.

Cifra de Vernam (1917):

m≥1
P = C = K = (Z2)m
k ∈ Z 2m , k = (k1, k2,….km)

Ek(x1....xm) = (x1+k1, x2+k2,….xm+km) (mod 2)


Dk(y1....ym) = (y1+k1, y2+k2,…. ym+km) (mod 2)

Este criptosistema tiene seguridad incondicional. En este caso la longitud de la clave es


igual a la longitud del texto.
Si generamos una clave aleatoria todas las sucesiones de m bits son igualmente
probables. Este sistema se denomina one-time pad; la clave sólo se usa una vez.
Este sistema en la práctica sirve de poco ya que genero una clave de igual tamaño que
lo que queremos transmitir, pero en criptosistemas simétricos ambas partes deben
conocer la clave y debe haber un canal seguro por el que se puedan transmitir los m bits
de la clave, pero si podemos hacer esto entonces podemos transmitir los m bits del texto
sin cifrar por este canal seguro.

DES (Data Encrytion Standart):

Fue diseñado en USA(70) con la idea de que fuese un estándar y fuese usado por las
empresas en las transacciones. Fue criticado ya que usa una clave secreta de 64 bits,
pero de éstos sólo 56 son la clave ya que hay 8 bits de control (corrección de errores).
Este sistema no ofrecía seguridad suficiente. El espacio de claves es enorme pero con
ordenadores potentes se puede encontrar la clave.

AES (Advanced Encryption Standart):

Este criptosistema es mucho más avanzado que el anterior y está en fase de proyecto.

Tema 2. Criptografía
Códigos y Criptografía 80

Todos los criptosistemas clásicos se han ido rompiendo.

Problemas fundamentales de los criptosistemas clásicos:

- El problema de la seguridad (Shanonn 1949, Bell System Journal). Shanonn dio


una definición de lo que es la seguridad de un criptosistema; definió la seguridad
incondicional, ésta se establece cuando un criptosistema es seguro con
independencia de los medios disponibles (infinita potencia de cálculo). Si un
criptosistema es incondicionalmente seguro no se puede romper. Se demostró la
existencia de criptosistemas de seguridad incondicional (cifrar de Vernann)
aunque d.p.v práctico no tienen utilidad. Los criptosistemas más modernos se
basan en la seguridad computacional. La idea es considerar un criptosistema
computacionalmente seguro cuando aunque haya un algoritmo que rompa el
sistema éste requiera un tiempo de computación tan grande que sea inviable
llevarlo a la práctica.
- El problema del manejo y distribución de claves. Los criptosistemas clásicos son
de clave secreta, cualquiera que conozca la clave puede descifrar la información.
Estos criptosistemas son vulnerables aunque no se sepa como criptoanalizarlos
si se intercepta la clave secreta.
- El problema de la autentificación. Los criptosistemas convencionales no
proporcionan ningún método para que el receptor del mensaje pueda tener la
seguridad de que quien envió el mensaje es quien debería haberlo enviado y no
una tercera parte. El mensaje podría ser alterado y no se podría saber si esta
situación se ha producido.

Criptografía de Clave Pública

En un criptosistema clásico hay un espacio de claves y para cada clave k hay una
función Ek de encriptación y otra Dk de desencriptación. Cualquier persona que conozca
k conoce Ek y Dk; pero además si se conoce Ek se conoce Dk y viceversa; así k, Ek y Dk
deben ser secretas.
En 1976 se trató de buscar un criptosistema en el cual el conocimiento de cómo
encriptar no implicase el conocimiento de cómo desencriptar. Esto permite usar un
criptosistema en el cual Ek fuese pública pero no fuese factible calcula Dk. Ek y Dk
deben ser inversas pero si uno conoce Ek no se debe poder obtener Dk. Esto apareció por
primera vez en un artículo de W. Diffie y M. Hellman (New direction cryptography).
Estos criptosistemas se basan en la función de dirección única. Una función de dirección
única:
f
X → Y

es una función tal que es “fácil” d.p.v computacional calcular f(x) ∀ x ∈ X pero que por
el contrario es “difícil” para la mayoría de los y ∈ Y encontrar un x ∈ X / f(x) = y
(suponiendo que exista).

Tema 2. Criptografía
Códigos y Criptografía 81

Por el momento no se ha demostrado la existencia de funciones de dirección única pero


si se conocen funciones que se piensa que son de dirección única y que se usan en la
práctica ya que de momento nadie ha sido capaz de invertir las funciones.
Si Ek fuese de dirección única ni siquiera el destinatario sería capaz de desencriptar .
Una de las primeras y presumible función de dirección única fue:

f(x) , Zp(x)
p = 264 – 59
24 24
f ( x ) = x 2 + 17 + a1 x 2 + 3 + a1 x 3 + a3 x 2 + a 4 x + a5
ai = enteros de 19 dígitos

En un criptosistema no servirían las funciones de dirección única. Se usa una variante


que son las funciones de dirección única con trampa (trapdoor), que son funciones en
las que es “fácil” calcular f(x), es fácil calcular x / f(x) = y dado y es posible revelar un
algoritmo eficiente para calcular f “hacia delante” sin que el conocimiento del mismo
proporcione un algoritmo eficiente para calcular f “hacia atrás”. Con esta función el
destinatario ya puede desencriptar la información.
Esto llevó al concepto de criptosistema de clave pública en el que hay una clave pública
que conoce todo el mundo y otra secreta para desencriptar que sólo conoce el
destinatario, con lo que ya no hay que intercambiar la clave secreta.

Criptosistemas de Clave Pública (CCP) o Criptosistemas asimétricos:

Cada usuario del criptosistema se construye una función de encriptación Eu y una


función de desencriptación Du que cumplen las siguientes propiedades:

CP1- Du(Eu(x)) = x para todo mensaje x y todo usuario u.


CP2- Existen algoritmos eficientes para calcular Eu(x) y Du(x) para todo x.
CP3- Existe una clave secreta (conocida sólo por u) que permite obtener rápidamente
Du a partir de Eu pero el conocimiento de Eu no hace factible hallar un algoritmo D *u
que ratifica D *u (Eu(x)) = x para todo x.

Cada usuario u hace público el algoritmo para calcular Eu, los Eu se ponen en un
directorio que es público. El algoritmo que permite calcular Du es mantenido en secreto
por u.
Si A quiere enviar un mensaje m a B, A busca EB en el directorio y calcula EB(m), A
envía c = EB(m) y B calcula DB(EB(m)). Un criptoanalista conoce c = EB(m).

CP4- Eu(Du(x)) = x ∀ x y todo usuario u.


CP5- No es factible encontrar a partir de Eu una función D *u tal que Eu(D *u (x)) = x

Definición: Una función H: X → Y con |X| = l, |Y| = k y k mucho menor que l se llama
“función hash” si es fácil calcular H(x) para todo x ∈ X y cumple:

Tema 2. Criptografía
Códigos y Criptografía 82

1) No es factible encontrar dos valores distintos x ≠ x´∈ X tales que H(x) = H(x´)
(“H es resistente a la colisión”).
2) Dada y ∈ Im H no es factible encontrar x ∈ X tal que H(x) = y (“H es resistente
a la preimagen”).

A envía m a B firmado. A calcula H = H(m) y envía a B el par (m,H(m)). B aplica H a


m y obtiene H(m), si coincide con H sabe que el mensaje es auténtico suponiendo que H
proviene realmente de A.
A envía m a B firmado, A calcula H = H(m). A calcula EBDA(H) y envía a B
(m, EBDA(H)) (se encripta la firma). B calcula EADB(EBDA(H)) = EADA(H) = H. A
continuación B comprueba que H(m) = H.
Al aplicar EA la única forma de obtener la firma desencriptada es que previamente haya
sido encriptada con DA que sólo A conoce.
Si A negase haber enviado el mensaje B podría ir a una 3ª parte y demostrar que A ha
enviado el mensaje (sólo A ha podido utilizar DA).

El Criptosistema RSA

Riverest-Shamir-Adleman: Criptosistema RSA (A method for obtaining digital


signatures and public key cryptosystems- Comunications of the ACM 1978)

Se piensa que el criptosistema RSA es tan seguro como lo era en 1978.

“Exponenciación modular con exponente y módulos fijos”

gm,n: Zm → Zn

gm,n := xm (mod n)

Se piensa que esta es una función de dirección única con trampa.

“Extracción de raíces módulo n”: Dados y, m, n ∈ Z+ hallar (en caso de que exista) un x
tal que xm ≡ y (mod n)

Es fácil calcular las imágenes pero la extracción de raíces módulo n no es factible


computacionalmente a menos que se conozca una información adicional, que si se
conoce entonces es fácil volver hacia atrás; esto se logra conociendo la factorización de
m en números primos ya que es fácil obtener las raíces m-ésimas.
Dados m y n nadie conoce un algoritmo eficiente para la extracción de raíces módulo n
pero no se ha demostrado que este algoritmo no exista.

RSA:

RSA = (P, C, K, E, D) donde:

Tema 2. Criptografía
Códigos y Criptografía 83

P = C = Zn, con n = pq p y q primos


K = {(n, e, d)/ ed ≡ 1 (mod φ(n))}

Para cada k = (n, e, d)


Ek(x) : = xe (mod n) ∀ x ∈ Zn
Dk(x) : = xd (mod n) ∀ x ∈ Zn

φ(n) = número de enteros positivos menores que n y primos con n.

Zn = {0, 1, ..., n-1}

En Zn sólo tienen inverso los x tales que mcd(x,n) = 1

Z *n = {x ∈ Zn / mcd(x,n) = 1} es un grupo finito


| Z *n | = φ(n)

En el caso del sistema RSA:

φ(n) = φ(pq) = φ(p)φ(q) = (p-1)(q-1)


| Z n* | = p-1 si p es primo

∀ x ∈ Zn Dk(Ek(x)) = x

Teorema (Lagrange): Si G es un grupo finito y x ∈ G, entonces x|G| = 1

Corolario (Euler): Si x ∈ Z+, mcd(x,n) = 1, entonces xφ(n) ≡ 1 (mod n)

Corolario (Teorema pequeño de Fermat): Si p es primo, xp ≡ x (mod p)

x ∈ Z *p
xp-1 ≡ 1 (mod p)
xp ≡ x (mod p)

x ∈ Z *n
Ek(x) ≡ xe (mod n)
Dk(Ek(x)) ≡ ( x e ) d (mod n) ≡ xed (mod n) ≡ xtφ(n)+1 (mod n) ≡ ( x φ ( n ) ) t x (mod n) ≡
1 2 3
=1
x (mod n)

ed ≡ 1 (mod φ(n)) ⇔ ed = tφ(n) +1

El par (n,e) constituye la clave pública mientras que d, p y q se mantienen en secreto.

Tema 2. Criptografía
Códigos y Criptografía 84

Cada usuario u elige dos primos distintos grandes (512 bits ≅ 154 dígitos decimales) pu
y qu y calcula nu = puqu (n recibe el nombre de módulo).
Se calcula φ(nu) = (pu – 1)(qu – 1) = |Z *nu |. u elige un entero eu tal que 1 < eu < φ(nu) y
mcd(eu,φ(nu)) = 1. A continuación se calcula el inverso de eu en Z φ* ( nu ) , es decir, se
calcula el entero du tal que 1 < du < φ(nu) y eudu ≡ 1 (mod φ(nu))

eu → exponente de encriptación
du → exponente de desencriptación

Clave pública : (nu,eu)

Eu(x) : = x eu (mod nu)


Du(x) : = x du (mod nu)

u mantiene secreto pu, qu y du


Los números más difíciles de factorizar son los que se factorizan como 2 primos que
tienen el mismo número de dígitos.

Se presentan dos problemas:

- Reconocimiento de primos (primality test)


- Factorización de enteros.

Al usar el RSA queremos que otra parte no rompa el sistema, cualquier persona que
conozca la descomposición de un en factores primos puede desencriptar, esto lleva al
problema de la factorización de enteros; nadie conoce un método eficiente para
factorizar enteros generales.

A→B

A busca (nB,eB)
A envía a B x eB (mod nB)
B calcula (x eB ) d B (mod nB) = x

Un criptoanalista tiene x eB (mod nB), debe hallar la raíz eB de x, para esto debe conocer
φ(nB) y para ello debe conocer qB y dB.

p = 47 q = 59

n = pq = 47·59 = 2773
φ(n) = φ(p)·φ(q) = 46·58 = 2668
e = 1225

2 5 1 1 1 1 1 1
2668 1225 218 135 83 52 31 21 10

Tema 2. Criptografía
Códigos y Criptografía 85

21 135 83 52 31 21 10 1

mcd(1225,2668) = 1
1 = 257·1225 – 118·2668

257·1225 ≡ 1 (mod 2668)


d = 257
Clave pública (2773,1225)
Clave privada (2773,257)
x1225 (mod 2773)

Exponenciación binaria:

1225 = (10011001001)2 = 210 + 27 + 26 + 23 + 20


10
+ 2 7 + 2 6 + 23 + 2 0 ) 10 7 5 3
x1225 = x ( 2 = x2 x2 x2 x2 x

1 ↔ cx
0↔c

c = elevado al cuadrado
x = multiplicar

cxcccxcxcccxccx
(((((((((x2)2)2·x)2·x)2)2)2·x)2)2)2)·x (mod 2773)

Haciendo esto calculamos directamente x1225 (mod 2773); hacemos esto con sólo 14
multiplicaciones.

Vamos a ver que se cumplen las condiciones CP1...CP5

- CP1 se cumple.
- D y E se calculan mediante algoritmos factibles ya que el algoritmo de
exponenciación binaria es eficiente. CP2 se cumple.
- CP3 permite asegurar que el RSA es seguro. Eu es fácil de calcular pero obtener
Du a partir de Eu no es factible. Existe la conjetura de que criptoanalizar RSA es
equivalente a poder factorizar n. Lo máximo que se ha llegado a factorizar son
números de 130 dígitos. Los mejores algoritmos de factorización que se conocen
son subexponenciales pero aún así el tiempo de computación es grande. Existe
una creencia de que el RSA requiere la factorización de n y esto es difícil.

Encriptación:

Tema 2. Criptografía
Códigos y Criptografía 86

x → x1225 (mod 2773) = c

Desencriptación:

c → c 257 (mod 2773)

257 = (100000001)2
cxccccccccx
c257 = (((((((c2)2)2)2)2)2)2)2c (mod 2773)

Problemas:

- Manejo y distribución de claves. Este sistema de clave pública resuelve este


problema inmediatamente ya que 2 partes no tienen necesidad de intercambiarse
clave alguna. Un usuario elige los primos y el exponente de Exponenciación y
hace pública una clave pero la clave privada no se intercambia con nadie.
- Identificación. Los criptosistemas clásicos no permiten saber que el mensaje
proviene de quien realmente dice. Suponiendo que el RSA sea seguro (CP1 ...
CP5) se resuelve este problema.
- Seguridad. Este problema está encerrado en la condición CP3. No está
demostrado que el RSA es seguro, existen una serie de hechos matemáticos que
hacen pensar que el RSA es seguro. La seguridad del RSA se basa en la creencia
de que la función de encriptación es una función de dirección única con trampa.
El que RSA sea seguro se basa en 2 premisas:

a) Se cree que romper RSA es equivalente a saber factorizar n. Esta sin


demostrar que no puede existir otra forma de romper RSA que no pase
por factorizar n. No está demostrado que romper RSA sea equivalente a
factorizar n.
b) Si aceptamos la premisa anterior de que romper RSA pasa por factorizar
n tenemos que la factorización de n para tamaños grandes de n es un
problema intratable d.p.v. computacional.

Se ha demostrado que factorizar el criptosistema de Rabin, que es parecido al


RSA, es equivalente a factorizar el módulo. La factorización de enteros equivale
a estudiar RSA.

Complejidad computacional:

La teoría de la complejidad computacional trata de clasificar los problemas


computacionales de acuerdo con su complejidad, esto se corresponde con la idea
intuitiva de complejidad.

Factorización NFS (Number Field Sieve – Criba del cuerpo de números)


NFSnet: orca.st.usm.edu/~cwcurry/nfs/nfs.html

Tema 2. Criptografía
Códigos y Criptografía 87

Factorización ECM (Eliptic Curve Method):

No sirve para factorizar números tan grandes como el NFS pero tiene ciertas ventajas
para ciertos factores. El tiempo del NFS depende del tamaño del número, no de los
factores que lo componen; en cambio ECM encuentra más fácilmente los factores si
éstos son más pequeños.
Para romper RSA es mejor el NFS ya que ECM no puede con números de más de 50
dígitos.

ECPNET:

www.loira.fr/~zimmerma/records/ecmnet.html

Cunningham proyect:

www.cerios.purdme.edu/ssw/cum//index.html

www.npac.sgr.edu/factoring.html

www.utm.edu/research/primes

Aquí se pueden encontrar los primos más grandes que se conocen.

P. Ribenbaim: “The new book of Prime number records”. Springer- Verlay (1995)

1984: Yates “Sinkes of the Titanics”

titanic prime = primo de más de 1000 dígitos decimales


En 1984 se conocían 110 primos titánicos
Gigantic primer = primo de más de 10000 dígitos decimales

Primos de Fermat:
m
Fm = 2 2 + 1

Estos números sólo son primos hasta m = 5

Primos de Marsenne: 2p-1 (p primo)

Para ver si un número de esta forma es primo o no se aplica el test de Lucas-Lehmer.

www.marsenne.org/prime.htm : GIMPS (Great Internet Marsenne Prime Search)


entropia.com/ips

Mp = 2p – 1

Tema 2. Criptografía
Códigos y Criptografía 88

1996 → M1257787 (Cray T94) (Slawinski & Gage) (378632 dígitos decimales)
1996 → M1398269 (P 90 MHZ) (J Aeannengand, Woltman, GIMPS) (420921 dígitos
decimales)
1997 → M2976221 (P 100 MHz)
1998 → M3021377 (P 200 MHz) (909526 dígitos decimales)
1999 → M69672593 (P 350 MHz) (Hajratwala) ( 2098960 dígitos decimales)

Direcciones sobre criptografía:

www.cryptome.org
www.comterpone.com (Bruce Schneier : Cryptogam)
www.certicon.com (Criptografía de curvas elípticas)
www.iec.csic.es/criptonomicon
www.kriptopolis.com
theory.lcs.mit.edu/~rivest/crypto-security.html

UBASIC (Yuji Kida) → MPQS (Multiple Polynomial Quadratic Sieve)


http://150.93.96.124/~kida
ftp://rkmath.rikkyo.ac.jp/pub/ubim
www.indigo.ie/~rmscott

MIRALCL ( Multiple Precission Integer and Rational C Library)


www.panillac.inria.fr/algo/morain
www.lix.polytechnique.fr/morain/Prgms/eccp.english.html
www.reality.sgi.com/chango/tech/math/prime/merdigit/index.html

f a ,n : Z n → Z n
f a ,n ( x) := a x (mod n)

“Problema del logaritmo discreto”: Dados a, n, y encontrar, si existe, un entero x tal que
ax ≡ y (mod n).

Se piensa que esta función es de dirección única. Esto se usa para alamacenar
passwords.

Sea G un grupo finito y g ∈ G. Sea <g> el subgrupo de G generado por g. Problema del
logaritmo discreto:
Dado y ∈ <g> encontrar un entero x tal que gx = y
No hay algoritmos eficientes que premitan calcular esto.

DIFFIE HELLMAN EXCHANGE:

Tema 2. Criptografía
Códigos y Criptografía 89

Se usa el logaritmo discreto para intercambiar claves entre usuarios. La clave es


pequeña, así no hay problema en transmitirla, no ocurre esto con los mensajes. La
principal desventaja de los criptosistemas de clave pública frente a los de clave privada
es la eficiencia, los criptosistemas de clave pública son varios órdenes de magnitud más
lentos. El DES, p. ej., permite codificar y descodificar a velocidades enormes, si esto se
hiciese con el RSA se necesitaría mucho más tiempo de transmisión y más espacio de
almacenamiento. En algunos casos conviene usar un criptosistema de clave privada pero
realizando el intercambio de clves mediante un criptisistema de clave pública. Se
propuso utilizar el logaritmo discreto para hacer esto.

Sea Fp = Zp = {0, 1, ... p-1}


Fp* = Fp – {0} = {1,2, ... p-1}
Fp* es un grupo para la multiplicación y es, de hecho, un grupo cíclico (exite g ∈ Fp* tal
que Fp* = <g>).

“Dados un generador g ∈ Fp* y dado y ∈ Fp*, hallar x ∈ Fp* / gx = y ”

El canal es público

A B

A y B se ponen de acuerdo en un primo grande p (512 bits), así O conoce p, además, se


ponen de acuerdo en un elemento g ∈ Fp*.
A elige un entero positivo kA, 0 < kA < p, y aproximadamente del orden de p y calcula
g k A (mod p ) y esto es lo que le envía a B.
B elige un entero positivo kB, 0 < kB < p, y aproximadamente del orden de p y calcula
g k B (mod p ) y esto es lo que le envía a A.
La clave que van a compartir es:

g k Ak B (mod p ) ∈ Fp*

( )
A calcula g kB
KA
(mod p) = g k Ak B (mod p )
B calcula (g )kA KB
(mod p) = g k Ak B (mod p )

Tema 2. Criptografía
Códigos y Criptografía 90

Para que O pueda encontrar la clave secreta debe resolver el problema de Diffie-
Hellman:
Dados g , g k A , g kB ∈ Fp* encontrar g k AkB .

Se cree que este problema es equivalente al problema del logaritmo discreto que es
intratable computacionalmente.

Tema 2. Criptografía

Você também pode gostar