Kerberos (Ensayo)

Kerberos

Diego Vertiz Alexis
5IM7

Kerberos

Introducción

Hace algún tiempo, el uso de las computadoras solía ser más compartido, para esto se empezaron a crear diferentes mecanismos para tener privacidad con tus fotos, documentos o cualquier archivo. Uno de los conceptos desarrollados fue el de la contraseña, que sólo la tendría el usuario para poder tener un poco más de privacidad.
Una de las grandes herramientas que se desarrollaron fue Kerberos.

Desarrollo

Kerberos es un protocolo de autenticación de redes de ordenador creado por el MIT que permite a dos ordenadores 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.
Funcionamiento
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 introduce 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 usuario 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 en primer lugar con la clave secreta del TGS y después con la clave secreta del usuario.
-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 descifra parcialmente el mensaje B con su clave secreta para obtener el TGT, pero no puede descifrar el TGT en sí puesto que se encuentra cifrado con la clave secreta 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.

Conclusión

La seguridad es fundamental para cualquier sistema y para cualquier usuario que tenga algo importante, para ésto Kerberos nos ofrece diferentes utilidades y es que con este sistema los servicios de redes más convencionales usan esquemas de autenticación basados en contraseñas. Tales esquemas requieren que cuando un usuario necesita una autenticación en un servidor de red, debe proporcionar un nombre de usuario y una contraseña. Lamentablemente, la información de autenticación para muchos servicios se transmite sin estar encriptada. Para que un esquema de este tipo sea seguro, la red tiene que estar inaccequible a usuarios externos, y todos los usuarios de la red deben ser de confianza.
El primer objetivo de Kerberos es el de eliminar la transmisión a través de la red de información de autenticación. Un uso correcto de Kerberos erradica la amenaza de analizadores de paquetes que intercepten contraseñas en su red.
Sin embargo también cuenta con diversos puntos en su contra, ya que la migración de contraseñas de usuarios desde una base de datos de contraseñas, a una base de datos de contraseñas Kerberos puede ser tediosa y no hay un mecanismo rápido para realizar esta tarea.
Otro de los mayores probemas de Kerberos es que para que una aplicación lo pueda usar, el código debe ser modificado para hacer las llamadas apropiadas a las librerías de Kerberos. Las aplicaciones que son modificadas de esta forma son consideradas kerberizadas. Para algunas aplicaciones, esto puede suponer un esfuerzo excesivo de programación, debido al tamaño de la aplicación o su diseño. Para otras aplicaciones incompatibles, los cambios se deben realizar en el modo en que el servidor de red y sus clientes se comunican; de nuevo, esto puede suponer bastante programación. En general, las aplicaciones de código cerrado que no tienen soporte de Kerberos son usualmente las más problemáticas.

Fuentes

- MIT. (12 de 11 de 2017). MIT. Recuperado el 12 de 11 de 2017, de Kerberos: http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-kerberos.html
Kerberos (s.f.) http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-kerberos.html

Comentarios

Entradas más populares de este blog

Redes (Ensayo)

Modelo OSI y TCP/IP (Ensayo)

Arquitectura Cliente-Servidor (Ensayo)