Seguridad (2/4):
Protocolos de seguridad
Autenticación (validación)
1
Tema de seguridad
1.- Secretos: criptografía
2.- Protocolos de seguridad
3.- Aplicaciones y seguridad
4.- Redes y seguridad
2
Clasificación de problemas de seguridad
Los problemas de seguridad de las redes pueden dividirse de forma
general en cuatro áreas interrelacionadas:
1.-El secreto, encargado de mantener la información fuera de las manos
de usuarios no autorizados.
2.-La validación de identificación, encargada de determinar la identidad
de la persona/computadora con la que se esta hablando.
3.-El control de integridad, encargado de asegurar que el mensaje
recibido fue el enviado por la otra parte y no un mensaje manipulado
por un tercero.
4.-El no repudio, encargado de asegurar la “firma” de los mensajes, de
igual forma que se firma en papel una petición de compra/venta entre
empresas.
3
Validación de identificación en redes
La validación de identificación, o también llamada
autenticación (que no autentificación, que es ver si algo
es auténtico), es la técnica mediante la cual un proceso
comprueba que su compañero de comunicación es quien se
supone que es y no un impostor.
La verificación de la identidad de un proceso remoto con un
intruso activo malicioso, es sorprendentemente difícil y
requiere protocolos de validación complejos basados en
criptografía como vamos a ver.
La validación es el paso previo al establecimiento de una
conexión entre dos entidades, para pactar una clave de
sesión.
4
Modelo general de validación e intrusos
Un usuario A, quiere establecer una conexión segura con
un segundo usuario, B:
1.- Se validan. Comienza A por enviar un mensaje a B o a un centro de
distribución de claves (KDC, Key Distribution Centre) fiable (honesto).
Tras ello siguen varios intercambios de mensajes en diferentes direcciones
(o protocolo).
PERO, a medida que se envían estos mensajes, un intruso malicioso, C, puede
interceptarlos, modificarlos o reproducirlos para engañar a A y a B, o
simplemente para estropear sus actividades.
C
A
B
2.- Un protocolo de autenticación debe impedir que un intruso se meta.
5
Terminado el protocolo habrán negociado una clave de sesión.
Métodos de autenticación (identificación)
• Biomédicas, por huellas dactilares, retina del
ojo, ...
• Tarjetas inteligentes que guardan
información de los certificados de un usuario
• Métodos clásicos basados en contraseña, más
frágiles que los anteriores y más simples
(baratos), basados en:
– Comprobación local o método tradicional
en la propia máquina
– Comprobación en red o método
distribuido, más utilizado actualmente
Una vez completado el protocolo, ambos A y B están
seguro que está hablando entre ellos.
Durante el protocolo podrían haber intercambiado una
clave de sesión.
6
Modelos de validación basados en
métodos distribuidos
• clave secreta (privada o simétrica)
• clave pública (asimétrica)
7
Validación de identificación de clave secreta
Métodos:
1. Validación de identificación basada en clave
secreta compartida.
2. Establecimiento de una clave compartida:
intercambio de claves Diffie-Hellman (no
permite autenticación)
3. Validación de identificación usando un centro de
distribución de claves (KDC- Key Distribution Center).
4. Protocolo de autenticación Kerberos.
8
Clave secreta
Validación de identificación basada en
clave secreta compartida
Supondremos que A y B ya comparten una clave secreta KAB
(acordada o bien telefónicamente o en persona pero, en
cualquier caso, no a través de la red)
Este protocolo se basa en reto-respuesta:
– una parte envía un número aleatorio a la otra
– La otra parte “lo transforma” de una manera especial y devuelve el
resultado a la parte primera
Notación a utilizar:
• Ri son los retos, donde el subíndice identifica el retador: A o B
• Ki son las claves, donde i indica el dueño; Ks es la clave de la sesión.
9
Clave secreta. Método 1
Validación de identificación basada en clave
secreta compartida: protocolo
1
A
Quiero algo de B
2
¿ERES A?
RB
3
A
KAB(RB)
B
4
RA
¿ERES B?
5
KAB (RA)
Ri son números aleatorios grandes lanzados desde cada extremo como reto.
El paso 4 y 5 es para que A se asegure que le contesta B. Tras esta
identificación, A puede indicar una Ks para la sesión.
Este protocolo funciona, pero se puede simplificar el número de mensajes.
DESTACAR, que con el mensaje 2 y 3 se podría tratar de explotar por
fuerza bruta la clave.
Clave secreta. Método 1
10
Validación de identificación basada en clave
secreta compartida: simplificación
1
A, RA
2
A
R B , K A B (R A )
B
3
K A B (R B )
Pero si B acepta varias sesiones simultáneamente ...
11
Clave secreta. Método 1
Validación de identificación basada en
clave secreta compartida: fallo
Un intruso C puede burlar este protocolo por un
ataque por reflexión, si es posible abrir al mismo
tiempo varias sesiones con B.
Por ejemplo, B es un banco y acepta muchas
conexiones simultáneas de los diferentes cajeros
El ataque comienza cuando C indica que es A y
envía RC.
B responde, como de costumbre, con su propio reto,
RB pero ¡C no conoce KAB(RB)!
12
Clave secreta. Método 1
Validación de identificación basada en clave
secreta compartida: ataque por reflexión
1
A, RC
2
Primera sesión
RB, KAB(RC)
3
C
A, RB
4
B
Segunda sesión
RB2, KAB(RB)
5
KAB(RB)
Primera sesión
establecida
C puede abrir una segunda sesión con el mensaje 3, proporcionando como
reto el RB tomado del mensaje 2.
B lo cifra y envía de regreso KAB(RB) en el mensaje 4. Ahora C tiene toda
la información y aborta la segunda sesión.
B ahora está convencido de que C es A.
13
Clave secreta. Método 1
Validación de identificación basada en clave secreta
compartida: solución al ataque por reflexión
Tres reglas generales que frecuentemente son de ayuda
son las siguientes:
1.
2.
3.
Hacer que el iniciador demuestre quién es antes de que lo tenga
que hacer el respondedor. B regala información valiosa antes de
que C dé cualquier prueba de su identidad.
Hacer que el iniciador y el respondedor usen diferentes claves
para comprobación, incluso si esto significa tener dos claves
compartidas, KAB y K’AB.
Hacer que el iniciador y el respondedor tomen sus retos de
diferentes conjuntos y por tanto no se puedan repetir los retos,
por ejemplo, el iniciador usa números pares y el respondedor
números nones.
En este caso, la simplificación ha sido una vulnerabilidad, porque con el
primer esquema no pasaba esta situación.
14
Clave secreta. Método 1
Establecimiento de una clave compartida:
intercambio de claves Diffie-Hellman (1976)
Hasta ahora hemos supuesto que A y B comparten una clave secreta. ¿Y si
no es así?
Existe una manera de que completos desconocidos establezcan una clave
secreta a plena luz del día (aunque C esté registrando cada mensaje).
El protocolo de intercambio de claves Diffie-Hellman:
Este algoritmo se puede considerar también como de clave pública, pero
no permite autenticación.
RSA se basó en este algoritmo
A y B tienen que acordar dos números primos grandes (n, g), que deben
cumplir ciertas condiciones [RFC 2631]. Estos números pueden ser
públicos
Cualquiera puede escoger (n, g) y decírselo al otro abiertamente
A escoge un número grande x, y lo mantiene en secreto, de la misma
manera, B escoge un número secreto grande y
15
Clave secreta.
secreta Método 2
Establecimiento de una clave compartida:
intercambio de claves Diffie-Hellman: protocolo
A selecciona x
B selecciona y
1
n, g, g x mod n
A
2
(gy mod n)x mod n
gxy mod n
gy mod n
Se calcula
B
(gx mod n)y mod n
gxy mod n
1.-A inicia el protocolo enviando a B un mensaje que contiene (n, g, gx mod n)
2.-B responde con gy mod n
A y B comparten una clave secreta: gxy mod n
Intrusos: C conoce (n, g), pero le falta (x, y)
gxy mod n: no se conoce un algoritmo práctico para calcular esto
cuando n es un número primo muy grande.
16
Clave secreta.
secreta Método 2
17
Clave secreta.
secreta Método 2
Establecimiento de una clave compartida: intercambio de claves DiffieHellman: ataque de brigada de cubetas o ataque de alguien en medio
Ataque: Cuando B recibe (n, g, gx mod n), no sabe si es A o C quien se la ha
enviado
A selecciona x
C selecciona z
1
x
B selecciona y
2
n, g, g mod n
z
n, g, g mod n
3
A
z
g mod n
C
4
y
B
g mod n
gzx mod n
gxz mod n
gyz mod n
gzy mod n
Cada mensaje que A y/o B envía durante la sesión cifrada es capturado por C,
almacenado, modificado y pasado (opcionalmente) a B y/o A.
C ve todo y puede modificar los mensajes, mientras A y B están pensando
equivocadamente que tienen un canal seguro entre ambos.
Solución: utilizar un KDC, centro de distribución de claves.
Clave secreta. Método 2
18
TACACS+ y RADIUS
TACACS+ (Terminal Access Controller Access Control SystemRFC1492) y RADIUS (Remote Authentication Dial In User
Service- RFC2138) son ejemplos de centros de distribución de
claves o también conocidos como servidores de control de
acceso.
TACACS+ y RADIUS son protocolos para descentralizar el control
del acceso, de forma que cualquier servicio en red que requiera
validar, autorizar o auditar a un usuario lo puede hacer como
cliente de los servidores TACACS+ y/o RADIUS.
Estos servidores se utilizan generalmente como apoyo a los routers
de servidor de acceso remoto, por ejemplo la gestión de usuarios
que conectan desde el exterior a la Universitat por RDSI o POTS
(RTB).
19
Clave secreta. Método 3
Validación de identificación usando un
centro de distribución de claves (KDC)
En Diffie-Hellman no hay garantías por el ataque de alguien
en medio, efectuado por un extraño o intruso.
Otro inconveniente, es que para hablarle a n personas de esta
manera se requerían n claves (una verdadera carga)
Un enfoque diferente es introducir un centro de distribución
de claves fiables (KDC- Key Distribution Center)
– Cada usuario tiene una sola clave compartida con el KDC
– La validación de identificación y la administración de claves de
sesión ahora pasan a través del KDC.
El protocolo de validación e identificación más simple
conocido es “la rana de boca amplia”.
20
Clave secreta. Método 3
Validación de identificación usando un KDC:
“la rana de boca amplia”
1
A, KA(B,KS)
A
KDC
B
2
KB(A,KS)
1.- A escoge una clave de sesión, KS e indica al KDC que desea hablar con
B usando KS. Este mensaje se cifra con la clave secreta que comparte A
sólo con el KDC, KA
2.- KDC descifra este mensaje, extrayendo la identidad de B y la clave de
sesión. Construye un mensaje nuevo cifrado con KB (compartido entre
KDC y B) que contiene la identidad de A y la clave de sesión y se lo
envía a B
Ahora, A y B pueden hablar y saben además la clave a utilizar.
Para la validación de identificación, como las claves con el KDC son
secretas, nadie más habría sido capaz de cifrarlo con la clave secreta de
otro  A diferencia de Diffie Hellman, aquí si existe autenticación por ambas
partes.
Clave secreta. Método 3
21
Validación de identificación usando un KDC:
ataque por repetición
Ataque: un intruso C puede copiar el mensaje 2 (de KDC a B) y todos los
mensajes que le siguen y reproducirlos de nuevo para B, con lo cual B creerá
estar hablando con A. Pero C no sabe Ks repite sin saber lo que dice, pero
interfiere en B e incluso podría generar denegación de servicio (DoS).
Soluciones posibles:
1.- incluir una marca de tiempo en cada mensaje de forma que pueda descartar
mensajes obsoletos, pero los relojes nunca están perfectamente sincronizados
en toda una red
2.- incluir un número de mensaje único (llamado núnico), de forma que cada
parte entonces tiene que recordar todos los núnicos y rechazar cualquier
mensaje que contenga un núnico previamente usado
Comentarios:
Si una máquina se cae y pierde la lista de núnicos, es vulnerable a un ataque
por repetición.
Las marcas de tiempo y los núnicos pueden combinarse para limitar el tiempo
que pueden recordarse los núnicos, pero el protocolo se volverá más
complicado.
22
Clave secreta. Método 3
Validación de identificación usando un KDC: protocolo de NeedhamSchroeder (1/2)
Mejora: se basa en usar un protocolo multisentido de reto-respuesta,
en vez de una única transacción.
1
RA, A, B
2
KDC
KA(RA,B,K S,KB (A,Ks))
A
B
1.- A indica al KDC que quiere hablar con B, incluyendo un número aleatorio grande, RA,
como núnico.
2.- KDC devuelve el mensaje 2 con
• RA para asegurar a A que el mensaje 2 es reciente, y no una repetición
• La identidad de B, por si a C se le ocurre reemplazar a B del mensaje 1 por su propia
identidad además de que cifre un billete al final del mensaje 2 con KC en lugar de KB y
sabotee a A (haciendo creer a A que habla con B, cuando en realidad lo hace con C)
• una clave de sesión
23
• un billete para que puede re-enviarse a B (identificando a A y la clave de sesión Ks)
Clave secreta. Método 3
Validación de identificación usando un KDC: protocolo de NeedhamSchroeder (2/2)
1
RA, A, B
2
KDC
KA(RA,B,K S,KB (A,Ks))
3
A
KB(A,K S),KS(RA2 )
B
4
KS(RA2 -1), R B
5
KS(RB-1)
3.- A ahora envía el billete a B, junto con un nuevo número aleatorio, RA2, cifrado
con la clave de la sesión, KS.
4.- B devuelve KS(RA2-1) para demostrar a A que está hablando con el
verdadero B. El envío de regreso de KS(RA2) no habría funcionado,
puesto que C lo podría haber robado del mensaje 3.
Al hacer que cada parte genere un reto y responda a otro, en nuestro caso (-1), se elimina la
posibilidad de un ataque por repetición.
5.- A está convencido de que está hablando con B, y de que no se pudieron haber
usado repeticiones hasta el momento. El propósito del mensaje 5 es convencer
a B de que realmente está hablando con A, y de que tampoco se han usado
24
repeticiones aquí.
Clave secreta. Método 3
Validación de identificación usando un KDC: ataque del
protocolo de Needham-Schroeder
1
RA, A, B
2
KDC
KA(RA,B,KS,KB (A,Ks))
3
A
KB(A,KS),KS(RA2)
B
4
KS(RA2-1), RB
5
KS(RB-1)
Debilidad:
Si C llega a obtener una clave de sesión vieja KS en texto normal, puede
iniciar una nueva sesión con B repitiendo el mensaje 3 correspondiente
a la clave obtenida con KS(Rc) y convencerlo de que es A con KB(A,KS),
que lo guardó C copiado de un mensaje 3 antiguo, completando el protocolo
sin problema con los mensajes 4 y 5, y suplantando la identidad de A.
Solución:
Otway y Rees publicaron un protocolo que resuelve el problema, haciendo que B
hable con el KDC.
25
Clave secreta.
secreta Método 3
Validación de identificación usando un KDC: protocolo de Otway y Rees
1
A, B, R, KA(A, B, R, RA)
2
A
A, KA(A,B,R,RA)
B, KB(A,B,R,RB)
KDC
4
B
3
KA(RA,KS)
KB(RB,KS)
1.- A comienza por generar un par de números aleatorios: R, que se usará como
identificador común, y RA, que A usará para retar a B.
2.- Cuando B recibe este mensaje, construye un mensaje nuevo a partir de la parte cifrada del
mensaje de A con KA, y uno análogo propio con KB. Ambas partes cifradas, identifican:
A, B, el identificador común R y un reto RA o RB respectivamente.
3 y 4.- KDC comprueba que R de ambas partes es igual. Los R podrían no serlo porque C
alteró el R del mensaje 1 y reemplazó parte del mensaje 2. Si los 2 R son iguales, el KDC
se convence de que el mensaje de solicitud de B es válido, y genera una clave de sesión.
Cada mensaje contiene un número aleatorio del receptor como prueba de que el KDC, y
no C, generó el mensaje.
26
Clave secreta.
secreta Método 3
Autenticación con Kerberos
Servicio de autenticación (validación de identificación)
desarrollado en el Massachusetts Institute of Technology (MIT)
 Perro de tres cabezas y cola de serpiente según
mitología griega, guardián de la entrada del Templo de
Hades (Infierno).
27
Clave secreta.
secreta Método 4
Protocolo de autenticación Kerberos
Kerberos es un KDC diseñado por el MIT para autenticar la identidad
(autenticar) de los usuarios de una red digital insegura, así como para
distribuir las claves secretas de sesión transitorias que permitan a los
usuarios de la red establecer comunicaciones seguras. En ocasiones
estas claves de sesión transitorias pueden ser de un solo uso (OTP, One
Time Password).
Está basado en una variación de Needham-Schroeder, con la
condición que requiere relojes bien sincronizados.
Kerberos
–
–
actúa como un árbitro en quien los usuarios confían
utiliza con cada usuario una clave secreta diferente, intercambiada con
Kerberos a través de un canal seguro. El conocimiento de dicha clave se
utiliza como prueba de identidad del usuario.
La autenticación se produce entre cliente-servidor y servidor-cliente.
En estas condiciones como Kerberos conoce las claves secretas de todos
los usuarios, puede demostrar a cualquiera de ellos la autenticidad de
la identidad de otro.
28
Clave secreta.
secreta Método 4
Protocolo de autenticación Kerberos: protocolo (1/2)
1
RA, A, B
Kerberos
2
A
Ka(K,L, RA,B)
Kb(K,L,A)
B
A y B no comparten ninguna clave secreta, excepto con el servidor de claves
Kerberos Ka y Kb. [A y B pueden ser usuarios, usuario-servicio,...]
1.- A solicita a Kerberos una credencial para conectarse con B y una clave
de sesión, a través de un mensaje con un valor aleatorio RA y los
identificadores en la red de comunicación de A y B.
2.- Kerberos genera una clave de sesión aleatoria K y define el período de
validez L de la credencial, cifrando a continuación los valores K, L, RA y
B con la clave secreta Ka, junto con la credencial para B, cifrando K, L y
A con la clave secreta Kb
A verifica que el valor aleatorio RA corresponde con el que él previamente envió y guarda L
como referencia. A calcula el autentificador para B, cifrando su identidad A y un sello temporal
29
Ta para sincronización, con la clave de sesión K  K(A,Ta)
Clave secreta.
secreta Método 4
Protocolo de autenticación Kerberos: protocolo (2/2)
1
RA, A, B
Kerberos
2
Ka(K,L, RA,B)
Kb(K,L,A)
A
3
4
Kb(K,L,A)
K(A,Ta)
K(A,Ta)
B
K(Ta+1)
3.- B descifra la credencial con su clave secreta Kb, recuperando de esta forma K,
L y la identidad A y con ello utiliza K para descifrar el autentificador y recuperar
los valores identidad de A y Ta, comprobando que las identidades de la credencial
y el autentificador coinciden, y que el sello Ta es válido y se encuentra en los
límites de L.
4- Si las comprobaciones son satisfactorias, B se convence de la autenticidad de la
identidad de A, y en tal caso, B envía a A la conformidad con K(Ta+1)
Por su parte A descifra la conformidad con la clave de sesión K y verifica que el
valor recuperado es Ta+1, lo cual asegura a A que la clave de sesión K ha sido
correctamente recibida por el usuario B
30
Clave secreta.
secreta Método 4
Protocolo de autenticación Kerberos: comentarios (1/2)
1.-El propósito del sello temporal Ta y del período de validez L es doble
– A pueda utilizar la credencial para realizar sucesivas autentificaciones
ante B durante el período de validez de la clave sin necesidad de que
intervenga Kerberos
– permite prevenir un posible ataque activo al protocolo consistente en el
almacenamiento de las claves para su posterior reutilización. Esto se
consigue puesto que una clave no se acepta como válida si su sello
temporal no se encuentra dentro de los límites del período de validez de la
misma.
2.- Kerberos viene en la mayoría de distribuciones UNIX y/o Linux,
utilizado en procesos como login, rlogin o NFS (Network File System)
y las versiones más utilizadas son v4 y v5
3.- es centralizado y no distribuido en una red, lo cual si falla ...o si se ve
comprometido, se compromete toda la red, además las claves
almacenadas son privadas y no públicas. En versión 4 y/o 5 incorpora
servidores secundarios.
31
Clave secreta.
secreta Método 4
Protocolo de autenticación Kerberos: comentarios (2/2)
4.- requiere la kerberización (modificación) de todas
las aplicaciones, así como de la sincronización de
todas las máquinas
5.- cuando un usuario está más de 8 horas (por
defecto) delante de una estación de trabajo
kerberizada, debe identificarse otra vez
6.- en ningún momento los passwords viajan por la
red ni son guardados en memoria (sólo las
credenciales)
7.- Cabe destacar del protocolo visto, que realmente
se distinguen dos partes, por una lado la
autenticación y por otro la gestión de tickets para
los diferentes servicios
32
Clave secreta.
secreta Método 4
Autenticación con Kerberos: ejemplo de login
Escenario: usuario A a través de login requiere de
las credenciales necesarias para acceder a otros
servicios
Pasos:
1.- al teclear el nombre, el login kerberizado envía el
nombre al servidor Kerberos solicitando un ticket
2.- si el usuario es conocido, le manda un mensaje
cifrado, donde utilizará su contraseña (password)
para descifrarlo. De esta forma la contraseña
nunca viaja por la red
3.- de dicho mensaje extrae el ticket para realizar la
petición de servicio
33
Clave secreta.
secreta Método 4
Validación de identificación de clave pública
Supongamos que A y B ya conocen las claves públicas del otro EB() y EA()
respectivamente y quieren establecer una sesión utilizando criptografía de
clave secreta (por ser más rápida)
El intercambio inicial tiene como objetivo validar la identificación de ambos
utilizando sus claves públicas para comunicarse y utilizando las claves privadas
para descifrar y tras ello acordar una clave de sesión secreta compartida
1
E B (A ,R A )
2
A
E A (R A ,R B ,K S )
B
3
K S (R B )
Un intruso C no tiene manera de conocer RA para replicar, pero
dependiendo de cómo se intercambien las claves públicas, podría haber
problemas...
34
Clave publica
Validación de identificación de clave pública
(debilidades): ataque de brigada de cubetas
Supongamos que A y B no conocen la clave pública del otro, por lo que
bastaría simplemente A enviar a B su clave pública en el primer mensaje y
pedir a B que devuelva la suya en el siguiente. El problema de este enfoque es
que está sujeto a un ataque de brigada de cubetas o alguien en medio.
C puede capturar el mensaje de A a B y devolver su propia clave a A, que
pensará que tiene una clave para hablar con B cuando, de hecho, tiene una
clave para hablar con C. Ahora C puede leer todos los mensajes cifrados con
lo que A piensa es la clave pública de B
Solución: El intercambio inicial de claves públicas puede evitarse almacenando
todas las claves públicas en una base de datos pública. Así, A y B pueden
obtener la clave pública del otro de la base de datos.
PERO, sin embargo, C aún puede poner en práctica el ataque de brigada de
cubetas interceptando las solicitudes a la base de datos y enviando respuestas
simuladas que contengan su propia clave.
Certificados digitales gestionados por una autoridad de certificación
Clave publica
35
Descargar

Seguridad (2/4): Protocolos de seguridad