Escolar Documentos
Profissional Documentos
Cultura Documentos
TEMA 2. CRIPTOGRAFÍA
Criptografía y Criptoanálisis
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.
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
k=3
E3(CESAR) = FHVDQ
E3(ZAMORA) = CDORUD
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)}
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.
en inglés
e→
t→
a→
Tema 2. Criptografía
Códigos y Criptografía 78
3-Criptosistema afín.
P = C = Z27
K = {(a,b) ∈ Z27 x Z27 / mcd (a,27) = 1}
Si k = (a,b)
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 Polialfabéticos:
Ejemplo:
k = VIGENERE , m = 8
k = (22, 9, 7, ...)
Tema 2. Criptografía
Códigos y Criptografía 79
m≥1
P = C = K = (Z2)m
k ∈ Z 2m , k = (k1, k2,….km)
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.
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
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
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
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).
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”).
El Criptosistema RSA
gm,n: Zm → Zn
gm,n := xm (mod n)
“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)
RSA:
Tema 2. Criptografía
Códigos y Criptografía 83
∀ x ∈ Zn Dk(Ek(x)) = x
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)
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
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
Exponenciación binaria:
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.
- 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
Desencriptación:
257 = (100000001)2
cxccccccccx
c257 = (((((((c2)2)2)2)2)2)2)2c (mod 2773)
Problemas:
Complejidad computacional:
Tema 2. Criptografía
Códigos y Criptografía 87
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
P. Ribenbaim: “The new book of Prime number records”. Springer- Verlay (1995)
Primos de Fermat:
m
Fm = 2 2 + 1
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)
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
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.
Tema 2. Criptografía
Códigos y Criptografía 89
El canal es público
A B
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