El protocolo Kerberized Internet Negotiation of Keys ( KINK ) es un protocolo definido en el RFC 4430 que se utiliza para establecer una asociación de seguridad (SA) IPsec , similar al Intercambio de Claves de Internet (IKE), que utiliza el protocolo Kerberos para permitir que terceros de confianza gestionen la autenticación de pares y la administración de políticas de seguridad de forma centralizada. [ 1 ]
Su motivación se da en RFC 3129 como una alternativa a IKE, en la que los pares deben usar certificados X.509 para la autenticación, usar el intercambio de claves Diffie-Hellman (DH) para el cifrado, conocer e implementar una política de seguridad para cada par con el que se conectará, [ 2 ] con la autenticación de los certificados X.509 ya sea preestablecida o usando DNS , preferiblemente con DNSSEC . [ 3 ] Utilizando Kerberos, los pares KINK solo deben autenticarse mutuamente con el servidor de autenticación (AS) apropiado , con un centro de distribución de claves (KDC) que a su vez controla la distribución del material de clave para el cifrado y, por lo tanto, controla la política de seguridad IPsec.
Descripción del protocolo
KINK es un protocolo de comando/respuesta que permite crear, eliminar y mantener asociaciones de seguridad IPsec . Cada comando o respuesta contiene una cabecera común junto con un conjunto de datos de tipo-longitud-valor. El tipo de comando o respuesta limita los datos que se envían en los mensajes del intercambio.
KINK es un protocolo sin estado, ya que cada comando o respuesta no requiere el almacenamiento de un estado permanente. Esto contrasta con IKE, que utiliza el Modo Principal para establecer primero una SA (Protocolo de Administración de Claves y Asociación de Seguridad de Internet ) ISAKMP (Protocolo de Administración de Claves y Seguridad de Internet ), seguida de intercambios en Modo Rápido.
KINK utiliza mecanismos Kerberos para proporcionar autenticación mutua y protección contra ataques de repetición. Para establecer asociaciones de seguridad (SA), KINK garantiza la confidencialidad de las cargas útiles que siguen a la carga útil AP-REQ de Kerberos. El diseño de KINK mitiga los ataques de denegación de servicio al requerir intercambios autenticados antes de realizar cualquier operación con clave pública y de instalar cualquier estado. KINK también permite utilizar mecanismos Kerberos de usuario a usuario cuando no se comparte una clave entre el servidor y el KDC. Esto suele ocurrir, aunque no exclusivamente, con pares IPsec que utilizan PKINIT para la autenticación inicial.
KINK reutiliza directamente las cargas útiles del Modo Rápido definidas en la sección 5.5 de IKE , con algunos cambios y omisiones menores. En la mayoría de los casos, los intercambios de KINK consisten en un único comando y su respuesta. Se requiere un tercer mensaje opcional al crear SA, solo si el respondedor rechaza la primera propuesta del iniciador o desea aportar los materiales de clave. KINK también proporciona re-clave y detección de pares inactivos .
Formato del paquete
El mensaje KINK incluye los siguientes campos:
- tipo: CREAR, ELIMINAR, RESPONDER, OBTENER, ACUSE DE RECIBO, ESTADO o uso privado
- versión: el número de versión principal del protocolo
- longitud: longitud de todo el mensaje
- dominio de interpretación (DOI): un DOI según se define en el Protocolo de Gestión de Claves y de la Asociación de Seguridad de Internet (ISAKMP).
- ID de transacción (XID): identificación de la transacción, definida como un comando, una respuesta y una confirmación opcional.
- Siguiente carga útil: tipo de la primera carga útil después del encabezado del mensaje como KINK_DONE, KINK_AP_REQ, KINK_AP_REP, KINK_KRB_ERROR, KINK_TGT_REQ, KINK_TGT_REP, KINK_ISAKMP, KINK_ENCRYPT o KINK_ERROR
- Bit ACK o ACKREQ: 1 si el respondedor requiere una confirmación explícita de que se recibió una respuesta; de lo contrario, 0.
- longitud de la suma de verificación: longitud en bytes de la suma de verificación criptográfica del mensaje
- cargas útiles: una lista de cargas útiles de tipo/longitud/valor (TLV)
- Suma de verificación: Suma de verificación con clave Kerberos sobre todo el mensaje, excluyendo el campo de suma de verificación en sí.
Cargas útiles
Las cargas útiles de KINK se definen como:
- Siguiente carga útil: tipo de la primera carga útil
- longitud: longitud de la carga útil
Se definen las siguientes cargas útiles:
- KINK_AP_REQ: una carga útil que reenvía una solicitud AP-REQ de Kerberos al respondedor.
- KINK_AP_REP: una carga útil que reenvía un AP-REP de Kerberos al iniciador.
- KINK_KRB_ERROR: una carga útil que reenvía los errores de tipo Kerberos al iniciador.
- KINK_TGT_REQ: una carga útil que proporciona un medio para obtener un TGT del par con el fin de obtener un ticket de servicio de usuario a usuario del KDC.
- KINK_TGT_REP: una carga útil que contiene el TGT solicitado en una carga útil KINK_TGT_REQ anterior de un comando GETTGT.
- KINK_ISAKMP: una carga útil para encapsular las cargas útiles del modo rápido IKE de ISAKMP (fase 2), para permitir la compatibilidad con versiones anteriores de IKE e ISAKMP si hay revisiones posteriores.
- KINK_ENCRYPT: una carga útil para encapsular otras cargas útiles KINK y se cifra utilizando la clave de sesión y el algoritmo especificado por su etype.
- KINK_ERROR: una carga útil que devuelve una condición de error.
Implementaciones
Actualmente están disponibles las siguientes implementaciones de código abierto de KINK:
- Racoon2 Archivado el 15-10-2008 en Wayback Machine del Proyecto WIDE .
Véase también
Referencias
- ↑ RFC 3129: Requisitos para la negociación de claves de Internet mediante Kerberos , Grupo de Trabajo de Ingeniería de Internet , junio de 2001, pág. 2
- ↑ RFC 3129: Requisitos para la negociación de claves de Internet mediante Kerberos , Grupo de Trabajo de Ingeniería de Internet , junio de 2001, pág. 1
- ↑ RFC 4322: Cifrado oportunista mediante el Intercambio de Claves de Internet (IKE) , Grupo de Trabajo de Ingeniería de Internet , junio de 2001, pág. 5
- IPsec
- protocolos criptográficos