Enviado por tali
Indice
1. Introducción
2. ¿Qué hace
Kerberos?
3. ¿Porqué toda esta
información en el ticket?
4. Autenticación
mutua
5.
Administración
6. Bibliografía
Internet es un lugar inseguro. Muchos de los protocolos
utilizados actualmente carecen de seguridad.
Además, existen crackers que con frecuencia interceptan
contraseñas, razón por la cual aplicaciones que
mandan una contraseña no encriptada en la red son extremadamente
vulnerables. Peor aun, algunas aplicaciones cliente/servidor asumen
que el cliente
proveerá su identificación correctamente, y otras
confían en que el cliente restringirá sus
actividades a aquellas que están autorizadas sin
ningún otro refuerzo del servidor.
Algunos sitios utilizan firewalls para solucionar los problemas de
seguridad en
redes. Pero los firewalls asumen que las personas que desean
hacer daño están del lado de afuera, cuando en
realidad esta aseveración suele ser falsa.
Kerberos es un personaje de la mitología
griega que por ser quien cuidaba las puertas del infierno,
representa seguridad. Se
podría decir que como servicio de
autenticación, ahora cuida las puertas de la red, impidiendo que entren
personas indeseadas.
Kerberos es un servicio de
autenticación desarrollado en MIT (Massachusetts Institute
of Technology) y diseñado por Miller y Neuman en el
contexto del Proyecto Athena
en 1987. Esta basado en el protocolo de
distribución de claves presentado por
Needham y Schroeder en 1978.
Motivación
En una red con
usuarios que solicitan servicios
desde muchas terminales, hay tres enfoques básicos que se
pueden utilizar para dar control de
acceso:
En un ambiente
cerrado, donde las máquinas
tienen un control estricto,
se podría utilizar el primer enfoque. En ambientes
más abiertos, se podría usar la segunda
opción. En ambientes como el de Athena, en el cual cada
usuario debe probar su identidad a cada servicio que desee
utilizar el tercer enfoque es el más adecuado.
El entorno tendrá ciertos requerimientos sobre el sistema de
identificación:
1) Seguridad. Un atacante no debe encontrar el punto débil
en la autenticación.
Alguien que observa la red no debe obtener la información necesaria para hacerse pasar
por otro usuario.
2) Confiabilidad. El acceso a muchos servicios
dependerá del servicio de autenticación y si
éste no es confiable, el sistema de
servicios tampoco lo será.
3) Transparencia. El usuario no debe percatarse de que se
está autentificando.
4) Escalabilidad. El entorno no debe colapsar si aumenta el
número de aplicaciones kerberizadas.
En una red de usuarios en la
que se requieren servicios de distintas computadoras,
si la red tiene miles de usuarios y decenas de servidores, no es
deseable que cada servidor guarde las contraseñas de todos
los usuarios. En ese caso, habría tantos puntos de ataque
como servidores.
Además, por ejemplo si un usuario quisiera cambiar su
contraseña, debería contactar a todos los
servidores y notificarles del cambio. Es
para evitar estos problemas que
surge la idea de tener un servicio de autenticación.
Kerberos es el resultado de satisfacer estos requerimientos. La
seguridad de Kerberos descansa en la seguridad de varios
servidores de autenticación, pero no en el sistema que se
"loguea" o en los servidores finales que se utilicen.
Cada usuario tendrá una clave y cada servidor
tendrá una clave, y Kerberos tiene una base de datos que
las contendrá a todas. En el caso de ser de un usuario, su
clave será derivada de su contraseña y
estará encriptada, mientras que en el caso del servidor,
la clave se generará aleatoriamente. Los servicios de red
que requieren autenticación y los usuarios que requieran
estos servicios, se deben registrar con Kerberos. Las claves
privadas se negocian cuando se registran.
Como Kerberos sabe todas las claves privadas, puede crear
mensajes que convenzan a un servidor de que un usuario es
realmente quien dice ser y viceversa. La otra función de
Kerberos es generar las llamadas claves de sesión, que
serán compartidas entre un cliente y un servidor, y nadie
más. La clave de sesión podrá ser usada para
encriptar mensajes que serán intercambiados entre ambas
partes. El almacenamiento de
la base de datos y la
generación de claves, se lleva a cabo en un servidor que
se denomina Servidor de Autenticación (AS por las siglas
en inglés
de Authentication Server).
Kerberos provee tres niveles distintos de protección. El
programador de la aplicación determinará cual es
apropiado, de acuerdo a los requerimientos de la
aplicación.
Autenticación:
Prueba que el usuario es quien dice ser. Puede ser que la
autenticidad se establezca al inicio de la conexión de red
y luego se asuma que los siguientes mensajes de una dirección de red determinada se originan
desde la parte autenticada.
Integridad de datos:
Asegura que los datos no se modifican en tránsito. Se
requiere autenticación de cada mensaje, sin importar el
contenido del mismo. Éstos se denominan mensajes seguros.
Privacidad de datos:
Asegura que los datos no son leídos en tránsito. En
este caso no sólo se autentica cada mensaje sino que
también se encripta. Éstos son mensajes
privados.
Especificación técnica
Hay tres fases básicas para el procedimiento de
autenticación:
Hay dos tipos de credenciales que se utilizan en el modelo de autenticación de Kerberos: Tickets y Autenticadores. Aunque ambos se basan en encriptado de clave privada, se encriptan con claves diferentes. El ticket se usa para pasarle al servidor final la identidad de la persona para la que fue emitido. El autenticador es una prueba de que el ticket fue creado para el usuario y no fue robado; contiene información que al ser comparada contra la que está en el ticket prueba que el usuario que lo presenta es el mismo al que le fue emitido.
Notación:
c = cliente
s = servidor
addr = dirección de red del cliente
Kx = Clave privada de x
Kx,y = Clave de sesión de x e y
{info}Kx = Información encriptada con la clave
privada de x
Tx,y = Ticket de x para usar y
Ax = Autenticador para x
Conexión inicial
Cuando el usuario entra a una estación de trabajo lo
único que puede probar su identidad es su
contraseña. El intercambio inicial con el AS está
diseñado para minimizar la posibilidad de comprometer la
contraseña, impidiendo a su vez que el usuario se
autentique sin conocerla. Para el usuario, el proceso de
"loguearse" al sistema será igual que el de "loguearse" a
una red clásica. Sin embargo lo que ocurre por
detrás es muy diferente.
Al usuario se le pide el nombre de usuario. El nombre del usuario
tiene tres componentes básicos:
|
Nombre primario |
- |
Nombre del usuario |
|
Instancia |
- |
Se usa para distinguir entre variantes del nombre primario o bien para determinar privilegios, como ser "root" o admin. |
|
Dominio (Realm) |
- |
Es el nombre de una entidad administrativa que mantiene datos de autenticación. |
Una vez obtenido, se envía una solicitud al AS que
consiste de el nombre de usuario y el nombre de un servicio
especial
llamado ticket-granting service, el cual se encuentra en un
servidor que se llamará ticket-granting server (TGS). Este
es el servicio que permitirá al cliente autenticarse con
los servicios de red.
El AS chequea la información sobre el cliente. Si sabe
quién es, genera una clave de sesión aleatoria que
se usará luego entre el cliente y el TGS. Luego crea un
ticket para el TGS que se llama ticket-granting ticket (TGT) y
que deberá ser presentado al TGS cada vez que se solicite
un servicio.
TGT
={Tc,tgs}Ktgs={c,tgs,addr,timestamp,lifetime,Kc,tgs}Ktgs
El TGT, al igual que cualquier otro ticket tiene 6
componentes:
Esta información se encripta con la clave privada
del TGS, que sólo conocen el TGS y el AS. El AS
envía el ticket al cliente, junto con una copia de la
clave de sesión. La respuesta que recibe éste,
está encriptada con la clave privada del cliente, que se
deriva de la contraseña del usuario y que conocen
sólo el AS y el cliente.
Una vez que la respuesta ha sido recibida por el cliente, se le
pide la contraseña al usuario. La contraseña se
convierte a una clave DES y se usa para desencriptar la respuesta
del AS. El ticket y la clave de sesión se guardan para
usar en el futuro, mientras que la contraseña del usuario
y la clave DES se borran de la memoria.
Así, si el cliente posee el ticket es porque el usuario
conocía la contraseña correcta y por tanto debe ser
quien dice ser.
3. ¿Porqué toda esta información en el ticket?
Un ticket sirve para un solo servidor y para un solo cliente pero una vez emitido, puede ser utilizado muchas veces por el cliente para tener acceso a ese servidor, hasta que el ticket expira. Como el ticket está encriptado con la clave del servidor no se pierde seguridad al permitir que el usuario le pase el ticket al servidor, ya que no podrá modificarlo.
Servicios
Como un ticket sirve para un solo servidor, es necesario obtener
un nuevo ticket para cada servicio que el usuario quiera
utilizar. Los tickets para los distintos servidores se pueden
obtener a través del TGS.
La idea del TGS surge para evitar que el usuario deba entrar su
contraseña más de una vez. Aunque pueden convivir
en la misma máquina, el TGS es lógicamente distinto
del AS. A veces se refiere a ambos como KDC ("Key Distribution
Center").
Cuando un programa requiere
un ticket que no ha sido solicitado aún, envía una
solicitud al TGS. La solicitud contiene el nombre del servidor
para el que se solicita el ticket, el TGT y un autenticador. A
diferencia del ticket, el autenticador sólo se puede
utilizar una vez. De lo contrario, sería posible robar el
ticket y el autenticador juntos y hacer el "replay" de todas
formas. Se debe generar uno nuevo cada vez que el cliente quiere
utilizar un servicio, pero esto no presenta un problema porque
como el cliente tiene toda la información necesaria, puede
construir el autenticador por sí mismo. Un autenticador
contiene el nombre del cliente, la dirección IP de la
estación de trabajo, y el tiempo actual, y está
encriptado con la clave de sesión que es parte del ticket;
en este caso, la que comparten el cliente y el TGS.
El TGS chequea el autenticador y el TGT. Si son válidos
genera una nueva clave de sesión aleatoria a ser usada
entre el cliente y el nuevo servidor. Luego construye un ticket
para el nuevo servidor con el nombre del cliente, el nombre del
servidor, el tiempo actual, la dirección IP del cliente
y la nueva clave de sesión. El tiempo de vida del nuevo
ticket será el mínimo entre lo que queda de vida
del TGT y el tiempo de vida por defecto del servicio.
Luego, el TGS envía el ticket junto con la clave de
sesión nuevamente al cliente. Esta vez, sin embargo, la
respuesta está encriptada con la clave de sesión
que había en el TGT. De este modo, no hay necesidad para
el usuario de volver a entrar su contraseña una vez
más.
Solicitud de Servicios
Cuando el cliente tiene el ticket para el servidor deseado lo
envía al servidor junto con el autenticador:
Una vez que el servidor recibió el ticket y el
autenticador, desencripta el ticket con su clave privada. Si
éste no expiró usa la clave de sesión que se
encuentra dentro para desencriptar el autenticador y compara la
información del ticket con la del autenticador. Si todo
está bien, permite el acceso porque después de este
intercambio, el servidor está seguro que de
acuerdo a Kerberos, el usuario es quien dice ser.
Se asume que los relojes están sincronizados. Si el tiempo
de la solicitud está muy lejos en el futuro o en el
pasado, el servidor considera que la solicitud es un intento de
hacer un "replay" de una solicitud anterior. Además, el
servidor mantiene un registro de todas
las solicitudes pasadas con sellos de tiempo aún
válidos y si recibe una solicitud con el mismo ticket y el
mismo sello de tiempo que una anterior, la descarta.
Finalmente, el cliente puede querer que el servidor
pruebe su identidad también. Entonces, el servidor le suma
uno al sello de tiempo que el cliente envió en el
autenticador, encripta el resultado con la clave de sesión
y envía el resultado de vuelta al cliente.
{timestamp +1}Kc,s
Esto demuestra que el servidor
pudo leer el sello de tiempo del autenticador y para ello
debió obtener la clave de sesión que se encontraba
en el ticket encriptado con su clave privada. Entonces el cliente
se cerciora de que el servidor es auténtico.
Además, el cliente y el servidor comparten un secreto que
nadie más sabe, y pueden asumir que un mensaje
relativamente reciente encriptado con esa clave fue originado por
el otro.
A los ojos del usuario
Para el usuario la presencia de Kerberos es casi imperceptible.
El TGT se obtiene como parte del proceso de
"login". Y los tickets son destruidos automáticamente
cuando el usuario termina la sesión. El usuario
notará la presencia de Kerberos si su sesión dura
más de 8 horas. En ese caso, si intenta acceder a
algún servicio que utilice autenticación por medio
de Kerberos el intento fallará porque el ticket
habrá expirado.
Administración General
Para el administrador del
sistema, la presencia de Kerberos implica cierto mantenimiento.
El administrador
debe inicializar la base de datos de
Kerberos al instalarlo. Además en caso de tener la base de
datos replicada (con slaves), también será
necesario administrarlas para que se mantengan consistentes. Esto
implica tener que sincronizar las bases de datos
replicadas con la base de datos principal cada cierto tiempo.
Se debe tener especial cuidado con la
administración de las máquinas
que tienen la base de datos Kerberos, pues el sistema
podría volverse inseguro si alguien obtiene el control de
alguna de estas máquinas.
El administrador también debe asegurarse de que la fecha y
hora de todas máquinas del sistema estén
medianamente sincronizadas.
Cuando una aplicación Kerberos es agregada al sistema, el
administrador debe realizar varias operaciones para
dejarla funcional. El servidor kerberizado debe ser registrado en
la base de datos, y se le debe asignar una clave privada. Luego
algunos datos deben ser transferidos al nuevo servidor.
Además se aconseja tener la base de datos principal
resguardada, en caso de que el disco en el que reside
falle.
Administración entre sistemas
Kerberos
Cada sistema Kerberos contiene como parte de su nombre el realm
(dominio)
asociado. Esto permite que distintos sistemas Kerberos
se comuniquen entre sí para brindarse servicios.
Cuando un usuario se autentica con un sistema Kerberos, lo hace a
un realm específico. Las aplicaciones kerberizadas
generalmente reconocen credenciales de un realm particular; pero
los usuarios pueden obtener credenciales de otros realms
distintos del realm local. Para ello deben estar autenticados con
el sistema Kerberos local, y los dos sistemas Kerberos (el local
y el remoto) deben ponerse de acuerdo para brindar las
credenciales necesarias en el sistema Kerberos remoto.
Los administradores de cada par de sistemas Kerberos que desean
cooperar deben ponerse de acuerdo en la clave privada a utilizar
para que los sistemas se comuniquen entre ellos.
Kerberos soporta la transitividad de la confianza; la idea es que
si un sistema Kerberos confía en un segundo, y ese segundo
confía en un tercer sistema Kerberos, entonces hay
automáticamente una relación de confianza entre el
primer y el tercer realm. La transitividad de la confianza
asegura que los sistemas Kerberos sólo necesitan compartir
una contraseña con los sistemas Kerberos de los realms
inmediatamente encima y debajo de ellos en la jerarquía de
realms (Kerberos se encarga del resto).
Windows 2000
En Microsoft NT
4.0, el protocolo
primario para la seguridad es NTLM (Windows NT
LAN Manager).
Para Windows 2000,
Microsoft
eligió un nuevo protocolo de seguridad: Kerberos, por
tener algunas ventajas como ser un estándar, más
eficiente en el uso de la red y permitir autenticación
mutua.
Para permitir interoperabilidad con otras implementaciones,
Kerberos en Windows 2000
soporta DES (Data Encription Standard), pero por defecto usa como
algoritmo para
encriptación RC4 (fue elegido porque es más
rápido y seguro que DES).
En Estados Unidos
usa claves de 128-bits, mientras que en las versiones
internacionales soporta claves de solamente 56-bits.
El protocolo de tickets de Kerberos fue adoptado y extendido por
Microsoft, agregando un certificado de privilegios a los tickets
(relacionado con el identificador único de NT, así
como la lista de los grupos a los que
el usuario pertenece).
Windows 2000 lo
renovará automáticamente mientras el usuario
permanezca "logueado". La primera vez que un usuario pide un
ticket a Kerberos es cuando se "loguea" en alguna cuenta en el
dominio de
Windows
2000.
El KDC rechaza cualquier autenticador cuya timestamp sea
demasiado vieja (por defecto 5 minutos máximo). Esto
implica que los relojes de las máquinas que usen Kerberos
deben estar sincronizados, por eso Windows 2000 usa el protocolo
SNTP (Simple Network Time Protocol) de la IETF para
sincronización.
Jennifer G. Steiner, Clifford Neuman, Jeffrey I.
Schiller.
Kerberos: An Authentication Service for Open Network Systems
ftp://athena-dist.mit.edu/pub/Kerberos/doc/usenix.txt
(10 Mayo 2001, 15:36)
Bill Bryant.
Designing an Authentication System: a Dialogue in Four Scenes http://web.mit.edu/Kerberos/www/dialogue.html (10 Mayo 2001, 21:52)
Brian Tung.
The Moron’s Guide to Kerberos
http://www.isi.edu/gost/brian/security/Kerberos.html (11 Mayo
2001, 10:19)
Steven M. Bellovin, Michael Merritt.
Limitations of the Kerberos Authentication System
ftp://research.att.com/dist/internet_security/kerblimit.usenix.ps
(10 Mayo 2001 15:40)
Roger M. Needham, Michael D. Schroeder.
Using Encryption for Authentication in Large Networks of
Computers
Communications of the ACM 21(12) pp. 993-999 (Diciembre
1978)
John Kohl, Clifford Neuman.
RFC 1510
http://rfc.net/rfc1510.html (10 Mayo 2001, 22:00)
FAQ about Kerberos
http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html (10
Mayo 2001, 22:03)
Kerberos explained
http://www.microsoft.com/TechNet/win2000/kerberos.asp?a=printable
(10 Mayo 2001, 22:07)
Exploring Kerberos, the protocol for distributed security in Windows 2000 http://www.microsoft.com/msj/0899/kerberos/kerberos.htm (10 Mayo 2001, 22:10)
Autor:
Trabajos relacionados
Ver mas trabajos de Redes |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.
Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.
Ingrese el e-mail y contraseña con el que está registrado en Monografias.com