La interfaz de programación de aplicaciones criptográficas específica de la plataforma Microsoft Windows (también conocida como CryptoAPI , Microsoft Cryptography API , MS-CAPI o simplemente CAPI ) es una interfaz de programación de aplicaciones incluida en los sistemas operativos Microsoft Windows que proporciona servicios para permitir a los desarrolladores proteger las aplicaciones basadas en Windows mediante criptografía . Es un conjunto de bibliotecas vinculadas dinámicamente que proporciona una capa de abstracción que aísla a los programadores del código utilizado para cifrar los datos. La Crypto API se introdujo por primera vez en Windows NT 4.0 [1] y se mejoró en versiones posteriores.
CryptoAPI admite tanto el algoritmo de clave simétrica como la criptografía de clave pública , aunque no admite claves simétricas persistentes. Incluye funcionalidad para cifrar y descifrar datos y para la autenticación mediante certificados digitales . También incluye una función de generación de números pseudoaleatorios criptográficamente segura, CryptGenRandom . [ cita requerida ]
CryptoAPI funciona con varios proveedores de servicios criptográficos (CSP ) instalados en la máquina. Los CSP son los módulos que realizan el trabajo real de codificación y decodificación de datos mediante la ejecución de funciones criptográficas. Los proveedores de HSM pueden proporcionar un CSP que funcione con su hardware.
Windows Vista incluye una actualización de la API criptográfica conocida como Cryptography API: Next Generation ( CNG ). Tiene una mejor factorización de API para permitir que las mismas funciones funcionen utilizando una amplia gama de algoritmos criptográficos e incluye una serie de algoritmos más nuevos que forman parte de la Suite B de la Agencia de Seguridad Nacional (NSA) . [2] También es flexible, con soporte para conectar API criptográficas personalizadas al entorno de ejecución de CNG. Sin embargo, los proveedores de almacenamiento de claves de CNG aún no admiten claves simétricas. [3] CNG funciona tanto en modo de usuario como de kernel , y también admite todos los algoritmos de CryptoAPI. [4] El proveedor de Microsoft que implementa CNG está alojado en Bcrypt.dll.
CNG también admite criptografía de curva elíptica que, debido a que utiliza claves más cortas para el mismo nivel esperado de seguridad , es más eficiente que RSA. [5] La API de CNG se integra con el subsistema de tarjeta inteligente al incluir un módulo de Proveedor de servicios criptográficos de tarjeta inteligente base (Base Smart Card Cryptographic Service Provider, CSP base) que encapsula la API de tarjeta inteligente. Los fabricantes de tarjetas inteligentes solo tienen que hacer que sus dispositivos sean compatibles con esto, en lugar de proporcionar una solución desde cero.
CNG también agrega soporte para Dual_EC_DRBG , [6] un generador de números pseudoaleatorios definido en NIST SP 800-90A que podría exponer al usuario a escuchas por parte de la Agencia de Seguridad Nacional , ya que contiene una puerta trasera cleptográfica , a menos que el desarrollador recuerde generar nuevos puntos base con un generador de números pseudoaleatorios criptográficamente seguro diferente o un generador de números verdaderamente aleatorios y luego publique la semilla generada para eliminar la puerta trasera de la NSA. También es muy lento. [7] Solo se usa cuando se lo solicita explícitamente.
CNG también reemplaza el PRNG predeterminado con CTR_DRBG usando AES como cifrado de bloque, porque el RNG anterior que está definido en el ahora reemplazado FIPS 186-2 se basa en DES o SHA-1 , ambos han sido rotos. [8] CTR_DRBG es uno de los dos algoritmos en NIST SP 800-90 avalados por Schneier , el otro es Hash_DRBG. [7]