¿Cómo funciona la autenticación kerberos?

Kerberos es un protocolo de autenticación de red que proporciona autenticación entre dos entidades desconocidas. El nombre “Kerberos” se deriva de la mitología griega. Es el nombre de un perro de tres cabezas que protegió las puertas de ‘Hades’. El perro de tres cabezas en este protocolo es el “Servidor de autenticación”, también conocido como TGS (Ticket Granting Server), en el que confían todas las entidades. El servidor de autenticación tiene detalles de toda la información del usuario de Active Directory y actúa como mediador en esta conexión.

Cosas aburridas a un lado!

¿Nos colamos en el protocolo Kerberos para ver qué pasa?

Cliente A al servidor de autenticación

Hola AS, ¿cómo estás hombre? Este es el Cliente A. ¡Quiero hablar con el Servidor B! ¿Podría por favor presentarme a él? No creo que él confíe en mí.

En una conexión tradicional, un cliente habla directamente con el servidor. En el Protocolo Kerberos, el Cliente A primero iniciará una conexión con el Servidor de Autenticación (AS). AS verificará si el Cliente A está en Información de usuario de Active Directory y le da un ticket para contactar al servidor remoto.

Servidor de autenticación para el cliente A:

  • Hola cliente A, estoy bien. No tengo ningún problema en presentarte a ti. Tengo algunas cosas encriptadas que quiero que le des. Si se lo das, él sabrá que te envié el contenido. Después de eso, ustedes dos pueden tener su tiempo de diversión privada. PD: no interferiré

El servidor de autenticación (AS) responderá con un ticket que es análogo a una clave de sesión. Este ticket está encriptado por la clave que solo el Servidor A comparte con el Servidor de Autenticación y todo este contenido está nuevamente encriptado con la clave del Cliente A que solo el Cliente A comparte con AS junto con el ticket.

{[(Ticket) tecla B + Ticket] teclaA]}

Cliente A al Servidor B:

  • Hola servidor B, soy el cliente A. Quiero hablar contigo por un tiempo. AS me pidió que le diera este contenido. No entiendo nada de lo que está escrito allí. Supongo que puedes entender eso.

El cliente A primero descifra el contenido utilizando la clave que comparte con AS y obtiene el ticket. Después de eso, ve contenido cifrado que no puede descifrar. Enviará ciegamente el contenido encriptado al servidor B.

Servidor B al Cliente A:

  • Hola cliente A, me alegro de ponerme en contacto con usted. AS tenía algo bueno que contar sobre ti. Quiero asegurarme de que incluso tú tengas este boleto. ¿Podría descifrar el contenido e incrementar su valor en 1? Lo siento. Simplemente no puedo confiar en nadie. Tienes que seguir el protocolo!

El servidor ahora descifra el contenido enviado por el cliente utilizando la clave que comparte con el AS y ve un ticket que efectivamente envió el AS. El servidor ahora envía un número aleatorio cifrado con el ticket al cliente.

Cliente A al Servidor B:

  • ¡Hola servidor B! Lo sé, hombre. Las amenazas han aumentado en estos días. Es bueno seguir el protocolo. Lo descifré y he incrementado el valor en 1.

El cliente al recibirlo descifra el contenido con la ayuda del ticket dado por el AS y ve el número aleatorio. Incrementará el número aleatorio y lo enviará de vuelta al servidor.

Servidor B al Cliente A:

  • ¡Hola cliente A! Supongo que has pasado la prueba del protocolo de autenticación Kerberos. Entonces ahora dime. ¿Como puedo ayudarte?

Creo que es mejor que nos mantengamos alejados de su conexión privada después de este punto.

En este punto, ambas entidades confían entre sí y ahora comenzarán su comunicación normal.

Creo que esta página explica mucho: https://access.redhat.com/docume

Este es un video tutorial genial que explica kerberos.