Características de CNG
El CNG tiene las siguientes características.
- Agilidad criptográfica
- Certificación y cumplimiento
- Compatibilidad con Suite B
- Compatibilidad heredada
- Compatibilidad con el modo kernel
- Auditoría
- Generadores de números aleatorios reemplazables
- Seguridad para subprocesos
- Modo de operación
Agilidad criptográfica
Una de las principales propuestas de valor de CNG es la agilidad criptográfica, a veces denominada agnosticismo criptográfico. Sin embargo, para hacer valiosa esta capacidad fue necesario convertir a GNC la implementación de protocolos como el protocolo de capa de sockets seguros (SSL) o seguridad de la capa de transporte (TLS), CMS (S/MIME), IPsec, Kerberos, etc. En el nivel de CNG, era necesario proporcionar sustitución y detectabilidad para todos los tipos de algoritmo (simétricos, asimétricos, funciones hash), generación de números aleatorios y otras funciones de utilidad. Los cambios en el nivel de protocolo son más significativos porque, en muchos casos, las API de protocolo necesitaban agregar selección de algoritmos y otras opciones de flexibilidad que no existían anteriormente.
CNG está disponible primero en Windows Vista y se coloca para reemplazar los usos existentes de CryptoAPI en toda la pila de software de Microsoft. Los desarrolladores de terceros encontrarán muchas características nuevas en CNG, entre las que se incluyen:
- Un nuevo sistema de configuración criptográfica que admite una mejor agilidad criptográfica.
- Abstracción más detallada para el almacenamiento de claves (y separación del almacenamiento de operaciones de algoritmo).
- Aislamiento de procesos para operaciones con claves a largo plazo.
- Generadores de números aleatorios reemplazables
- Alivio de las restricciones a la firma de exportaciones.
- Seguridad de subprocesos en toda la pila.
- API criptográfica en modo kernel.
Además, CNG incluye compatibilidad con todos los algoritmos de Suite B necesarios, incluida la criptografía de curva elíptica (ECC). Las aplicaciones CryptoAPI existentes seguirán funcionando a medida que CNG esté disponible.
Certificación y cumplimiento
CNG se valida con los estándares federales de procesamiento de información (FIPS) 140-2 y forma parte de la certificación Target of Evaluation for the Windows Common Criteria. CNG se diseñó para poder utilizarse como componente en un sistema validado de nivel FIPS 2.
CNG cumple los requisitos de Common Criteria almacenando y utilizando claves de larga duración en un proceso seguro.
Compatibilidad con Suite B
Una característica importante de CNG es su compatibilidad con los algoritmos de Suite B. En febrero de 2005, la Agencia de Seguridad Nacional (NSA) de Estados Unidos anunció un conjunto coordinado de funciones de cifrado simétrico, acuerdo secreto asimétrico (también conocido como intercambio de claves), firma digital y hash para su futuro uso por parte del gobierno estadounidense denominado Suite B. La NSA ha anunciado que las implementaciones certificadas de Suite B pueden utilizarse y se utilizarán para la protección de información designada como información de alto secreto, secreto y privada que, en el pasado, se describía como Confidencial pero sin clasificar. Debido a esto, el soporte técnico de Suite B es muy importante para los proveedores de software de aplicaciones e integradores de sistemas, así como para Microsoft.
Todos los algoritmos de Suite B se conocen públicamente. Se han desarrollado fuera del ámbito del secreto gubernamental históricamente asociado con el desarrollo de algoritmos criptográficos. En este mismo plazo, algunos países y regiones europeos también han propuesto los mismos requisitos de Suite B para proteger su información.
La criptografía de Suite B recomienda el uso de la curva elíptica Diffie-Hellman (ECDH) en muchos protocolos existentes, como el Intercambio de claves de Internet (IKE, que se usa principalmente en IPsec), la seguridad de la capa de transporte (TLS) y MIME seguro (S/MIME).
CNG incluye compatibilidad con Suite B que se extiende a todos los algoritmos necesarios: AES (todos los tamaños de clave), la familia SHA-2 (SHA-256, SHA-384 y SHA-512) de algoritmos hash, ECDH y curva elíptica DSA (ECDSA) sobre las curvas de números primos estándar NIST P-256, P-384 y P-521. Las curvas binarias, las curvas Koblitz, las curvas de números primos personalizadas y la curva elíptica Menezes-Qu-Vanstone (ECMQV) no son compatibles con los proveedores de algoritmos de Microsoft incluidos en Windows Vista.
Compatibilidad heredada
CNG proporciona compatibilidad con el conjunto actual de algoritmos en CryptoAPI 1.0. Todos los algoritmos que se admiten actualmente en CryptoAPI 1.0 seguirán siendo compatibles con CNG.
Compatibilidad con el modo kernel
CNG admite criptografía en modo kernel. Las mismas API se usan en modo kernel y usuario para admitir completamente las características de criptografía. Tanto SSL/TLS como IPsec funcionan en modo kernel además de los procesos de arranque que usarán CNG. No se puede llamar a todas las funciones de CNG desde el modo kernel. El tema de referencia de las funciones a las que no se puede llamar desde el modo kernel indicará explícitamente que no se puede llamar a la función desde el modo kernel. De lo contrario, se puede llamar a todas las funciones de CNG desde el modo kernel si el llamador opera en PASSIVE_LEVEL IRQL. Además, se puede llamar a algunas funciones de CNG en modo kernel en DISPATCH_LEVEL IRQL, en función de las funcionalidades del proveedor.
La interfaz del proveedor de compatibilidad con la seguridad del kernel de Microsoft (Ksecdd.sys) es un módulo criptográfico basado en software y de uso general que reside en el nivel de modo kernel de Windows. Ksecdd.sys se ejecuta como controlador de exportación en modo kernel y proporciona servicios criptográficos a través de sus interfaces documentadas a los componentes del kernel. El único algoritmo de proveedor de Microsoft integrado que no es compatible con Ksecdd.sys es DSA.
Windows Server 2008 y Windows Vista: CNG no admite algoritmos y proveedores conectables en modo kernel. Los únicos algoritmos criptográficos admitidos disponibles en modo kernel son las implementaciones proporcionadas por Microsoft a través de las API de CNG del modo kernel.
Auditoría
Para cumplir algunos de los requisitos de Common Criteria además de proporcionar seguridad completa, muchas acciones que se producen en la capa de CNG se auditan en el proveedor de almacenamiento de claves de software (KSP) de Microsoft. Microsoft KSP cumple las instrucciones siguientes para crear registros de auditoría en el registro de seguridad:
- Se deben auditar los errores de generación de claves y pares de claves, incluidos los errores de prueba automática.
- Se debe auditar la importación y exportación de claves.
- Se deben auditar los errores de destrucción de claves.
- Las claves persistentes deben auditarse cuando se escriben y se leen de archivos.
- Los errores de comprobación de coherencia en pares deben auditarse.
- Los errores de validación de claves secretas, si los hay, deben auditarse, por ejemplo, comprobaciones de paridad en claves 3DES.
- Se deben auditar los errores de cifrado, descifrado, hash, firma, comprobación, intercambio de claves y generación de números aleatorios.
- Las pruebas automáticas criptográficas deben auditarse.
En general, si una clave no tiene un nombre, es una clave efímera. Una clave efímera no persiste y Microsoft KSP no genera registros de auditoría para claves efímeras. Microsoft KSP genera registros de auditoría en modo de usuario solo en el proceso LSA. El CNG del modo kernel no genera ningún registro de auditoría. Los administradores deben configurar la directiva de auditoría para obtener todos los registros de auditoría de KSP del registro de seguridad. Un administrador debe ejecutar la siguiente línea de comandos para configurar auditorías adicionales generadas por KSP:
auditpol /set /subcategory:"other system events" /success:enable /failure:enable
Generadores de números aleatorios reemplazables
Otra mejora que proporciona CNG es la capacidad de reemplazar el generador de números aleatorios predeterminado (RNG). En CryptoAPI, es posible proporcionar un RNG alternativo como parte de un proveedor de servicios criptográficos (CSP), pero no es posible redirigir los CSP de Microsoft Base para que usen otro RNG. CNG permite especificar explícitamente un RNG determinado que se usará dentro de llamadas concretas.
Seguridad para subprocesos
Las funciones que modifican la misma área de memoria al mismo tiempo (secciones críticas) cuando se llama desde subprocesos independientes no son seguras para subprocesos.
Modo de operación
CNG admite cinco modos de operaciones que se pueden usar con cifrados de bloques simétricos a través de las API de cifrado. Estos modos y su compatibilidad se enumeran en la tabla siguiente. El modo de operación se puede cambiar estableciendo la propiedad BCRYPT_CHAINING_MODE para el proveedor de algoritmos mediante la función BCryptSetProperty.
Modo de operación | Valor de BCRYPT_CHAINING_MODE | Algoritmos | Estándar |
---|---|---|---|
ECB (libro de códigos electrónico) | BCRYPT_CHAIN_MODE_ECB | Cifrados de bloques simétricos | SP800-38A |
CBC (Encadenamiento de bloques de cifrado) | BCRYPT_CHAIN_MODE_CBC | Cifrados de bloques simétricos | SP800-38A |
CFB (Comentarios de cifrado) | BCRYPT_CHAIN_MODE_CFB | Cifrados de bloques simétricos | SP800-38A |
CCM (Contador con CBC) | BCRYPT_CHAIN_MODE_CCM | AES | SP800-38C |
GCM (Modo Galois/Contador) | BCRYPT_CHAIN_MODE_GCM | AES | SP800-38D |
Nota:
Solo los modos de operación ECB, CBC y CFB se definen en Windows Vista. GCM y CCM requieren Windows Vista con Service Pack 1 (SP1) o Windows Server 2008.