Este apartado describe el desarrollo y la naturaleza de la API RPCSEC_GSS.
AUTH_SYS fue una de las primeras versiones de seguridad admitidas por RPC (conocida también como AUTH_UNIX); proporcionaba una credencial de tipo UNIX, mediante los ID de usuario y de grupo para identificar al remitente y al destinatario de un mensaje. AUTH_SYS es fácil de implementar; sin embargo, también es fácil de burlar, ya que no proporciona una verdadera autenticación (es decir, un servidor no puede verificar por ningún medio que un cliente es quien afirma ser). Por tanto, bajo AUTH_SYS es relativamente sencillo falsificar una solicitud de red.
Una versión de seguridad posterior, AUTH_DES, basada en la autenticación de clave pública, apareció después de AUTH_SYS; utiliza un intercambio de claves Diffie-Hellman para producir una clave común entre la clave privada de un cliente y la clave pública de un servidor. A continuación, se utiliza la clave común para encriptar una clave de sesión DES, que desencripta el servidor para establecer una sesión.
Aunque AUTH_DES representó un avance considerable sobre AUTH_SYS, tiene algunas limitaciones para su uso generalizado. La objeción principal para muchas personas es que el tamaño de la clave es demasiado pequeño, según los estándares de encriptación actuales.
Finalmente, se introdujo otra versión de seguridad de RPC. AUTH_KERB, basado en Kerberos V4, proporciona una seguridad superior a AUTH_DES o AUTH_SYS. Sin embargo, también se puede violar.
Para más información sobre estas versiones de seguridad, véase la ONC+ Developer's Guide.
Para mejorar la seguridad, se ha agregado una nueva capa de seguridad, la API de estándar de seguridad general o GSS-API. La estructura de GSS-API ofrece dos servicios de seguridad adicionales además de la autenticación:
Integridad. Con el servicio de integridad, GSS-API utiliza el mecanismo subyacente para autenticar los mensajes que intercambian los programas. Las sumas de comprobación criptográficas establecen:
La identidad del emisor de datos al destinatario
La identidad del destinatario al emisor (si se solicita la autenticación mutua)
La autenticidad de los datos transmitidos
Privacidad. El servicio de privacidad incluye también el de integridad. Además, los datos transmitidos también están encriptados para protegerlos contra cualquier intruso.
Debido a las restricciones de exportación de los EE.UU., puede que el servicio de privacidad no esté disponible para todos los usuarios de SEAM.
Actualmente, la GSS-API no está expuesta. Sin embargo, algunas de sus funciones son "visibles" mediante las funciones de RPCSEC_GSS (pueden manipularse de forma "opaca"). El programador no debe preocuparse directamente de sus valores.
La versión de seguridad RPCSEC_GSS permite a las aplicaciones RPC de ONC que aprovechen las funciones de GSS-API. RPCSEC_GSS está situada "sobre" la capa de GSS-API de la forma siguiente:
Mediante la interfaz de programación para RPCSEC_GSS, las aplicaciones RPC de ONC pueden especificar:
Un paradigma de seguridad. Cada clase de mecanismo de seguridad ofrece un tipo diferente de protección de los datos, así como uno o varios niveles de protección de éstos. En este caso, cualquier mecanismo de seguridad admitido por GSS-API (Kerberos V5, clave pública RSA, etcétera).
Privacidad o integridad (o ninguno). El predeterminado es la integridad. El servicio es independiente del mecanismo.
Calidad de protección. QOP especifica qué tipo de algoritmo criptográfico se utilizará para implementar los servicios de privacidad o integridad. Cada mecanismo de seguridad puede tener asociado con él uno o varios parámetros QOP.
Las aplicaciones pueden obtener listas de QOP y los mecanismos válidos mediante funciones que proporciona RPCSEC_GSS (Véase "Funciones varias"). Los desarrolladores deben evitar fijar los mecanismos y los parámetros QOP en sus aplicaciones, para así poder utilizar mecanismos o QOP diferentes sin tener que modificarlas.
Históricamente, "versión de seguridad" y "versión de autenticación" han significado lo mismo. Con la introducción de RPCSEC_GSS, ahora "versión" tiene un significado algo distinto. Una versión puede incluir un servicio (integridad o privacidad) junto con la autenticación, aunque actualmente RPCSEC_GSS es la única versión que lo hace.
Mediante RPCSEC_GSS, las aplicaciones RPC de ONC establecen un contexto de seguridad como un igual, intercambian datos y destruyen el contexto, al igual que harían con otras versiones. Cuando se ha establecido un contexto, la aplicación puede cambiar QOP y el servicio para cada unidad de datos enviada.
Para obtener más información sobre RPCSEC_GSS, incluidos sus tipos de datos, véase la página del comando man rpcsec_gss(3N).