Compartir a través de


Administración de claves en Azure Cloud HSM

La administración eficaz de claves es fundamental para optimizar el rendimiento, la seguridad y la eficacia de Azure Cloud HSM. En este artículo se proporcionan procedimientos recomendados y recomendaciones para controlar los límites de almacenamiento de claves, la seguridad de ajuste de claves, los atributos clave y las estrategias de almacenamiento en caché.

Administración del límite de almacenamiento de claves

Los módulos de seguridad de hardware (HSM) tienen límites en el número máximo de tokens y claves de sesión que se pueden almacenar en un solo momento. Para más información sobre estos límites, consulte Límites de servicio de HSM en la nube de Azure.

Para evitar superar los límites de servicio de Azure Cloud HSM, considere la posibilidad de usar una o varias de las estrategias siguientes para una administración eficaz de claves:

  • Rotación de claves: gire las claves con frecuencia para asegurarse de que las claves anteriores se reemplazan y el espacio se libera para los nuevos. La rotación frecuente ayuda a mantener el HSM dentro de los límites de almacenamiento a la vez que mantiene la seguridad.
  • Jerarquía de claves: use una jerarquía de claves en la que se usan claves principales para cifrar otras claves. Esta jerarquía reduce el número de claves que deben almacenarse directamente en el HSM.
  • Uso compartido y reutilización de claves: en el caso de las aplicaciones con varias sesiones o tokens, considere la posibilidad de compartir claves o reutilizarlas para reducir el número total almacenado.
  • Eliminación de claves: después de que ya no necesite una clave (por ejemplo, después de que finalice una sesión), asegúrese de que se elimina de forma segura para liberar espacio para las nuevas claves.

Nota:

Espere 24 horas después de crear una clave para asegurarse de que se completen la sincronización y las copias de seguridad dentro de la implementación de Azure Cloud HSM.

Administración del ajuste de claves

Usted utiliza el atributo EXTRACTABLE en Azure Cloud HSM para marcar claves como extraíbles o no extraíbles. De forma predeterminada, las claves HSM se establecen como extractables. Puede exportar claves que se pueden extraer del HSM mediante el ajuste de claves, que cifra las claves. A continuación, las claves requieren desencapsular a través de la misma clave de ajuste antes de usarla.

Por el contrario, las claves no extraíbles no se pueden exportar desde Azure Cloud HSM en ninguna circunstancia. Después de establecer las claves como nonextractables, no hay forma de cambiarlas a extractables. Es crucial considerar con atención si necesita que sus claves sean extraíbles y establecer el atributo de clave en consecuencia.

Si su aplicación requiere la envoltura de claves, le recomendamos que use la envoltura de claves de confianza. Este enfoque restringe a los usuarios de HSM a encapsular y desencapsular solo las claves que un administrador designó explícitamente como de confianza:

  • EXTRACTABLE=0: Las claves creadas con el atributo EXTRACTABLE establecido en 0 no se pueden exportar, excepto como objetos enmascarados. Son ideales para las claves que nunca quiere dejar el HSM.

  • WRAP_WITH_TRUSTED=1: De forma predeterminada, las claves que se pueden extraer, creadas mediante el SDK de HSM de Azure Cloud, usan el envuelto de confianza. Sin embargo, la especificación de PKCS#11 establece WRAP_WITH_TRUSTED en CK_FALSE (0) de forma predeterminada. Sin envoltura de clave confiable, un usuario de criptografía puede exportar el material privado de una clave sin autorización alguna. Cualquier persona que tenga acceso a una aplicación cliente y use esas claves puede exportarlas en texto no cifrado.

Compatibilidad con atributos clave para proveedores de HSM en la nube de Azure

Proveedor de Azure Cloud HSM Atributos predeterminados para claves privadas y simétricas Admite EXTRACTABLE=0 Admite la configuración de WRAP_WITH_TRUSTED dentro del proveedor Valor de WRAP_WITH_TRUSTED predeterminado
azcloudhsm_util EXTRACTABLE, !WRAP_WITH_TRUSTED 1 (0 se puede establecer mediante parámetros)
PKCS#11 EXTRACTABLE, !WRAP_WITH_TRUSTED 0 (especificado en la especificación PKCS#11, pero se puede establecer 1 en en la API)
CNG/KSP EXTRACTABLE, !WRAP_WITH_TRUSTED No No 1
Motor de OpenSSL EXTRACTABLE, !WRAP_WITH_TRUSTED No No 1
JCE !EXTRACTABLE, , !PERSISTANT, !WRAP_WITH_TRUSTED No 1

Las claves que cree mediante el proveedor Cryptography API: Next Generation (CNG) siempre se establecen como EXTRACTABLE. Puede usar la CavImportKey.exe herramienta para importar claves de otras herramientas de Azure Cloud HSM en el proveedor de CNG a través de sus identificadores de clave. Esta importación crea una clave en el proveedor de almacenamiento de claves (KSP) a partir de identificadores de clave existentes.

En el caso de las entidades de certificación que usan CNG o KSP como proveedor, todas las claves generadas en el proveedor de CNG siguen marcadas como extractables. Si una clave está marcada como TRUSTED en el HSM (como una clave de cifrado generada por el usuario), puede usarse para extraer el texto en claro de la clave privada de estas claves, incluso después del WRAP_WITH_TRUSTED cambio.

En tales casos, se recomienda usar azcloudhsm_util para generar la clave si no desea que se marque como EXTRACTABLE. Se recomienda usar getAttribute para comprobar que las claves generadas tienen los atributos deseados.

Empleo de atributos clave para administrar permisos de clave

Use atributos clave para administrar funcionalidades clave como permisos. Al generar una clave, use atributos de clave para especificar permisos que permitan o restrinjan operaciones específicas para esa clave. Le recomendamos que genere claves solo con los atributos necesarios para su propósito previsto.

Por ejemplo, una clave estándar de cifrado avanzado (AES) que se usa para el cifrado no debe tener la capacidad de encapsular claves fuera del HSM. Para más información sobre los atributos del SDK de Azure Cloud HSM, consulte las guías de integración.

Optimización de la latencia mediante el almacenamiento en caché de objetos de clave

Para reducir la latencia, considere la posibilidad de almacenar en caché objetos de clave siempre que sea posible. En las búsquedas de claves, se consulta cada HSM del clúster de HSM en la nube de Azure. Esta operación es costosa y no se escala de forma eficaz. El método para las búsquedas de claves depende del proveedor:

  • Para PKCS#11, las búsquedas de claves usan la C_FindObjects API.
  • En el caso de la extensión de criptografía de Java (JCE), las búsquedas de claves usan el valor KeyStore.

Para obtener un rendimiento óptimo, le recomendamos que use comandos de búsqueda de claves (como findKey y key list) solo una vez durante el inicio de la aplicación. Almacene el objeto de clave devuelto en la memoria de la aplicación. Cuando necesite este objeto de clave más adelante, recuperelo de la memoria caché en lugar de consultarlo con cada operación. Realizar consultas para ello incurre en una sobrecarga de rendimiento significativa.