exSymKey - AWS CloudHSM

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

exSymKey

El comando exSymKey en la herramienta key_mgmt_util exporta una copia sin cifrar de una clave simétrica desde el HSM y la guarda en un archivo del disco. Para exportar una copia cifrada (encapsulada) de una clave, utilice wrapKey. Para importar una clave de texto sin formato, como las que se exportan, utilice. exSymKey imSymKey

Durante el proceso de exportación, exSymKey utiliza la clave AES especificada (la clave de encapsulado) para encapsular (cifrar) y después desencapsular (descifrar) la clave que se va a exportar. Sin embargo, el resultado de la operación de exportación es una clave sin cifrar (desencapsulada) en el disco.

Solo el propietario de una clave, es decir, el usuario CU que creó la clave, puede exportarla. Los usuarios que comparten la clave pueden utilizarla en operaciones criptográficas, pero no pueden exportarla.

La operación exSymKey copia el material de la clave en el archivo especificado, pero no elimina la clave del HSM, ni cambia sus atributos de clave, ni le impide utilizar la clave en operaciones criptográficas. Puede exportar la misma clave varias veces.

exSymKey exporta únicamente claves simétricas. Para exportar claves públicas, utilice exportPubKey. Para exportar claves privadas, utilice exportPrivateKey.

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

exSymKey -h exSymKey -k <key-to-export> -w <wrapping-key> -out <key-file> [-m 4] [-wk <unwrapping-key-file> ]

Ejemplos

En los ejemplos siguientes, se muestra cómo se utiliza exSymKey para exportar claves simétricas de su propiedad desde los HSM.

ejemplo : exportación de una clave simétrica 3DES

Este comando exporta una clave simétrica Triple DES (3DES) (identificador de clave 7). Utiliza una clave AES ya existente (identificador de clave 6) del HSM como clave de encapsulación. A continuación, escribe el texto no cifrado de la clave 3DES en el archivo 3DES.key.

La salida muestra que la clave 7 (la clave 3DES) se ha encapsulado y desencapsulado correctamente y que, a continuación, se ha escrito en el archivo 3DES.key.

aviso

Aunque la salida indica que se ha escrito una "Wrapped Symmetric Key" (clave simétrica encapsulada) en el archivo de salida, este contiene una clave no cifrada (desencapsulada).

Command: exSymKey -k 7 -w 6 -out 3DES.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "3DES.key"
ejemplo : cómo exportar con una clave de encapsulación solo para la sesión

En este ejemplo se muestra cómo utilizar una clave que solo existe en la sesión como clave de encapsulación. Dado que la clave para la exportación se encapsula, se desencapsula inmediatamente y se entrega sin cifrar, no es necesario conservar la clave de encapsulación.

Esta serie de comandos exporta una clave AES con el identificador de clave 8 del HSM. Utiliza una clave de sesión AES creada especialmente para este fin.

El primer comando se utiliza genSymKeypara crear una clave AES de 256 bits. Utiliza el parámetro -sess para crear una clave que solo existe en la sesión actual.

La salida muestra que el HSM crea la clave 262168.

Command: genSymKey -t 31 -s 32 -l AES-wrapping-key -sess Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 262168 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

A continuación, el ejemplo comprueba que la clave 8, es decir, la clave que se va a exportar, sea una clave simétrica que se puede extraer. También comprueba que la clave de encapsulación, clave 262168, sea una clave AES que solo exista en la sesión. Puede ejecutar el comando findKey, pero este ejemplo exporta los atributos de ambas claves a archivos y, a continuación, utiliza grep para encontrar los valores de atributos pertinentes en el archivo.

Estos comandos utilizan getAttribute con un valor -a de 512 (todos) para obtener todos los atributos de las claves 8 y 262168. Para obtener información sobre los atributos de las claves, consulte la Referencia de los atributos de claves.

getAttribute -o 8 -a 512 -out attributes/attr_8 getAttribute -o 262168 -a 512 -out attributes/attr_262168

Estos comandos ejecutan grep para verificar los atributos de la clave que se va a exportar (clave 8) y la clave de encapsulación solo para la sesión (clave 262168).

// Verify that the key to be exported is a symmetric key. $ grep -A 1 "OBJ_ATTR_CLASS" attributes/attr_8 OBJ_ATTR_CLASS 0x04 // Verify that the key to be exported is extractable. $ grep -A 1 "OBJ_ATTR_KEY_TYPE" attributes/attr_8 OBJ_ATTR_EXTRACTABLE 0x00000001 // Verify that the wrapping key is an AES key $ grep -A 1 "OBJ_ATTR_KEY_TYPE" attributes/attr_262168 OBJ_ATTR_KEY_TYPE 0x1f // Verify that the wrapping key is a session key $ grep -A 1 "OBJ_ATTR_TOKEN" attributes/attr_262168 OBJ_ATTR_TOKEN 0x00 // Verify that the wrapping key can be used for wrapping $ grep -A 1 "OBJ_ATTR_WRAP" attributes/attr_262168 OBJ_ATTR_WRAP 0x00000001

Por último, utilizamos un comando exSymKey para exportar una clave 8 utilizando la clave de sesión (clave 262168) como clave de encapsulado.

Cuando finaliza la sesión, la clave 262168 ya no existe.

Command: exSymKey -k 8 -w 262168 -out aes256_H8.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "aes256_H8.key"
ejemplo : utilización de una clave de desencapsulación externa

En este ejemplo se muestra cómo utilizar una clave de desencapsulación externa para exportar una clave desde el HSM.

Cuando exporta una clave desde el HSM, usted especifica una clave AES en el HSM para que sea la clave de encapsulación. De forma predeterminada, esa clave de encapsulación se usa para encapsular y desencapsular la clave que se va a exportar. Sin embargo, puede utilizar el parámetro -wk para indicar a exSymKey que utilice una clave externa de un archivo del disco para desencapsularla. Si lo hace, la clave especificada por el parámetro -w encapsula la clave de destino y la clave del archivo especificado por el parámetro -wk desencapsula la clave.

Dado que la clave de encapsulación tiene que ser una clave AES, que es simétrica, la clave de encapsulación del HSM y la clave de desencapsulación del disco han de tener el mismo material de clave. Para ello, debe importar la clave de encapsulación al HSM o exportarla desde el HSM antes de la operación de exportación.

En este ejemplo se crea una clave fuera del HSM y se importa al HSM. Se utiliza la copia interna de la clave para encapsular una clave simétrica que se exporta y la copia de clave del archivo para desencapsularla.

El primer comando utiliza OpenSSL para generar una clave AES de 256 bits. Guarda la clave en el archivo aes256-forImport.key. El comando OpenSSL no devuelve una salida, pero puede utilizar varios comandos para confirmar que todo se ha realizado correctamente. En este ejemplo, se utiliza la herramienta wc (recuento de palabras), que confirma que el archivo contiene 32 bytes de datos.

$ openssl rand -out keys/aes256-forImport.key 32 $ wc keys/aes256-forImport.key 0 2 32 keys/aes256-forImport.key

Este comando utiliza el imSymKeycomando para importar la clave AES del aes256-forImport.key archivo al HSM. Cuando se completa el comando, la clave existe en el HSM con el identificador de clave 262167 y en el archivo aes256-forImport.key.

Command: imSymKey -f keys/aes256-forImport.key -t 31 -l aes256-imported -w 6 Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Unwrapped. Key Handle: 262167 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Este comando utiliza la clave en una operación de exportación. El comando utiliza exSymKey para exportar la clave 21, una clave AES de 192 bits. Para encapsular la clave utiliza la clave 262167, que es la copia que se importó en el HSM. Para desencapsular la clave, utiliza el mismo material de clave en el archivo aes256-forImport.key. Cuando se completa el comando, la clave 21 se exporta al archivo aes192_h21.key.

Command: exSymKey -k 21 -w 262167 -out aes192_H21.key -wk aes256-forImport.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "aes192_H21.key"

Parámetros

-h

Muestra ayuda para el comando.

Obligatorio: sí

-k

Especifica el identificador de la clave que se va a exportar. Este parámetro es obligatorio. Escriba el identificador de una clave simétrica de su propiedad. Este parámetro es obligatorio. Para buscar identificadores de clave, use el comando findKey.

Para verificar que se puede exportar una clave, ejecute el comando getAttribute para obtener el valor del atributo OBJ_ATTR_EXTRACTABLE, que se representa con la constante 354. Además, puede exportar únicamente claves de su propiedad. Para encontrar el propietario de una clave, utilice el getKeyInfocomando.

Obligatorio: sí

-w

Especifica el identificador de la clave de encapsulamiento. Este parámetro es obligatorio. Para buscar identificadores de clave, use el comando findKey.

Una clave de encapsulación es una clave del HSM que se utiliza para cifrar (encapsular) y después descifrar (desencapsular) la clave que se va a exportar. Solo las claves AES se pueden utilizar como claves de encapsulación.

Puede utilizar cualquier clave AES (de cualquier tamaño) como clave de encapsulación. Dado que la clave de encapsulación encapsula y, a continuación, desencapsula inmediatamente la clave de destino, puede utilizar una clave AES solo de una sesión como clave de encapsulación. Para determinar si una clave se puede utilizar como clave de encapsulación, utilice getAttribute para obtener el valor del atributo OBJ_ATTR_WRAP, que se representa con la constante 262. Para crear una clave de empaquetado, utilice genSymKeypara crear una clave AES (tipo 31).

Si utiliza el parámetro -wk para especificar una clave de desencapsulación externa, la clave de encapsulación -w se utiliza para encapsular, pero no desencapsular, la clave durante la exportación.

nota

La clave 4 representa una clave interna incompatible. Le recomendamos que use una clave AES que cree y administre como clave de encapsulamiento.

Obligatorio: sí

-out

Especifica la ruta y el nombre del archivo de salida. Cuando el comando se ejecuta correctamente, este archivo contiene la clave exportada sin cifrar. Si el archivo ya existe, el comando lo sobrescribe sin ningún tipo de advertencia.

Obligatorio: sí

-m

Especifica el mecanismo de encapsulación. El único valor válido es 4, que representa el mecanismo NIST_AES_WRAP.

Obligatorio: no

Predeterminado: 4

-wk

Utilice la clave AES del archivo especificado para desencapsular la clave que se exporta. Escriba la ruta y el nombre de un archivo que contenga una clave AES sin cifrar.

Si se incluye este parámetro, exSymKey utiliza la clave del HSM que se especificó en el parámetro -w para encapsular la clave que se va a exportar y utiliza la clave del archivo -wk para desencapsularla. Los valores de parámetro -w y -wk deben resolverse en la misma clave sin cifrar.

Obligatorio: no

Valor predeterminado: utilice la clave de encapsulación del HSM para realizar la desencapsulación.

Temas relacionados de