CSP y el proceso de criptografía
funciones cryptoAPI usan proveedores de servicios criptográficos (CSP) para realizar el cifrado y el descifrado, y proporcionar almacenamiento y seguridad de claves. Estos CSP son módulos independientes. Idealmente, los CSP se escriben para ser independientes de una aplicación determinada, de modo que cualquier aplicación se ejecute con una variedad de CSP. Sin embargo, en realidad, algunas aplicaciones tienen requisitos específicos que requieren un CSP personalizado. Esto se compara con el modelo deGDI de Windows. Los CSP son análogos a los controladores de dispositivos gráficos.
La calidad de la protección de las claves dentro del sistema es un parámetro de diseño del CSP y no del sistema en su conjunto. Esto permite que una aplicación se ejecute en una variedad de contextos de seguridad sin modificaciones.
Las aplicaciones de acceso tienen que restringir cuidadosamente los elementos internos criptográficos. Esto facilita el desarrollo seguro y portátil de aplicaciones.
Se aplican las tres reglas de diseño siguientes:
- Las aplicaciones no pueden acceder directamente al material de creación de claves. Dado que todo el material de clave se genera dentro del CSP y lo usa la aplicación a través de identificadores opacos, no existe ningún riesgo de una aplicación o de sus dll asociadas, ya sea divulgando material de clave o eligiendo material de clave de orígenes aleatorios deficientes.
- Las aplicaciones no pueden especificar los detalles de las operaciones criptográficas. La interfaz de CSP permite a una aplicación elegir un algoritmo de cifrado o firma, pero la implementación de cada operación criptográfica la realiza el CSP.
- Las aplicaciones no controlan las credenciales de de usuario u otros datos de autenticación de usuario. El CSP realiza la autenticación de usuario; por lo tanto, los CSP futuros con funcionalidades de autenticación avanzadas, como las entradas biométricas, funcionarán sin necesidad de cambiar el modelo de autenticación de aplicaciones.
Como mínimo, un CSP consta de una biblioteca de vínculos dinámicos (DLL) y un archivo de firma de . El archivo de firma es necesario para asegurarse de que el CryptoAPI reconoce el CSP. CryptoAPI valida esta firma periódicamente para asegurarse de que se detecte cualquier alteración con el CSP.
Algunos CSP pueden implementar una fracción de su funcionalidad en un servicio separado por direcciones llamado a través de RPC local o en hardware llamado a través de un controlador de dispositivo del sistema. Aislar el estado de clave global y las operaciones criptográficas centrales en un servicio separado por direcciones o en hardware mantiene las claves y las operaciones a salvo de la manipulación dentro de un espacio de datos de la aplicación.
No es así para que las aplicaciones aprovechen los atributos específicos de un CSP específico. Por ejemplo, el proveedor criptográfico base de Microsoft (proporcionado con CryptoAPI) admite claves de sesión de 40 bits y claves públicas de 512 bits. Las aplicaciones que manipulan estas claves deben evitar suposiciones sobre la cantidad de memoria necesaria para almacenar estas claves, ya que es probable que se produzca un error en la aplicación si se usa otro CSP. Las aplicaciones bien escritas deben funcionar con una variedad de CSP.
Para obtener más información sobre los tipos de proveedor de servicios criptográficos y los CSP predefinidos que se pueden usar con CryptoAPI, consulte Tipos de proveedor criptográfico y proveedores de servicios criptográficos de Microsoft.