Proceso de autenticación en Kerberos

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.

KRB_AS_REQ

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.

KRB_AS_REP

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.

KRB_TGS_REQ

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

KRB_TGS_REP

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

KRB_AP_REQ

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.

Última actualización