Proceso de autenticación en Kerberos
Última actualización
Última actualización
Se estudiará en esta sección como se desarrolla el proceso de autenticación según el protocolo Kerberos, partiendo de un usuario que no posee ningún ticket, hasta que el mismo se autentica contra un servicio deseado.
Por tanto, lo primero que un usuario debe conseguir es un TGT del KDC, para ello se envía un mensaje KRB_AS_REQ:
Esquema del mensaje KRB_AS_REQ
En KRB_AS_REQ se encuentran, entre otros, los siguientes campos:
Un timestamp cifrado con la clave del cliente, para autenticar al usuario y prevenir ataques de replay
El nombre del usuario que se está autenticando
El SPN del servicio asociado a la cuenta krbtgt
Un nonce generado por el usuario
Nota: el timestamp cifrado solo es necesario si el usuario requiere preautenticación, lo cual se da en la mayoría de los casos, salvo que el usuario tenga activado el flag DONT_REQ_PREAUTH.
Al recibir el mensaje el KDC verifica la identidad del usuario descifrando el timestamp. Si el mensaje recibido es correcto entonces responde con un KRB_AS_REP:
Esquema mensaje KRB_AS_REP
En KRB_AS_REP se envía la siguiente información:
Nombre de usuario
El TGT, que incluye:
Nombre de usuario
Clave de sesión
Fecha de expiración del TGT
PAC con los privilegios del usuario, firmado por el KDC
Una serie de datos cifrados con la clave del usuario, que incluyen:
Clave de sesión
Fecha de expiración del TGT
Nonce del cliente, para evitar ataques de replay
Una vez terminado este proceso el usuario ya posee un TGT que podrá ser usado para solicitar los TGS, y acceder a los servicios del dominio ligados a Kerberos.
Para solicitar un TGS se debe enviar al KDC un mensaje KRB_TGS_REQ:
Esquema mensaje kerberos KRB_TGS_REQ
En KRB_TGS_REQ se pueden apreciar estos apartados, entre otros:
Datos cifrados con la clave de sesión:
Nombre de usuario
Timestamp
TGT
SPN del servicio solicitado
Nonce generado por el usuario
Cuando el KDC recibe este mensaje devuelve un TGS en el mensaje KRB_TGS_REP:
Esquema mensaje kerberos KRB_TGS_REP
KRB_TGS_REP incluye, entre otras, las siguientes partes:
Nombre de usuario
TGS, que contiene:
Clave de sesión de servicio
Nombre de usuario
Fecha de expiración del TGS
PAC con los privilegios del usuario, firmado por el KDC
Datos cifrados con la clave de sesión:
Clave de sesión de servicio
Fecha de expiración del TGS
Nonce del cliente, para evitar ataques de replay
Y si todo ha salido bien, el usuario ya tiene el TGS que le permite acceder al servicio deseado. Para utilizarlo debe enviar al AP un mensaje KRB_AP_REQ:
Esquema mensaje kerberos KRB_AP_REQ
En KRB_AP_REQ se especifica:
TGS
Datos cifrados con la clave de sesión del servicio:
Nombre de usuario
Timestamp, para evitar ataques de replay
Tras esto, si los permisos del usuario son correctos, este ya puede acceder al servicio. Para esto, si está configurado, el AP verificará contra el KDC el PAC. Y en caso de requerir autenticación mutua, responderá con un mensaje KRB_AP_REP al usuario.