¿Como funciona Kerberos?
Última actualización
Última actualización
El protocolo Kerberos es un sistema de autenticación de red que utiliza criptografía de clave simétrica para proporcionar autenticación fuerte para las comunicaciones cliente-servidor. La versión más comúnmente utilizada es Kerberos V5, que está diseñada para funcionar en redes inseguras y proporcionar autenticación mutua entre el cliente y el servidor. Veamos los detalles del flujo de autenticación y los términos asociados:
Key Distribution Center (KDC): Es una instancia de confianza centralizada que provee los servicios AS y TGS.
Authentication Service (AS): Es el servicio dentro del KDC que autentica a los usuarios y servicios y emite TGTs.
Ticket Granting Service (TGS): Es otro servicio dentro del KDC que emite tickets de servicio para acceder a recursos después de que el cliente ha sido autenticado inicialmente por el AS.
Ticket Granting Ticket (TGT): Es un "boleto" que el AS emite a los clientes cuando se autentican con éxito, que a su vez es utilizado para solicitar tickets de servicio del TGS.
Principal: En Kerberos, un principal es una entidad única (usuario o servicio) identificada por su nombre completo en el dominio.
Session Key: Es una clave criptográfica simétrica utilizada para cifrar y descifrar comunicaciones durante una sesión específica.
Pre-authentication: Es un proceso donde el cliente debe demostrar conocimiento de la contraseña antes de que el AS emita un TGT, para prevenir ataques de repetición.
Service Ticket: Es un ticket emitido por el TGS que permite al cliente acceder a un servicio en particular.
Realm: Es un dominio administrativo para Kerberos, generalmente corresponde a un dominio en una red.
Pre-Autenticación:
El usuario inicia sesión en su cliente Kerberos proporcionando su identificador de usuario y contraseña.
El cliente Kerberos genera una clave de cifrado a partir de la contraseña del usuario y la utiliza para cifrar un timestamp, enviando este paquete al AS como parte de su AS_REQ.
AS_REQ / AS_REP:
El AS valida la pre-autenticación y luego crea el TGT y una clave de sesión para el usuario.
El TGT está cifrado con la clave secreta del servicio TGS, y solo el TGS puede descifrarlo.
El AS envía de vuelta al cliente el TGT y la clave de sesión (AS_REP), cifrada con la clave generada a partir de la contraseña del usuario.
TGS_REQ / TGS_REP:
Cuando el cliente necesita acceder a un servicio, cifra una solicitud con la clave de sesión y envía esta solicitud junto con el TGT al TGS.
El TGS descifra el TGT, verifica la validez y autenticidad de la solicitud y genera un ticket de servicio para el recurso solicitado, cifrado con la clave del servicio en cuestión.
Acceso al Servicio:
El cliente recibe el ticket de servicio y la nueva clave de sesión asociada, y se conecta al servidor del recurso solicitado, enviando el ticket de servicio y una autenticación cifrada con la clave de sesión.
El servidor de recursos descifra el ticket de servicio, verifica la autenticidad de la autenticación del cliente y, si todo es correcto, permite el acceso.
Supongamos que Gerh quiere acceder a un servidor de archivos en su empresa:
Gerh ingresa su nombre de usuario y contraseña en su cliente Kerberos.
El cliente solicita un TGT al AS pre-autenticándose con un timestamp cifrado.
El AS valida la solicitud, crea un TGT y una clave de sesión, y los envía a Gerh cifrados con su clave de contraseña.
Gerh desea acceder al servidor de archivos y envía un TGS_REQ al TGS, incluyendo el TGT y una solicitud cifrada con su clave de sesión.
El TGS valida el TGT, crea un ticket de servicio para el servidor de archivos, y se lo envía a Gerh.
Gerh accede al servidor de archivos presentando el ticket de servicio y su autenticación cifrada.
El servidor valida el ticket y la autenticación, y permite a Gerh acceder a los archivos.
Este proceso garantiza que solo usuarios autenticados y con los permisos correctos puedan acceder a los recursos protegidos en la red. Además, la autenticación mutua asegura tanto al cliente como al servidor que están comunicándose con las partes correctas.