Tipos de claves, algoritmos y operaciones

Key Vault admite dos tipos de recursos: almacenes y HSM administrados. Ambos son compatibles con varias claves de cifrado. Para ver un resumen de los tipos de clave y los tipos de protección compatibles con cada tipo de recurso, consulte Acerca de las claves.

En la siguiente tabla se muestra un resumen de los tipos de clave y los algoritmos compatibles.

Tipos de clave/tamaños/curvas Cifrar/Descifrar
(Encapsular/Desencapsular)
FIRMAR/VERIFICAR
EC-P256, EC-P256K, EC-P384, EC-P521 N/D ES256
ES256K
ES384
ES512
RSA 2K, 3K, 4K RSA1_5
RSA-OAEP
RSA-OAEP-256
PS256
PS384
PS512
RS256
RS384
RS512
RSNULL
AES 128-bit, 256-bit
(solo HSM administrado)
AES-KW
AES-GCM
AES-CBC
N/D

Algoritmos de EC

Los identificadores de algoritmo siguientes son compatibles con las claves EC-HSM

Tipos de curvas

SIGN/VERIFY

  • ES256: se crean claves y códigos hash de ECDSA para SHA-256 creados con la curva P-256. Este algoritmo se describe en RFC7518.
  • ES256K: se crean claves y códigos hash de ECDSA para SHA-256 creados con la curva P-256K. Este algoritmo está pendiente de normalización.
  • ES384: se crean claves y códigos hash de ECDSA para SHA-384 creados con la curva P-384. Este algoritmo se describe en RFC7518.
  • ES512: se crean claves y códigos hash de ECDSA para SHA-512 creados con la curva P-521. Este algoritmo se describe en RFC7518.

Algoritmos RSA

Los siguientes identificadores de algoritmo son compatibles con las claves RSA y RSA-HSM

WRAPKEY/UNWRAPKEY, ENCRYPT/DECRYPT

  • RSA1_5: cifrado de clave RSAES-PKCS1-V1_5 [RFC3447]
  • RSA-OAEP: RSAES con relleno de cifrado asimétrico óptimo (OAEP) [RFC3447], con los parámetros predeterminados especificados en RFC 3447 en la sección A.2.1. Estos parámetros predeterminados utilizan una función hash de SHA-1 y una función de generación de máscara de MGF1 con SHA-1.
  • RSA-OAEP-256: RSAES mediante un relleno óptimo de cifrado asimétrico con una función hash de SHA-256 y una función de generación de máscara de MGF1 con SHA-256

SIGN/VERIFY

  • PS256 - RSASSA-PSS con SHA-256 y MGF1 con SHA-256, como se indica en RFC7518.
  • PS384 - RSASSA-PSS con SHA-384 y MGF1 con SHA-384, como se indica en RFC7518.
  • PS512 - RSASSA-PSS con SHA-512 y MGF1 con SHA-512, como se describe en RFC7518.
  • RS256: RSASSA-PKCS-v1_5 con SHA-256. El valor de hash proporcionado por la aplicación debe calcularse mediante SHA-256 y debe tener 32 bytes de longitud.
  • RS384: RSASSA-PKCS-v1_5 con SHA-384. El valor de hash proporcionado por la aplicación debe calcularse mediante SHA-384 y debe tener 48 bytes de longitud.
  • RS512: RSASSA-PKCS-v1_5 con SHA-512. El valor de hash proporcionado por la aplicación debe calcularse mediante SHA-512 y debe tener 64 bytes de longitud.
  • RSNULL: consulte RFC2437, un caso de uso especializado para habilitar ciertos escenarios de TLS.

Nota:

DigestInfo se construye en el lado servidor para las operaciones Sign que generan los algoritmos RS256, RS384 y RS512.

Algoritmos de clave simétrica (solo HSM administrado)

  • AES-KW: encapsulado de claves AES (RFC3394).
  • AES-GCM: cifrado AES en el modo de contador Galois (NIST SP 800-38d)
  • AES-CBC: cifrado AES en el modo de encadenamiento de bloques de cifrado (NIST SP 800-38a)

Nota

Los algoritmos de las operaciones de firma y verificación deben coincidir con el tipo de clave; de lo contrario, el servicio devolverá el tamaño de la clave es un error incorrecto.

Operaciones con claves

Key Vault, incluido el HSM administrado, admite las siguientes operaciones en objetos de clave:

  • Crear: permite a un cliente crear una clave en Key Vault. El valor de la clave lo genera y almacena Key Vault y no se entrega al cliente. Las claves asimétricas pueden crearse en Key Vault.
  • Import: permite a un cliente importar una clave existente en Key Vault. Se pueden importar claves asimétricas en Key Vault mediante varios métodos de empaquetado diferentes dentro de una construcción JWK.
  • Actualizar: permite a un cliente con los permisos suficientes modificar los metadatos (atributos de la clave) asociados con una clave almacenada previamente en Key Vault.
  • Eliminar: permite a un cliente con los permisos suficientes eliminar una clave de Key Vault.
  • Enumerar: permite a un cliente enumerar todas las claves de un determinado almacén de Key Vault.
  • Enumerar versiones: permite a un cliente enumerar todas las versiones de una clave determinada en un determinado almacén de Key Vault.
  • Obtener: permite a un cliente recuperar las partes públicas de una clave determinada en un almacén de Key Vault.
  • Backup (Copia de seguridad) : exporta una clave en un formato protegido.
  • Restore (Restaurar) : importa una clave desde una copia de seguridad previa.
  • Versión: Libera de forma segura una clave para el código autorizado que se ejecuta dentro de un entorno de proceso confidencial. Requiere una atestación de que el entorno de ejecución de confianza (TEE) cumple los requisitos de la release_policy de la clave.
  • Girar: gire una clave existente generando una nueva versión de la clave (solo Key Vault).

Para más información, consulte las operaciones clave en la referencia de la API REST de Key Vault.

Una vez creada una clave en Key Vault, se pueden realizar las siguientes operaciones criptográficas con la clave:

  • Firmar y verificar: estrictamente, esta operación es "firmar un hash" o "verificar un hash", ya que Key Vault no admite la creación de un hash del contenido como parte de la creación de la firma. Las aplicaciones deben crear el hash de los datos que se van a firmar de modo local y, a continuación, solicitar que Key Vault firme el hash. La verificación de valores hash firmados se admite como una operación conveniente para aplicaciones que no pueden acceder a material de clave [público]. Para obtener el mejor rendimiento de la aplicación, las operaciones VERIFY deben realizarse localmente.
  • Cifrado/Encapsulado de clave: una clave almacenada en Key Vault se puede utilizar para proteger otra clave, normalmente una clave de cifrado de contenido (CEK) simétrica. Cuando la clave en Key Vault es asimétrica, se usa el cifrado de claves. Por ejemplo, RSA-OAEP y las operaciones WRAPKEY/UNWRAPKEY son equivalentes a ENCRYPT/DECRYPT. Cuando la clave en Key Vault es simétrica, se usa el encapsulado de clave. Por ejemplo, AES-KW. La operación WRAPKEY se admite como una operación conveniente para aplicaciones que no pueden acceder a material de clave [público]. Para obtener el mejor rendimiento de la aplicación, las operaciones WRAPKEY deben realizarse localmente.
  • Cifrar y descifrar: una clave almacenada en Key Vault puede utilizarse para cifrar o descifrar un único bloque de datos. El tamaño del bloque se determina en función del tipo de clave y del algoritmo de cifrado seleccionado. La operación de cifrado se proporciona por comodidad, para las aplicaciones que no pueden acceder a material de clave [público]. Para obtener el mejor rendimiento de la aplicación, las operaciones ENCRYPT se deben realizar localmente.

Mientras que WRAPKEY/UNWRAPKEY con claves asimétricas puede parecer superfluo (porque la operación es equivalente a ENCRYPT/DECRYPT), es importante el uso de operaciones distintas. La distinción proporciona separación semántica y de autorización de estas operaciones, así como coherencia cuando otros tipos de claves son compatibles con el servicio.

Azure Key Vault no admite operaciones de EXPORTACIÓN. Cuando se aprovisiona una clave en el sistema, no se puede extraer ni modificar el material de la clave. Sin embargo, los usuarios de Key Vault pueden requerir su clave para otros casos de uso, por ejemplo, después de que se haya eliminado. En este caso, pueden usar las operaciones de COPIA DE SEGURIDAD y RESTAURACIÓN para importar o exportar la clave en un formato protegido. Las claves creadas por la operación de COPIA DE SEGURIDAD no se pueden utilizar fuera de Key Vault. Como alternativa, la operación de IMPORTACIÓN se puede utilizar en varias instancias de Key Vault.

Los usuarios pueden restringir cualquiera de las operaciones criptográficas que admite Key Vault en una base por cada clave mediante la propiedad key_ops del objeto JWK.

Para más información acerca de los objetos JWK, consulte Clave web JSON (JWK).

Operaciones de directiva de giro de claves

El giro automático de claves de Key Vault se puede establecer configurando la directiva de giro automático de claves. Solo está disponible en el recurso de Key Vault.

  • Obtener directiva de giro: recupera la configuración de directiva de giro.
  • Establecer directiva de giro: establece la configuración de directiva de giro.

Atributos de clave

Además del material de la clave, se pueden especificar los siguientes atributos. En una solicitud JSON, la palabra clave attributes y las llaves, "{' '}", son obligatorias aunque no haya ningún atributo especificado.

  • enabled: booleano, opcional, el valor predeterminado es true. Especifica si la clave está habilitada y se puede utilizar para operaciones criptográficas. El atributo enabled se usa junto con nbf y exp. Cuando se produce una operación entre nbf y exp, solo se permitirá si enabled se establece en true. Las operaciones fuera de la ventana nbf / exp se deniegan automáticamente, excepto en decrypt, release, unwrap y verify.
  • nbf: tipo IntDate, opcional, el valor predeterminado es now (ahora). El atributo nbf (no antes) identifica la hora antes de la cual NO se debe utilizar la clave para operaciones criptográficas, excepto en decrypt, release, unwrap y verify. El procesamiento del atributo nbf requiere que la fecha y hora actual sea posterior o igual que la fecha y hora enumerada en el atributo nbf. Key Vault PUEDE proporcionar un pequeño margen, normalmente no más de unos minutos, para considerar el sesgo del reloj. Su valor debe ser un número que contenga un valor IntDate.
  • exp: tipo IntDate, opcional, el valor predeterminado es "forever" (indefinidamente). El atributo exp (tiempo de expiración) identifica la hora de expiración en la cual, o después de la cual, la clave NO se debe utilizar para la operación criptográfica, excepto en decrypt, release, unwrap y verify. El procesamiento del atributo exp requiere que la fecha y hora actual sea anterior a la fecha y hora enumerada en el atributo exp. Key Vault PUEDE proporcionar un pequeño margen, normalmente no más de unos minutos, para considerar el sesgo del reloj. Su valor debe ser un número que contenga un valor IntDate.

Existen atributos de solo lectura adicionales que se incluyen en cualquier respuesta que incluya atributos clave:

  • created: IntDate, opcional. El atributo created indica cuándo se creó esta versión de la clave. El valor es NULL para las claves creadas antes de agregar este atributo. Su valor debe ser un número que contenga un valor IntDate.
  • updated: IntDate, opcional. El atributo updated indica cuándo se modificó esta versión de la clave. El valor es NULL para las claves modificadas por última vez antes de agregar este atributo. Su valor debe ser un número que contenga un valor IntDate.
  • hsmPlatform: cadena, opcional. La plataforma HSM subyacente que protege una clave.
    • Un valor de hsmPlatform de 2 significa que la clave está protegida por la última plataforma HSM validada FIPS 140 Nivel 3.
    • Un valor hsmPlatform de 1 significa que la clave está protegida por nuestra plataforma HSM validada de FIPS 140 Nivel 2 anterior.
    • Un valor de hsmPlatform de 0 significa que la clave está protegida por un módulo criptográfico de software HSM FIPS 140 Nivel 1.
    • Si esto no lo establece un grupo de HSM administrado, está protegido por nuestra última plataforma HSM validada por FIPS 140 Nivel 3.

Es importante tener en cuenta que las claves están vinculadas al HSM en el que se crearon. Las nuevas claves se crean y almacenan sin problemas en los nuevos HSM. Si bien no hay forma de migrar o transferir claves, las nuevas versiones de claves se encuentran automáticamente en los nuevos HSM. Para obtener más información sobre cómo migrar a una nueva clave, consulte Cómo migrar cargas de trabajo de clave.

Para más información acerca de IntDate y otros tipos de datos, consulte [Acerca de claves, secretos y certificados: Tipos de datos.

Operaciones controladas de fecha y hora

Las claves todavía no válidas y las expiradas, fuera de la ventana nbf / exp, funcionarán para las operaciones decrypt, release, unwrap y verify (no devolverán 403, prohibido). La razón de usar el estado "todavía no válido" es permitir que una clave se pruebe antes de su uso en producción. La razón de usar el estado "expirado" es permitir las operaciones de recuperación de datos que se crearon cuando la clave era válida. Además, puede deshabilitar el acceso a una clave mediante directivas de Key Vault o actualizando el atributo de clave enabled como false.

Para más información sobre los tipos de datos, vea Tipos de datos.

Para más información sobre otros posibles atributos, vea Clave web JSON (JWK).

Etiquetas de la clave

Puede especificar más metadatos específicos de la aplicación en forma de etiquetas. Key Vault admite hasta 15 etiquetas, cada una de las cuales puede tener un nombre de 256 caracteres y un valor de 256 caracteres.

Nota:

El autor de llamada puede leer las etiquetas si tienen el permiso list o get para esa clave.

Control de acceso a claves

El control de acceso para las claves administradas por Key Vault se proporciona en el nivel de un almacén de claves que actúa como contenedor de claves. Puede controlar el acceso a las claves mediante el control de acceso basado en roles de Key Vault (recomendado) o el modelo de permisos anterior de la directiva de acceso de Key Vault. El modelo de permisos basado en roles tiene tres roles predefinidos para administrar las claves ("Responsable de cifrado de Key Vault", "Usuario de cifrado de Key Vault" y "Usuario de cifrado del servicio de Key Vault") y se puede limitar al nivel de suscripción, grupo de recursos o almacén.

Permisos del modelo de permisos de la directiva de acceso de Key Vault:

  • Permisos para las operaciones de administración de claves

    • get: leer la parte pública de una clave, además de sus atributos
    • list: enumerar las claves o las versiones de una clave almacenada en un almacén de claves
    • update: actualizar los atributos de una clave
    • create: crear nuevas claves
    • import: importar una clave a un almacén de claves
    • delete: eliminar el objeto de clave
    • recover: recuperar una clave eliminada
    • backup: copia de seguridad de una clave de un almacén de claves
    • restore: restaurar una copia de seguridad de una clave a un almacén de claves
  • Permisos para las operaciones criptográficas

    • decrypt: usar la clave para desproteger una secuencia de bytes
    • encrypt: usar la clave para proteger una secuencia arbitraria de bytes
    • unwrapKey: usar la clave para desproteger claves simétricas encapsuladas
    • wrapKey: usar la clave para proteger una clave simétrica
    • verify: usar la clave para verificar hashes
    • sign: usar la clave para firmar hashes
  • Permisos para las operaciones con privilegios

    • purge: purgar (eliminar permanentemente) una clave eliminada
    • release: libere una clave en un entorno de proceso confidencial que coincida con la release_policy de la clave.
  • Permisos para las operaciones de directiva de rotación

    • rotate: gire una clave existente generando una nueva versión de la clave (solo Key Vault).
    • get rotation policy: recupera la configuración de directiva de giro
    • get rotation policy: establece la configuración de directiva de giro

Para más información sobre cómo trabajar con claves, consulte las operaciones con claves en la referencia de la API de REST de Key Vault.

Pasos siguientes