

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.

# Generar una clave AWS CloudHSM simétrica mediante KMU
<a name="key_mgmt_util-genSymKey"></a>

Utilice el **genSymKey** comando de la herramienta AWS CloudHSM key\_mgmt\_util para generar una clave simétrica en los módulos de seguridad de hardware (HSM). Puede especificar el tipo y el tamaño de la clave, asignar un ID y una etiqueta, y compartir la clave con otros usuarios de HSM. También puede crear claves que no se pueden extraer y claves que caducan al finalizar la sesión. Cuando el comando se ejecuta correctamente, devuelve un identificador de clave que el HSM asigna a la clave. Puede utilizar el identificador de clave para identificar la clave ante otros comandos.

Antes de ejecutar cualquier comando de key\_mgmt\_util, debe [iniciar key\_mgmt\_util](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="genSymKey-syntax"></a>

```
genSymKey -h

genSymKey -t {{<key-type>}}
          -s {{<key-size>}} 
          -l {{<label>}} 
          [-id {{<key-ID>}}] 
          [-min_srv {{<minimum-number-of-servers>}}] 
          [-m_value {{<0..8>}}]
          [-nex] 
          [-sess] 
          [-timeout {{<number-of-seconds>}} ]
          [-u {{<user-ids>}}] 
          [-attest]
```

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

Estos ejemplos muestran cómo crear claves simétricas en su. **genSymKey** HSMs

**sugerencia**  
Para usar las claves que crea con estos ejemplos para las operaciones de HMAC, debe establecer `OBJ_ATTR_SIGN` y `OBJ_ATTR_VERIFY` como `TRUE` después de generar la clave. Para establecer estos valores, utilice **setAttribute** en la Utilidad de administración de CloudHSM (CMU). Para obtener más información, consulte[setAttribute](cloudhsm_mgmt_util-setAttribute.md).

**Example Generación de una clave AES**  
Este comando crea una clave AES de 256 bits con una etiqueta `aes256`. El resultado muestra que el identificador de clave de la clave nueva es `6`.  

```
Command: genSymKey -t 31 -s 32 -l aes256

        Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

        Symmetric Key Created.  Key Handle: 6

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```

**Example : creación de una clave de sesión**  
Este comando crea una clave AES de 192 bits no extraíble que es válida únicamente en la sesión actual. Puede que desee crear una clave como esta para encapsular (y, a continuación, desencapsular inmediatamente) una clave que se está exportando.   

```
Command: genSymKey -t 31 -s 24 -l tmpAES -id wrap01 -nex -sess 
```

**Example : regreso rápido**  
Este comando crea una clave de 512 bytes genéricos con una etiqueta `IT_test_key`. El comando no espera a que la clave se sincronice con todos los elementos del HSMs clúster. En su lugar, regresa tan pronto como se crea la clave en cualquier HSM (`-min_srv 1`) o en 1 segundo (`-timeout 1`), el periodo que sea más corto. Si la clave no se sincroniza con el número mínimo especificado HSMs antes de que caduque el tiempo de espera, no se genera. Es posible que desee utilizar un comando como este en un script que crea numerosas claves, como el bucle `for` del siguiente ejemplo.   

```
Command: genSymKey -t 16 -s 512 -l IT_test_key -min_srv 1 -timeout 1

$  for i in {1..30}; 
     do /opt/cloudhsm/bin/key_mgmt_util singlecmd loginHSM -u CU -s example_user -p example_pwd genSymKey -l aes -t 31 -s 32 -min_srv 1 -timeout 1; 
 done;
```

**Example : creación de una clave genérica autorizada mediante cuórum**  
Este comando crea una clave secreta genérica de 2048 bits con la etiqueta `generic-mV2`. El comando utiliza el parámetro `-u` para compartir la clave con otro CU, el usuario 6. Utiliza el parámetro `-m_value` para solicitar un cuórum de al menos dos aprobaciones para cualquier operación criptográfica que utilice la clave. El comando también utiliza el parámetro `-attest` para verificar la integridad del firmware en el que se genera la clave.  
El resultado muestra que el comando generó una clave con identificador de clave `9` y que se ha superado la comprobación de declaración del firmware del clúster.  

```
                Command:  genSymKey -t 16 -s 2048 -l generic-mV2 -m_value 2 -u 6 -attest

        Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

        Symmetric Key Created.  Key Handle: 9

        Attestation Check : [PASS]

        Cluster Error Status
        Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```

**Example :creación y examen de una clave**  
Este comando crea una clave Triple DES con una etiqueta `3DES_shared` y un ID de `IT-02`. La clave la pueden utilizar el usuario actual y los usuarios 4 y 5. Se produce un error en el comando si el ID no es único en el clúster o si el usuario actual es el usuario 4 o el usuario 5.   
El resultado muestra que la clave nueva tiene el identificador de clave `7`.  

```
Command: genSymKey -t 21 -s 24 -l 3DES_shared -id IT-02 -u 4,5

       Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

        Symmetric Key Created.  Key Handle: 7

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```
Para verificar que la clave 3DES nueva es propiedad del usuario actual y se comparte con los usuarios 4 y 5, utilice **[getKeyInfo](key_mgmt_util-getKeyInfo.md)**. El comando utiliza el identificador que se asignó a la clave nueva (`Key Handle: 7`).  
El resultado confirma que la clave es propiedad del usuario 3 y se comparte con los usuarios 4 y 5.  

```
Command:  getKeyInfo -k 7

        Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

        Owned by user 3

        also, shared to following 2 user(s):

                 4, 5
```
Para confirmar el resto de las propiedades de la clave, utilice [getAttribute](key_mgmt_util-getAttribute.md). El primer comando utiliza `getAttribute` para obtener todos los atributos (`-a 512`) del identificador de clave 7 (`-o 7`). Los escribe en el archivo `attr_7`. El segundo comando utiliza `cat` para obtener el contenido del archivo `attr_7`.   
Este comando confirma que la clave 7 es una clave simétrica de 192 bits (`OBJ_ATTR_VALUE_LEN 0x00000018` o 24 bytes) 3DES (`OBJ_ATTR_KEY_TYPE 0x15`) (`OBJ_ATTR_CLASS 0x04`) con una etiqueta `3DES_shared` (`OBJ_ATTR_LABEL 3DES_shared`) y un ID `IT_02` (`OBJ_ATTR_ID IT-02`). La clave es persistente (`OBJ_ATTR_TOKEN 0x01`) y extraíble (`OBJ_ATTR_EXTRACTABLE 0x01`) y se puede utilizar para el cifrado, el descifrado y el encapsulado.   
Para buscar los atributos de una clave que haya creado, como tipo, longitud, etiqueta e ID, use [getAttribute](key_mgmt_util-getAttribute.md). Para buscar las claves de un usuario concreto, utilice. [getKeyInfo](key_mgmt_util-getKeyInfo.md) Para buscar claves en función de sus valores de atributo, use [findKey](key_mgmt_util-findKey.md). 
Para obtener ayuda para interpretar los atributos de clave, consulte la [AWS CloudHSM referencia de atributo clave para KMU](key-attribute-table.md).  

```
Command:  getAttribute -o 7 -a 512 -out attr_7

got all attributes of size 444 attr cnt 17
Attributes dumped into attr_7 file

        Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS


$  cat attr_7

OBJ_ATTR_CLASS
0x04
OBJ_ATTR_KEY_TYPE
0x15
OBJ_ATTR_TOKEN
0x01
OBJ_ATTR_PRIVATE
0x01
OBJ_ATTR_ENCRYPT
0x01
OBJ_ATTR_DECRYPT
0x01
OBJ_ATTR_WRAP
0x00
OBJ_ATTR_UNWRAP
0x00
OBJ_ATTR_SIGN
0x00
OBJ_ATTR_VERIFY
0x00
OBJ_ATTR_LOCAL
0x01
OBJ_ATTR_SENSITIVE
0x01
OBJ_ATTR_EXTRACTABLE
0x01
OBJ_ATTR_LABEL
3DES_shared
OBJ_ATTR_ID
IT-02
OBJ_ATTR_VALUE_LEN
0x00000018
OBJ_ATTR_KCV
0x59a46e
```
Para usar las claves que crea con estos ejemplos para las operaciones de HMAC, debe establecer `OBJ_ATTR_SIGN` y `OBJ_ATTR_VERIFY` como `TRUE` después de generar la clave. Para establecer estos valores, utilice **setAttribute** en CMU. Para obtener más información, consulte[setAttribute](cloudhsm_mgmt_util-setAttribute.md).

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

**-h**  
Muestra ayuda para el comando.   
Obligatorio: sí

**-t**  
Especifica el tipo de clave simétrica. Escriba la constante que representa el tipo de clave. Por ejemplo, para crear una clave AES, escriba `-t 31`.  
Valores válidos:   
+ 16: [GENERIC\_SECRET](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226962). Una *clave secreta genérica* es una matriz de bytes que no se ajusta a ningún estándar en particular, como, por ejemplo, los requisitos de una clave AES. 
+ 18: [RC4](https://en.wikipedia.org/wiki/RC4). RC4 las claves no son válidas en el modo FIPS HSMs
+ 21: [Triple DES (3DES)](https://en.wikipedia.org/wiki/Triple_DES). 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](compliance-dep-notif.md#compliance-dep-notif-1).
+ 31: [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)
Obligatorio: sí

**-s**  
Especifica el tamaño de la clave en bytes. Por ejemplo, para crear una clave de 192 bits, escriba `24`.   
Valores válidos para cada tipo de clave:  
+ AES: 16 (128 bits), 24 (192 bits), 32 (256 bits)
+ 3DES: 24 (192 bits)
+ Secreta genérica: <3584 (28672 bits)
Obligatorio: sí

**-l**  
Especifica una etiqueta definida por el usuario para la clave. Tipo de cadena.  
Puede utilizar cualquier frase que le ayude a identificar la clave. La etiqueta no tiene por qué ser única, por lo que puede usarla para agrupar y clasificar las claves.   
Obligatorio: sí

**-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.  
Obligatorio: no

**-id**  
Especifica un identificador definido por el usuario para la clave. Escriba una cadena que sea única en el clúster. El valor predeterminado es una cadena vacía.   
Predeterminado: sin valor de ID.  
Obligatorio: no

**-min\_srv**  
Especifica el número mínimo HSMs en el que se sincroniza la clave 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 todas las claves con todos los HSM del clúster. Para acelerar el proceso, defina el valor de en un valor inferior `min_srv` al número de HSMs en el clúster y establezca un valor de tiempo de espera bajo. Sin embargo, tenga en cuenta que puede que algunas solicitudes no generen ninguna clave.  
Predeterminado: 1  
Obligatorio: no

**-m\_value**  
Especifica el número de usuarios que deben aprobar cualquier operación criptográfica que utilice la clave. Escriba un valor de `0` a `8`.  
Este parámetro establece un requisito de autenticación de quórum para la clave. El valor predeterminado, `0`, deshabilita la característica de autenticación de cuórum para la clave. Cuando la autenticación de quórum está activada, el número especificado de usuarios debe firmar un token para aprobar las operaciones criptográficas que utilizan la clave, y las operaciones que comparten o dejan de compartir la clave.  
Para encontrar el `m_value` de una clave, usa [getKeyInfo](key_mgmt_util-getKeyInfo.md).  
Este parámetro solo es válido cuando el parámetro `-u` del comando comparte la clave con suficientes usuarios para satisfacer el requisito `m_value`.  
Predeterminado: 0  
Obligatorio: no

**-nex**  
Hace que la clave no se pueda extraer. La clave que se genera no se puede [exportar desde el HSM](export-keys.md).  
Predeterminado: la clave se puede extraer.  
Obligatorio: no

**-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](key_mgmt_util-setAttribute.md).  
Predeterminado: la clave es persistente.   
Obligatorio: no

**-timeout**  
Especifica cuánto tiempo (en segundos) espera el comando a que una tecla se sincronice con el número HSMs especificado por el `min_srv` parámetro.   
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.  
Obligatorio: no

**-u**  
Comparte la clave con los usuarios especificados. Este parámetro permite a otros usuarios de criptomonedas de HSM (CUs) utilizar esta clave en operaciones criptográficas.  
Escriba una lista separada por comas de los usuarios IDs de HSM, como -. `u 5,6` No incluya el ID de usuario de HSM del usuario actual. [Para encontrar el usuario IDs de HSM CUs en el HSM, usa ListUsers.](key_mgmt_util-listUsers.md) Para compartir o dejar de compartir una clave existente, utilice [shareKey](cloudhsm_mgmt_util-shareKey.md) en cloudhsm\_mgmt\_util.   
Predeterminado: solo el usuario actual puede utilizar la clave.   
Obligatorio: no

## Temas relacionados
<a name="genSymKey-seealso"></a>
+ [exSymKey](key_mgmt_util-exSymKey.md)
+ [Gen Pair RSAKey](key_mgmt_util-genRSAKeyPair.md)
+ [DSAKeyPar de genes](key_mgmt_util-genDSAKeyPair.md)
+ [ECCKeyPar de genes](key_mgmt_util-genECCKeyPair.md)
+ [setAttribute](cloudhsm_mgmt_util-setAttribute.md)