Tipos de claves, algoritmos y operaciones

En este artículo se describen los principales tipos de claves, algoritmos, atributos y operaciones de Azure Key Vault (almacenes). Para obtener la referencia equivalente para HSM administrado, consulte Tipos de claves, algoritmos y operaciones (HSM administrado). Para obtener un resumen de los tipos de clave admitidos por recurso, consulte Acerca de las claves.

En la tabla siguiente se muestra un resumen de los tipos de clave y los algoritmos admitidos en Key Vault. Para obtener información completa sobre los algoritmos simétricos (oct-HSM /AES) y HMAC sign/verify, consulte Symmetric key algorithms (Algoritmos de clave simétrica).

Tipos de clave, tamaños y curvas Encrypt/Decrypt
(Wrap/Unwrap)
Sign/Verify
EC-P256, EC-P256K, EC-P384, EC-P521 NA ES256
ES256K
ES384
ES512
RSA 2K, 3K, 4K RSA-OAEP-256
[No recomendado] RSA1_5
[No recomendado] RSA-OAEP
PS256
PS384
PS512
RS256
RS384
RS512
RSNULL
oct-HSM 128, 192, 256 (Premium; versión preliminar) AES-KW
AES-GCM
AES-CBC
HS256
HS384
HS512

Algoritmos EC

Los siguientes identificadores de algoritmo se admiten con claves EC-HSM.

Tipos de curva

SIGN/VERIFY

  • ES256 - ECDSA para resúmenes y claves SHA-256 creadas con la curva P-256. Este algoritmo se describe en RFC7518.
  • ES256K : ECDSA para resúmenes y claves SHA-256 creadas con la curva P-256K. Este algoritmo está pendiente de normalización.
  • ES384 - ECDSA para resúmenes y claves SHA-384 creadas con curva P-384. Este algoritmo se describe en RFC7518.
  • ES512 - ECDSA para resúmenes SHA-512 y claves creadas con la curva P-521. Este algoritmo se describe en RFC7518.

Algoritmos RSA

Los siguientes identificadores de algoritmo se admiten con las claves RSA y RSA-HSM.

WRAPKEY/UNWRAPKEY, ENCRYPT/DECRYPT

  • RSA-OAEP-256: RSAES que usa 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.
  • [No recomendado] RSA1_5 - RSAES-PKCS1-V1_5 cifrado de claves [RFC3447].
  • [No recomendado] RSA-OAEP - RSAES utilizando el relleno óptimo de cifrado asimétrico (OAEP) [RFC3447], con los parámetros predeterminados especificados por 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.

Warning

Microsoft recomienda usar RSA_OAEP_256 o algoritmos más seguros para mejorar la seguridad.

Microsoft no recomienda RSA_1_5 ni RSA_OAEP. Estos algoritmos solo se incluyen por compatibilidad con versiones anteriores. Los estándares criptográficos ya no consideran RSA con el esquema de relleno PKCS#1 v1.5 seguro para el cifrado. RSA_OAEP usa SHA1, que tiene problemas de colisión conocidos.

SIGN/VERIFY

  • PS256 : RSASSA-PSS usando SHA-256 y MGF1 con SHA-256, como se describe en RFC7518.
  • PS384 : RSASSA-PSS usando SHA-384 y MGF1 con SHA-384, como se describe en RFC7518.
  • PS512 : RSASSA-PSS usando 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 mediante 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 mediante 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 determinados escenarios de TLS.

Note

Para mejorar el rendimiento, use el modo de relleno RSA-PSS. El servidor construye las operaciones DigestInfo for Sign que generan los algoritmos RS256, RS384 y RS512.

Algoritmos de clave simétrica

Importante

La compatibilidad con claves simétricas (oct-HSM /AES) en Azure Key Vault Premium está actualmente en versión preliminar pública. Los tamaños de clave admitidos son de 128 bits, 192 bits y 256 bits. Las características en versión preliminar se proporcionan tal cual, sin acuerdo de nivel de servicio, y no se recomienda su uso para cargas de trabajo de producción. Para obtener más información, vea Términos de uso complementarios para las versiones preliminares de Microsoft Azure.

Los siguientes identificadores de algoritmo se admiten con claves oct-HSM (simétrica/AES) en Azure Key Vault Premium.

WRAPKEY/UNWRAPKEY, ENCRYPT/DECRYPT

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

Cuando se usa con claves de 256 bits, estos algoritmos son resistentes a la cuántica de acuerdo con el Conjunto de algoritmos de seguridad nacional comercial 2.0 y preguntas más frecuentes sobre computación cuántica.

FIRMAR/VERIFICAR (HMAC)

  • HS256 - HMAC con SHA-256, como se describe en RFC7518.
  • HS384 - HMAC con SHA-384, como se describe en RFC7518.
  • HS512 - HMAC con SHA-512, como se describe en RFC7518.

Note

El algoritmo de firma y comprobación debe coincidir con el tipo de clave y el tamaño. De lo contrario, el servicio devuelve un tamaño de clave incorrecto.

Para obtener compatibilidad con algoritmos de clave simétricos (oct-HSM) en HSM administrado, consulte Tipos de claves, algoritmos y operaciones (HSM administrados).

Operaciones clave

Las siguientes operaciones se admiten en objetos clave:

  • Crear: un cliente crea una clave en el servicio. El servicio genera y almacena el valor de la clave y no lo libera al cliente.
  • Importación: un cliente importa una clave existente al servicio. Las claves asimétricas se pueden importar mediante varios métodos de empaquetado diferentes dentro de una construcción JWK.
  • Actualización: un cliente con permisos suficientes modifica los metadatos (atributos de clave) asociados a una clave almacenada previamente.
  • Eliminar: un cliente con permisos suficientes elimina una clave.
  • Lista: un cliente muestra todas las claves del servicio.
  • Enumerar versiones: un cliente muestra todas las versiones de una clave determinada.
  • Get: un cliente recupera las partes públicas de una clave determinada. La operación get no devuelve la parte privada de una clave asimétrica ni el material de clave de una clave simétrica.
  • Copia de seguridad: exporta una clave en un formulario protegido.
  • Restaurar: importa una clave de copia de seguridad anterior.
  • Liberación: libera de manera segura una clave para el código autorizado que se ejecuta en un entorno de computación confidencial. Requiere una atestación de que el entorno de ejecución de confianza (TEE) cumpla los requisitos de la política de liberación de la clave.

Una vez creada una clave, puede realizar las siguientes operaciones criptográficas con ella:

  • Firmar y verificar: Estrictamente, esta operación es «firmar hash» o «verificar hash», ya que el servicio no calcula el hash del contenido como parte de la creación de la firma. Las aplicaciones deben aplicar un hash a los datos que se van a firmar localmente y, a continuación, solicitar que el servicio firme el hash. La verificación de valores hash firmados se ofrece por comodidad para las aplicaciones que podrían no tener acceso al material de claves públicas; para obtener el mejor rendimiento, las operaciones de verificación deben realizarse localmente.
  • Cifrado / encapsulado de claves: una clave almacenada en el servicio puede proteger otra clave, normalmente una clave de cifrado de contenido simétrica (CEK). Cuando la clave del servicio es asimétrica, use el cifrado de claves (por ejemplo, RSA-OAEP; WRAPKEY/UNWRAPKEY son equivalentes a ENCRYPT/DECRYPT). Cuando la clave del servicio sea simétrica, use el encapsulado de claves (por ejemplo, AES-KW). WRAPKEY se ofrece por comodidad para las aplicaciones que podrían no tener acceso al material de claves públicas; para obtener el mejor rendimiento, las operaciones de encapsulado deben realizarse localmente.
  • Cifrar y descifrar: una clave almacenada en el servicio puede cifrar o descifrar un único bloque de datos. El tamaño del bloque viene determinado por el tipo de clave y el algoritmo de cifrado seleccionado. El cifrado se proporciona para mayor comodidad; para obtener el mejor rendimiento, las operaciones de cifrado deben realizarse localmente.

El uso de distintas operaciones WRAPKEY/UNWRAPKEY (en lugar de usar siempre ENCRYPT/DECRYPT) proporciona separación semántica y de autorización, y coherencia entre los tipos de clave.

El servicio no admite operaciones EXPORT. Una vez aprovisionada una clave, no se puede extraer ni modificar su material de clave. Para mover una clave, use las operaciones BACKUP y RESTORE para exportar o importar la clave en un formulario protegido. Las claves generadas por BACKUP no se pueden usar fuera del servicio.

Puede restringir cualquiera de las operaciones criptográficas por clave mediante la key_ops propiedad del objeto JWK.

Para obtener más información sobre los objetos JWK, vea JSON Web Key (JWK).

Además de las operaciones enumeradas anteriormente, Key Vault (almacenes) admite:

  • Girar: gira una clave existente mediante la generación de una nueva versión de la clave. Esta operación solo está disponible en los recursos de Key Vault (no en los HSM administrados).

Para obtener más información, consulte Key operations in the Key Vault REST API reference.

Operaciones de directiva de giro de claves

Configure la rotación automática de claves mediante la configuración de la política de rotación automática de claves. Esta característica solo está disponible en recursos de Key Vault.

  • Obtener directiva de rotación: recupere la configuración de la directiva de rotación.
  • Establecer directiva de rotación: establezca la configuración de la directiva de rotación.

Atributos clave

Además del material clave, puede especificar los atributos siguientes. En una solicitud JSON, debe incluir la palabra clave attributes y llaves ({}) incluso si no especifica ningún atributo.

  • enabled: boolean, opcional, el valor predeterminado es true. Especifica si la clave está habilitada y utilizable para las operaciones criptográficas. Use el atributo habilitado con nbf y exp. Cuando se produce una operación entre nbf y exp, la operación solo se permite si enabled está establecida en true. Las operaciones fuera de la ventana nbf / exp no se permiten automáticamente, excepto para descifrar, liberar, desencapsular y comprobar.
  • nbf: IntDate, opcional, el valor predeterminado es ahora. El atributo nbf (no antes) identifica la hora antes de la cual no se debe usar la clave para las operaciones criptográficas, excepto para descifrar, liberar, desencapsular y comprobar. El procesamiento del atributo nbf requiere que la fecha y hora actuales deben ser posteriores o iguales a la fecha y hora no anterior enumeradas en el atributo nbf . Se puede permitir un pequeño margen (normalmente no superior a unos pocos minutos) para tener en cuenta el desfase del reloj. Su valor debe ser un número que contenga un valor IntDate.
  • exp: IntDate, opcional, el valor predeterminado es "forever". El atributo exp (tiempo de expiración) identifica la hora de expiración en o después de la cual no se debe usar la clave para las operaciones criptográficas, excepto para descifrar, liberar, desencapsular y comprobar. El procesamiento del atributo exp requiere que la fecha y hora actuales deba ser antes de la fecha y hora de expiración que aparece en el atributo exp . Se puede proporcionar un poco de margen (normalmente no más de unos minutos) para tener en cuenta la asimetría del reloj. Su valor debe ser un número que contenga un valor IntDate.

Los siguientes atributos de solo lectura se incluyen en cualquier respuesta que incluya atributos clave:

  • created: IntDate, opcional. El atributo creado 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 actualizado indica cuándo se actualizó esta versión de la clave. El valor es NULL para las claves que se actualizaron por última vez antes de agregar este atributo. Su valor debe ser un número que contenga un valor IntDate.

Operaciones controladas de fecha y hora

Las claves aún no válidas y expiradas, fuera del intervalo nbf / exp, funcionan en las operaciones de descifrado, liberación, desencapsulado y verificación (no devuelven 403, Forbidden). 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. También puede deshabilitar el acceso a una clave actualizando el atributo habilitado a false.

Para obtener más información sobre otros atributos posibles, consulte la especificación json Web Key (JWK).

Además de los atributos enumerados anteriormente, las claves de Key Vault exponen:

  • hsmPlatform: string, opcional. La plataforma HSM subyacente que protege una clave.
    • Un valor hsmPlatform de 2 significa que la clave está protegida por la plataforma HSM más reciente, validada según la norma FIPS 140-3 de nivel 3.
    • Un hsmPlatform valor de 1 significa que la clave está protegida por la plataforma HSM anteriormente validada por FIPS 140-2, Nivel 2.
    • Un hsmPlatform valor de 0 significa que la clave está protegida por un módulo criptográfico de software fiPS 140-2 de nivel 1.

Las claves están enlazadas al HSM en el que las creó. Azure Key Vault crea automáticamente nuevas claves y versiones de claves en la plataforma HSM más reciente. No se pueden migrar ni transferir claves existentes entre plataformas. Para obtener instrucciones sobre cómo mover cargas de trabajo a una nueva clave, consulte Migración de cargas de trabajo clave.

Para obtener más información sobre IntDate y otros tipos de datos, vea Tipos de datos.

Etiquetas de clave

Puede especificar metadatos específicos de la aplicación adicionales 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.

Note

Si el autor de la llamada tiene el permiso de enumerar u obtener sobre una clave, puede leer las etiquetas.

Control de acceso a claves

Key Vault proporciona control de acceso para las claves en el nivel de Key Vault, que actúa como contenedor de claves. Puede controlar el acceso a las claves mediante el control de acceso basado en roles de Azure de Key Vault (recomendado) o el modelo de permisos heredado de la directiva de acceso del almacén. Azure RBAC es el modelo de autorización predeterminado y recomendado. Tiene tres roles predefinidos para administrar claves: Key Vault Crypto Officer, Key Vault Crypto User y Key Vault Service Encryption User. Puede definir el ámbito de estos roles en el nivel de suscripción, grupo de recursos o almacén. Para obtener más información, consulte Azure RBAC frente a directivas de acceso.

Permisos del modelo de permisos de la directiva de acceso de Key Vault (heredado):

  • Permisos para las operaciones de administración de claves

    • get: leer la parte pública de una clave, además de sus atributos
    • list: enumeración de las claves o versiones de una clave almacenada en un almacén de claves
    • update: actualización de los atributos de una clave
    • create: Crear nuevas claves
    • importar: Importar una clave a una bóveda de claves
    • delete: eliminar el objeto de clave
    • recover: recuperación de una clave eliminada
    • copia de seguridad: copia de seguridad de una clave en un almacén de claves
    • restore: restaurar una clave respaldada en un almacén de claves
  • Permisos para las operaciones criptográficas

    • descifrado: use la clave para desproteger una secuencia de bytes.
    • encrypt: use la clave para proteger una secuencia arbitraria de bytes.
    • unwrapKey: Use la clave para desproteger las claves simétricas envueltas.
    • wrapKey: use la clave para proteger una clave simétrica.
    • verify: use la clave para comprobar los resúmenes.
    • sign: use la clave para firmar resúmenes.
  • Permisos para las operaciones con privilegios

    • purga: purgar (eliminar permanentemente) una clave eliminada
    • liberar: 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

    • girar: gire una clave existente mediante la generación de 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 obtener más información sobre cómo trabajar con claves, consulte Key operations in the Key Vault REST API reference.

Pasos siguientes