

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.

# Exportación de una copia en texto plano de una AWS CloudHSM clave mediante KMU
<a name="key_mgmt_util-exSymKey"></a>

Utilice el **exSymKey** comando de la herramienta AWS CloudHSM key\$1mgmt\$1util para exportar una copia en texto plano de una clave simétrica del módulo de seguridad de hardware (HSM) y guardarla en un archivo en el disco. Para exportar una copia cifrada (encapsulada) de una clave, utilice [wrapKey](key_mgmt_util-wrapKey.md). Para importar una clave de texto sin formato, como las que se exportan, utilice. `exSymKey` [imSymKey](key_mgmt_util-imSymKey.md)

Durante el proceso de exportación, **exSymKey** utiliza una clave AES que se especifica (la *clave de encapsulado*) para *encapsular* (cifrar) y luego *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](key-attribute-table.md), 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](key_mgmt_util-exportPubKey.md). Para exportar claves privadas, utilice [exportPrivateKey](key_mgmt_util-exportPrivateKey.md).

Antes de ejecutar cualquier comando de key\$1mgmt\$1util, debe [iniciar key\$1mgmt\$1util](key_mgmt_util-setup.md#key_mgmt_util-start) e [lniciar sesión](key_mgmt_util-log-in.md) en el HSM como usuario de criptografía (CU). 

## Sintaxis
<a name="exSymKey-syntax"></a>

```
exSymKey -h

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

## Ejemplos
<a name="exSymKey-examples"></a>

Estos ejemplos muestran cómo se utilizan **exSymKey** para exportar claves simétricas que son de su propiedad. HSMs

**Example : 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`.  
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"
```

**Example : 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 [genSymKey](key_mgmt_util-genSymKey.md)para 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](key_mgmt_util-findKey.md), 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 [AWS CloudHSM referencia de atributo clave para KMU](key-attribute-table.md).  

```
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"
```

**Example : 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 comando [imSymKey](key_mgmt_util-imSymKey.md) para importar la clave AES desde el archivo `aes256-forImport.key` 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"
```

## Parameters
<a name="exSymKey-params"></a>

**-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](key_mgmt_util-findKey.md).  
Para verificar que se puede exportar una clave, ejecute el comando [getAttribute](key_mgmt_util-getAttribute.md) 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, usa el [getKeyInfo](key_mgmt_util-getKeyInfo.md)comando.  
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](key_mgmt_util-findKey.md).  
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](key_mgmt_util-getAttribute.md) para obtener el valor del atributo `OBJ_ATTR_WRAP`, que se representa con la constante `262`. Para crear una clave de encapsulación, utilice [genSymKey](key_mgmt_util-genSymKey.md) para crear una clave AES (de 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.  
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
<a name="exSymKey-seealso"></a>
+ [genSymKey](key_mgmt_util-genSymKey.md)
+ [imSymKey](key_mgmt_util-imSymKey.md)
+ [wrapKey](key_mgmt_util-wrapKey.md)