El Instituto Tecnológico de Massachusetts (MIT) desarrolló Kerberos en 1988 para proteger los servicios de red proporcionados por el Proyecto Athena . [4] [5] Su primera versión fue diseñada principalmente por Steve Miller y Clifford Neuman basándose en el protocolo de clave simétrica Needham-Schroeder anterior . [6] [7] Las versiones 1 a 3 de Kerberos eran experimentales y no se lanzaron fuera del MIT. [8]
La versión 4 de Kerberos, la primera versión pública, se publicó el 24 de enero de 1989. Dado que Kerberos 4 se desarrolló en Estados Unidos y que utilizaba el algoritmo de cifrado Data Encryption Standard (DES) , las restricciones de control de las exportaciones de Estados Unidos impidieron que se exportara a otros países. El MIT creó una versión exportable de Kerberos 4 con todo el código de cifrado eliminado, [8] llamada "Bones". [9] Eric Young, de la Bond University de Australia , reimplementó DES en Bones, en una versión llamada "eBones", que podía usarse libremente en cualquier país. El Royal Institute of Technology de Suecia publicó otra reimplementación llamada KTH-KRB. [10]
Neuman y John Kohl publicaron la versión 5 en 1993 con la intención de superar las limitaciones y los problemas de seguridad existentes. La versión 5 apareció como RFC 1510, que luego quedó obsoleta con la RFC 4120 en 2005.
En 2005, el grupo de trabajo de Kerberos del Grupo de trabajo de ingeniería de Internet (IETF) actualizó las especificaciones. Las actualizaciones incluyeron:
Especificaciones de cifrado y suma de comprobación (RFC 3961).
Una nueva edición de la especificación Kerberos V5 "El Servicio de autenticación de red Kerberos (V5)" (RFC 4120). Esta versión deja obsoleta la RFC 1510 y aclara aspectos del protocolo y su uso previsto en una explicación más detallada y clara.
El MIT pone a disposición de forma gratuita una implementación de Kerberos, con permisos de copyright similares a los utilizados para BSD . En 2007, el MIT formó el Consorcio Kerberos para fomentar el desarrollo continuo. Entre los patrocinadores fundadores se incluyen proveedores como Oracle , Apple Inc. , Google , Microsoft , Centrify Corporation y TeamF1 Inc., e instituciones académicas como el Instituto Real de Tecnología de Suecia, la Universidad de Stanford, el MIT y proveedores como CyberSafe que ofrecen versiones con soporte comercial.
Protocolo
Descripción
El cliente se autentica en el servidor de autenticación (AS) , que forma parte del centro de distribución de claves (KDC) . El KDC emite un ticket de concesión de tickets (TGT) , que lleva una marca de tiempo y lo cifra utilizando la clave secreta del servicio de concesión de tickets (TGS), y devuelve el resultado cifrado a la estación de trabajo del usuario. Esto se hace con poca frecuencia, normalmente al iniciar sesión el usuario; el TGT caduca en algún momento, aunque el administrador de sesión del usuario puede renovarlo de forma transparente mientras está conectado.
Cuando el cliente necesita comunicarse con un servicio en otro nodo (un "principal", en la jerga de Kerberos), el cliente envía el TGT al TGS, que es otro componente del KDC y que normalmente comparte el mismo host que el servidor de autenticación. El servicio ya debe haberse registrado en el TGS con un nombre principal de servicio (SPN) . El cliente utiliza el SPN para solicitar acceso a este servicio. Después de verificar que el TGT es válido y que el usuario tiene permiso para acceder al servicio solicitado, el TGS emite un ticket de servicio (ST) y claves de sesión al cliente. A continuación, el cliente envía el ticket al servidor de servicio (SS) junto con su solicitud de servicio.
El protocolo se describe en detalle a continuación.
Inicio de sesión basado en cliente de usuario sin Kerberos
El servidor recibe el nombre de usuario y el código simétrico y los compara con los datos de la base de datos. El inicio de sesión se ha realizado correctamente si el código coincide con el código almacenado para el usuario.
Autenticación del cliente
El cliente envía un mensaje de texto sin formato con el ID del usuario al AS (servidor de autenticación) solicitando servicios en nombre del usuario. (Nota: ni la clave secreta ni la contraseña se envían al AS).
El AS comprueba si el cliente está en su base de datos. Si es así, el AS genera la clave secreta mediante el algoritmo hash de la contraseña del usuario que se encuentra en la base de datos (por ejemplo, Active Directory en Windows Server) y envía los dos mensajes siguientes al cliente:
Mensaje A: Clave de sesión de cliente/TGS cifrada utilizando la clave secreta del cliente/usuario.
Mensaje B: Ticket-Granting-Ticket (TGT, que incluye el ID del cliente, la dirección de red del cliente , el período de validez del ticket y la clave de sesión del cliente/TGS ) cifrado utilizando la clave secreta del TGS.
Una vez que el cliente recibe los mensajes A y B, intenta descifrar el mensaje A con la clave secreta generada a partir de la contraseña ingresada por el usuario. Si la contraseña ingresada por el usuario no coincide con la contraseña en la base de datos del AS, la clave secreta del cliente será diferente y, por lo tanto, no podrá descifrar el mensaje A. Con una contraseña y una clave secreta válidas, el cliente descifra el mensaje A para obtener la clave de sesión del cliente/TGS . Esta clave de sesión se utiliza para futuras comunicaciones con el TGS. (Nota: el cliente no puede descifrar el mensaje B, ya que está cifrado utilizando la clave secreta del TGS). En este punto, el cliente tiene suficiente información para autenticarse ante el TGS.
Autorización de servicio al cliente
Al solicitar servicios, el cliente envía los siguientes mensajes al TGS:
Mensaje C: Compuesto por el mensaje B (el TGT encriptado utilizando la clave de sesión TGS) y el ID del servicio solicitado.
Mensaje D: Autenticador (que se compone del ID del cliente y la marca de tiempo), cifrado utilizando la clave de sesión del cliente/TGS (que el cliente encontró en el mensaje A).
Al recibir los mensajes C y D, el TGS recupera el mensaje B del mensaje C. Descifra el mensaje B utilizando la clave secreta del TGS. Esto le proporciona la clave de sesión de cliente/TGS y el ID de cliente (ambos están en el TGT). Utilizando esta clave de sesión de cliente/TGS , el TGS descifra el mensaje D (autenticador) y compara los ID de cliente de los mensajes B y D; si coinciden, el servidor envía los dos mensajes siguientes al cliente:
Mensaje E: Ticket de cliente a servidor (que incluye el ID del cliente, la dirección de red del cliente, el período de validez y la clave de sesión cliente/servidor ) cifrado utilizando la clave secreta del servicio.
Mensaje F: Clave de sesión cliente/servidor cifrada con la clave de sesión cliente/TGS .
Solicitud de servicio al cliente
Al recibir los mensajes E y F de TGS, el cliente tiene suficiente información para autenticarse en el Servidor de Servicios (SS). El cliente se conecta al SS y envía los dos mensajes siguientes:
Mensaje E: Del paso anterior (el ticket de Cliente a Servidor , encriptado usando la Clave Secreta del servicio por el TGS).
Mensaje G: Un nuevo autenticador, que incluye el ID del cliente, la marca de tiempo y está encriptado usando la clave de sesión cliente/servidor .
El SS descifra el ticket (mensaje E) utilizando su propia clave secreta para recuperar la clave de sesión de cliente/servidor . Utilizando la clave de sesión, el SS descifra el autenticador y compara el ID del cliente de los mensajes E y G; si coinciden, el servidor envía el siguiente mensaje al cliente para confirmar su verdadera identidad y su voluntad de servir al cliente:
Mensaje H: La marca de tiempo encontrada en el Autenticador del cliente (más 1 en la versión 4, pero no es necesario en la versión 5 [11] [12] ), cifrada utilizando la clave de sesión cliente/servidor .
El cliente descifra la confirmación (mensaje H) utilizando la clave de sesión cliente/servidor y verifica si la marca de tiempo es correcta. Si es así, el cliente puede confiar en el servidor y comenzar a enviarle solicitudes de servicio.
El servidor proporciona los servicios solicitados al cliente.
Soporte por sistemas operativos
Microsoft Windows
Windows 2000 y versiones posteriores utilizan Kerberos como método de autenticación predeterminado. [13] Algunas incorporaciones de Microsoft al conjunto de protocolos Kerberos están documentadas en RFC 3244 "Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols". RFC 4757 documenta el uso del cifrado RC4 por parte de Microsoft . Si bien Microsoft utiliza y amplía el protocolo Kerberos, no utiliza el software MIT.
Kerberos se utiliza como el método de autenticación preferido: en general, unir un cliente a un dominio de Windows significa habilitar Kerberos como el protocolo predeterminado para las autenticaciones de ese cliente a los servicios en el dominio de Windows y todos los dominios con relaciones de confianza con ese dominio. [13]
Por el contrario, cuando el cliente o el servidor, o ambos, no están unidos a un dominio (o no forman parte del mismo entorno de dominio confiable), Windows utilizará NTLM para la autenticación entre el cliente y el servidor. [13]
Las aplicaciones web de Internet pueden aplicar Kerberos como método de autenticación para clientes unidos a un dominio mediante el uso de API proporcionadas en SSPI .
Microsoft Windows y Windows Server incluyen setspn , una utilidad de línea de comandos que se puede utilizar para leer, modificar o eliminar los nombres principales de servicio (SPN) de una cuenta de servicio de Active Directory . [14] [15]
Unix y otros sistemas operativos
Muchos sistemas operativos similares a Unix, incluidos FreeBSD , macOS de Apple , Red Hat Enterprise Linux , Solaris de Oracle , AIX de IBM , HP-UX y otros, incluyen software para la autenticación Kerberos de usuarios o servicios. Una variedad de sistemas operativos no similares a Unix, como z/OS , IBM i y OpenVMS, también cuentan con soporte Kerberos. La implementación integrada del protocolo de autenticación Kerberos V para agentes de cliente y servicios de red que se ejecutan en plataformas integradas también está disponible en empresas [ which? ] .
Desventajas y limitaciones
Kerberos tiene requisitos de tiempo estrictos, lo que significa que los relojes de los hosts involucrados deben estar sincronizados dentro de los límites configurados. Los tickets tienen un período de disponibilidad de tiempo y, si el reloj del host no está sincronizado con el reloj del servidor Kerberos, la autenticación fallará. La configuración predeterminada según MIT requiere que las horas del reloj no estén separadas por más de cinco minutos. En la práctica, los daemons del Protocolo de tiempo de red se utilizan generalmente para mantener sincronizados los relojes del host. Tenga en cuenta que algunos servidores (la implementación de Microsoft es uno de ellos) pueden devolver un resultado KRB_AP_ERR_SKEW que contiene la hora del servidor cifrada si ambos relojes tienen una diferencia mayor que el valor máximo configurado. En ese caso, el cliente podría volver a intentarlo calculando la hora utilizando la hora del servidor proporcionada para encontrar la diferencia. Este comportamiento está documentado en RFC 4430.
El protocolo de administración no está estandarizado y difiere entre las distintas implementaciones de servidores. Los cambios de contraseña se describen en RFC 3244.
En caso de adopción de criptografía simétrica (Kerberos puede funcionar utilizando criptografía simétrica o asimétrica (de clave pública)), dado que todas las autenticaciones están controladas por un centro de distribución de claves centralizado (KDC), la vulneración de esta infraestructura de autenticación permitirá a un atacante hacerse pasar por cualquier usuario.
Cada servicio de red que requiere un nombre de host diferente necesitará su propio conjunto de claves Kerberos, lo que complica el alojamiento virtual y los clústeres.
Kerberos requiere que las cuentas de usuario y los servicios tengan una relación de confianza con el servidor de tokens Kerberos.
La confianza requerida del cliente dificulta la creación de entornos preparados (por ejemplo, dominios separados para el entorno de prueba, el entorno de preproducción y el entorno de producción): se deben crear relaciones de confianza de dominio que eviten una separación estricta de los dominios del entorno o se deben proporcionar clientes de usuario adicionales para cada entorno.
Seguridad
El cifrado Estándar de cifrado de datos (DES) se puede utilizar en combinación con Kerberos, pero ya no es un estándar de Internet porque es débil. [16] Existen vulnerabilidades de seguridad en productos que implementan versiones heredadas de Kerberos que carecen de soporte para cifrados más nuevos como AES.
^ "Autenticación Kerberos". IONOS Digitalguide . Consultado el 25 de agosto de 2022 .
^ Garman 2003, pág. 5.
^ Steiner, Jennifer G.; Geer, Daniel E. (21 de julio de 1988). Servicios de red en el entorno Athena . Actas de la conferencia Usenix de invierno de 1988. CiteSeerX 10.1.1.31.8727 .
^ Steiner, Jennifer G.; Neuman, Clifford; Schiller, Jeffrey I. (febrero de 1988).Kerberos : un servicio de autenticación para sistemas de redes abiertas . Actas de la Conferencia USENIX de invierno de 1988. CiteSeerX 10.1.1.112.9002 . S2CID 222257682.
^ Elizabeth D. Zwicky; Simon Cooper; D. Brent (26 de junio de 2000). Construcción de cortafuegos para Internet: seguridad en Internet y en la Web . O'Reilly. ISBN9781565928718.
^ desde Garman 2003, pág. 7.
^ Pröhl y Kobras 2022, pág. 7.
^ Garman 2003, págs. 7–8.
^ C., Neuman; J., Kohl (1993). "El servicio de autenticación de red Kerberos (V5)". doi : 10.17487/RFC1510 . Archivado desde el original el 21 de agosto de 2016.{{cite journal}}: Requiere citar revista |journal=( ayuda )
^ Clifford, Neuman; Sam, Hartman; Tom, Yu; Kenneth, Raeburn (2005). "El servicio de autenticación de red Kerberos (V5)". doi :10.17487/RFC4120. Archivado desde el original el 21 de agosto de 2016.{{cite journal}}: Requiere citar revista |journal=( ayuda )
^ abc "¿Qué es la autenticación Kerberos?". Microsoft TechNet. 8 de octubre de 2009. Archivado desde el original el 20 de diciembre de 2016.
^ Setspn - CMD de Windows - SS64.com
^ Setspn | Documentos de Microsoft
^ Tom, Yu; Love, Astrand (2012). "Deprecate DES, RC4-HMAC-EXP, and Other Weak Cryptographic Algorithms in Kerberos" (Descontinuar DES, RC4-HMAC-EXP y otros algoritmos criptográficos débiles en Kerberos). doi :10.17487/RFC6649. Archivado desde el original el 27 de octubre de 2015.{{cite journal}}: Requiere citar revista |journal=( ayuda )
Prohl, Mark; Kobras, Daniel (14 de abril de 2022). Kerberos: inicio de sesión único en gemischten Linux/Windows-Umgebungen (en alemán). dpunkt.verlag. pag. 7.ISBN 9783960888512.
Lynn Root (30 de mayo de 2013) (2 de abril de 2013). "Explícalo como si tuviera 5 años: Kerberos". Blog de Lynn Root .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
Microsoft TechNet 2017 (18 de julio de 2012). "Conceptos básicos del protocolo Kerberos". Biblioteca MSDN .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
Equipo del kit de recursos (7 de enero de 2021). "Microsoft Kerberos (Windows)". Biblioteca MSDN .
B. Clifford Neuman; Theodore Ts'o (septiembre de 1994). "Kerberos: un servicio de autenticación para redes informáticas". IEEE Communications . 32 (9): 33–8. doi :10.1109/35.312841. S2CID 45031265.
Kohl, John T.; Neuman, B. Clifford; Ts'o, Theodore Y. (1994). "La evolución del sistema de autenticación Kerberos". En Brazier, FMT ; Johansen, D (eds.). Sistemas abiertos distribuidos . IEEE Computer Society Press. págs. 78–94. CiteSeerX 10.1.1.120.944 . ISBN 978-0-8186-4292-0.OCLC 1191406172 .
"Descripción general de Kerberos: un servicio de autenticación para sistemas de redes abiertas". Cisco Systems. 19 de enero de 2006. Consultado el 15 de agosto de 2012 .
"Cómo funciona la autenticación Kerberos". learn-networking.com. 28 de enero de 2008. Archivado desde el original el 2 de abril de 2015. Consultado el 15 de agosto de 2012 .
"¿Qué es la autenticación Kerberos?: Inicio de sesión y autenticación". Microsoft TechNet. 8 de octubre de 2009. Consultado el 7 de diciembre de 2016 .
RFC (Requerimientos de comentarios)
RFC 1510 El servicio de autenticación de red Kerberos (V5) [Obsoleto]
RFC 1964 Mecanismo GSS-API de Kerberos versión 5
RFC 3961 Especificaciones de cifrado y suma de comprobación para Kerberos 5
RFC 3962 Estándar de cifrado avanzado (AES) Cifrado para Kerberos 5
RFC 4120 El servicio de autenticación de red Kerberos (V5) [Actual]
RFC 4121 Mecanismo de interfaz de programación de aplicaciones de servicios de seguridad genéricos (GSS-API) de Kerberos versión 5: versión 2
RFC 4537 Extensión de negociación del criptosistema Kerberos
RFC 4556 Criptografía de clave pública para autenticación inicial en Kerberos (PKINIT)
RFC 4557 Compatibilidad del protocolo de estado de certificado en línea (OCSP) con criptografía de clave pública para autenticación inicial en Kerberos (PKINIT)
RFC 4757 Tipos de cifrado Kerberos RC4-HMAC utilizados por Microsoft Windows [Obsoleto]
RFC 5021 Intercambios de centros de distribución de claves (KDC) de Kerberos versión 5 ampliados a través de TCP
RFC 5349 Compatibilidad con criptografía de curva elíptica (ECC) para la criptografía de clave pública para la autenticación inicial en Kerberos (PKINIT)
RFC 5868 Enunciado del problema sobre el funcionamiento entre dominios de Kerberos
RFC 5896 Interfaz de programación de aplicaciones de servicios de seguridad genéricos (GSS-API): delegar si lo aprueba la política
RFC 6111 Restricciones adicionales de nombres de Kerberos
RFC 6112 Compatibilidad con anonimato para Kerberos
RFC 6113 Un marco generalizado para la autenticación previa de Kerberos
RFC 6251 Uso de Kerberos versión 5 sobre el protocolo de seguridad de la capa de transporte (TLS)
RFC 6448 La forma no cifrada del mensaje KRB-CRED de Kerberos 5
RFC 6542 Interfaz de programación de aplicaciones de servicios de seguridad genéricos (GSS-API) Kerberos versión 5 Enlace de canal Agilidad de hash
RFC 6560 Preautenticación de contraseña de un solo uso (OTP)
RFC 6649: desestimar DES, RC4-HMAC-EXP y otros algoritmos criptográficos débiles en Kerberos
Opciones de Kerberos para DHCPv6 según RFC 6784
RFC 6803 Cifrado Camellia para Kerberos 5
RFC 6806 Canonicalización de nombres principales de Kerberos y referencias entre dominios
RFC 6880 Un modelo de información para Kerberos versión 5
RFC 8009 Cifrado AES con HMAC-SHA2 para Kerberos 5
Lectura adicional
"Comentario de Novell Inc. sobre el acuerdo propuesto entre Microsoft y el Departamento de Justicia, de conformidad con la Ley Tunney". Acción civil n.º 98-1232 (CKK): Estados Unidos de América contra Microsoft Corporation . Departamento de Justicia. 29 de enero de 2002. Consultado el 15 de agosto de 2012 .
Bryant, Bill (febrero de 1988). "Diseño de un sistema de autenticación: un diálogo en cuatro escenas". Obra humorística sobre cómo evolucionó el diseño de Kerberos . MIT .
Hornstein, Ken (18 de agosto de 2000). «Preguntas frecuentes sobre Kerberos, v2.0». Secretario de Marina . Archivado desde el original el 3 de diciembre de 2002. Consultado el 15 de agosto de 2012 .
Bellovin, SM; Merritt, M. (1 de octubre de 1990). "Limitaciones del sistema de autenticación Kerberos". ACM SIGCOMM Computer Communication Review . 20 (5): 119–132. doi : 10.1145/381906.381946 . S2CID 8014806.
Neuman, BC; Ts'o, T. (septiembre de 1994). "Kerberos: un servicio de autenticación para redes informáticas". Revista de comunicaciones IEEE . 32 (9): 33–38. doi :10.1109/35.312841. S2CID 45031265.
Bella, Giampaolo; Paulson, Lawrence C. (1998). "Kerberos versión IV: análisis inductivo de los objetivos de confidencialidad". Seguridad informática — ESORICS 98. Apuntes de clase en informática. Vol. 1485. págs. 361–375. doi :10.1007/BFb0055875. ISBN 978-3-540-65004-1.
Abdelmajid, NT; Hossain, MA; Shepherd, S.; Mahmoud, K. (2010). "Evaluación mejorada del protocolo de seguridad Kerberos utilizando lógica BAN modificada". 2010 10th IEEE International Conference on Computer and Information Technology . págs. 1610–1615. doi :10.1109/CIT.2010.285. ISBN 978-1-4244-7547-6.S2CID6246388 .
Enlaces externos
Wikimedia Commons tiene medios relacionados con Kerberos .