Criptografía de clave simétrica
Criptografía de clave simétrica
Requiere emisor, receptor conozca la clave secreta compartida.
P: ¿Cómo ponerse de acuerdo en la clave, especialmente si nunca se han visto?
Criptografía de clave pública
Enfoque radicalmente distinto [Diffie-Hellman76, RSA78].
Emisor, receptor no comparten clave secreta.
Clave de encriptación pública conocida por todos.
Clave de desencriptación privada, conocida sólo por el receptor.
Criptografía de clave pública
(Gp:) Texto plano
mensaje, m
(Gp:) Texto cifrado
(Gp:) Algoritmo de encriptación
(Gp:) Algoritmo de
desencriptación
(Gp:) Clave pública de Roberto
(Gp:) Texto plano
mensaje
(Gp:) K (m)
(Gp:) B
(Gp:) +
(Gp:) K
(Gp:) B
(Gp:) +
(Gp:) Clave privada de Roberto
(Gp:) K
(Gp:) B
(Gp:) –
(Gp:) m = K (K (m))
(Gp:) B
(Gp:) +
(Gp:) B
(Gp:) –
Algoritmos de encriptación de clave pública
Se necesita K ( ) y K ( ), de manera que:
B
B
.
.
Dada la clave pública K , debería ser imposible computar una clave privada K .
B
B
Requisitos:
(Gp:) 1
(Gp:) 2
RSA: algoritmo de Rivest, Shamir y Adleman.
+
–
(Gp:) K (K (m)) = m
(Gp:) B
(Gp:) B
(Gp:) –
(Gp:) +
+
–
RSA: elegir claves
1. Elegir dos números primos grandes, p y q.
(por ejemplo, 1.024 bits cada uno).
2. Calcular n = pq y z = (p-1)(q-1).
3. Elegir e (con e< n) que no tenga factores comunes
con z (e y z son primos relativos).
4. Encontrar un número d , tal que ed-1 sea divisible de
forma exacta entre z (en otras palabras, ed mod z = 1 ).
5. La clave pública es (n,e). La clave privada es (n,d).
(Gp:) K
(Gp:) B
(Gp:) +
(Gp:) K
(Gp:) B
(Gp:) –
RSA: encriptación, desencriptación
0. Dados (n,e) y (n,d) calculados anteriormente.
(Gp:) 1. Para encriptar patrón de bit , m, calcular:
(Gp:) c = m mod n
(Gp:) e
(Gp:) (es decir, el resto cuando m se divide por n).
2. Para desencriptar el patrón de bit recibidos, c, calcular:
(Gp:) m = c mod n
(Gp:) d
(es decir, el resto cuando c se divide por n).
d
(Gp:) m = (m mod n)
(Gp:) e
(Gp:) mod n
(Gp:) d
¡Magia!
c
e
Ejemplo RSA
Roberto elige p=5, q=7. Entonces n=35, z=24.
e=5 (entonces e, z primo relativo).
d=29 (entonces ed-1 es divisible de forma
exacta entre z.
(Gp:) letra
(Gp:) m
(Gp:) m
(Gp:) e
(Gp:) c = m mod n
(Gp:) e
(Gp:) l
(Gp:) 12
(Gp:) 1524832
(Gp:) 17
(Gp:) c
(Gp:) m = c mod n
(Gp:) d
(Gp:) 17
(Gp:) 481968572106750915091411825223071697
(Gp:) 12
(Gp:) c
(Gp:) d
(Gp:) letra
(Gp:) l
(Gp:) Encriptación:
(Gp:) Desencriptación:
RSA: ¿por qué es
(Gp:) m = (m mod n)
(Gp:) e
(Gp:) mod n
(Gp:) d
(Gp:) (m mod n)
(Gp:) e
(Gp:) mod n = m mod n
(Gp:) d
(Gp:) ed
Resultado útil de la teoría de los números: si p,q primo y n = pq, entonces:
(Gp:) x mod n = x mod n
(Gp:) y
(Gp:) y mod (p-1)(q-1)
(Gp:) = m mod n
(Gp:) ed mod (p-1)(q-1)
(Gp:) = m mod n
(Gp:) 1
(Gp:) = m
(usando la teoría de los números
el resultado es el anterior)
(si elegimos ed para que sea divisible entre
(p-1)(q-1) con resto 1)
?
RSA: otra propiedad importante
La siguiente propiedad va a ser muy útil más adelante:
(Gp:) K (K (m)) = m
(Gp:) B
(Gp:) B
(Gp:) –
(Gp:) +
(Gp:) K (K (m))
(Gp:) B
(Gp:) B
(Gp:) +
(Gp:) –
(Gp:) =
Usar primero clave pública, seguida de clave privada
Usar primero clave privada, seguida de clave pública
¡El resultado es el mismo!
Autenticación
Objetivo: Roberto quiere que Alicia le demuestre su identidad.
Protocolo pa1.0: Alicia dice Soy Alicia.
(Gp:) ¿Escenario de fallo?
(Gp:) Soy Alicia
Autenticación
Objetivo: Roberto quiere que Alicia le demuestre su identidad.
Protocol pa1.0: Alicia dice Soy Alicia.
(Gp:) En una red,
Roberto no puede ver a Alicia, entonces Gertrudis simplemente dice que ella es Alicia.
(Gp:) Soy Alicia
Autenticación: otro intento
Protocolo pa2.0: Alicia dice Soy Alicia en un paquete IP
que contiene su dirección IP origen.
(Gp:) ¿Escenario de fallo?
(Gp:) Soy Alicia
(Gp:) Dirección IP
de Alicia
Autenticación: otro intento
Protocol pa2.0: Alicia dice Soy Alicia en un paquete IP
que contiene su dirección IP.
(Gp:) Gertrudis puede crear un paquete falso
de la dirección de Alicia
(Gp:) Soy Alicia
(Gp:) Dirección IP
de Alicia
Autenticación: otro intento
Protocolo pa3.0: Alicia dice Soy Alicia
y envía su contraseña secreta para demostrarlo.
.
(Gp:) ¿Escenario de fallo?
(Gp:) Soy Alicia
(Gp:) Dirección IP
de Alicia
(Gp:) Contraseña
De Alicia
(Gp:) OK
(Gp:) Dirección IP
de Alicia
Autenticación: otro intento
Protocolo pa3.0: Alicia dice Soy Alicia y
envía su contraseña secreta para demostrarlo.
(Gp:) Ataque de reproducción: Gertrudis graba el paquete de Alicia y más tarde se lo reproduce a Roberto.
(Gp:) Soy
Alicia
(Gp:) Dirección IP
de Alicia
(Gp:) Contraseña
de Alicia
(Gp:) OK
(Gp:) Dirección IP
de Alicia
(Gp:) Soy Alicia
(Gp:) Dirección IP
de Alicia
(Gp:) Password
de Alicia
Autenticación: otro intento más
Protocolo pa3.1: Alicia dice Soy Alicia y envía su contraseña
secreta encriptada para demostrarlo.
(Gp:) ¿Escenario de fallo?
(Gp:) Soy Alicia
(Gp:) Dirección IP
de Alicia
(Gp:) Contraseña
encriptada
(Gp:) OK
(Gp:) Dirección
IP de
Alicia
Autenticación: otro intento
Protocolo pa3.1: Alicia dice Soy Alicia y envía su contraseña
secreta encriptada para demostrarlo.
(Gp:) ¡Grabar y reproducir
sigue funcionando!
(Gp:) Soy
Alicia
(Gp:) Dirección IP
de Alicia
(Gp:) Contraseña
encriptada
(Gp:) OK
(Gp:) Dirección IP
de Alicia
(Gp:) Soy Alicia
(Gp:) Dirección IP
de Alicia
(Gp:) Contraseña
encriptada
Autenticación: otro intento más
Objetivo: evitar ataque de reproducción.
Núnico: número (R) utilizado una única vez durante su periodo
de vida.
pa4.0: para probar a Alicia en directo, Roberto le envía un núnico, R. Alicia debe devolver R, encriptado con una clave secreta compartida.
(Gp:) ¿Fallos, inconvenientes?
(Gp:) Soy Alicia
(Gp:) R
(Gp:) K (R)
(Gp:) A-B
(Gp:) Alicia está en directo, y sólo Alicia conoce la clave para encriptar el núnico, así que ¡ella tiene que ser Alicia!
Autenticación: pa5.0
pa4.0 requiere una clave simétrica compartida.
¿La podemos autenticar usando técnicas de clave pública?
pa5.0: usa un núnico, criptografía de clave pública.
(Gp:) Soy Alicia
(Gp:) R
(Gp:) Roberto calcula
(Gp:) K (R)
(Gp:) A
(Gp:) –
(Gp:) Envíame tu clave pública
(Gp:) K
(Gp:) A
(Gp:) +
(Gp:) (K (R)) = R
(Gp:) A
(Gp:) –
(Gp:) K
(Gp:) A
(Gp:) +
(Gp:) y sabe que sólo Alicia puede tener la clave privada que encripta a R, esto es:
(Gp:) (K (R)) = R
(Gp:) A
(Gp:) –
(Gp:) K
(Gp:) A
(Gp:) +
pa5.0: agujero de seguridad
Ataque de hombre (mujer) interpuesto: Gertrudis actúa como Alicia (para Roberto) y como Roberto (para Alicia).
(Gp:) Soy Alicia
(Gp:) Soy Alicia
(Gp:) R
(Gp:) T
(Gp:) K (R)
(Gp:) –
(Gp:) Envíame tu clave pública
(Gp:) T
(Gp:) K
(Gp:) +
(Gp:) A
(Gp:) K (R)
(Gp:) –
(Gp:) Envíame tu clave pública
(Gp:) A
(Gp:) K
(Gp:) +
(Gp:) T
(Gp:) K (m)
(Gp:) +
(Gp:) T
(Gp:) m = K (K (m))
(Gp:) +
(Gp:) T
(Gp:) –
(Gp:) Gertrudis consigue
(Gp:) envía m a Alicia encriptado con la clave pública de Alicia.
(Gp:) A
(Gp:) K (m)
(Gp:) +
(Gp:) A
(Gp:) m = K (K (m))
(Gp:) +
(Gp:) A
(Gp:) –
(Gp:) R
pa5.0: agujero de seguridad
Ataque de hombre (mujer) interpuesto: Gertrudis actúa como Alicia (para Roberto) y como Roberto (para Alicia).
Difícil de detectar:
Roberto recibe todo lo que Alicia le envía, y viceversa.
¡El problema es que Gertrudis también recibe los mensajes!
Firma digital
Técnica criptográfica análoga a las firmas hechas a mano.
Emisor (Roberto) firma digitalmente un documento y establece que es su propietario/creador.
Verificable, no falsificable: destinatario (Alicia) puede demostrarle a alguien que Roberto, y no otra persona (incluida Alicia), ha firmado el documento.
Firma Digital
Firma digital simple para mensaje m
Roberto firma m encriptándolo con su clave privada KB, creando un mensaje firmado, KB(m).
(Gp:) –
(Gp:) –
Querida Alicia
Como te echo de menos. ¡Pienso en ti todo el día!
(bla bla bla)
Roberto
Mensaje de Roberto, m
Algoritmo
de encriptación
de clave pública
Clave privada de Roberto
(Gp:) K
(Gp:) B
(Gp:) –
Mensaje de Roberto, m, firmado (encriptado) con su clave privada
(Gp:) K
(Gp:) B
(Gp:) –
(m)
Firma digital
Supongamos que Alicia recibe el mensaje m, con firma digital KB(m).
Alicia verifica m firmado por Roberto aplicando la clave pública de Roberto KB a KB(m) y comprueba que KB(KB(m) ) = m.
Si KB(KB(m) ) = m, cualquiera que haya firmado m debe haber usado la clave privada de Roberto.
(Gp:) +
(Gp:) +
(Gp:) –
(Gp:) –
(Gp:) –
(Gp:) –
(Gp:) +
Entonces Alicia verifica que:
Roberto ha firmado m.
Nadie más ha firmado m.
Roberto ha firmado m y no m.
No repudiación:
Alicia puede tomar m, y la firma KB(m) para juzgar y comprobar que Roberto ha firmado m.
–
Resumir el mensaje
Computacionalmente caro encriptar con clave pública mensajes largos.
Objetivo: longitud fija, fácil de computar la huella dactilar.
Aplicar función de dispersión H a m, obtener resumen del mensaje de tamaño fijo, H(m).
Propiedades de la función de dispersión:
Muchos a uno.
Produce resumen de mensaje de tamaño fijo (huella dactilar).
Dado resumen de mensaje x, computacionalmente inviable hallar m para que x = H(m).
(Gp:) Mensaje largo
m
(Gp:) H: función de dispersión
(Gp:) H(m)
Suma de comprobación de Internet: funciones de dispersión con criptografía pobre
Suma de comprobación de Internet tiene algunas propiedades de la función de dispersión:
Produce resúmenes de mensaje de longitud fija (suma de 16 bits).
Es muchos a uno.
Pero dado el mensaje con valor de dispersión dado, es fácil encontrar otro mensaje con el mismo valor de dispersión:
(Gp:) I O U 1
0 0 . 9
9 B O B
(Gp:) 49 4F 55 31
30 30 2E 39
39 42 D2 42
(Gp:) Mensaje
(Gp:) Representación
ASCII
(Gp:) B2 C1 D2 AC
(Gp:) I O U 9
0 0 . 1
9 B O B
(Gp:) 49 4F 55 39
30 30 2E 31
39 42 D2 42
(Gp:) Mensaje
(Gp:) B2 C1 D2 AC
(Gp:) ¡diferentes mensajes
pero sumas de comprobación idénticas!
(Gp:) Representación
ASCII
Roberto envía mensaje firmado digitalmente:
Alicia verifica la firma y la integridad del mensaje firmado digitalmente:
Firma digital = resumen del mensaje firmado
(Gp:) Mensaje
largo
m
(Gp:) H: función
de
dispersión
(Gp:) H(m)
(Gp:) Firma
digital
(encriptada)
(Gp:) Clave privada de Roberto
(Gp:) K
(Gp:) B
(Gp:) –
(Gp:) +
(Gp:) KB(H(m))
(Gp:) –
(Gp:) Resumen
del mensaje
firmado
(Gp:) KB(H(m))
(Gp:) –
(Gp:) Mensaje extenso
(Gp:) H(m)
(Gp:) Firma
digital
(desencrip)
(Gp:) H(m)
(Gp:) Clave pública de Roberto
(Gp:) K
(Gp:) B
(Gp:) +
(Gp:) igual
?
(Gp:) H: función de
dispersión
(Gp:) Resumen
del mensaje
firmado
Algoritmos para la función de dispersión
MD5 función de dispersión ampliamente utilizada (RFC 1321):
Calcula un resumen de mensaje de 128 bits en un proceso de cuatro pasos.
Cadena x arbitraria 128-bit, parece difícil construir mensaje m cuya dispersión MD5 sea igual a x.
También se utiliza SHA-1:
Estándar de EE.UU. [NIST, FIPS PUB 180-1].
Resumen de mensaje de 160 bits.
Intermediario de confianza
Problema de clave simétrica:
¿Cómo pueden dos entidades establecer clave secreta compartida a través de la red?
Solución:
Centro de distribución de claves (KDC) actúa como intermediario entre las entidades.
Problema de clave pública:
Cuando Alicia obtiene la clave pública de Roberto (de un sitio web, correo electrónico, disquete), ¿cómo puede saber que es la clave pública de Roberto y no la de Gertrudis?
Solución:
Autoridad de certificación de confianza (CA).
Centro de distribución de claves (KDC)
Alicia, Roberto necesita una clave simétrica compartida.
KDC: servidor comparte diferentes claves secretas con cada usuario registrado (muchos usuarios).
Alicia, Roberto conoce sus claves simétricas, KA-KDC
KB-KDC , para comunicarse con KDC.
(Gp:) KB-KDC
(Gp:) KX-KDC
(Gp:) KY-KDC
(Gp:) KZ-KDC
(Gp:) KP-KDC
(Gp:) KB-KDC
(Gp:) KA-KDC
(Gp:) KA-KDC
(Gp:) KP-KDC
(Gp:) KDC
Alicia y Roberto se comunican: utilizan R1 como
clave de sesión para la encriptación simétrica compartida.
P: ¿Cómo permite el KDC a Roberto que Alicia determine la clave simétrica compartida para comunicarse entre sí?
(Gp:) Alicia
conoce R1
(Gp:) Roberto conoce cómo usar R1 para comunicarse con Alicia
(Gp:) KDC genera R1
(Gp:) KB-KDC(A,R1)
(Gp:) KA-KDC(A,B)
(Gp:) KA-KDC(R1, KB-KDC(A,R1) )
Centro de distribución de claves (KDC)
Autoridades de certificación
Autoridad de certificación(CA): vincula clave pública a una entidad particular, E.
E (persona, router) registra su clave pública con CA:
E proporciona prueba de identidad a CA.
CA crea certificado que vincula a E a su clave pública.
Certificado que contiene la clave pública de E firmada digitalmente por CA. CA dice Esta el la clave pública de E.
(Gp:) Clave
pública de
Roberto
(Gp:) K
(Gp:) B
(Gp:) +
(Gp:) Información de identificación de Roberto
(Gp:) Firma
digital
(encript.)
(Gp:) Clave
privada de la
CA
(Gp:) K
(Gp:) CA
(Gp:) –
(Gp:) K
(Gp:) B
(Gp:) +
(Gp:) Certificado de la clave pública de Roberto, firmada por la CA
Autoridades de certificación
Cuando Alicia quiere la clave pública de Roberto:
Obtiene el certificado de Roberto (de Roberto o de cualquiera).
Aplica la clave pública CA al certificado de Roberto, obtiene la clave pública de Roberto.
(Gp:) Clave pública de Roberto
(Gp:) K
(Gp:) B
(Gp:) +
(Gp:) Firma
digital
(desencript.)
(Gp:) Clave
pública de la CA
(Gp:) K
(Gp:) CA
(Gp:) +
(Gp:) K
(Gp:) B
(Gp:) +
Un certificado contiene:
Número de serie (único para el emisor).
Información sobre el propietario del certificado, incluyendo el algoritmo y el valor de la clave (no mostrado).
Información sobre el emisor del certificado.
Periodo de validez.
Firma digital del emisor.
Página anterior | Volver al principio del trabajo | Página siguiente |