- Kerberos
-
Kerberos es un protocolo de autenticación de redes de ordenador que permite a dos computadores en una red insegura demostrar su identidad mutuamente de manera segura. Sus diseñadores se concentraron primeramente en un modelo de cliente-servidor, y brinda autenticación mutua: tanto cliente como servidor verifican la identidad uno del otro. Los mensajes de autenticación están protegidos para evitar eavesdropping y ataques de Replay.
Kerberos se basa en criptografía de clave simétrica y requiere un tercero de confianza. Además, existen extensiones del protocolo para poder utilizar criptografía de clave asimétrica.
Contenido
Historia y desarrollo
El Instituto Tecnológico de Massachusetts (MIT) desarrolló Kerberos para proteger los servicios de red proporcionados por el proyecto Athena. El proyecto recibió el nombre debido al personaje mitológico griego Kerberos (o Can Cerbero), el perro guardián de tres cabezas de Hades. Existen varias versiones del protocolo. Las versiones 1 a 3 se desarrollaron sólo dentro del ambiente del MIT.
Steve Miller y Clifford Neuman, los principales diseñadores de la versión 4 de Kerberos, publicaron esa versión al final de la década de 1980, aunque la había orientado principalmente para el proyecto Athena.
La versión 5, diseñada por John Kohl y Clifford Neuman, apareció como la RFC 1510 en 1993 (que quedó obsoleta por la RFC 4120 en 2005), con la intención de eliminar las limitaciones y problemas de seguridad presentes en la versión 4.
El MIT distribuye una implementación de Kerberos libremente bajo una licencia similar a la de BSD.
Autoridades de los Estados Unidos clasificaron a Kerberos como munición y prohibieron su exportación porque usa el algoritmo de cifrado DES (con clave de 56 bits). Una implementación no estadounidense de Kerberos 4, KTH-KRB, desarrollada en Suecia, puso el sistema a disposición fuera de los Estados Unidos antes de que éste cambiara sus políticas de exportación de criptografía (alrededor del año 2000). La implementación sueca se basó en una versión llamada eBones, la cual se basaba en la versión exportada MIT Bones (a la que se le habían quitado las funciones de cifrado y las llamadas a ellas), basada a su vez en Kerberos 4, nivel de corrección 9. El australiano Eric Young, autor de numerosas bibliotecas criptográficas, puso nuevamente las llamadas a funciones y usó su biblioteca de cifrado libdes. Esta versión algo limitada de Kerberos se llamó versión eBones. Una implementación de Kerberos en su versión 5, Heimdal, se lanzó por básicamente el mismo grupo de gente que lanzó KTH-KRB.
Windows 2000, Windows XP y Windows Server 2003 usan una variante de Kerberos como su método de autenticación por defecto. Algunos agregados de Microsoft al conjunto de protocolos de Kerberos están documentados en la RFC 3244 "Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols" (Protocolos de cambio y establecimiento de clave de tipo Kerberos en Microsoft Windows 2000). Mac OS X de Apple también usa Kerberos tanto en sus versiones de cliente y de servidor.
Hasta el año 2005, el grupo de trabajo de Kerberos de la IETF se encuentra actualizando las especificaciones [1]. Actualizaciones recientes incluyen:
- "Especificación de cifrado y código de chequeo de errores" (RFC 3961),
- Cifrado por "AES para Kerberos 5" (RFC 3962),
- Una nueva versión de la especificación de Kerberos 5: "El servicio de autenticación Kerberos (V5)" (RFC 4120). Esta versión hace obsoleta a la RFC 1510, clarifica aspectos del protocolo y de su uso esperado en mayor detalle y una explicación más clara,
- Una nueva edición de la especificación de la interfaz de programa de aplicación de servicios de seguridad genéricos: "El mecanismo de interfaz de programa de aplicación de servicios de seguridad genéricos (GSS-API) de Kerberos Version 5: Version 2." (RFC 4121).
Descripción
Kerberos se basa en el Protocolo de Needham-Schroeder. Usa un tercero de confianza, denominado "centro de distribución de claves" (KDC, por sus siglas en inglés: Key Distribution Center), el cual consiste de dos partes lógicas separadas: un "servidor de autenticación" (AS o Authentication Server) y un "servidor emisor de tiquets" (TGS o Ticket Granting Server). Kerberos trabaja sobre la base de "tickets", los cuales sirven para demostrar la identidad de los usuarios.
Kerberos mantiene una base de datos de claves secretas; cada entidad en la red —sea cliente o servidor— comparte una clave secreta conocida únicamente por él y Kerberos. El conocimiento de esta clave sirve para probar la identidad de la entidad. Para una comunicación entre dos entidades, Kerberos genera una clave de sesión, la cual pueden usar para asegurar sus interacciones.
Motivación
Internet no es un lugar seguro. Muchos de los protocolos usados en Internet no proporcionan características de seguridad. Es habitual que piratas informáticos maliciosos empleen herramientas para rastrear y conseguir contraseñas de la red. Por lo tanto, las aplicaciones que envían una contraseña no cifrada por la red son sumamente vulnerables. Peor aún, algunas aplicaciones de cliente/servidor dependen de la honestidad del usuario que las está usando acerca de su identidad .
Algunos sitios intentan solucionar los problemas de seguridad de la red con cortafuegos. Desafortunadamente, el uso exclusivo de cortafuegos se basa en la suposición de que los "villanos" están en el exterior, lo que es a menudo una suposición incorrecta y peligrosa. Un buen número de los más graves delitos informáticos son ejecutados desde dentro de la propia corporación atacada. Los cortafuegos también adolecen de una desventaja importante, ya que restringen cómo pueden usar Internet los usuarios de la red por ellos protegida. Después de todo, los cortafuegos son sólo un ejemplo menos extremista del dictamen de que no hay nada más seguro que una computadora que está desconectada de la red. Pero en muchos casos, estas restricciones son simplemente imposibles de asumir.
Kerberos fue creado por el MIT como una solución para estos problemas de seguridad de la red. El protocolo de Kerberos usa una criptografía fuerte con el propósito de que un cliente pueda demostrar su identidad a un servidor (y viceversa) a través de una conexión de red insegura. Después de que un cliente/servidor han conseguido a través de Kerberos demostrar su identidad, también pueden cifrar todas sus comunicaciones para garantizar la privacidad y la integridad de los datos intercambiados.
Kerberos está disponible gratuitamente en el MIT, bajo permisos de derechos de autor muy similares a aquellos que usaron para el sistema operativo de BSD y el X Window System. El MIT provee el código fuente de Kerberos con el propósito de que quienquiera que desee usarlo pueda estudiar el código y así asegurarse de que el código es digno de confianza. Además, para aquellos que prefieren depender de un producto con un soporte profesional, Kerberos está disponible a través de muchos distribuidores diferentes como producto comercial.
En resumen, Kerberos es una solución para ciertos problemas de seguridad de la red. Provee las herramientas de autenticación y criptografía reforzada a través de la red para ayudar a asegurar que los sistemas de información de una empresa o corporación están bien resguardados.
Cómo funciona
A continuación se describe someramente el protocolo. Se usaran las siguientes abreviaturas:
- AS = Authentication Server
- TGS = Ticket Granting Server
- SS = Service Server.
En resumen el funcionamiento es el siguiente: el cliente se autentica a sí mismo contra el AS, así demuestra al TGS que está autorizado para recibir un ticket de servicio (y lo recibe) y ya puede demostrar al SS que ha sido aprobado para hacer uso del servicio kerberizado.
En más detalle:
- Un usuario ingresa su nombre de usuario y password en el cliente
- El cliente genera una clave hash a partir del password y la usará como la clave secreta del cliente.
- El cliente envía un mensaje en texto plano al AS solicitando servicio en nombre del usuario. Nota: ni la clave secreta ni el password son enviados, solo la petición del servicio.
- El AS comprueba si el cliente está en su base de datos. Si es así, el AS genera la clave secreta utilizando la función hash con la password del cliente encontrada en su base de datos. Entonces envía dos mensajes al cliente:
- Mensaje A: Client/TGS session key cifrada usando la clave secreta del usuario
- Mensaje B: Ticket-Granting Ticket (que incluye el ID de cliente, la dirección de red del cliente, el período de validez y el Client/TGS session key) cifrado usando la clave secreta del TGS.
- Una vez que el cliente ha recibido los mensajes, descifra el mensaje A para obtener el client/TGS session key. Esta session key se usa para las posteriores comunicaciones con el TGS. (El cliente no puede descifrar el mensaje B pues para cifrar éste se ha usado la clave del TGS). En este momento el cliente ya se puede autenticar contra el TGS.
- Entonces el cliente envía los siguientes mensajes al TGS:
- Mensaje C: Compuesto del Ticket-Granting Ticket del mensaje B y el ID del servicio solicitado.
- Mensaje D: Autenticador (compuesto por el ID de cliente y una marca de tiempo), cifrado usando el client/TGS session key.
- Cuando recibe los mensajes anteriores, el TGS descifra el mensaje D (autenticador) usando el client/TGS session key y envía los siguientes mensajes al cliente:
- Mensaje E: Client-to-server ticket (que incluye el ID de cliente, la dirección de red del cliente, el período de validez y una Client/Server session key) cifrado usando la clave secreta del servicio.
- Mensaje F: Client/server session key cifrada usando el client/TGS session key.
- Cuando el cliente recibe los mensajes E y F, ya tiene suficiente información para autenticarse contra el SS. El cliente se conecta al SS y envía los siguientes mensajes:
- Mensaje E del paso anterior.
- Mensaje G: un nuevo Autenticador que incluye el ID de cliente, una marca de tiempo y que está cifrado usando el client/server session key.
- El SS descifra el ticket usando su propia clave secreta y envía el siguiente mensaje al cliente para confirmar su identidad:
- Mensaje H: la marca de tiempo encontrada en el último Autenticador recibido del cliente más uno, cifrado el client/server session key.
- El cliente descifra la confirmación usando el client/server session key y chequea si la marca de tiempo está correctamente actualizada. Si esto es así, el cliente confiará en el servidor y podrá comenzar a usar el servicio que este ofrece.
- El servidor provee del servicio al cliente.
Véase también
Enlaces externos
- Página del proyecto Kerberos en el MIT (en inglés)
- Heimdal Kerberos (en inglés)
Wikimedia foundation. 2010.