La ciberdelincuencia es un hecho desafortunado de la vida actual, independientemente de si hablamos de consumidores particulares o del mundo empresarial en general. Ninguna empresa u organización está a salvo, y el problema no mejorará pronto. Los expertos predicen que los daños causados por la ciberdelincuencia costarán al mundo 6,1 billones de dólares en 2021. Por si fuera poco, Forbes predice que un número cada vez mayor de ciberdelincuentes utilizará la Inteligencia Artificial (IA) para escalar sus ataques.
Estas predicciones, y muchas otras, apuntan a la dura realidad de que la ciberdelincuencia ha llegado para quedarse, y el problema solo va a empeorar. En consecuencia, el mundo digital está ansioso por encontrar y emplear nuevas estrategias para reforzar la ciberseguridad.
Hoy nos ocupamos de los protocolos de autenticación, concretamente de Kerberos. Vamos a descorrer la cortina y a familiarizarnos con este eficaz protocolo de red.
En este artículo aprenderás los siguientes temas en detalle:
- ¿Qué es kerberos?
- ¿Cómo funciona kerberos?
- ¿Para qué se utiliza kerberos?
- Resumen del flujo del protocolo Kerberos
- ¿Es kerberos infalible?
¿Qué es Kerberos? ¿Y cómo funciona?
Kerberos es un protocolo de seguridad de redes informáticas que autentifica las solicitudes de servicio entre dos o más hosts de confianza a través de una red no fiable, como Internet. Utiliza criptografía de clave secreta y un tercero de confianza para autenticar las aplicaciones cliente-servidor y verificar la identidad de los usuarios.
Desarrollado inicialmente por el Instituto Tecnológico de Massachusetts (MIT) para el Proyecto Athena a finales de los 80, Kerberos es ahora la tecnología de autorización por defecto utilizada por Microsoft Windows. También existen implementaciones de Kerberos para otros sistemas operativos como Apple OS, FreeBSD, UNIX y Linux.
Microsoft lanzó su versión de Kerberos en Windows 2000, y se ha convertido en el protocolo de referencia para sitios web e implementaciones de inicio de sesión único en diferentes plataformas. El Consorcio Kerberos mantiene Kerberos como un proyecto de código abierto.
El protocolo debe su nombre al legendario perro de tres cabezas Kerberos (también conocido como Cerbero) de los mitos griegos, el guardián canino de la entrada al inframundo. Kerberos tenía una cola de serpiente y un carácter especialmente malo y, a pesar de una notable excepción, era un guardián muy útil.
Pero en el caso del protocolo, las tres cabezas de Kerberos representan al cliente, al servidor y al Centro de Distribución de Claves (KDC). Este último funciona como el servicio de autenticación de terceros de confianza.
Los usuarios, las máquinas y los servicios que utilizan Kerberos dependen únicamente del KDC, que funciona como un único proceso que proporciona dos funciones: autenticación y concesión de tickets. Los «tickets» del KDC ofrecen autenticación a todas las partes, permitiendo a los nodos verificar su identidad de forma segura. El proceso de autenticación de Kerberos emplea una criptografía convencional de secreto compartido que impide que los paquetes que viajan por la red sean leídos o alterados, además de proteger los mensajes de ataques de escucha y reproducción.
Ahora que hemos aprendido qué es Kerberos, vamos a entender para qué se utiliza Kerberos.
¿Para qué se utiliza Kerberos?
Aunque Kerberos se encuentra en todo el mundo digital, se emplea mucho en sistemas seguros que dependen de funciones de auditoría y autenticación fiables. Kerberos se utiliza en la autenticación Posix, y en Active Directory, NFS y Samba. También es un sistema de autenticación alternativo a SSH, POP y SMTP.
Como parte del flujo de aprendizaje de lo que es Kerberos, vamos a conocer a continuación el flujo del protocolo Kerberos.
Resumen del flujo del protocolo Kerberos
Echemos un vistazo más detallado a lo que es la autenticación Kerberos y cómo funciona, desglosándola en sus componentes principales.
Estas son las principales entidades involucradas en el flujo de trabajo típico de Kerberos:
- Cliente. El cliente actúa en nombre del usuario e inicia la comunicación para una solicitud de servicio
- Servidor. El servidor aloja el servicio al que el usuario quiere acceder
- Servidor de autenticación (AS). El AS realiza la autenticación del cliente deseada. Si la autenticación se realiza con éxito, el AS emite al cliente un ticket llamado TGT (Ticket Granting Ticket). Este ticket garantiza a los demás servidores que el cliente está autenticado.
- Centro de distribución de claves (KDC). En un entorno Kerberos, el servidor de autenticación se divide lógicamente en tres partes: Una base de datos (db), el servidor de autenticación (AS) y el servidor de concesión de tickets (TGS). Estas tres partes, a su vez, existen en un único servidor llamado Centro de Distribución de Claves
- Servidor de concesión de billetes (TGS). El TGS es un servidor de aplicaciones que emite tickets de servicio como un servicio
Ahora vamos a desglosar el flujo del protocolo.
En primer lugar, hay tres claves secretas cruciales involucradas en el flujo de Kerberos. Hay claves secretas únicas para el cliente/usuario, el TGS, y el servidor compartido con el AS.
- Cliente/usuario. Hash derivado de la contraseña del usuario
- Clave secreta del TGS. Hash de la contraseña empleada para determinar el TGS
- Clave secreta del servidor. Hash de la contraseña empleada para determinar el servidor que presta el servicio.
El flujo del protocolo consta de los siguientes pasos:
Paso 1: Solicitud inicial de autenticación del cliente. El usuario solicita un Ticket Granting Ticket (TGT) al servidor de autenticación (AS). Esta solicitud incluye el ID del cliente.
Paso 2: El KDC verifica las credenciales del cliente. El AS comprueba en la base de datos la disponibilidad del cliente y del TGS. Si el AS encuentra ambos valores, genera una clave secreta del cliente/usuario, empleando el hash de la contraseña del usuario.
A continuación, el AS calcula la clave secreta del TGS y crea una clave de sesión (SK1) cifrada por la clave secreta del cliente/usuario. A continuación, el AS genera un TGT que contiene el ID del cliente, la dirección de red del cliente, la marca de tiempo, el tiempo de vida y SK1. A continuación, la clave secreta del TGS encripta el ticket.
Paso 3: El cliente descifra el mensaje. El cliente utiliza la clave secreta del cliente/usuario para descifrar el mensaje y extraer el SK1 y el TGT, generando el autentificador que valida el TGS del cliente.
Paso 4: El cliente utiliza el TGT para solicitar el acceso. El cliente solicita un ticket al servidor que ofrece el servicio enviando el TGT extraído y el autentificador creado al TGS.
Paso 5: El KDC crea un ticket para el servidor de archivos. A continuación, el TGS utiliza la clave secreta del TGS para descifrar el TGT recibido del cliente y extrae el SK1. El TGS descifra el autentificador y comprueba si coincide con el ID del cliente y la dirección de red del cliente. El TGS también utiliza la marca de tiempo extraída para asegurarse de que el TGT no ha caducado.
Si el proceso realiza todas las comprobaciones con éxito, el KDC genera una clave de sesión de servicio (SK2) que se comparte entre el cliente y el servidor de destino.
Por último, el KDC crea un ticket de servicio que incluye el identificador del cliente, la dirección de red del cliente, la marca de tiempo y la SK2. Este ticket se encripta con la clave secreta del servidor obtenida de la base de datos. El cliente recibe un mensaje que contiene el ticket de servicio y la SK2, todo ello cifrado con la SK1.
Paso 6: El cliente utiliza el ticket de archivo para autenticarse. El cliente descifra el mensaje utilizando SK1 y extrae SK2. Este proceso genera un nuevo autentificador que contiene la dirección de red del cliente, el ID del cliente y la marca de tiempo, cifrados con SK2, y lo envía junto con el ticket de servicio al servidor de destino.
Paso 7: El servidor de destino recibe el descifrado y la autenticación. El servidor de destino utiliza la clave secreta del servidor para descifrar el ticket de servicio y extraer el SK2. El servidor utiliza el SK2 para descifrar el autentificador, realizando comprobaciones para asegurarse de que el ID del cliente y la dirección de red del cliente del autentificador y el ticket de servicio coinciden. El servidor también comprueba el ticket de servicio para ver si ha caducado.
Una vez que se cumplen las comprobaciones, el servidor de destino envía al cliente un mensaje que verifica que el cliente y el servidor se han autenticado mutuamente. El usuario ya puede iniciar una sesión segura.
Después de haber llegado tan lejos en el aprendizaje de lo que es Kerberos, vamos a ver a continuación el tema de si Kerberos es infalible.
¿Es Kerberos infalible?
Ninguna medida de seguridad es 100% inexpugnable, y Kerberos no es una excepción. Dado que existe desde hace tanto tiempo, los piratas informáticos han tenido la oportunidad, a lo largo de los años, de encontrar formas de burlarlo, normalmente falsificando tickets, haciendo repetidos intentos de adivinar las contraseñas (fuerza bruta/relleno de credenciales) y utilizando malware para rebajar el cifrado.
A pesar de ello, Keberos sigue siendo el mejor protocolo de acceso de seguridad disponible en la actualidad. El protocolo es lo suficientemente flexible como para emplear algoritmos de cifrado más robustos que ayuden a combatir las nuevas amenazas, y si los usuarios practican buenas políticas de elección de contraseñas, ¡no debería haber problemas!
Espero que les guste este post y les sirva de ayuda.
1 comentario