Desempaquetar una clave del AWS CloudHSM mediante la KMU
Use el comando unWrapKey de la herramienta key_mgmt_util del AWS CloudHSM para importar una clave privada o simétrica empaquetada (cifrada) de un archivo en el HSM. Está diseñado para importar claves de cifrado encapsuladas con el comando wrapKey de key_mgmt_util, pero también se puede utilizar para desencapsular claves encapsuladas con otras herramientas. Sin embargo, en esas situaciones, le recomendamos que utilice las bibliotecas de software de PKCS #11 o JCE para desencapsular la clave.
Las claves importadas funcionan igual que las claves generadas por AWS CloudHSM. Sin embargo, el valor del atributo OBJ_ATTR_LOCAL es cero, lo que indica que no se han generado localmente.
Después de importar una clave, asegúrese de marcar o eliminar el archivo de claves. Este comando no le impide importar el mismo material de claves varias veces. Los resultados, es decir, varias claves con diferentes identificadores de clave y el mismo material de claves, dificulta el seguimiento del uso del material relacionado con las claves e impide que supere sus límites criptográficos.
Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util e lniciar sesión en el HSM como usuario de criptografía (CU).
Sintaxis
unWrapKey -h unWrapKey -f
<key-file-name>
-w<wrapping-key-handle>
[-sess] [-min_srv<minimum-number-of-HSMs>
] [-timeout<number-of-seconds>
] [-aad<additional authenticated data filename>
] [-tag_size<tag size>
] [-iv_file<IV file>
] [-attest] [-m<wrapping-mechanism>
] [-t<hash-type>
] [-nex] [-u<user id list>
] [-m_value<number of users needed for approval>
] [-noheader] [-l<key-label>
] [-id<key-id>
] [-kt<key-type>
] [-kc<key-class
] [-i<unwrapping-IV>
]
Ejemplo
Estos ejemplos muestran cómo utilizar unWrapKey para importar una clave encapsulada desde un archivo en los HSM. En el primer ejemplo, desencapsulamos una clave que se ha encapsulado con el comando key_mgmt_util de wrapKey y que, por lo tanto, tiene un encabezado. En el segundo ejemplo, desencapsulamos una clave que se ha encapsulado fuera de key_mgmt_util y que, por lo tanto, no tiene encabezado.
ejemplo : desencapsulamiento de una clave (con encabezado)
Este comando importa una copia de una clave simétrica 3DES en un HSM. La clave se desencapsula con una clave AES con la etiqueta 6
, que es criptográficamente idéntica a la que se utilizó para encapsular la clave 3DES. El resultado muestra que la clave del archivo se ha desencapsulado e importado y que el identificador de la clave importada es 29
.
Command:
unWrapKey -f 3DES.key -w 6 -m 4
Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Key Unwrapped. Key Handle: 29 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
ejemplo : desencapsulamiento de una clave (sin encabezado)
Este comando importa una copia de una clave simétrica 3DES en un HSM. La clave se desencapsula con una clave AES con la etiqueta 6
, que es criptográficamente idéntica a la que se utilizó para encapsular la clave 3DES. Dado que esta clave 3DES no se encapsuló con key_mgmt_util, se especifica el parámetro noheader
, junto con sus parámetros de acompañamiento necesarios: una etiqueta de clave (unwrapped3DES
), una clase de clave (4
) y un tipo de clave (21
). El resultado muestra que la clave del archivo se ha desencapsulado e importado y que el identificador de la clave importada es 8
.
Command:
unWrapKey -f 3DES.key -w 6 -noheader -l unwrapped3DES -kc 4 -kt 21 -m 4
Cfm3CreateUnwrapTemplate2 returned: 0x00 : HSM Return: SUCCESS Cfm2UnWrapWithTemplate3 returned: 0x00 : HSM Return: SUCCESS Key Unwrapped. Key Handle: 8 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Parámetros
- -h
-
Muestra ayuda para el comando.
Obligatorio: sí
- -f
-
Especifica la ruta y el nombre del archivo que contiene la clave encapsulada.
Obligatorio: sí
- -w
-
Especifica la clave de encapsulamiento. Introduzca el identificador de clave de una clave AES o RSA en el HSM. Este parámetro es obligatorio. Para buscar identificadores de clave, use el comando findKey.
Para crear una clave de encapsulamiento, utilice genSymKey para generar una clave AES (tipo 31) o genRSAKeyPair para generar un par de claves RSA (tipo 0). Si utiliza un par de claves RSA, asegúrese de encapsular la clave con una de las claves y desencapsularla con la otra. Para verificar si una clave se puede utilizar como clave de encapsulamiento, utilice getAttribute para obtener el valor del atributo
OBJ_ATTR_WRAP
, que se representa con la constante262
.Obligatorio: sí
- -sess
-
Crea una clave que solo existe en la sesión actual. La clave no se podrá recuperar una vez finalizada la sesión.
Utilice este parámetro cuando necesite una clave solo brevemente, por ejemplo, una clave de encapsulamiento que cifre y, a continuación, descifre rápidamente otra clave. No utilice una clave de sesión para cifrar los datos que pueda necesitar descifrar una vez finalizada la sesión.
Para cambiar una clave de sesión por una clave persistente (token), use setAttribute.
Predeterminado: la clave es persistente.
Requerido: no
- -min_srv
-
Especifica el número mínimo de HSM en los que la clave importada se sincroniza antes de que caduque el valor del parámetro
-timeout
. Si la clave no está sincronizada con el número especificado de servidores en el tiempo asignado, no se creará.AWS CloudHSM sincroniza automáticamente cada clave con cada HSM del clúster. Para acelerar el proceso, establezca el valor de
min_srv
en un número menor que el de HSM del clúster y establezca un valor bajo de tiempo de espera. Sin embargo, tenga en cuenta que puede que algunas solicitudes no generen ninguna clave.Predeterminado: 1
Requerido: no
- -timeout
-
Especifica cuánto tiempo (en segundos) espera el comando para que una clave se sincronice con el número de HSM especificado por el parámetro
min_srv
.Este parámetro solo es válido cuando también se usa el parámetro
min_srv
en el comando.Predeterminado: sin tiempo de espera predeterminado. El comando espera indefinidamente y solo vuelve a aparecer cuando la clave está sincronizada con el número mínimo de servidores.
Requerido: no
- -attest
Ejecuta una comprobación de integridad que verifica que el firmware en el que se ejecuta el clúster no haya sufrido alguna manipulación.
Predeterminado: sin comprobación de certificación.
Requerido: no
- -nex
-
Hace que la clave no se pueda extraer. La clave que se genera no se puede exportar desde el HSM.
Predeterminado: la clave se puede extraer.
Requerido: no
- -m
-
Valor que representa el mecanismo de encapsulamiento. CloudHSM admite los siguientes mecanismos:
Mecanismo Valor AES_KEY_WRAP_PAD_PKCS5
4 NIST_AES_WRAP_NO_PAD
5 NIST_AES_WRAP_PAD
6 RSA_AES
7 RSA_OAEP
(para conocer el tamaño máximo de los datos, consulte la nota que se incluye más adelante en esta sección)8 AES_GCM
10 CLOUDHSM_AES_GCM
11 RSA_PKCS
(para conocer el tamaño máximo de los datos, consulte la nota que se incluye más adelante en esta sección). Consulte la nota 1 que aparece a continuación para ver los próximos cambios.12 Obligatorio: sí
nota
Cuando se utiliza el mecanismo de encapsulamiento
RSA_OAEP
, el tamaño de clave máximo que se puede encapsular viene determinado por el módulo de la clave RSA y la longitud del hash especificado: tamaño máximo de la clave = modulusLengthInBytes-(2*hashLengthInBytes)-2.Cuando se utiliza el mecanismo de encapsulación RSA_PKCS, el tamaño máximo de la clave que se puede encapsular se determina por el módulo de la clave RSA de la siguiente manera: tamaño máximo de la clave = (modulusLengthInBytes -11).
- -t
-
Algoritmo hash Valor SHA1
2 SHA256
3 SHA384
4 SHA512
5 SHA224
(válido para los mecanismosRSA_AES
yRSA_OAEP
)6 Requerido: no
- -noheader
-
Si va a desencapsular una clave que se ha encapsulado fuera de key_mgmt_util, debe especificar este parámetro y todos los demás parámetros asociados.
Requerido: no
nota
Si especifica este parámetro, también debe especificar los siguientes parámetros
-noheader
:-
-l
Especifica la etiqueta que se van a añadir a la clave desencapsulada.
Obligatorio: sí
-
-kc
Especifica la clase de la clave que se va a desencapsular. A continuación, se muestran los valores aceptables:
3 = clave privada de un par de claves pública y privada
4 = clave secreta (simétrica).
Obligatorio: sí
-
-kt
Especifica el tipo de clave que se va a desencapsular. A continuación, se muestran los valores aceptables:
0 =
RSA
1 =
DSA
3 =
ECC
16 =
GENERIC_SECRET
21 =
DES3
31 =
AES
Obligatorio: sí
Si lo desea, también puede especificar los siguientes parámetros
-noheader
:-
-id
El ID que se van a añadir a la clave desencapsulada.
Requerido: no
-
-i
El vector de inicialización (IV) de desencapsulación que se va a utilizar.
Requerido: no
-
[1] De acuerdo con las directrices del NIST, esto no se permite en los clústeres en modo FIPS después de 2023. En el caso de los clústeres en modo no FIPS, seguirá siendo posible después de 2023. Para obtener más información, consulte Cumplimiento de la normativa FIPS 140: anulación de mecanismo 2024.