API de criptografía: Próxima generación

Propósito

Cryptography API: Next Generation (CNG) es el reemplazo a largo plazo de CryptoAPI. CNG está diseñado para ser extensible en múltiples niveles y su comportamiento es independiente de la criptografía.

Público para desarrolladores

CNG está diseñado para su uso por parte de desarrolladores de aplicaciones que permitirán a los usuarios crear e intercambiar documentos y otros datos en un entorno seguro, especialmente a través de medios no seguros, como Internet. Los desarrolladores deben estar familiarizados con los lenguajes de programación de C y C++ y el entorno de programación basado en Windows. Aunque no es necesario, se recomienda comprender la criptografía o los temas relacionados con la seguridad.

Si va a desarrollar un proveedor de algoritmos criptográficos de CNG o un proveedor de almacenamiento de claves, debe descargar el kit de desarrollo de proveedores criptográficos de de Microsoft.

Requisitos en tiempo de ejecución

CNG es compatible a partir de Windows Server 2008 y Windows Vista. Para obtener información sobre los requisitos en tiempo de ejecución de un elemento de programación determinado, vea la sección Requisitos de la página de referencia de ese elemento.

En esta sección

En los temas siguientes se proporciona información sobre CNG y cómo usarlo en las aplicaciones:

Tema Descripción
Acerca de CNG Describe las características de CNG, los primitivos criptográficos y el almacenamiento de claves, la recuperación, la importación y la exportación.
Uso de CNG Explica cómo usar las características de configuración de criptografía de CNG y la programación típica de CNG.
Referencia de CNG Descripciones detalladas de los elementos de programación de CNG. Estas páginas incluyen descripciones de referencia de la API para trabajar con CNG.

Cuándo usar CNG

Use CNG cuando necesite control directo sobre las operaciones criptográficas en Windows aplicaciones. Las instrucciones siguientes le ayudarán a elegir la API adecuada:

Scenario API recomendada
Cifrado y descifrado simétrico (AES, ChaCha20-Poly1305) CNG (BCryptEncrypt / BCryptDecrypt)
Hashing (SHA-256, SHA-384, SHA-512) CNG (BCryptCreateHash)
Operaciones asimétricas (RSA, ECDSA, ML-DSA) CNG (BCryptSignHash, BCryptVerifySignature)
Protección de los datos de usuario en reposo (por usuario o por ámbito de máquina) DPAPI (más sencillo, no se requiere administración de claves)
Protección de datos accesibles para varios usuarios o máquinas DPAPI-NG (NCryptProtectSecret)
Conexiones TLS/SSL Schannel (usa CNG internamente)
Código heredado que ya usa CryptoAPI Continúe con CryptoAPI para el mantenimiento, pero planee la migración a CNG para las nuevas características

Warning

Problemas criptográficos comunes para evitar:

  • No use el modo de cifrado de bloques ECB: filtra patrones de texto no cifrado. Utiliza CBC con un IV aleatorio o, preferiblemente, un modo autenticado como GCM.
  • No codifique las claves de cifrado de forma rígida en el código fuente. Use proveedores de almacenamiento de claves o DPAPI para la protección de claves.
  • No use MD5 o SHA-1 para fines de integridad o seguridad. Use SHA-256 o más seguro.
  • Valide siempre los códigos de retorno de las funciones de CNG. Una operación criptográfica con errores que se omite silenciosamente puede provocar que los datos se almacenen sin cifrar.

Kit de desarrollo de proveedores criptográficos

CryptoAPI