Cryptographic Service Provider (CSP) es un módulo independiente que le permite realizar operaciones criptográficas en los sistemas operativos de Microsoft , que se controla mediante funciones CryptoAPI . En pocas palabras, es un intermediario entre el sistema operativo, que puede administrarlo utilizando las funciones estándar de CryptoAPI , y el ejecutor de las operaciones criptográficas (puede ser un programa o un complejo de hardware).
Cualquier proveedor de criptografía debe exportar un conjunto de funciones obligatorias que forman la interfaz de programación del sistema CryptoAPI , y cada una de estas funciones corresponde a alguna función de CryptoAPI . Además, el proveedor de criptografía debe proporcionar:
Las aplicaciones no funcionan directamente con el proveedor de criptografía. En su lugar, llaman a las funciones CryptoAPI de las bibliotecas Advapi32.dll y Crypt32.dll. El sistema operativo filtra estas llamadas de función y llama a las funciones de CryptoAPI apropiadas que funcionan directamente con el proveedor de cifrado.
La composición mínima de un criptoproveedor es una DLL. Esta biblioteca generalmente se almacena en la carpeta \WINDOWS\system32\. Obligatorio es el control de la integridad de esta DLL.
Además de las funciones estándar de CryptoAPI , un proveedor de criptografía suele admitir una serie de funciones propias. Si no se implementan las funciones nativas, la DLL actúa, de hecho, como una capa intermedia entre el sistema operativo y el ejecutor de las operaciones criptográficas.
Uno de los objetos principales es el contenedor de llaves . El contenedor tiene su propio nombre, es creado (o solicitado si ya ha sido creado) por la función CryptAcquireContext(...). Puede haber como máximo un par de claves de firma, un par de claves de intercambio y un par de claves simétricas en un contenedor. Si se admiten varios algoritmos de cifrado simétrico, puede haber varias claves simétricas, una clave para cada algoritmo.
Los pares de claves y las claves simétricas solo pueden residir en un contenedor. Solo la clave pública del par puede estar fuera del contenedor.
Las claves privadas de los pares de claves solo se exportan en forma cifrada. Algunos proveedores de criptografía básicamente no permiten la exportación de claves privadas, ni siquiera en forma cifrada. Al exportar claves simétricas, también deben cifrarse utilizando la clave pública del destinatario o la clave de negociación. Los objetos hash se crean para calcular funciones hash. No necesita crear un contenedor para crear objetos hash.
Tipo de proveedor de criptografía | Teclea un número | Algoritmos de intercambio de claves | Algoritmos de firma digital | Algoritmos de cifrado | algoritmos hash |
---|---|---|---|---|---|
PROV_RSA_FULL | una | RSA | RSA | RC2 , RC4 | MD5 , SHA |
PROV_RSA_SIG | 2 | No | RSA | No | MD5 , SHA |
PROV_DSS | 3 | No | DSS | No | MD5 , SHA |
PROV_FORTEZZA | cuatro | KEA | DSS | listado | SHA |
PROV_MS_EXCHANGE | 5 | RSA | RSA | EMITIR | MD5 |
PROV_SSL | 6 | RSA | RSA | Puede ser diferente | Puede ser diferente |
PROV_RSA_SCHANNEL | 12 | RSA | RSA | RC4 , DES , 3DES | MD5 , SHA |
PROV_DH_SCHANNEL | Dieciocho | Diffie-Hellman (efímero) | DSS | DES , 3DES | MD5 , SHA |
PROV_RSA_AES | 24 | RSA | RSA | RC2 , RC4 , AES | MD5 , SHA |
PROV_GOST_94_DH | 71 | GOST R 34.10-94 | GOST R 34.10-94 | GOST 28147-89 | GOST R 34.11-94 |
PROV_GOST_2001_DH | 75 | GOST R 34.10-2001 | GOST R 34.10-2001 | GOST 28147-89 | GOST R 34.11-94 |
PROV_GOST_2012_256 | 80 | GOST R 34.10-2012 256 bits | GOST R 34.10-2012 256 bits | GOST 28147-89 , GOST 34,12-2018 | GOST R 34.11-2012 256 bits |
PROV_GOST_2012_512 | 81 | GOST R 34.10-2012 512 bits | GOST R 34.10-2012 512 bits | GOST 28147-89 , GOST 34,12-2018 | GOST R 34.11-2012 512 bits |
Todos los sistemas operativos de Microsoft, a partir de Windows 2000, tienen un proveedor criptográfico base de Microsoft integrado , que tiene un conjunto de funciones criptográficas básicas. En Microsoft Base Cryptographic Provider , las claves de cifrado están limitadas a 40 bits. Desde antes de enero de 2000 estaba prohibida la exportación de software de encriptación con claves de más de 40 bits en los Estados Unidos, solo este proveedor criptográfico era compatible con Windows 98 y versiones anteriores de Windows 2000. El proveedor criptográfico base de Microsoft es esencialmente una versión simplificada del proveedor criptográfico mejorado de Microsoft . Pero después de que se levantó la prohibición de exportación, no tenía sentido tener 2 proveedores criptográficos, por lo que los programadores de Microsoft introdujeron otro nombre: Microsoft Strong Cryptographic Provider , que no es diferente de Microsoft Enhanced Cryptographic Provider. Este proveedor de cifrado es el proveedor de cifrado predeterminado de tipo PROV_RSA_FULL en Windows 2000, Windows XP, Windows 2003.
Todos los proveedores criptográficos de Microsoft se pueden descargar desde el sitio web de Microsoft.
proveedor de cripto | Nombre del proveedor de criptografía | Tipo de | Comentario |
---|---|---|---|
Proveedor criptográfico base de Microsoft | MS_DEF_PROV | PROV_RSA_FULL | Tiene una amplia gama de funciones criptográficas básicas. La longitud de las claves de cifrado no supera los 40 bits. |
Proveedor criptográfico fuerte de Microsoft | MS_STRONG_PROV | PROV_RSA_FULL | Se diferencia del proveedor criptográfico básico de Microsoft en la compatibilidad con longitudes de clave grandes. |
Proveedor criptográfico mejorado de Microsoft | MS_MEJORADO_PROV | PROV_RSA_FULL | No es diferente de Microsoft Strong Cryptographic Provider. Es el proveedor de cifrado predeterminado. |
Proveedor criptográfico AES de Microsoft | MS_ENH_RSA_AES_PROV | PROV_RSA_AES | = Proveedor criptográfico mejorado de Microsoft con compatibilidad con AES |
Proveedor criptográfico de Microsoft DSS | MS_DEF_DSS_PROV | PROV_DSS | Hashing, firma, verificación de firma con soporte de algoritmo DSS . |
Microsoft Base DSS y Diffie-Hellman Cryptographic Provider | MS_DEF_DSS_DH_PROV | PROV_DSS_DH | Hashing, firma DSS , generación e intercambio de claves Diffie-Hellman. Admite la generación de claves para los protocolos SSL3 y TLS1. |
Microsoft Enhanced DSS y Diffie-Hellman Cryptographic Provider | MS_ENH_DSS_DH_PROV | PROV_DSS_DH | Igual que Microsoft Base DSS y Diffie-Hellman Cryptographic Provider con soporte para longitudes de clave grandes. |
Microsoft DSS y Diffie-Hellman/Schannel Cryptographic Provider | MS_DEF_DH_SCHANNEL_PROV | PROV_DH_SCHANNEL | Hashing, firma DSS, generación e intercambio de claves Diffie-Hellman. Admite la generación de claves para los protocolos SSL3 y TLS1. |
Proveedor criptográfico de Microsoft RSA/Schannel | MS_DEF_RSA_SCHANNEL_PROV | PROV_RSA_SCHANNEL | Hashing, firma, verificación de firma. Se utiliza para la autenticación en los protocolos SSL 3.0 y TLS 1.0. |
Proveedor criptográfico de firma RSA de Microsoft | MS_DEF_RSA_SIG_PROV | PROV_RSA_SIG | La funcionalidad mínima requerida para la firma electrónica y la verificación de firma digital. |