GSSAPI
# GSSAPI

GSSAPI (del inglés Generic Security Service Application Program Interface), o también GSS-API, es un API (Interfaz de Programación de Aplicación) para usar sistemas de seguridad de forma genérica. GSSAPI es un estándar de la IETF que aborda el problema que implica la existencia en la actualidad de muchos sistemas de seguridad similares pero incompatibles.

El sistema de seguridad más común que se utiliza mediante la GSS API es Kerberos.

## Cómo funciona

GSSAPI, por sí mismo, no ofrece ninguna seguridad. En lugar de eso, los fabricantes de sistemas de seguridad ofrecen implementaciones de GSSAPI en forma de bibliotecas que se distribuyen junto con su software de seguridad.

Esas bibliotecas presentan una interfaz compatible con GSSAPI a los programadores de aplicaciones que pueden escribir sus programas utilizando únicamente GSSAPI normalizado. De ese modo, si se necesita reemplazar la implementación del sistema de seguridad, no es necesario reescribir la aplicación.

La principal característica de las aplicaciones GSSAPI es el intercambio de mensajes opacos (tokens) que ocultan los detalles de implementación de los niveles superiores de la aplicación. Los lados de cliente y servidor de la aplicación se escriben para transmitir los mensajes (tokens) que reciben de sus respectivas implementaciones GSSAPI. Los mensajes GSSAPI pueden viajar a través de una red insegura como mecanismo para proporcionar seguridad a los mensajes. Tras el intercambio de algunos mensajes, las implementaciones GSSAPI en ambos extremos informan a su aplicación local que se ha establecido un contexto de seguridad.

Una vez establecido el contexto de seguridad, los mensajes de aplicación sensibles se pueden envolver (codificados) por el GSSAPI para una comunicación segura entre el cliente y el servidor. Las protecciones garantizadas por la capa GSSAPI incluyen confidencialidad (secreto) y la integridad (autenticidad). El GSSAPI también puede proporcionar, en local, garantías acerca de la identidad del usuario o el host remoto.

El GSSAPI describe cerca de 45 llamadas de procedimiento. Las más significativas son:

* GSS_Acquire_cred: Obtiene una 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 identificador de una entidad de seguridad
* GSS_Init_sec_context: Genera un mensaje que el cliente envía al servidor, por lo general un desafío
* GSS_Accept_sec_context: Procesa un mensaje de GSS_Init_sec_context y puede generar un mensaje de respuesta
* GSS_Wrap: Convierte los datos de aplicación en un mensaje seguro (normalmente cifrado)
* GSS_Unwrap: Convierte un mensaje seguro en datos de la aplicación

El GSSAPI ha sido estandarizado para el lenguaje C (RFC 2744). Java implementa GSSAPI como JGSS.

Las limitaciones más importantes de la GSSAPI son: que estandariza únicamente la autenticación y no la autorización y que asume una arquitectura cliente-servidor.

Anticipando nuevos mecanismos de seguridad, el GSSAPI incluye un mecanismo de pseudo negociación, SPNEGO, que puede descubrir y utilizar nuevos mecanismos no presentes cuando la aplicación original fue construida.

