Interfaz de programación de aplicaciones de Windows
La interfaz del proveedor de soporte de seguridad ( SSPI ) es un componente de la API de Windows que realiza operaciones relacionadas con la seguridad, como la autenticación .
SSPI funciona como una interfaz común para varios proveedores de soporte de seguridad (SSP): [1] Un proveedor de soporte de seguridad es una biblioteca de vínculo dinámico (DLL) que pone uno o más paquetes de seguridad a disposición de las aplicaciones.
Proveedores
Los siguientes SSP están incluidos en Windows:
- NTLMSSP (msv1_0.dll): se introdujo en Windows NT 3.51 . Proporciona autenticación de desafío/respuesta NTLM para dominios de Windows anteriores a Windows 2000 y para sistemas que no forman parte de un dominio. [2]
- Kerberos (kerberos.dll): introducido en Windows 2000 y actualizado en Windows Vista para admitir AES . [3] Realiza la autenticación para dominios de Windows en Windows 2000 y versiones posteriores. [4]
- NegotiateSSP (secur32.dll): se introdujo en Windows 2000. Proporciona una función de inicio de sesión único , a veces denominada autenticación integrada de Windows (especialmente en el contexto de IIS). [5] Antes de Windows 7 , intentaba usar Kerberos antes de volver a NTLM. En Windows 7 y versiones posteriores, se introdujo NEGOExts, que negocia el uso de SSP personalizados instalados que son compatibles con el cliente y el servidor para la autenticación.
- Canal seguro (schannel.dll): introducido en Windows 2000 y actualizado en Windows Vista para admitir cifrado AES y ECC más fuertes [6] Este proveedor utiliza registros SSL/TLS para cifrar cargas de datos.
- TLS/SSL – Criptografía de clave pública (SSP) que proporciona cifrado y comunicación segura para autenticar clientes y servidores a través de Internet. [7] Actualizado en Windows 7 para admitir TLS 1.2.
- Digest SSP (wdigest.dll): se introdujo en Windows XP . Proporciona autenticación HTTP y SASL basada en desafío/respuesta entre sistemas Windows y otros sistemas donde Kerberos no está disponible. [8]
- CredSSP (credssp.dll): se introdujo en Windows Vista y está disponible en Windows XP SP3. Proporciona inicio de sesión único y autenticación a nivel de red para servicios de escritorio remoto . [9]
- Autenticación de contraseña distribuida (DPA, msapsspc.dll): se introdujo en Windows 2000. Proporciona autenticación de Internet mediante certificados digitales . [10]
- Criptografía de clave pública de usuario a usuario (PKU2U, pku2u.dll): se introdujo en Windows 7. Proporciona autenticación de igual a igual mediante certificados digitales entre sistemas que no forman parte de un dominio.
Comparación
SSPI es una variante propietaria de la Interfaz de Programación de Aplicaciones de Servicios de Seguridad Genéricos (GSSAPI) con extensiones y tipos de datos muy específicos de Windows. Se incluyó en Windows NT 3.51 y Windows 95 con NTLMSSP . Para Windows 2000, se agregó una implementación de Kerberos 5, que utiliza formatos de token que cumplen con el estándar de protocolo oficial RFC 1964 (el mecanismo GSSAPI de Kerberos 5) y proporciona interoperabilidad a nivel de cable con implementaciones de Kerberos 5 de otros proveedores.
Los tokens generados y aceptados por SSPI son en su mayoría compatibles con GSS-API, por lo que un cliente SSPI en Windows puede autenticarse con un servidor GSS-API en Unix dependiendo de las circunstancias específicas.
Una deficiencia importante de SSPI es su falta de enlaces de canales , lo que hace imposible cierta interoperabilidad con GSSAPI.
Otra diferencia fundamental entre la GSSAPI definida por la IETF y la SSPI de Microsoft es el concepto de " suplantación ". En este modelo, un servidor puede funcionar con todos los privilegios del cliente autenticado, de modo que el sistema operativo realice todas las comprobaciones de control de acceso , por ejemplo, al abrir nuevos archivos. El hecho de que se trate de menos o más privilegios que los de la cuenta de servicio original depende completamente del cliente. En el modelo tradicional (GSSAPI), cuando un servidor se ejecuta bajo una cuenta de servicio, no puede elevar sus privilegios y tiene que realizar el control de acceso de una manera específica para el cliente y la aplicación. Las obvias implicaciones de seguridad negativas del concepto de suplantación se evitan en Windows Vista al restringir la suplantación a cuentas de servicio seleccionadas. [11] La suplantación se puede implementar en un modelo Unix/Linux utilizando las seteuid
llamadas al sistema o relacionadas. Si bien esto significa que un proceso sin privilegios no puede elevar sus privilegios, también significa que para aprovechar la suplantación, el proceso debe ejecutarse en el contexto de la cuenta de usuario raíz .
Referencias
- ^ Paquetes SSP proporcionados por Microsoft
- ^ Autenticación de usuarios - Seguridad (Documentación del kit de recursos de Windows 2000) : MSDN
- ^ Mejoras de Kerberos en Windows Vista: MSDN
- ^ Autenticación Kerberos de Windows 2000
- ^ "Autenticación de Windows". Documentación de Windows Server 2008 R2 y Windows Server 2008 . Microsoft . Consultado el 5 de agosto de 2020 a través de Microsoft Docs.
- ^ Mejoras criptográficas TLS/SSL en Windows Vista
- ^ Canal seguro: paquetes SSP proporcionados por Microsoft
- ^ Microsoft Digest SSP: Paquetes SSP proporcionados por Microsoft
- ^ Proveedor de servicios de seguridad de credenciales y SSO para inicio de sesión en servicios de terminal
- ^ Descripción técnica de DCOM: seguridad en Internet
- ^ "Windows Service Hardening: blog de AskPerf". Archivado desde el original el 2010-04-02 . Consultado el 2009-12-22 .
Enlaces externos
- Referencia SSPI en MSDN
- Información de SSPI y ejemplos de Win32
- Ejemplo de uso de SSPI para autenticación HTTP