La interfaz del programa de aplicación del servicio de seguridad genérico ( GSSAPI , también GSS-API ) es una interfaz de programación de aplicaciones para que los programas accedan a los servicios de seguridad .
GSSAPI es un estándar IETF que aborda el problema de muchos servicios de seguridad similares pero incompatibles que se utilizan en la actualidad.
Operación
El GSSAPI, por sí solo, no proporciona ninguna seguridad. En cambio, los proveedores de servicios de seguridad proporcionan implementaciones de GSSAPI , generalmente en forma de bibliotecas instaladas con su software de seguridad. Estas bibliotecas presentan una interfaz compatible con GSSAPI para los escritores de aplicaciones que pueden escribir su aplicación para usar solo la GSSAPI independiente del proveedor . Si alguna vez es necesario reemplazar la implementación de seguridad, no es necesario reescribir la aplicación.
La característica definitiva de las aplicaciones GSSAPI es el intercambio de mensajes opacos ( tokens ) que ocultan los detalles de implementación de la aplicación de nivel superior. Los lados del cliente y del servidor de la aplicación están escritos para transmitir los tokens que les otorgan sus respectivas implementaciones de GSSAPI. Los tokens GSSAPI generalmente pueden viajar a través de una red insegura ya que los mecanismos proporcionan seguridad inherente a los mensajes. Después del intercambio de algunos tokens, las implementaciones de GSSAPI en ambos extremos informan a su aplicación local que se establece un contexto de seguridad .
Una vez que se establece un contexto de seguridad, GSSAPI puede envolver (encriptar) los mensajes confidenciales de la aplicación para una comunicación segura entre el cliente y el servidor. Las protecciones típicas garantizadas por el envoltorio GSSAPI incluyen confidencialidad (secreto) e integridad (autenticidad). La GSSAPI también puede proporcionar garantías locales sobre la identidad del usuario remoto o del host remoto.
La GSSAPI describe alrededor de 45 llamadas a procedimientos. Los más importantes incluyen:
- GSS_Acquire_cred
- Obtiene la prueba de identidad del usuario, a menudo una clave criptográfica secreta
- GSS_Import_name
- Convierte un nombre de usuario o nombre de host en un formulario que identifica una entidad de seguridad
- GSS_Init_sec_context
- Genera un token de cliente para enviar al servidor, generalmente un desafío
- GSS_Accept_sec_context
- Procesa un token de GSS_Init_sec_context y puede generar un token de respuesta para devolver
- GSS_Wrap
- Convierte los datos de la aplicación en un token de mensaje seguro (generalmente encriptado)
- GSS_Unwrap
- Convierte un token de mensaje seguro en datos de la aplicación
GSSAPI está estandarizado para el lenguaje C (RFC 2744). Java implementa GSSAPI [1] como JGSS, [2] la interfaz de programa de aplicación de servicios de seguridad genéricos de Java. [3]
Algunas limitaciones de GSSAPI son:
- estandarizar solo la autenticación , en lugar de la autorización también;
- asumiendo una arquitectura cliente-servidor .
Anticipándose a nuevos mecanismos de seguridad, GSSAPI incluye un pseudo mecanismo de negociación , SPNEGO , que puede descubrir y utilizar nuevos mecanismos que no estaban presentes cuando se creó la aplicación original.
Relación con Kerberos
La implementación del mecanismo GSSAPI dominante en uso es Kerberos . A diferencia de GSSAPI, la API de Kerberos no se ha estandarizado y varias implementaciones existentes utilizan API incompatibles. GSSAPI permite que las implementaciones de Kerberos sean compatibles con API.
Tecnologías relacionadas
Conceptos clave
- Nombre
- Una cadena binaria que etiqueta una entidad de seguridad (es decir, un usuario o un programa de servicio); consulte el control de acceso y la identidad . Por ejemplo, Kerberos usa nombres como usuario @ REALM para usuarios y servicio / nombre de host @ REALM para programas.
- Cartas credenciales
- Información que acredite una identidad; utilizado por una entidad para actuar como el principal designado. Las credenciales generalmente involucran una clave criptográfica secreta.
- Contexto
- El estado de un extremo del protocolo autenticado / autenticado . Puede proporcionar servicios de protección de mensajes, que se pueden utilizar para componer un canal seguro .
- Tokens
- Mensajes opacos intercambiados como parte del protocolo de autenticación inicial (tokens a nivel de contexto) o como parte de una comunicación protegida (tokens por mensaje)
- Mecanismo
- Una implementación GSSAPI subyacente que proporciona nombres, tokens y credenciales reales. Los mecanismos conocidos incluyen Kerberos , NTLM , Entorno de computación distribuida (DCE), SESAME, SPKM , LIPKEY.
- Iniciador / aceptor
- El par que envía el primer token es el iniciador; el otro es el aceptador. Generalmente, el programa cliente es el iniciador mientras que el servidor es el aceptador.
Historia
- Julio de 1991: El Grupo de Trabajo de Tecnología de Autenticación Común (CAT) del IETF se reúne en Atlanta, dirigido por John Linn
- Septiembre de 1993: GSSAPI versión 1 (RFC 1508, RFC 1509)
- Mayo de 1995: lanzamiento de Windows NT 3.51, incluye SSPI
- Junio de 1996: mecanismo Kerberos para GSSAPI (RFC 1964)
- Enero de 1997: GSSAPI versión 2 (RFC 2078)
- Octubre de 1997: SASL publicado, incluye mecanismo GSSAPI (RFC 2222)
- Enero de 2000: GSSAPI versión 2 actualización 1 (RFC 2743, RFC 2744)
- Agosto de 2004: El grupo de trabajo KITTEN se reúne para continuar con las actividades de CAT.
- Mayo de 2006: uso de Secure Shell de GSSAPI estandarizado (RFC 4462)
Ver también
Referencias
- ^ "JSR-000072 Especificación de API de servicios de seguridad genéricos 0.1" . 2001-06-15 . Consultado el 7 de octubre de 2015 .
- ^ Schönefeld, Marc (2010). Refactorización de antipatrones de seguridad en componentes distribuidos de Java . Schriften aus der Fakultät Wirtschaftsinformatik und Angewandte Informatik der Otto-Friedrich-Universität Bamberg. 5 . Prensa de la Universidad de Bamberg. pag. 179. ISBN 9783923507689. Consultado el 7 de octubre de 2015 .
JGSS es la implementación JAVA de GSSAPI.
- ^ Fisher, Marina; Sharma, Sonu; Lai, Ray; Moroney, Laurence (2006). Interoperabilidad Java EE y .NET: Estrategias, patrones y mejores prácticas de integración . Prentice Hall Professional. ISBN 9780132715706. Consultado el 7 de octubre de 2015 .
API de Java Generic Security Services Application Program Interface (JGSS) para un acceso uniforme a los servicios de seguridad sobre una variedad de mecanismos de seguridad subyacentes, incluido Kerberos, que son componentes básicos para el inicio de sesión único y el cifrado de datos.
enlaces externos
- RFC 2743 API del servicio de seguridad genérico, versión 2, actualización 1
- RFC 2744 La API del servicio de seguridad genérico, versión 2: C-Bindings
- RFC 1964 El mecanismo Kerberos 5 GSS-API
- RFC 4121 El mecanismo Kerberos 5 GSS-API: Versión 2
- RFC 4178 El mecanismo de negociación GSS-API simple y protegido (SPNEGO)
- RFC 2025 El mecanismo simple de clave pública GSS-API (SPKM)
- RFC 2847 LIPKEY: un mecanismo de clave pública de baja infraestructura que utiliza SPKM
- "Tecnología de autenticación común de próxima generación (gatito)" . Grupo de trabajo de ingeniería de Internet . Septiembre 2013.
- Sun Microsystems (2002). "Guía de programación GSS-API" . Oracle Corporation .