Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cloudhsm

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 414

AWS CloudHSM

Guía del usuario


AWS CloudHSM Guía del usuario

AWS CloudHSM: Guía del usuario


Copyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,
in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits
Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not
be affiliated with, connected to, or sponsored by Amazon.
AWS CloudHSM Guía del usuario

Table of Contents
¿Qué es AWS CloudHSM? .................................................................................................................. 1
Casos de uso ............................................................................................................................ 1
Descargar el procesamiento de SSL/TLS en los servidores web ................................................ 1
Proteger las claves privadas de una entidad de certificación (CA) de emisión ............................... 2
Activar el cifrado de datos transparente (TDE) para bases de datos de Oracle .............................. 2
Clústeres ................................................................................................................................... 2
Arquitectura de clúster ........................................................................................................ 3
Sincronización de clúster ..................................................................................................... 4
Alta disponibilidad y balanceo de carga de clúster ................................................................... 5
Copias de seguridad ................................................................................................................... 6
Información general de los backups ...................................................................................... 7
Seguridad de los backups .................................................................................................... 7
Durabilidad de los backups .................................................................................................. 8
Frecuencia de los backups .................................................................................................. 8
Herramientas y bibliotecas del cliente ............................................................................................ 9
Cliente de AWS CloudHSM .................................................................................................. 9
Herramientas de línea de comandos de AWS CloudHSM ........................................................ 10
Bibliotecas de software de AWS CloudHSM .......................................................................... 10
Usuarios de HSM ..................................................................................................................... 10
Responsable de criptografía previa (PRECO) ........................................................................ 11
Responsable de criptografía (CO) ....................................................................................... 11
Usuario de criptografía (CU) ............................................................................................... 11
Usuario de dispositivos (AU) .............................................................................................. 11
Tabla de permisos de usuario de HSM ................................................................................ 11
Precios .................................................................................................................................... 13
Regiones ................................................................................................................................. 13
Cuotas .................................................................................................................................... 13
Recursos del sistema ........................................................................................................ 14
Introducción ..................................................................................................................................... 15
Creación de administradores de IAM ........................................................................................... 15
Creación de un grupo de usuarios y de administradores de IAM ............................................... 16
Creación de una VPC ............................................................................................................... 17
Crear una subred privada .......................................................................................................... 17
Crear un clúster ........................................................................................................................ 18
Revisión del grupo de seguridad del clúster .................................................................................. 19
Lanzamiento de un cliente EC2 .................................................................................................. 20
Conexión de un instancia EC2 a un clúster .................................................................................. 21
Modificación del grupo de seguridad predeterminado. ............................................................. 21
Conexión de la instancia Amazon EC2 al clúster de AWS CloudHSM ........................................ 22
Creación de un HSM ................................................................................................................. 23
Verificar la identidad del HSM (opcional) ...................................................................................... 23
Información general ........................................................................................................... 24
Obtener los certificados del HSM ........................................................................................ 26
Obtener los certificados raíz ............................................................................................... 28
Verificar las cadenas de certificados .................................................................................... 28
Extraer y comparar las claves públicas ................................................................................ 29
Certificado raíz de AWS CloudHSM ..................................................................................... 30
Inicialización del clúster ............................................................................................................. 31
Obtener el CSR del clúster ................................................................................................ 31
Firmar la CSR .................................................................................................................. 33
Inicializar el clúster ........................................................................................................... 34
Instalar el cliente (Linux) ............................................................................................................ 35
Instalación del cliente y las herramientas de línea de comandos de AWS CloudHSM ................... 35
Editar la configuración del cliente ........................................................................................ 37

iii
AWS CloudHSM Guía del usuario

Instalación del cliente de (Windows) ............................................................................................ 37


Activación del clúster ................................................................................................................. 39
Reconfigurar SSL (opcional) ....................................................................................................... 40
Prácticas recomendadas ............................................................................................................ 42
Directrices operativas básicas de AWS CloudHSM ................................................................. 42
Administración de clústeres ................................................................................................................ 43
Agregar o eliminar HSM ............................................................................................................ 43
Agregar un HSM ............................................................................................................... 43
Eliminación de un HSM ..................................................................................................... 45
Copia de una copia de seguridad entre regiones ........................................................................... 46
Creación de un clúster a partir de una copia de seguridad .............................................................. 47
Eliminación y restauración de una copia de seguridad .................................................................... 48
Eliminación de un clúster ........................................................................................................... 50
Etiquetado de recursos .............................................................................................................. 50
Añadir o actualizar etiquetas .............................................................................................. 51
Visualización de etiquetas .................................................................................................. 52
Eliminación de etiquetas .................................................................................................... 52
Administración de claves y de usuarios de HSM ................................................................................... 54
Administración de usuarios de HSM ............................................................................................ 54
Crear usuarios .................................................................................................................. 54
Enumerar usuarios ............................................................................................................ 55
Cambiar la contraseña de un usuario .................................................................................. 56
Eliminar usuarios .............................................................................................................. 56
Administración de claves ............................................................................................................ 57
Generar claves ................................................................................................................. 57
Importar claves ................................................................................................................. 58
Exportar claves ................................................................................................................. 60
Eliminar claves ................................................................................................................. 61
Compartir y dejar de compartir claves .................................................................................. 61
Usar claves de confianza para controlar el desencapsulamiento de claves ................................. 62
Encapsulamiento de claves AES ......................................................................................... 64
Autenticación de cuórum (M de N) .............................................................................................. 67
Información general sobre la autenticación de cuórum ............................................................ 67
Detalles adicionales sobre la autenticación de cuórum ............................................................ 68
Primera configuración para responsables de criptografía ......................................................... 68
Autenticación de cuórum para responsables de criptografía ..................................................... 72
Cambiar el valor de cuórum para responsables de criptografía ................................................. 78
Herramientas de línea de comandos .................................................................................................... 81
cloudhsm_mgmt_util .................................................................................................................. 81
Introducción ..................................................................................................................... 82
Referencia ....................................................................................................................... 88
key_mgmt_util ......................................................................................................................... 129
Introducción .................................................................................................................... 129
Referencia ...................................................................................................................... 132
Herramienta de configuración .................................................................................................... 218
Sintaxis .......................................................................................................................... 218
Ejemplos ........................................................................................................................ 218
Parámetros ..................................................................................................................... 222
Temas relacionados ........................................................................................................ 223
Uso de las bibliotecas de software .................................................................................................... 224
Biblioteca de PKCS #11 ........................................................................................................... 224
Instalación de la biblioteca de PKCS #11 ............................................................................ 224
Autenticación en PKCS #11 .............................................................................................. 230
Tipos de clave de PKCS #11 admitidos .............................................................................. 231
Mecanismos de PKCS #11 admitidos ................................................................................. 231
Operaciones API de PKCS #11 admitidas ........................................................................... 235
Atributos de PKCS # 11 admitidos ..................................................................................... 236

iv
AWS CloudHSM Guía del usuario

Ejemplos de PKCS#11 ..................................................................................................... 247


Motor dinámico de OpenSSL .................................................................................................... 248
Instalación del motor dinámico de OpenSSL ....................................................................... 248
Biblioteca de Java ................................................................................................................... 251
Instalación de la biblioteca de Java ................................................................................... 251
Mecanismos admitidos ..................................................................................................... 256
Atributos de Java admitidos .............................................................................................. 259
Muestras de Java ........................................................................................................... 266
KeyStore de CloudHSM ................................................................................................... 266
Uso del almacén de claves de AWS CloudHSM con herramientas .......................................... 269
Proveedores de KSP y CNG .................................................................................................... 281
Instalación de los proveedores .......................................................................................... 281
Requisitos previos ........................................................................................................... 283
Asociar una clave con un certificado .................................................................................. 284
Muestra de código .......................................................................................................... 285
Integración de aplicaciones de terceros .............................................................................................. 290
Descarga de SSL/TLS ............................................................................................................. 290
Cómo funciona ............................................................................................................... 290
Descarga de SSL/TLS en Linux ........................................................................................ 291
Descarga de SSL/TLS en Windows ................................................................................... 308
Entidad de certificación de Windows Server ................................................................................ 321
Configuración de requisitos previos .................................................................................... 321
Crear entidad de certificación de Windows Server ................................................................ 322
Firmar una CSR .............................................................................................................. 324
Cifrado de Oracle Database ..................................................................................................... 325
Configuración de requisitos previos .................................................................................... 326
Configuración de la base de datos .................................................................................... 327
Microsoft SignTool ................................................................................................................... 329
Microsoft SignTool con AWS CloudHSM Paso 1: Configurar los requisitos previos ..................... 330
Microsoft SignTool con AWS CloudHSM Paso 2: Crear un certificado de firma .......................... 330
Microsoft SignTool con AWS CloudHSM Paso 3: Firmar un archivo ......................................... 332
Otras integraciones de proveedores externos .............................................................................. 333
Monitoreo de registros ..................................................................................................................... 334
Obtención de los registros del cliente ......................................................................................... 334
Registro de llamadas a la API de AWS CloudHSM con AWS CloudTrail .......................................... 335
Información de AWS CloudHSM en CloudTrail .................................................................... 336
Descripción de las entradas de los archivos de registro de AWS CloudHSM ............................. 336
Monitorización de registros de auditoría ...................................................................................... 337
Cómo funciona el proceso de registro de auditoría ............................................................... 338
Visualización de registros de auditoría en CloudWatch Logs .................................................. 338
Interpretación de los registros de auditoría de HSM .............................................................. 341
Referencia del registro de auditoría ................................................................................... 351
Obtención de las métricas ................................................................................................................ 354
Obtención de las métricas de CloudWatch .................................................................................. 354
Seguridad ...................................................................................................................................... 355
Protección de los datos ............................................................................................................ 355
Cifrado en reposo ........................................................................................................... 356
Cifrado en tránsito ........................................................................................................... 356
Identity and Access Management .............................................................................................. 356
Concesión de permisos mediante políticas de IAM ............................................................... 357
Acciones de la API para AWS CloudHSM ........................................................................... 357
Claves de condición de AWS CloudHSM ............................................................................ 358
Políticas administradas por AWS predefinidas para AWS CloudHSM ....................................... 358
Políticas administradas por el cliente para AWS CloudHSM ................................................... 358
Roles vinculados a servicios ............................................................................................. 360
Validación FIPS ...................................................................................................................... 362
Resiliencia .............................................................................................................................. 362

v
AWS CloudHSM Guía del usuario

Seguridad de la infraestructura .................................................................................................. 363


Aislamiento de red .......................................................................................................... 363
Autorización de usuarios .................................................................................................. 363
Administración de actualizaciones .............................................................................................. 363
Solución de problemas ..................................................................................................................... 364
Problemas conocidos ............................................................................................................... 364
Problemas conocidos para todas las instancias de HSM ....................................................... 364
Problemas conocidos para las instancias Amazon EC2 que ejecutan Amazon Linux 2 ................ 366
Problemas conocidos para el SDK de PKCS#11 .................................................................. 366
Problemas conocidos para el SDK de JCE ......................................................................... 369
Problemas conocidos con el SDK del motor dinámico de OpenSSL ......................................... 370
Problemas conocidos para integrar aplicaciones de terceros .................................................. 371
Conexión perdida .................................................................................................................... 372
Mantener sincronizados los usuarios de HSM .............................................................................. 374
Verificación del desempeño ...................................................................................................... 374
Solución de errores de creación de clústeres .............................................................................. 378
Agregar el permiso que falta ............................................................................................. 378
Crear el rol vinculado a un servicio manualmente ................................................................ 378
Uso de un usuario no federado ......................................................................................... 378
Faltan los registros de auditoría de AWS CloudHSM en CloudWatch ............................................... 379
Recuperación de registros de configuración de los clientes ............................................................ 379
Ejecución del script de registro del cliente ........................................................................... 380
Información de cliente y de software .................................................................................................. 381
Historial de versiones .............................................................................................................. 381
Versión 3.1.1 .................................................................................................................. 381
Versión 3.1.0 .................................................................................................................. 383
Versiones de software y cliente obsoletas ........................................................................... 386
Plataformas compatibles ........................................................................................................... 397
Actualización del cliente ........................................................................................................... 398
Requisitos previos ........................................................................................................... 399
Paso 1: Detenga el cliente ............................................................................................... 402
Paso 2: Actualice el cliente y las bibliotecas ........................................................................ 402
Paso 3: Inicie el cliente .................................................................................................... 403
Historial de revisión ......................................................................................................................... 405
Actualizaciones recientes ......................................................................................................... 405
Actualizaciones anteriores ........................................................................................................ 407

vi
AWS CloudHSM Guía del usuario
Casos de uso

¿Qué es AWS CloudHSM?


AWS CloudHSM dispone de módulos de seguridad de hardware en la nube de AWS. Un módulo de
seguridad de hardware (HSM) es un dispositivo informático que procesa las operaciones criptográficas y
proporciona almacenamiento seguro de las claves criptográficas.

Cuando utiliza un HSM desde AWS CloudHSM, puede realizar diversas tareas criptográficas:

• Generar, almacenar, importar, exportar y administrar claves criptográficas, incluidas las claves simétricas
y los pares de claves asimétricos.
• Utilice los algoritmos simétricos y asimétricos para cifrar y descifrar datos.
• Utilice las funciones de hash criptográficas para computar los resúmenes y los códigos de autenticación
de mensajes basados en hash (HMAC).
• Firmar criptográficamente los datos (incluida la firma de código) y verificar firmas.
• Generar datos aleatorios seguros criptográficamente.

Si busca un servicio administrado para la creación y el control de las claves de cifrado, pero no desea o no
necesita administrar su propio HSM, considere la posibilidad de usar AWS Key Management Service.

Para obtener más información sobre lo que puede hacer con AWS CloudHSM, consulte los temas
siguientes. Cuando esté listo para comenzar a usar AWS CloudHSM, consulte Introducción (p. 15).

Contenido
• Casos de uso de AWS CloudHSM (p. 1)
• Clústeres de AWS CloudHSM (p. 2)
• Copias de seguridad de los clústeres de AWS CloudHSM (p. 6)
• Herramientas y bibliotecas de software del cliente de AWS CloudHSM (p. 9)
• Usuarios de HSM (p. 10)
• Precios (p. 13)
• Regiones (p. 13)
• Cuotas de AWS CloudHSM (p. 13)

Casos de uso de AWS CloudHSM


Los módulos de seguridad de hardware (HSM) de AWS CloudHSM pueden ayudarle a lograr diferentes
objetivos.

Temas
• Descargar el procesamiento de SSL/TLS en los servidores web (p. 1)
• Proteger las claves privadas de una entidad de certificación (CA) de emisión (p. 2)
• Activar el cifrado de datos transparente (TDE) para bases de datos de Oracle (p. 2)

Descargar el procesamiento de SSL/TLS en los


servidores web
Los servidores web y sus clientes (navegadores web) pueden usar la capa de conexión segura (SSL) o
Transport Layer Security (TLS). Estos protocolos confirman la identidad del servidor web y establecen una

1
AWS CloudHSM Guía del usuario
Proteger las claves privadas de una
entidad de certificación (CA) de emisión

conexión segura para enviar y recibir páginas web u otros datos a través de Internet. Esto se denomina
comúnmente HTTPS. El servidor web utiliza un par de claves pública-privada y un certificado de clave
pública SSL/TLS para establecer una sesión HTTPS con cada cliente. Este proceso conlleva un gran
volumen de cómputo para el servidor web, pero puede descargar parte de este cómputo a los HSM de
su clúster de AWS CloudHSM. Esto a veces recibe el nombre de aceleración SSL. La descarga reduce
la carga informática del servidor web y proporciona seguridad adicional al almacenar la clave privada del
servidor en el HSMs.

Para obtener información sobre la configuración de la descarga de SSL/TLS con AWS CloudHSM, consulte
Descarga de SSL/TLS (p. 290).

Proteger las claves privadas de una entidad de


certificación (CA) de emisión
En una infraestructura de clave pública (PKI), una entidad de certificación (CA) es una entidad de
confianza que emite certificados digitales. Estos certificados digitales vinculan una clave pública a una
identidad (una persona u organización) mediante criptografía de clave pública y firmas digitales. Para
operar una CA, debe mantener la confianza protegiendo la clave privada que firma los certificados emitidos
por la CA. Puede almacenar esta clave privada en el HSM del clúster de AWS CloudHSM y usarlo para
realizar las operaciones de firma criptográfica.

Activar el cifrado de datos transparente (TDE) para


bases de datos de Oracle
Algunas versiones del software de base de datos de Oracle ofrecen una característica denominada cifrado
de datos transparente (TDE). Con TDE, el software de base de datos cifra los datos antes de almacenarlos
en el disco. Los datos de las columnas de tabla o de los espacios de tabla de la base de datos se cifran
con una clave de tabla o de espacio de tabla. Estas claves se cifran con la clave de cifrado maestra de
TDE. Puede almacenar la clave de cifrado maestra del TDE en los HSM del clúster de AWS CloudHSM,
que proporciona seguridad adicional.

Para obtener información acerca de la configuración de TDE de Oracle con AWS CloudHSM, consulte
Cifrado de Oracle Database (p. 325).

Clústeres de AWS CloudHSM


AWS CloudHSM proporciona módulos de seguridad de hardware (HSM) en un clúster. Un clúster es
una colección de HSM individuales que AWS CloudHSM mantiene sincronizados. Un clúster se puede
considerar un HSM lógico. Al realizar una tarea o una operación en un HSM en un clúster, el resto de los
HSM de ese clúster se actualizan automáticamente.

Puede crear un clúster que tenga de 1 a 28 HSM (el límite predeterminado (p. 13) es de 6 HSM
por cada cuenta de AWS y cada región de AWS). Puede colocar los HSM en diferentes zonas de
disponibilidad de una región de AWS. Agregar más HSM a un clúster ofrece más desempeño. Distribuir
clústeres en varias zonas de disponibilidad proporciona redundancia y alta disponibilidad.

Conseguir que los distintos HSM funcionen juntos en un clúster sincronizado, redundante y de alta
disponibilidad puede ser difícil, pero AWS CloudHSM se ocupa de algunas de las tareas pesadas. Puede
añadir y eliminar módulos HSM de un clúster y AWS CloudHSM se ocupará de mantenerlos conectados y
sincronizados automáticamente.

Para crear un clúster, consulte Introducción (p. 15).

2
AWS CloudHSM Guía del usuario
Arquitectura de clúster

Para obtener más información sobre los clústeres, consulte los siguientes temas.

Temas
• Arquitectura de clúster (p. 3)
• Sincronización de clúster (p. 4)
• Alta disponibilidad y balanceo de carga de clúster (p. 5)

Arquitectura de clúster
Cuando crea un clúster, tiene que especificar una Amazon Virtual Private Cloud (VPC) en la cuenta de
AWS y una o varias subredes en dicha VPC. Le recomendamos que cree una subred en cada zona de
disponibilidad (AZ) de la región de AWS elegida. Para saber cómo hacerlo, consulte Crear una subred
privada (p. 17).

Cada vez que crea un HSM, debe especificar el clúster y la zona de disponibilidad del HSM. Al colocar los
HSM en diferentes zonas de disponibilidad, obtiene redundancia y alta disponibilidad en el caso de que
una zona de disponibilidad no esté disponible.

Al crear un HSM, AWS CloudHSM incluye una interfaz de red elástica (ENI) en la subred especificada de
la cuenta de AWS. La interfaz de red elástica es la que se usa para interactuar con el HSM. El HSM se
encuentra en una VPC independiente, en una cuenta de AWS que es propiedad de AWS CloudHSM. El
HSM y su interfaz de red correspondiente se encuentran en la misma zona de disponibilidad.

Para interactuar con los HSM de un clúster, necesita el software de cliente de AWS CloudHSM.
Normalmente, el cliente se instala en instancias Amazon EC2, que se denominan instancias de cliente
y que se encuentran en la misma VPC que los ENI de los HSM, tal y como se muestra en la siguiente
ilustración. Esto no es necesario desde el punto de vista técnico; puede instalar el cliente en cualquier
equipo compatible, siempre que pueda conectarse a las ENI de los HSM. El cliente se comunica con cada
uno de los HSM del clúster a través de sus ENI.

La siguiente figura representa el clúster de AWS CloudHSM con tres HSM, cada uno en una zona de
disponibilidad diferente en la VPC.

3
AWS CloudHSM Guía del usuario
Sincronización de clúster

Sincronización de clúster
En un clúster de AWS CloudHSM, AWS CloudHSM mantiene sincronizadas las claves de los HSM
individuales. No tiene que hacer nada para sincronizar las claves en los HSM. Para mantener
sincronizados los usuarios y las políticas de cada HSM, actualice el archivo de configuración del cliente

4
AWS CloudHSM Guía del usuario
Alta disponibilidad y balanceo de carga de clúster

de AWS CloudHSM antes de administrar los usuarios de HSM (p. 54). Para obtener más información,
consulte Mantener sincronizados los usuarios de HSM (p. 374).

Al agregar un HSM nuevo a un clúster, AWS CloudHSM hace una copia de seguridad de todas las claves,
los usuarios y las políticas de un HSM existente. A continuación, restaura ese backup en el nuevo HSM.
De este modo, los dos HSM permanecen sincronizados.

Si los HSM de un clúster no están sincronizados, AWS CloudHSM los vuelve a sincronizar
automáticamente. Para habilitarlo, AWS CloudHSM utiliza las credenciales del usuario de
dispositivos (p. 10). Este usuario existe en todos los HSM proporcionados por AWS CloudHSM y tiene
permisos limitados. Puede obtener un hash de los objetos del HSM, así como insertar y extraer objetos
enmascarados (cifrados). AWS no puede ver ni modificar los usuarios ni las claves y no puede realizar
operaciones criptográficas utilizando estas claves.

Alta disponibilidad y balanceo de carga de clúster


Cuando crea un clúster de AWS CloudHSM con varios HSM, obtiene automáticamente el balanceo
de carga. El balanceo de carga significa que el cliente de AWS CloudHSM (p. 9) distribuye las
operaciones criptográficas entre todos los HSM del clúster en función de la capacidad de procesamiento
adicional de cada uno de ellos.

Al crear los HSM en diferentes zonas de disponibilidad de AWS, obtiene automáticamente una alta
disponibilidad. Alta disponibilidad significa que obtiene mayor fiabilidad porque ningún HSM es un punto
único de error. Es recomendable que tenga un mínimo de dos HSM en cada clúster, cada uno de ellos en
una zona de disponibilidad distinta de una región de AWS.

Por ejemplo, en la figura siguiente se muestra una aplicación de base de datos Oracle que está distribuida
en dos zonas de disponibilidad. Las instancias de base de datos almacenan las claves maestras en un
clúster que tiene un HSM en cada zona de disponibilidad. AWS CloudHSM sincroniza automáticamente las
claves de los dos HSM para que sean accesibles y redundantes de inmediato.

5
AWS CloudHSM Guía del usuario
Copias de seguridad

Copias de seguridad de los clústeres de AWS


CloudHSM
AWS CloudHSM realiza periódicamente copias de seguridad del clúster. No puede ordenar a AWS
CloudHSM que haga copias de seguridad siempre que quiera, pero sí puede ejecutar determinadas
acciones que hacen que AWS CloudHSM realice la copia de seguridad. Para obtener más información,
consulte los siguientes temas.

Cuando añade un HSM a un clúster que anteriormente contenía uno o varios HSM activos, AWS
CloudHSM restaura la copia de seguridad más reciente en el nuevo HSM. Esto significa que puede utilizar
AWS CloudHSM para administrar un HSM que utilice con poca frecuencia. Cuando no necesite utilizar el
HSM, puede eliminarlo, lo que activa un backup. Más tarde, cuando necesite utilizar el HSM de nuevo,
puede crear un HSM nuevo en el mismo clúster, lo que restaura de forma efectiva el HSM anterior.

También puede crear un clúster nuevo a partir de un backup ya existente de otro clúster. Debe crear el
nuevo clúster en la misma región de AWS que contiene la copia de seguridad existente.

Temas
• Información general de los backups (p. 7)
• Seguridad de los backups (p. 7)
• Durabilidad de los backups (p. 8)
• Frecuencia de los backups (p. 8)

6
AWS CloudHSM Guía del usuario
Información general de los backups

Información general de los backups


Cada backup contiene copias cifradas de los siguientes datos:

• Todos los usuarios (CO, CU y AU) (p. 10) del HSM.


• Todo el material de claves y certificados del HSM.
• La configuración y las políticas del HSM.

AWS CloudHSM almacena las copias de seguridad en un bucket de Amazon Simple Storage Service
(Amazon S3) controlado por servicios que se encuentra en la misma región de AWS que el clúster.

Seguridad de los backups


Cuando AWS CloudHSM hace una copia de seguridad del HSM, el HSM cifra todos sus datos antes de
enviarlos a AWS CloudHSM. Los datos nunca salen del HSM en formato de texto no cifrado.

Para cifrar los datos, el HSM utiliza una clave de cifrado única y efímera, conocida como la clave de
backup efímera (EBK). La EBK es una clave de cifrado AES de 256 bits que se genera en el HSM cuando
AWS CloudHSM hace la copia de seguridad. El HSM genera la EBK y, a continuación, la utiliza para cifrar
sus datos con un método de encapsulación de clave AES aprobado por FIPS que cumple la Publicación
especial de NIST 800-38F. A continuación, el HSM ofrece los datos cifrados a AWS CloudHSM. Los datos
cifrados contienen una copia cifrada de la EBK.

Para cifrar la EBK, el HSM utiliza otra clave de cifrado conocida como la clave de backup persistente
(PBK). La PBK también es una clave de cifrado AES de 256 bits. Para generar la PBK, el HSM utiliza una

7
AWS CloudHSM Guía del usuario
Durabilidad de los backups

función de derivación de clave (KDF) aprobada por FIPS en modo contador que cumple la Publicación
especial de NIST 800-108. Los datos de entrada de esta KDF incluyen lo siguiente:

• Una clave de backup de clave de fabricante (MKBK), integrada permanentemente en el hardware del
HSM por parte del fabricante.
• Una clave de copia de seguridad de claves de AWS (AKBK), instalada de forma segura en el HSM
cuando AWS CloudHSM lo configuró inicialmente.

Los procesos de cifrado se resumen en la siguiente figura. La clave de cifrado de backup representa la
clave de backup persistente (PBK) y la clave de backup efímera (EBK).

AWS CloudHSM solo puede restaurar las copias de seguridad en los HSM que son propiedad de AWS
y los ha creado el mismo fabricante. Dado que cada backup contiene todos los usuarios, claves y la
configuración del HSM original, el HSM restaurado contiene las mismas protecciones y controles de
acceso que el original. Los datos restaurados sobrescriben todos los demás datos que pudiera haber en el
HSM antes de la restauración.

Un backup solo contiene datos cifrados. Antes de que las copias de seguridad se almacenen en Amazon
S3, se cifran de nuevo con una clave maestra de cliente (CMK) de AWS Key Management Service (AWS
KMS).

Durabilidad de los backups


AWS CloudHSM almacena las copias de seguridad del clúster en un bucket de Amazon S3 de una cuenta
de AWS controlada por AWS CloudHSM. La durabilidad de las copias de seguridad es la misma que la
de cualquier objeto guardado en Amazon S3. Amazon S3 se ha diseñado para ofrecer una durabilidad del
99,999999999 %.

Frecuencia de los backups


AWS CloudHSM hace una copia de seguridad del clúster al menos una vez cada 24 horas. Además de las
copias de seguridad diarias recurrentes, AWS CloudHSM hace una copia de seguridad cuando se realiza
cualquiera de las siguientes acciones:

• Inicializar el clúster (p. 31).


• Añadir un HSM a un clúster inicializado (p. 43).
• Eliminar un HSM de un clúster (p. 45).

8
AWS CloudHSM Guía del usuario
Herramientas y bibliotecas del cliente

Herramientas y bibliotecas de software del cliente


de AWS CloudHSM
Para administrar y utilizar los HSM de su clúster, utilice el software de cliente de AWS CloudHSM. El
software de cliente incluye varios componentes, tal y como se describe en los siguientes temas.

Temas
• Cliente de AWS CloudHSM (p. 9)
• Herramientas de línea de comandos de AWS CloudHSM (p. 10)
• Bibliotecas de software de AWS CloudHSM (p. 10)

Cliente de AWS CloudHSM


El cliente de AWS CloudHSM es un daemon que se instala y se ejecuta en los hosts de aplicaciones. El
cliente establece y mantiene una conexión cifrada integral con los HSM del clúster de AWS CloudHSM. El
cliente proporciona la conexión fundamental entre sus hosts de aplicaciones y los HSM. La mayoría de los
demás componentes del software de cliente de AWS CloudHSM confían en el cliente para comunicarse
con los HSM. Para comenzar a utilizar el cliente de AWS CloudHSM con Linux, consulte Instalar el cliente
(Linux) (p. 35). Si usa Windows, consulte Instalación del cliente de (Windows) (p. 37).

Cifrado integral del cliente de AWS CloudHSM


La comunicación entre el cliente de AWS CloudHSM y los HSM del clúster se realiza con cifrado integral.
Solo pueden descifrarla el cliente y los HSM.

En el siguiente proceso se explica cómo establece el cliente una comunicación cifrada integral con un
HSM.

1. El cliente establece una conexión Transport Layer Security (TLS) con el servidor que aloja el hardware
del HSM. El grupo de seguridad del clúster únicamente permite el tráfico entrante al servidor desde las
instancias de cliente del grupo de seguridad. El cliente también comprueba el certificado del servidor
para asegurarse de que es un servidor de confianza.

9
AWS CloudHSM Guía del usuario
Herramientas de línea de comandos de AWS CloudHSM

2. A continuación, el cliente establece una conexión cifrada con el hardware del HSM. El HSM tiene el
certificado de clúster firmado por usted con su propia entidad de certificación (CA), y el cliente tiene
el certificado raíz de la CA. Antes de que se establezca la conexión cifrada entre el cliente y el HSM,
el cliente verifica el certificado de clúster del HSM con el certificado raíz. La conexión únicamente se
establece cuando el cliente verifica correctamente que el HSM es de confianza. La conexión cifrada
entre el cliente y el HSM se realiza a través de la conexión cliente–servidor establecida anteriormente.

Herramientas de línea de comandos de AWS


CloudHSM
El software de cliente de AWS CloudHSM dispone de dos herramientas de línea de comandos. Puede
utilizar las herramientas de línea de comandos para administrar los usuarios y las claves en los HSM.
Por ejemplo, puede crear usuarios de HSM, cambiar las contraseñas de los usuarios, crear claves y
mucho más. Para obtener más información sobre estas herramientas, consulte Herramientas de línea de
comandos (p. 81).

Bibliotecas de software de AWS CloudHSM


Puede usar las bibliotecas de software de AWS CloudHSM para integrar sus aplicaciones con los HSM
de un clúster y utilizarlas para el procesamiento criptográfico. Para obtener más información acerca de la
instalación y el uso de las distintas bibliotecas, consulte Uso de las bibliotecas de software (p. 224).

Usuarios de HSM
La mayoría de las operaciones que realiza en el HSM requieren las credenciales de un usuario de HSM. El
HSM autentica a cada usuario del HSM mediante un nombre de usuario y una contraseña.

Cada usuario del HSM tiene un tipo que determina las operaciones que puede realizar en el HSM. En los
siguientes temas se explican los tipos de usuarios de HSM.

Temas

10
AWS CloudHSM Guía del usuario
Responsable de criptografía previa (PRECO)

• Responsable de criptografía previa (PRECO) (p. 11)


• Responsable de criptografía (CO) (p. 11)
• Usuario de criptografía (CU) (p. 11)
• Usuario de dispositivos (AU) (p. 11)
• Tabla de permisos de usuario de HSM (p. 11)

Responsable de criptografía previa (PRECO)


El responsable de criptografía previa (PRECO) es un usuario temporal que solo existe en el primer
HSM de un clúster de AWS CloudHSM. El primer HSM de un nuevo clúster contiene un usuario
PRECO predeterminado con un nombre de usuario y contraseña predeterminados. Para activar un
clúster (p. 39), inicie sesión en el HSM y cambie la contraseña del usuario PRECO. Al cambiar la
contraseña, el usuario PRECO se convierte en un responsable de criptografía (CO). El usuario PRECO
solo puede cambiar su contraseña y realizar operaciones de solo lectura en el HSM.

Responsable de criptografía (CO)


Un responsable de criptografía (CO) puede realizar operaciones de administración de usuarios. Por
ejemplo, un CO puede crear y eliminar usuarios, así como cambiar las contraseñas de los usuarios. Para
obtener más información, consulte la Tabla de permisos de usuario de HSM (p. 11). Cuando se activa
un clúster nuevo (p. 39), el usuario cambia de responsable de criptografía previa (p. 11) (PRECO) a
responsable de criptografía (CO).

Usuario de criptografía (CU)


Un usuario de criptografía (CU) puede realizar las siguientes operaciones de administración de claves y
criptografía.

• Administración de claves: puede crear, eliminar, compartir, importar y exportar claves criptográficas.
• Operaciones criptográficas: puede utilizar claves criptográficas para cifrar, descifrar, firmar, verificar, etc.

Para obtener más información, consulte Tabla de permisos de usuario de HSM (p. 11).

Usuario de dispositivos (AU)


El usuario de dispositivos (AU) puede realizar operaciones de clonación y sincronización. AWS CloudHSM
utiliza el AU para sincronizar los HSM de un clúster de AWS CloudHSM. El AU existe en todos los HSM
proporcionados por AWS CloudHSM y tiene permisos limitados. Para obtener más información, consulte
Tabla de permisos de usuario de HSM (p. 11).

AWS utiliza el AU para realizar operaciones de clonación y sincronización en los HSM del clúster.
AWS no puede realizar ninguna operación en los HSM salvo aquellas para las que el AU y los usuarios
autenticados tengan permiso. AWS no puede ver ni modificar usuarios o claves y no puede realizar
operaciones criptográficas utilizando estas claves.

Tabla de permisos de usuario de HSM


En la siguiente tabla se enumeran las operaciones de HSM y si cada tipo de usuario de HSM puede
realizarlas.

11
AWS CloudHSM Guía del usuario
Tabla de permisos de usuario de HSM

  Responsable de Usuario de Usuario de Usuario sin


criptografía (CO) criptografía (CU) dispositivos (AU) autenticar

Obtener Sí Sí Sí Sí
información básica
del clúster¹

Poner a cero un Sí Sí Sí Sí
HSM²

Cambiar su propia Sí Sí Sí No aplicable


contraseña

Cambiar la Sí No No No
contraseña de
cualquier usuario

Agregar o eliminar Sí No No No
usuarios

Obtener el estado Sí Sí Sí No
de sincronización³

Extraer o Sí Sí Sí No
insertar objetos
enmascarados⁴

Funciones de No Sí No No
administración de
claves⁵

Cifrar o descifrar No Sí No No

Firmar o verificar No Sí No No

Generar No Sí No No
resúmenes y
HMAC

¹La información básica sobre el clúster incluye el número de HSM que hay en el clúster y la dirección IP, el
modelo, el número de serie, el ID de dispositivo, el ID de firmware, etc. de cada HSM.

²Cuando un HSM se pone a cero, se destruyen todas las claves, certificados y demás datos del HSM.
Puede utilizar el grupo de seguridad de su clúster para evitar que un usuario sin autenticar ponga a cero el
HSM. Para obtener más información, consulte Crear un clúster (p. 18).

³El usuario puede obtener un conjunto de resúmenes (hashes) que se corresponden con las claves
del HSM. Una aplicación puede comparar estos conjuntos de resúmenes para conocer el estado de la
sincronización de los HSM de un clúster.

⁴Los objetos enmascarados son claves que se cifran antes de salir del HSM. No se pueden descifrar fuera
del HSM. Solo se descifran después de insertarlos en un HSM que se encuentra en el mismo clúster que el
HSM del que se extrajeron. Una aplicación puede extraer e insertar objetos enmascarados para sincronizar
los HSM de un clúster.

⁵Las funciones de administración de claves incluyen la creación, eliminación, encapsulación y modificación


de los atributos de las claves.

12
AWS CloudHSM Guía del usuario
Precios

Precios
Con AWS CloudHSM, paga por horas, sin compromisos a largo plazo ni pagos iniciales. Para obtener más
información, consulte Precios de AWS CloudHSM en el sitio web de AWS.

Regiones
Para obtener información acerca de las regiones admitidas para AWS CloudHSM, consulte Regiones y
puntos de enlace de AWS CloudHSM en la AWS General Reference o en la tabla de regiones.

Al igual que la mayoría de los recursos de AWS, los clústeres y HSM son recursos regionales. Para crear
HSM en varias regiones, primero debe crear un clúster en cada región. No es posible reutilizar o ampliar un
clúster entre regiones. Debe realizar todos los pasos necesarios que se muestran en Introducción a AWS
CloudHSM (p. 15) para crear un clúster en una nueva región.

Es posible que AWS CloudHSM no esté disponible en todas las zonas de disponibilidad de una región
determinada. Sin embargo, esto no debe afectar al desempeño, ya que AWS CloudHSM balancea la carga
automáticamente en todos los HSM de un clúster.

Cuotas de AWS CloudHSM


Las cuotas, antes conocidas como límites, son los valores asignados a los recursos de AWS. Las
siguientes cuotas se aplican a los recursos de AWS CloudHSM en cada región de AWS y en cada cuenta
de AWS. La cuota predeterminada es el valor inicial que AWS aplica. Estos valores se indican en la tabla
siguiente. Las cuotas ajustables pueden incrementarse por encima de la cuota predeterminada.

Cuotas de servicio

Recurso Cuota predeterminada ¿Ajustable?

Clústeres 4 Sí

HSM 6 Sí

HSM por clúster 28 No

Las cuotas de la siguiente tabla de cuotas del sistema no son ajustables.

Cuotas del sistema

Recurso Quota

Claves por clúster 3300

Número de usuarios por clúster 1 024

Longitud máxima de un nombre de usuario 31 caracteres

Longitud de contraseña obligatoria De 7 a 32 caracteres

Número máximo de clientes simultáneos 900

13
AWS CloudHSM Guía del usuario
Recursos del sistema

La forma recomendada de solicitar un aumento de cuota es abrir la consola de cuotas de servicio. En


la consola, elija el servicio y la cuota, y envíe la solicitud. Para obtener más información, consulte la
documentación de las cuotas de servicio.

Recursos del sistema


Las cuotas de los recursos del sistema son cuotas que determinan qué puede utilizar el cliente de AWS
CloudHSM cuando se ejecuta.

Los descriptores de archivos son un mecanismo del sistema operativo para identificar y administrar los
archivos abiertos en cada proceso.

El demonio del cliente de CloudHSM utiliza descriptores de archivos para administrar las conexiones entre
las aplicaciones y el cliente, así como entre el cliente y el servidor.

De forma predeterminada, la configuración del cliente de CloudHSM asignará 3000 descriptores de


archivo. Este valor predeterminado está diseñado para ofrecer una sesión óptima y brindar capacidad de
subprocesamiento entre el demonio del cliente y los HSM.

En circunstancias excepcionales, si ejecuta el cliente en un entorno con recursos restringidos, tal vez sea
necesario modificar estos valores predeterminados.
Note

Al cambiar estos valores, el rendimiento del cliente de CloudHSM podría verse afectado o la
aplicación podría quedar inoperativa.

1. Edite el archivo /etc/security/limits.d/cloudhsm.conf.

#
# DO NOT EDIT THIS FILE
#
hsmuser soft nofile 3000
hsmuser hard nofile 3000

2. Modifique los valores numéricos según sea necesario.


Note

La cuota de soft debe ser inferior o igual a la cuota de hard.


3. Reinicie el proceso del demonio del cliente de CloudHSM.

Note

Esta opción de configuración no está disponible en las plataformas de Microsoft Windows.

14
AWS CloudHSM Guía del usuario
Creación de administradores de IAM

Introducción a AWS CloudHSM


Lo siguiente le ayuda a crear, inicializar y activar un clúster de AWS CloudHSM. Después de completar
estos procedimientos, estará preparado para administrar usuarios y clústeres, y para utilizar las bibliotecas
de software incluidas para realizar operaciones criptográficas.

Contenido
• Creación de grupos administrativos de IAM (p. 15)
• Crear una nube virtual privada (VPC) (p. 17)
• Crear una subred privada (p. 17)
• Crear un clúster (p. 18)
• Revisión del grupo de seguridad del clúster (p. 19)
• Lanzamiento una instancia de cliente de Amazon EC2 (p. 20)
• Conexión de una instancia Amazon EC2 a un Cluster de AWS CloudHSM (p. 21)
• Creación de un HSM (p. 23)
• Verificar la identidad y la autenticidad del HSM de un clúster (opcional) (p. 23)
• Inicialización del clúster (p. 31)
• Instalación y configuración del cliente de AWS CloudHSM (Linux) (p. 35)
• Instalación y configuración del cliente de AWS CloudHSM (Windows) (p. 37)
• Activación del clúster (p. 39)
• Reconfigurar SSL con un nuevo certificado y clave privada (opcional) (p. 40)
• Prácticas recomendadas para AWS CloudHSM (p. 42)

Creación de grupos administrativos de IAM


Como práctica recomendada, no utilice su Usuario de la cuenta raíz de AWS para interactuar con AWS,
incluido el AWS CloudHSM. En su lugar, utilice AWS Identity and Access Management (IAM) para crear
un usuario de IAM, una función de IAM o un usuario federado. Siga los pasos de la sección Creación de
un grupo de usuarios y de administradores de IAM (p. 16) para crear un grupo de administradores y
adjuntarle la política AdministratorAccess. A continuación, cree un usuario administrador y agréguelo al
grupo. Puede agregar usuarios adicionales al grupo según sea necesario. Cada usuario que se agrega
hereda la política AdministratorAccess del grupo.

Otra práctica recomendada consiste en crear un grupo de administradores de AWS CloudHSM que solo
tenga los permisos necesarios para ejecutar AWS CloudHSM. Puede agregar usuarios individuales a este
grupo según sea necesario. Cada usuario hereda los permisos limitados que se han asociado al grupo
en lugar de tener acceso completo a AWS. La sección Políticas administradas por el cliente para AWS
CloudHSM (p. 358) siguiente contiene la política que debe asociar a su grupo de administradores de
AWS CloudHSM.

AWS CloudHSM define un rol vinculado al servicio para la cuenta de AWS. En la actualidad, la función
vinculada al servicio define los permisos que permiten a su cuenta registrar eventos de AWS CloudHSM.
Puede crear manualmente la función o dejar que AWS CloudHSM la cree de forma automática. No puede

15
AWS CloudHSM Guía del usuario
Creación de un grupo de usuarios
y de administradores de IAM

editar el rol, pero puede eliminarlo. Para obtener más información, consulte Roles vinculados a servicios de
AWS CloudHSM (p. 360).

Creación de un grupo de usuarios y de


administradores de IAM
Para comenzar, cree un usuario de IAM junto con un grupo de administradores para ese usuario.

Para crearse usted mismo un usuario administrador y agregarlo a un grupo de administradores


(consola)

1. Utilice la dirección de correo electrónico y la contraseña de su cuenta de AWS para iniciar sesión
como Usuario de la cuenta raíz de AWS en la consola de IAM en https://console.aws.amazon.com/
iam/.
Note

Le recomendamos que siga la práctica recomendada de utilizar el usuario de IAM


Administrator como se indica a continuación y guardar de forma segura las credenciales
de usuario raíz. Inicie sesión como usuario raíz únicamente para realizar algunas tareas de
administración de servicios y de cuentas.
2. En el panel de navegación, elija Users (Usuarios) y, a continuación, elija Add user (Añadir usuario).
3. En User name (Nombre de usuario), escriba Administrator.
4. Marque la casilla situada junto a Consola de administración de AWS access (Acceso a la Consola de
administración de AWS). A continuación, seleccione Custom password (Contraseña personalizada) y
luego escriba la nueva contraseña en el cuadro de texto.
5. (Opcional) De forma predeterminada, AWS requiere al nuevo usuario que cree una nueva contraseña
la primera vez que inicia sesión. Puede quitar la marca de selección de la casilla de verificación
situada junto a User must create a new password at next sign-in (El usuario debe crear una nueva
contraseña en el siguiente inicio de sesión) para permitir al nuevo usuario restablecer su contraseña
después de iniciar sesión.
6. Elija Next: Permissions.
7. En Set permissions (Establecer persmisos), elija Add user to group (Añadir usuario a grupo).
8. Elija Create group (Crear grupo).
9. En el cuadro de diálogo Create group (Crear grupo), en Group name (Nombre del grupo) escriba
Administrators.
10. Elija Filter policies (Filtrar políticas) y, a continuación, seleccione AWS managed -job function (Función
de trabajo administrada por AWS) para filtrar el contenido de la tabla.
11. En la lista de políticas, active la casilla de verificación AdministratorAccess. A continuación, elija
Create group (Crear grupo).
Note

Debe activar el acceso de usuarios y roles de IAM a Facturación para poder utilizar la los
permisos AdministratorAccess para el acceso a la consola de AWS Billing and Cost
Management. Para ello, siga las instrucciones que se indican en el paso 1 del tutorial sobre
cómo delegar el acceso a la consola de facturación.
12. Retroceda a la lista de grupos y active la casilla de verificación del nuevo grupo. Elija Refresh si es
necesario para ver el grupo en la lista.
13. Elija Next: Tags (Siguiente: Etiquetas).
14. (Opcional) Añadir metadatos al rol asociando las etiquetas como pares de clave-valor. Para obtener
más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades de IAM en la
Guía del usuario de IAM.

16
AWS CloudHSM Guía del usuario
Creación de una VPC

15. Elija Next: Review para ver la lista de suscripciones a grupos que se van a añadir al nuevo usuario.
Cuando esté listo para continuar, elija Create user (Crear usuario).

Puede usar este mismo proceso para crear más grupos y usuarios y para conceder a los usuarios acceso
a los recursos de la cuenta de AWS. Para obtener información sobre cómo usar las políticas que restringen
los permisos de los usuarios a recursos de AWS específicos, consulte Administración de acceso y Políticas
de ejemplo.

Para políticas de ejemplo para las AWS CloudHSM que puede asociar al grupo de usuarios de IAM,
consulte Identity and Access Management para AWS CloudHSM (p. 356).

Crear una nube virtual privada (VPC)


Si aún no tiene una Virtual Private Cloud (VPC), créela ahora.

Para crear una VPC

1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.


2. En la barra de navegación, utilice el selector de regiones para elegir una de las regiones de AWS
donde se admite AWS CloudHSM actualmente:
3. Elija Start VPC Wizard.
4. Elija la primera opción, VPC with a Single Public Subnet. A continuación, elija Select.
5. En VPC name: (Nombre de VPC), escriba un nombre identificable, como CloudHSM. En Subnet name:
(Nombre de subred), escriba un nombre identificable, como CloudHSM public subnet. Deje el
resto de opciones con sus valores predeterminados. A continuación, elija Create VPC. Una vez creada
la VPC, elija Aceptar.

Crear una subred privada


Cree una subred privada (una subred que no tenga asociado un puerto de enlace a Internet) para cada
zona de disponibilidad donde desee crear un HSM. Las subredes privadas están disponibles en todas las
zonas de disponibilidad de AWS. Aunque AWS CloudHSM no se admita en una zona de disponibilidad
determinada, el clúster de HSM seguirá funcionando como se espera si se añade la compatibilidad más
adelante. La creación de una subred privada en cada zona de disponibilidad ofrece la configuración de alta
disponibilidad más robusta. Visite Regiones y puntos de enlace de AWS en la AWS General Reference o la
Tabla de regiones de AWS para ver la disponibilidad de regiones y zonas de AWS CloudHSM.

Para crear las subredes privadas en la VPC

1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.


2. En el panel de navegación, elija Subnets. A continuación, elija Create Subnet.
3. En el cuadro de diálogo Create Subnet, haga lo siguiente:

a. En Name tag (Asignar nombre a la etiqueta), escriba un nombre identificable, como CloudHSM
private subnet.
b. Para VPC, elija la VPC que ha creado anteriormente.
c. En Availability Zone, elija la primera zona de disponibilidad de la lista.
d. En CIDR block, escriba el bloque de CIDR que se usará para la subred. Si ha usado los valores
predeterminados de la VPC en el procedimiento anterior, escriba 10.0.1.0/28.

Elija Yes, Create.

17
AWS CloudHSM Guía del usuario
Crear un clúster

4. Repita los pasos 2 y 3 para crear subredes para cada zona de disponibilidad restante de la región. En
los bloques de CIDR de la subred, puede utilizar 10.0.2.0/28, 10.0.3.0/28, etc.

Crear un clúster
Un clúster es una colección de HSM individuales. AWS CloudHSM sincroniza los HSM de cada clúster
para que funcionen como una unidad lógica.
Important
Cuando crea un clúster, el AWS CloudHSM crea una función vinculada al servicio llamada
AWSServiceRoleForCloudHSM. Si AWS CloudHSM no puede crear la función o esta no existe,
es posible que no se pueda crear un clúster. Para obtener más información, consulte Solución de
errores de creación de clústeres (p. 378). Para obtener más información acerca de las funciones
vinculadas a servicios, consulte Roles vinculados a servicios de AWS CloudHSM (p. 360).

Cuando crea un clúster, AWS CloudHSM genera un grupo de seguridad para el clúster en su nombre. Este
grupo de seguridad controla el acceso de red a los HSM del clúster. Este grupo solamente permite las
conexiones entrantes que proceden de las instancias Amazon Elastic Compute Cloud (Amazon EC2) que
están en el grupo de seguridad. De forma predeterminada, el grupo de seguridad no contiene instancias.
Posteriormente, debe lanzar una instancia de cliente (p. 20) y configurar el grupo de seguridad del
clúster (p. 19) para permitir la comunicación y las conexiones con los HSM.

Puede crear un clúster a partir de la consola de AWS CloudHSM, la AWS Command Line Interface (AWS
CLI) o la API de AWS CloudHSM.

Para crear un clúster (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. En la barra de navegación, utilice el selector de regiones para elegir una de las regiones de AWS
donde se admite AWS CloudHSM actualmente:
3. Elija Create cluster.
4. En la sección Cluster configuration, haga lo siguiente:

a. En VPC, seleccione la VPC que ha creado.


b. En AZ(s) (Zonas de disponibilidad), junto a cada zona de disponibilidad, elija la subred privada
que ha creado.
Note
Aunque AWS CloudHSM no se admita dentro de una determinada zona de
disponibilidad, el desempeño no debería verse afectado, ya que AWS CloudHSM
balancea la carga automáticamente en todos los HSM de un clúster. Consulte Regiones
y puntos de enlace de AWS CloudHSM en la AWS General Reference para ver las zonas
de disponibilidad admitidas en AWS CloudHSM.
5. Elija Next: Review.
6. Revise la configuración del clúster y, a continuación, elija Create cluster (Crear clúster).

Pasos para crear un clúster (AWS CLI)

• En el símbolo del sistema, ejecute el comando create-cluster. Especifique el tipo de instancia de


HSM y los ID de subred de las subredes donde piensa crear los HSM. Utilice los ID de las subredes
privadas que ha creado. Especifique solo una subred por zona de disponibilidad.

$ aws cloudhsmv2 create-cluster --hsm-type hsm1.medium --subnet-ids <subnet ID


1> <subnet ID 2> <subnet ID N>

18
AWS CloudHSM Guía del usuario
Revisión del grupo de seguridad del clúster

{
"Cluster": {
"BackupPolicy": "DEFAULT",
"VpcId": "vpc-50ae0636",
"SubnetMapping": {
"us-west-2b": "subnet-49a1bc00",
"us-west-2c": "subnet-6f950334",
"us-west-2a": "subnet-fd54af9b"
},
"SecurityGroup": "sg-6cb2c216",
"HsmType": "hsm1.medium",
"Certificates": {},
"State": "CREATE_IN_PROGRESS",
"Hsms": [],
"ClusterId": "cluster-igklspoyj5v",
"CreateTimestamp": 1502423370.069
}
}

Para crear un clúster (API de AWS CloudHSM)

• Envíe una solicitud CreateCluster. Especifique el tipo de instancia de HSM y los ID de subred de
las subredes donde piensa crear los HSM. Utilice los ID de las subredes privadas que ha creado.
Especifique solo una subred por zona de disponibilidad.

Si sus intentos de crear un clúster no tienen éxito, es posible que se debe a algún problema con las
funciones vinculadas a servicios de AWS CloudHSM. Para ayudar a resolver el error, consulte Solución de
errores de creación de clústeres (p. 378).

Revisión del grupo de seguridad del clúster


Al crear un clúster, AWS CloudHSM crea un grupo de seguridad denominado cloudhsm-
cluster-clusterID-sg. Este grupo de seguridad contiene una regla TCP preconfigurada que permite
la comunicaciones de entrada y de salida en el grupo de seguridad del clúster en los puertos 2223-2225.
Esta regla permite que los HSM del clúster se comuniquen entre sí.
Warning

Tenga en cuenta lo siguiente:

• No elimine ni modifique la regla TCP preconfigurada que existe en el grupo de seguridad del
clúster. Esta regla puede evitar problemas de conectividad y el acceso no autorizado a los
HSM.
• El grupo de seguridad del clúster impide el acceso no autorizado a los HSM. Cualquier usuario
que puede tener acceso a las instancias del grupo de seguridad también puede tener acceso
a los HSM. La mayoría de las operaciones requieren que un usuario inicie sesión en el HSM.
Sin embargo, es posible poner a cero los HSM sin autenticación, lo que destruye el material
de claves, los certificados y los demás datos. Si sucede esto, los datos creados o modificados
después de la copia de seguridad más reciente se pierden y no se pueden recuperar. Para
evitar el acceso no autorizado, asegúrese de que solo los administradores de confianza pueden
modificar o tener acceso a las instancias del grupo de seguridad predeterminado.

En el siguiente paso, puede lanzar una instanciaAmazon EC2 (p. 20) y conectarla a los HSM asociando
a ella el grupo de seguridad del clúster (p. 21).

19
AWS CloudHSM Guía del usuario
Lanzamiento de un cliente EC2

Lanzamiento una instancia de cliente de Amazon


EC2
Para administrar un clúster de AWS CloudHSM y las instancias de HSM e interactuar con ellos, es
necesario que pueda comunicarse con las interfaces de red elásticas de los HSM. La forma más sencilla
de hacerlo es utilizar una instancia EC2 en la misma VPC que el clúster. También puede utilizar los
siguientes recursos de AWS para conectarse al clúster:

• Interconexión de Amazon VPC


• AWS Direct Connect
• Conexiones de VPN

En la documentación de AWS CloudHSM, normalmente se presupone que está utilizando una instancia
EC2 situada en la misma VPC y en la misma zona de disponibilidad (AZ) en las que se va a crear el
clúster.

Para crear una instancia EC2;

1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.


2. En el panel de EC2, elija Launch Instance (Lanzar instancia).
3. Elija Select (Seleccionar) para seleccionar una imagen de máquina de Amazon (AMI). Elija una AMI de
Linux o una AMI de Windows Server.
4. Elija un tipo de instancia y, a continuación, elija Next: Configure Instance Details (Siguiente: Configurar
detalles de la instancia).
5. En Red, elija la VPC que ha creado anteriormente para el clúster.
6. En Subnet (Subred), elija la subred pública que ha creado para la VPC.
7. En Auto-assign Public IP, elija Enable.
8. Elija Next: Add Storage (Siguiente: Añadir almacenamiento) y configure el almacenamiento.
9. Seleccione Next: Add Tags (Siguiente: Añadir etiquetas) y añada los pares de nombre–valor que
desee asociar a la instancia. Le recomendamos que al menos agregue un nombre. Elija Agregar
etiqueta y escriba un nombre para Clave y hasta 255 caracteres para Valor.
10. Elija Next: Configure Security Group (Siguiente: Configurar grupo de seguridad).
11. En Assign a security group (Asignar un grupo de seguridad), elija Select an existing security group
(Seleccionar un grupo de seguridad existente).
12. Elija el grupo de seguridad predeterminado de Amazon VPC en la lista.
13. Elija Review and Launch.

En la página Review Instance Launch, elija Launch.


14. Cuando se le pida un par de claves, elija Create a new key pair (Crear un nuevo par de claves),
escriba un nombre para el par de claves y elija Download Key Pair (Descargar par de claves). Esta
es la única oportunidad que tiene para guardar el archivo de clave privada, así que descárguelo
y guárdelo en un lugar seguro. Proporcione el nombre del par de claves al lanzar una instancia.
Además, debe proporcionar la clave privada correspondiente cada vez que se conecte a la instancia.
A continuación, elija el par de claves que creó durante la configuración inicial.

También puede utilizar un par de claves existente. Elija Choose an existing key pair (Elegir un par de
claves existente) y, a continuación, el par de claves que desee.
Warning

No elija Proceed without a key pair (Continuar sin un par de claves). Si lanza la instancia sin
un par de claves, no podrá conectarse a ella.

20
AWS CloudHSM Guía del usuario
Conexión de un instancia EC2 a un clúster

Cuando esté listo, seleccione la casilla de confirmación y después elija Launch Instances.

Para obtener más información acerca de la creación de un cliente de Amazon EC2, consulte Introducción a
las instancias Amazon EC2 Linux. Para obtener información acerca de la conexión al cliente en ejecución,
consulte los siguientes temas:

• Conexión a la instancia de Linux mediante SSH


• Conexión a la instancia Linux desde Windows utilizando PuTTY

La guía del usuario de Amazon EC2 contiene instrucciones detalladas para configurar y utilizar las
instancias Amazon EC2. La siguiente lista proporciona información general sobre la documentación
disponible para los clientes de Amazon EC2 de Linux y Windows:

• Para crear un cliente de Amazon EC2 de Linux, consulte Introducción a las instancias Amazon EC2 de
Linux.

Para obtener información acerca de la conexión al cliente en ejecución, consulte los siguientes temas:
• Conexión a la instancia de Linux mediante SSH
• Conexión a la instancia de Linux desde Windows mediante PuTTY
• Para crear un cliente de Amazon EC2 de Windows, consulte Introducción a las instancias Amazon
EC2 de Windows. Para obtener más información acerca de cómo conectarse a su cliente de Windows,
consulte Conectarse a su instancia de Windows.

Note
La instancia EC2 puede ejecutar todos los comandos de la AWS CLI contenidos en esta guía. Si
la AWS CLI no está instalada, puede descargarla desde AWS Command Line Interface. Si utiliza
Windows, puede descargar y ejecutar un instalador de Windows de 64 o 32 bits. Si utiliza Linux o
macOS, puede instalar la CLI con pip.

Conexión de una instancia Amazon EC2 a un


Cluster de AWS CloudHSM
Cuando lanzó una instancia Amazon EC2, la asoció a un grupo de seguridad predeterminado de la
Amazon VPC. En este tema, se explica cómo asociar el grupo de seguridad del clúster a la instancia EC2.
Esta asociación permite al cliente de AWS CloudHSM que se ejecuta en la instancia EC2 comunicarse con
los HSM. Para conectar la instancia EC2 al clúster de AWS CloudHSM, debe configurar correctamente el
grupo de seguridad predeterminado de la VPC y asociar el grupo de seguridad del clúster a la instancia.

Modificación del grupo de seguridad predeterminado.


Es necesario modificar el grupo de seguridad predeterminado para permitir la conexión SSH o RDP para
descargar e instalar el software de cliente e interactuar con el HSM.

Para modificar el grupo de seguridad predeterminado

1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.


2. En el panel de Amazon EC2, seleccione la casilla de verificación de la instancia EC2 en la que desea
instalar el cliente de AWS CloudHSM.
3. En la pestaña Description (Descripción), elija el grupo de seguridad denominado Default
(Predeterminado).

21
AWS CloudHSM Guía del usuario
Conexión de la instancia Amazon
EC2 al clúster de AWS CloudHSM

4. En la parte superior de la página, elija Actions (Acciones) y, a continuación, Edit inbound rules (Editar
reglas de entrada).
5. Seleccione Add Rule (Añadir regla).
6. En Type (Tipo), realice una de las operaciones siguientes:
• Para una instancia Amazon EC2 de Windows Server, elija RDP. El rango de puertos 3389 se
rellena automáticamente.
• Para una instancia Amazon EC2 de Linux, elija SSH. El rango de puertos 22 se rellena
automáticamente.
7. Para cualquiera de las opciones, establezca Source (Origen) en My IP (Mi IP) para permitir que el
cliente se comunique con el clúster de AWS CloudHSM.
Important

No especifique 0.0.0.0/0 como rango de puertos para evitar permitir que cualquier persona
para tener acceso a la instancia.
8. Elija Save (Guardar).

Conexión de la instancia Amazon EC2 al clúster de


AWS CloudHSM
Debe asociar el grupo de seguridad del clúster a la instancia EC2, de modo que la instancia EC2 pueda
comunicarse con los HSM del clúster. El grupo de seguridad del clúster contiene una regla preconfigurada
que permite la comunicación entrante en los puertos 2223-2225.

Para conectar la instancia EC2 al clúster de AWS CloudHSM

1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.


2. En el panel de Amazon EC2, seleccione la casilla de verificación de la instancia EC2 en la que desea
instalar el cliente de AWS CloudHSM.
3. En la parte superior de la página, elija Actions (Acciones), Networking (Redes) y, a continuación,
Change Security Groups (Cambiar grupos de seguridad).
4. Seleccione el grupo de seguridad cuyo nombre coincida con el ID del clúster, por ejemplo, cloudhsm-
cluster-clusterID-sg.
5. Seleccione Assign Security Groups (Asignar grupos de seguridad).

Note

Puede asignar un máximo de cinco grupos de seguridad a una instancia Amazon EC2. Si ha
alcanzado el límite máximo, debe modificar el grupo de seguridad predeterminado de la instancia
Amazon EC2 y el grupo de seguridad del clúster:

En el grupo de seguridad predeterminado, haga lo siguiente:

• Añada una regla de salida para permitir el tráfico en todos los puertos hacia 0.0.0.0/0.
• Añada una regla de entrada para permitir el tráfico mediante el protocolo TCP en los puertos
2223-2225 desde el grupo de seguridad del clúster.

En el grupo de seguridad del clúster, haga lo siguiente:

• Añada una regla de salida para permitir el tráfico en todos los puertos hacia 0.0.0.0/0.
• Añada una regla de entrada para permitir el tráfico mediante el protocolo TCP a través de
puertos 2223-2225 desde el grupo de seguridad predeterminado.

22
AWS CloudHSM Guía del usuario
Creación de un HSM

Creación de un HSM
Después de crear un clúster, puede crear un HSM. Sin embargo, para poder crear un HSM en su clúster,
este debe encontrarse en el estado sin inicializar. Para determinar el estado del clúster, consulte la página
de clústeres en la consola de AWS CloudHSM, utilice la AWS CLI para ejecutar el comando describe-
clusters o envíe una solicitud DescribeClusters en la API de AWS CloudHSM. Puede crear un HSM desde
la consola de AWS CloudHSM, la AWS CLI o la API de AWS CloudHSM.

Para crear un HSM (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija Initialize junto al clúster que creó anteriormente.
3. Elija una zona de disponibilidad (AZ) para el HSM que está creando. A continuación, elija Create.

Para crear un HSM (AWS CLI)

• En el símbolo del sistema, ejecute el comando create-hsm. Especifique el ID del clúster que ha creado
anteriormente y una zona de disponibilidad para el HSM. Especifique la zona de disponibilidad con el
formato us-west-2a, us-west-2b, etc.

$ aws cloudhsmv2 create-hsm --cluster-id <cluster ID> --availability-zone <Availability


Zone>

{
"Hsm": {
"HsmId": "hsm-ted36yp5b2x",
"EniIp": "10.0.1.12",
"AvailabilityZone": "us-west-2a",
"ClusterId": "cluster-igklspoyj5v",
"EniId": "eni-5d7ade72",
"SubnetId": "subnet-fd54af9b",
"State": "CREATE_IN_PROGRESS"
}
}

Para crear un HSM (API de AWS CloudHSM)

• Envíe una solicitud CreateHsm. Especifique el ID del clúster que ha creado anteriormente y una zona
de disponibilidad para el HSM.

Después de crear un clúster y un HSM, tiene la opción de verificar la identidad del HSM (p. 23), o
continuar directamente en Inicialización del clúster (p. 31).

Verificar la identidad y la autenticidad del HSM de


un clúster (opcional)
Para inicializar el clúster, debe firmar una solicitud de firma de certificado (CSR) generada por el primer
HSM del clúster. Antes de hacerlo, es posible que desee verificar la identidad y la autenticidad del HSM.

23
AWS CloudHSM Guía del usuario
Información general

Note

Este proceso es opcional. Sin embargo, funciona únicamente hasta que se inicializa un clúster.
Una vez que se inicializa el clúster, no puede utilizar este proceso para obtener los certificados o
verificar los HSM.

Temas
• Información general (p. 24)
• Obtener los certificados del HSM (p. 26)
• Obtener los certificados raíz (p. 28)
• Verificar las cadenas de certificados (p. 28)
• Extraer y comparar las claves públicas (p. 29)
• Certificado raíz de AWS CloudHSM (p. 30)

Información general
Para verificar la identidad del primer HSM del clúster, siga los pasos que se describen a continuación:

1. Obtener los certificados y las CSR (p. 26): en este paso, recibirá tres certificados y una CSR desde el
HSM. También obtendrá dos certificados raíz, uno de AWS CloudHSM y otro del fabricante de hardware
del HSM.
2. Comprobar las cadenas de certificados (p. 28): en este paso, creará dos cadenas de certificados:
una para el certificado raíz de AWS CloudHSM y otra para el certificado raíz del fabricante. A
continuación, comparará el certificado del HSM con estas cadenas de certificados para determinar que
tanto AWS CloudHSM como el fabricante de hardware certifican la identidad y la autenticidad del HSM.
3. Comparar las claves públicas (p. 29): en este paso, va a extraer y comprar las claves públicas del
certificado del HSM y de la CSR del clúster para asegurarse de que son las mismas. Esto debería darle
la seguridad de que la CSR fue generada por un HSM auténtico y de confianza.

En el siguiente diagrama se muestran la CSR, los certificados, y la relación que existe entre unos y otros.
En la lista que le sigue, se definen los distintos certificados.

24
AWS CloudHSM Guía del usuario
Información general

Certificado raíz de AWS

Este es el certificado raíz de AWS CloudHSM. Puede ver y descargar este certificado en https://
docs.aws.amazon.com/cloudhsm/latest/userguide/root-certificate.html (p. 30).
Certificado raíz del fabricante

Este es el certificado raíz del fabricante del hardware. Puede ver y descargar este certificado en
https://www.cavium.com/LS/TAmanuCert/.
Certificado de hardware de AWS

AWS CloudHSM creó este certificado cuando se añadió el hardware del HSM a la flota. Este
certificado confirma que AWS CloudHSM es el propietario del hardware.
Certificado de hardware del fabricante

El fabricante del hardware del HSM creó este certificado cuando fabricó el hardware del HSM. Este
certificado confirma que el fabricante creó el hardware.

25
AWS CloudHSM Guía del usuario
Obtener los certificados del HSM

Certificado del HSM

El certificado del HSM es generado por el hardware validado por FIPS cuando crea el primer HSM en
el clúster. Este certificado confirma que el hardware del HSM creó el HSM.
CSR del clúster

El primer HSM crea la CSR del clúster. Al firmar la CSR del clúster (p. 33), solicita el clúster. A
continuación, puede utilizar la CSR firmada para inicializar el clúster (p. 34).

Obtener los certificados del HSM


Para verificar la identidad y la autenticidad del HSM, empiece por obtener una CSR y cinco certificados.
Puede obtener tres de los certificados del HSM y puede hacerlo con la consola de AWS CloudHSM, la
AWS Command Line Interface (AWS CLI) o la API de AWS CloudHSM.

Para obtener la CSR y los certificados del HSM (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija Initialize junto al clúster que creó anteriormente.
3. Cuando los certificados y la CSR estén listos, verá enlaces para descargarlos.

26
AWS CloudHSM Guía del usuario
Obtener los certificados del HSM

Elija los enlaces necesarios para descargar y guardar la CSR y los certificados. Para simplificar los
pasos posteriores, guarde todos los archivos en el mismo directorio y utilice los nombres de archivo
predeterminados.

Para obtener la CSR y los certificados de HSM (AWS CLI)

• En el símbolo del sistema, ejecute cuatro veces el comando describe-clusters para extraer la CSR y
cada uno de los certificados y guardarlos en archivos.

a. Escriba el siguiente comando para extraer la CSR del clúster. Sustituya <ID de clúster> por
el ID del clúster que creó anteriormente.

$ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \


--output text \
--query 'Clusters[].Certificates.ClusterCsr' \

27
AWS CloudHSM Guía del usuario
Obtener los certificados raíz

> <cluster ID>_ClusterCsr.csr

b. Escriba el siguiente comando para extraer el certificado del HSM. Sustituya <ID de clúster>
por el ID del clúster que creó anteriormente.

$ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \


--output text \
--query 'Clusters[].Certificates.HsmCertificate'
\
> <cluster ID>_HsmCertificate.crt

c. Escriba el siguiente comando para extraer el certificado de hardware de AWS. Sustituya <ID de
clúster> por el ID del clúster que creó anteriormente.

$ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \


--output text \
--query
'Clusters[].Certificates.AwsHardwareCertificate' \
> <cluster ID>_AwsHardwareCertificate.crt

d. Escriba el siguiente comando para extraer el certificado de hardware del fabricante. Sustituya <ID
de clúster> por el ID del clúster que creó anteriormente.

$ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \


--output text \
--query
'Clusters[].Certificates.ManufacturerHardwareCertificate' \
> <cluster
ID>_ManufacturerHardwareCertificate.crt

Para obtener la CSR y los certificados del HSM (API de AWS CloudHSM)

• Envíe una solicitud DescribeClusters, extraiga la CSR y los certificados de la respuesta y guárdelos.

Obtener los certificados raíz


Siga estos pasos para obtener los certificados raíz de AWS CloudHSM y del fabricante. Guarde los
archivos del certificado raíz en el directorio que contiene los archivos de los certificados de la CSR y del
HSM.

Para obtener los certificados raíz de AWS CloudHSM y del fabricante

1. Vaya a https://docs.aws.amazon.com/cloudhsm/latest/userguide/root-certificate.html (p. 30) y


seleccione AWS_CloudHSM_Root-G1.zip. Después de descargar el archivo, extraiga (descomprima)
su contenido.
2. Vaya a https://www.cavium.com/LS/TAmanuCert/ y seleccione Download Certificate. Es posible
que tenga que hacer clic con el botón derecho del ratón en el enlace Download Certificate y, a
continuación, elegir Save Link As... para guardar el archivo del certificado.

Verificar las cadenas de certificados


En este paso, va a crear dos cadenas de certificados: una para el certificado raíz de AWS CloudHSM y
otra para el certificado raíz del fabricante. A continuación, utilice OpenSSL para verificar el certificado del
HSM con cada una de las cadenas de certificados.

28
AWS CloudHSM Guía del usuario
Extraer y comparar las claves públicas

Para crear cadenas de certificados, abra un shell de Linux. Necesita OpenSSL, que está disponible en
la mayoría de los shells de Linux, y necesita el certificado raíz (p. 28) y los archivos del certificado del
HSM (p. 26) que descargó. Sin embargo, no necesita el AWS CLI para este paso y no es necesario
asociar el shell a la cuenta de AWS.
Note

Para verificar la cadena de certificados, utilice OpenSSL 1.0. Debido a un cambio en la


verificación del certificado de OpenSSL, las siguientes instrucciones no funcionan con OpenSSL
1.1.

Para verificar el certificado del HSM con el certificado raíz de AWS CloudHSM

1. Desplácese hasta el directorio donde guardó el certificado raíz (p. 28) y los archivos del certificado
del HSM (p. 26) que descargó. Los siguientes comandos presuponen que todos los certificados se
encuentran en el directorio actual y utilizan los nombres de archivo predeterminados.

Utilice el siguiente comando para crear una cadena de certificados que incluya el certificado
de hardware de AWS y el certificado raíz de AWS CloudHSM, en ese orden. Sustituya <ID de
clúster> por el ID del clúster que creó anteriormente.

$ cat <cluster ID>_AwsHardwareCertificate.crt \


AWS_CloudHSM_Root-G1.crt \
> <cluster ID>_AWS_chain.crt

2. Utilice el siguiente comando de OpenSSL para verificar el certificado del HSM con la cadena de
certificados de AWS. Sustituya <ID de clúster> por el ID del clúster que creó anteriormente.

$ openssl verify -CAfile <cluster ID>_AWS_chain.crt <cluster ID>_HsmCertificate.crt


<cluster ID>_HsmCertificate.crt: OK

Para verificar el certificado del HSM con el certificado raíz del fabricante

1. Utilice el siguiente comando para crear una cadena de certificados que incluya el certificado
de hardware del fabricante y el certificado raíz del fabricante, en ese orden. Sustituya <ID de
clúster> por el ID del clúster que creó anteriormente.

$ cat <cluster ID>_ManufacturerHardwareCertificate.crt \


cavium_cert.crt \
> <cluster ID>_manufacturer_chain.crt

2. Utilice el siguiente comando de OpenSSL para verificar el certificado del HSM con la cadena de
certificados del fabricante. Sustituya <ID de clúster> por el ID del clúster que creó anteriormente.

$ openssl verify -CAfile <cluster ID>_manufacturer_chain.crt <cluster


ID>_HsmCertificate.crt
<cluster ID>_HsmCertificate.crt: OK

Extraer y comparar las claves públicas


Utilice OpenSSL para extraer y comparar las claves públicas del certificado del HSM y de la CSR del
clúster, con objeto de asegurarse de que sean las mismas.

Para comparar las claves públicas, utilice el shell de Linux. Necesita OpenSSL, que está disponible en la
mayoría de los shells de Linux, pero no necesita la AWS CLI para este paso. No es necesario asociar el
shell a su cuenta de AWS.

29
AWS CloudHSM Guía del usuario
Certificado raíz de AWS CloudHSM

Para extraer y comparar las claves públicas

1. Utilice el siguiente comando para extraer la clave pública del certificado del HSM.

$ openssl x509 -in <cluster ID>_HsmCertificate.crt -pubkey -noout > <cluster


ID>_HsmCertificate.pub

2. Utilice el siguiente comando para extraer la clave pública de la CSR del clúster.

$ openssl req -in <cluster ID>_ClusterCsr.csr -pubkey -noout > <cluster


ID>_ClusterCsr.pub

3. Utilice el siguiente comando para comparar las claves públicas. Si las claves públicas son idénticas, el
siguiente comando no devuelve ningún resultado.

$ diff <cluster ID>_HsmCertificate.pub <cluster ID>_ClusterCsr.pub

Después de verificar la identidad y autenticidad del HSM, continúe con Inicialización del clúster (p. 31).

Certificado raíz de AWS CloudHSM


Descargue el certificado raíz de AWS CloudHSM: AWS_CloudHSM_Root-G1.zip.

Certificate:
Data:
Version: 3 (0x2)
Serial Number: 17952736724058547791 (0xf924eeeecf9ea64f)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US,
ST=Virginia,
L=Herndon,
O=Amazon Web Services INC.,
OU=CloudHSM,
CN=AWS CloudHSM Root G1
Validity
Not Before: Apr 28 08:37:46 2017 GMT
Not After : Apr 26 08:37:46 2027 GMT
Subject: C=US,
ST=Virginia,
L=Herndon,
O=Amazon Web Services INC.,
OU=CloudHSM,
CN=AWS CloudHSM Root G1
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c8:e3:f6:2a:e0:1f:1e:66:73:00:1e:57:dc:3e:
69:f1:9b:73:73:24:58:60:85:80:45:99:a2:85:3f:
e7:f9:67:41:9f:39:d2:e8:e1:88:ec:18:07:5c:38:
98:25:5a:45:5f:1f:c4:60:0e:29:e4:ac:65:f0:b6:
92:83:34:62:1a:e7:c6:ae:0f:40:66:52:bb:0b:6a:
c6:78:27:57:d6:32:3b:6c:0a:83:7d:a7:e9:a1:6c:
10:46:27:74:2c:6e:86:3a:fd:71:18:1f:84:8e:00:
84:bb:00:dc:57:d8:48:94:5c:13:7a:ff:3b:37:52:
60:cd:5a:64:57:35:95:df:67:68:39:e2:f9:85:ad:
59:ee:a6:9a:97:75:35:f4:e1:32:08:d3:0e:2f:bc:
33:04:f3:34:e8:c9:b5:18:fd:69:83:e0:b7:5a:b4:
3f:ce:1c:2f:b5:1e:0f:4f:15:f0:27:00:23:67:d5:
b8:2c:cb:d6:ef:eb:34:25:80:28:33:fa:e6:3a:31:

30
AWS CloudHSM Guía del usuario
Inicialización del clúster

58:7a:0b:fd:4f:6d:d3:1c:64:10:47:8c:4f:ab:e3:
61:0c:a2:a9:0b:2d:e6:59:f4:1c:2c:92:2a:a4:f9:
a4:83:21:3a:66:dc:c7:75:06:15:fe:83:9d:f8:25:
7f:3b:66:e8:aa:9f:d1:e5:ba:1d:5a:c5:2e:21:ee:
52:61
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
27:00:6B:50:D5:4F:38:8A:35:21:38:D3:0D:A9:5E:D2:10:39:A4:EB
X509v3 Authority Key Identifier:
keyid:27:00:6B:50:D5:4F:38:8A:35:21:38:D3:0D:A9:5E:D2:10:39:A4:EB

X509v3 Basic Constraints:


CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
71:ff:e5:46:27:9c:d0:85:97:5e:c0:82:9a:d4:1b:48:96:75:
2a:40:32:07:80:95:c5:eb:26:1b:46:37:7e:86:12:99:68:b1:
15:bb:f5:55:85:6f:a2:e4:28:70:47:73:07:84:fc:12:28:cc:
8b:3e:b8:f6:60:85:bb:23:6a:cb:6e:a7:ed:82:7e:ed:64:9c:
c1:df:c8:51:db:b9:a4:76:ee:ba:53:aa:e7:30:86:74:5e:be:
2f:1a:c1:88:30:c4:61:02:50:9f:c9:80:7b:7e:f5:1e:49:c8:
6c:1a:39:00:4d:98:1e:21:26:4a:02:f5:d5:3e:6c:47:d9:9c:
94:6f:d7:25:2e:1d:7c:a3:18:ee:8a:32:8a:15:f3:85:39:76:
c3:b9:ba:4e:58:0c:5b:65:44:2e:eb:ab:6c:27:9a:a6:67:df:
22:d4:81:02:2e:c6:34:1b:fe:55:31:8b:d5:73:57:d8:0e:0d:
5a:27:7d:ce:3d:3b:84:80:b3:32:00:e0:6a:f0:32:8a:85:2a:
f8:de:20:bf:65:f7:c9:a8:42:c9:cb:fa:03:d4:10:29:5e:25:
63:a5:71:06:2e:72:78:8a:05:c3:f9:56:e9:b1:e4:2b:6e:f7:
46:5d:b3:12:ed:14:2a:51:d4:56:56:48:ab:7d:fe:d6:49:af:
d6:8e:84:62

Inicialización del clúster


Complete los pasos de los siguientes temas para inicializar un clúster de AWS CloudHSM.
Note

Antes de inicializar el clúster, revise el proceso mediante el cual se puede verificar la identidad
y autenticidad de los HSM (p. 23). Este proceso es opcional y solo funciona hasta que se
inicializa un clúster. Una vez que se inicializa el clúster, no puede utilizar este proceso para
obtener sus certificados o verificar los HSM.

Temas
• Obtener el CSR del clúster (p. 31)
• Firmar la CSR (p. 33)
• Inicializar el clúster (p. 34)

Obtener el CSR del clúster


Para poder inicializar el clúster, debe descargar y firmar una solicitud de firma de certificado (CSR)
generada por el primer HSM del clúster. Si ha seguido los pasos para verificar la identidad del HSM del
clúster (p. 23), ya tiene la CSR y puede firmarla. De lo contrario, obtenga la CSR ahora utilizando la
consola de AWS CloudHSM, la AWS Command Line Interface (AWS CLI) o la API de AWS CloudHSM.

Para obtener la CSR (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.

31
AWS CloudHSM Guía del usuario
Obtener el CSR del clúster

2. Elija Initialize junto al clúster que creó anteriormente (p. 18).


3. Cuando la CSR esté lista, verá un enlace para descargarla.

Elija Cluster CSR para descargar y guardar la CSR.

Para obtener la CSR (AWS CLI)

• En un símbolo del sistema, ejecute el siguiente comando describe-clusters, que extrae la


CSR y la guarda en un archivo. Sustituya <ID de clúster> por el ID del clúster que creó
anteriormente (p. 18).

$ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \


--output text \
--query 'Clusters[].Certificates.ClusterCsr' \
> <cluster ID>_ClusterCsr.csr

32
AWS CloudHSM Guía del usuario
Firmar la CSR

Para obtener la CSR (API de AWS CloudHSM)

1. Envíe una solicitud DescribeClusters.


2. Extraiga y guarde la CSR de la respuesta.

Firmar la CSR
Actualmente, debe crear un certificado de firma autofirmado y utilizarlo para firmar la CSR del clúster. No
necesita la AWS CLI de este paso y no es necesario asociar el shell a la cuenta de AWS. Para firmar la
CSR, haga lo siguiente:

1. Obtenga la CSR (consulte Obtener el CSR del clúster (p. 31)).


2. Crear un clave privada.
3. Utilice la clave privada para crear un certificado de firma.
4. Firme la CSR del clúster.

Crear un clave privada


Utilice el siguiente comando para crear una clave privada. Para un clúster de producción, la clave debe
crearse de forma segura mediante una fuente de aleatoriedad de confianza. Recomendamos que utilice
un HSM externo seguro que esté sin conexión o equivalente. Guarde la clave de forma segura. Si puede
demostrar que es el propietario de la clave, también puede demostrar que es el propietario del clúster y de
los datos que contiene.

Durante las fases de desarrollo y pruebas, puede utilizar cualquier herramienta adecuada (como OpenSSL)
para crear y firmar el certificado del clúster. En el ejemplo siguiente se muestra cómo crear una clave.
Cuando haya utilizado la clave para crear un certificado autofirmado (vea el procedimiento a continuación),
debe guardarla de forma segura. Para iniciar sesión en la instancia de AWS CloudHSM, es necesario que
el certificado esté disponible, pero no la clave privada. La clave solo se utiliza para fines específicos como,
por ejemplo, la restauración a partir de una copia de seguridad.

$ openssl genrsa -aes256 -out customerCA.key 2048


Generating RSA private key, 2048 bit long modulus
........+++
............+++
e is 65537 (0x10001)
Enter pass phrase for customerCA.key:
Verifying - Enter pass phrase for customerCA.key:

Utilizar la clave privada para crear un certificado autofirmado


El hardware de confianza que se utiliza para crear la clave privada del clúster de producción también debe
proporcionar una herramienta de software para generar un certificado autofirmado con dicha clave. En
el ejemplo siguiente se utiliza OpenSSL y la clave privada que ha creado en el paso anterior para crear
un certificado de firma. El certificado es válido durante 10 años (3652 días). Lea las instrucciones que
aparecen en pantalla y siga las indicaciones.

$ openssl req -new -x509 -days 3652 -key customerCA.key -out customerCA.crt
Enter pass phrase for customerCA.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank

33
AWS CloudHSM Guía del usuario
Inicializar el clúster

For some fields there will be a default value,


If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Este comando crea un archivo de certificado denominado customerCA.crt. Ponga este certificado en
cada uno de los hosts desde los que se va a conectar al clúster de AWS CloudHSM. Si asigna otro nombre
al archivo o lo almacenarla en una ruta distinta de la raíz del host, debe editar el archivo de configuración
del cliente según sea necesario. Utilice el certificado y la clave privada que acaba de crear para firmar la
solicitud de firma de certificado (CSR) del clúster en el paso siguiente.

Firmar la CSR del clúster


El hardware de confianza que se utiliza para crear la clave privada del clúster de producción también debe
proporcionar una herramienta para firmar la CSR con dicha clave. En el siguiente ejemplo se usa OpenSSL
para firmar la CSR del clúster. En el ejemplo se utiliza la clave privada y el certificado autofirmado que ha
creado en el paso anterior.

$ openssl x509 -req -days 3652 -in <cluster ID>_ClusterCsr.csr \


-CA customerCA.crt \
-CAkey customerCA.key \
-CAcreateserial \
-out <cluster ID>_CustomerHsmCertificate.crt
Signature ok
subject=/C=US/ST=CA/O=Cavium/OU=N3FIPS/L=SanJose/CN=HSM:<HSM identifer>:PARTN:<partition
number>, for FIPS mode
Getting CA Private Key
Enter pass phrase for customerCA.key:

Este comando crea un archivo denominado <cluster ID>_CustomerHsmCertificate.crt. Utilice


este archivo como el certificado firmado al inicializar el clúster.

Inicializar el clúster
Use el certificado HSM firmado y su certificado de firma para inicializar el clúster. Puede utilizar la consola
de AWS CloudHSM, la AWS CLI o la API de AWS CloudHSM.

Para inicializar el clúster (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija Initialize junto al clúster que creó anteriormente.
3. En la página de descarga de solicitud de firma de certificado, elija Next (Siguiente). Si la opción Next
no está disponible, primero elija uno de los enlaces de certificados o de CSR. A continuación, elija
Next.
4. En la página Sign certificate signing request (CSR), elija Next.
5. En la página Upload the certificates, haga lo siguiente:

a. Junto a Cluster certificate, elija Upload file. A continuación, localice y seleccione el certificado
del HSM que firmó anteriormente. Si ha realizado los pasos de la sección anterior, seleccione el
archivo <cluster ID>_CustomerHsmCertificate.crt.

34
AWS CloudHSM Guía del usuario
Instalar el cliente (Linux)

b. Junto a Issuing certificate, elija Upload file. A continuación, seleccione el certificado de firma. Si ha
realizado los pasos de la sección anterior, seleccione el archivo customerCA.crt.
c. Elija Upload and initialize.

Para inicializar un clúster (AWS CLI)

• En el símbolo del sistema, ejecute el comando initialize-cluster. Proporcione lo siguiente:

• El ID del clúster que ha creado anteriormente.


• El certificado del HSM que firmó anteriormente. Si ha realizado los pasos de la sección anterior, se
encuentra en un archivo denominado <cluster ID>_CustomerHsmCertificate.crt.
• Su certificado de firma. Si ha realizado los pasos de la sección anterior, el certificado de firma se
guarda en un archivo denominado customerCA.crt.

$ aws cloudhsmv2 initialize-cluster --cluster-id <cluster ID> \


--signed-cert file://<cluster
ID>_CustomerHsmCertificate.crt \
--trust-anchor file://customerCA.crt
{
"State": "INITIALIZE_IN_PROGRESS",
"StateMessage": "Cluster is initializing. State will change to INITIALIZED upon
completion."
}

Para inicializar un clúster (API de AWS CloudHSM)

• Envíe una solicitud InitializeCluster con lo siguiente:

• El ID del clúster que ha creado anteriormente.


• El certificado del HSM que firmó anteriormente.
• Su certificado de firma.

Instalación y configuración del cliente de AWS


CloudHSM (Linux)
Para interactuar con el HSM de un clúster de AWS CloudHSM, necesita el software de cliente de AWS
CloudHSM para Linux. Debe instalarlo en la instancia de cliente de Linux EC2 que creó anteriormente.
También puede instalar un cliente si utiliza Windows. Para obtener más información, consulte Instalación y
configuración del cliente de AWS CloudHSM (Windows) (p. 37).

Tareas
• Instalación del cliente y las herramientas de línea de comandos de AWS CloudHSM (p. 35)
• Editar la configuración del cliente (p. 37)

Instalación del cliente y las herramientas de línea de


comandos de AWS CloudHSM
Conéctese a la instancia de cliente y ejecute los siguientes comandos para descargar e instalar el cliente
de AWS CloudHSM y las herramientas de línea de comandos.

35
AWS CloudHSM Guía del usuario
Instalación del cliente y las herramientas
de línea de comandos de AWS CloudHSM

Amazon Linux

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
latest.el6.x86_64.rpm

sudo yum install -y ./cloudhsm-client-latest.el6.x86_64.rpm

Amazon Linux 2

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
latest.el7.x86_64.rpm

sudo yum install -y ./cloudhsm-client-latest.el7.x86_64.rpm

CentOS 6

sudo yum install wget

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
latest.el6.x86_64.rpm

sudo yum install -y ./cloudhsm-client-latest.el6.x86_64.rpm

CentOS 7

sudo yum install wget

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
latest.el7.x86_64.rpm

sudo yum install -y ./cloudhsm-client-latest.el7.x86_64.rpm

RHEL 6

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
latest.el6.x86_64.rpm

sudo yum install -y ./cloudhsm-client-latest.el6.x86_64.rpm

RHEL 7

sudo yum install wget

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
latest.el7.x86_64.rpm

sudo yum install -y ./cloudhsm-client-latest.el7.x86_64.rpm

36
AWS CloudHSM Guía del usuario
Editar la configuración del cliente

Ubuntu 16.04 LTS

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-
client_latest_amd64.deb

sudo dpkg -i cloudhsm-client_latest_amd64.deb

Editar la configuración del cliente


Para poder utilizar el cliente de AWS CloudHSM para conectarse al clúster, debe editar la configuración del
cliente.

Para editar la configuración del cliente

1. Copie el certificado de emisión —el que utilizó para firmar el certificado del clúster (p. 33)— en la
siguiente ubicación de la instancia del cliente: /opt/cloudhsm/etc/customerCA.crt. Necesita
permisos de usuario raíz en la instancia de cliente para copiar el certificado en esta ubicación.
2. Utilice el siguiente comando configure (p. 218) para actualizar los archivos de configuración del
cliente y las herramientas de línea de comandos de AWS CloudHSM, especificando la dirección
IP del HSM del clúster. Para obtener la dirección IP del HSM, vea el clúster en la consola de AWS
CloudHSM o ejecute el comando AWS CLI de describe-clusters. En la salida del comando, la dirección
IP del HSM es el valor del campo EniIp. Si tiene más de un HSM, elija la dirección IP de cualquiera
de ellos; no importa el que elija.

sudo /opt/cloudhsm/bin/configure -a <IP address>

Updating server config in /opt/cloudhsm/etc/cloudhsm_client.cfg


Updating server config in /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

3. Vaya a Activación del clúster (p. 39).

Instalación y configuración del cliente de AWS


CloudHSM (Windows)
Para interactuar con un HSM de un clúster de AWS CloudHSM, necesita el software de cliente de AWS
CloudHSM para Windows. Debe instalarlo en la instancia de Windows Server que creó anteriormente.
También puede instalar un cliente si utiliza Linux. Para obtener más información, consulte Instalación y
configuración del cliente de AWS CloudHSM (Linux) (p. 35).

Para instalar (o actualizar) el cliente y las herramientas de línea de comandos más recientes

1. Conéctese a su instancia de Windows Server.


2. Descargue el instalador AWSCloudHSMClient-latest.msi.
Note

Para las versiones 1.1.2 y posteriores, el software de cliente de AWS CloudHSM para
Windows se ejecuta como un servicio de Windows. Para obtener más información, consulte el
historial de versiones del cliente (p. 381).
3. Vaya a la ubicación de descarga y ejecute el instalador AWSCloudHSMClient-latest.msi. Siga las
instrucciones del instalador.

37
AWS CloudHSM Guía del usuario
Instalación del cliente de (Windows)

Important

Debe ejecutar el instalador con privilegios administrativos.

El instalador registra automáticamente la API de criptografía de nueva generación (CNG) y los


proveedores de almacenamiento de claves (KSP) para AWS CloudHSM. Para desinstalar el software
de cliente de AWS CloudHSM para Windows, vuelva a ejecutar el instalador y siga las instrucciones
de desinstalación.
4. Elija Cerrar cuando haya finalizado el instalador.

El instalador copia los siguientes archivos ejecutables en la carpeta C:\Program Files\Amazon


\CloudHSM:

• cloudhsm_client.exe
• cloudhsm_mgmt_util.exe
• cng_config.exe
• configure.exe
• import_key.exe
Note

Este archivo se instala a partir de las versiones 1.1.2 y posteriores.


• key_mgmt_util.exe
• ksp_config.exe
• pkpspeed_blocking.exe
• pkpspeed_blocking.exe
• set_cloudhsm_credentials.exe
Note

Este archivo se instala a partir de las versiones 2.0.4 y posteriores.

El instalador copia los siguientes archivos de certificado y claves en la carpeta C:\ProgramData


\Amazon\CloudHSM:

• client.crt
• client.key

El instalador copia los siguientes archivos de configuración en la carpeta C:\ProgramData\Amazon


\CloudHSM\data:

• application.cfg
• cloudhsm_client.cfg
• cloudhsm_mgmt_util.cfg

Note

Si está actualizando el cliente, los archivos de configuración existentes de las instalaciones


anteriores no se sobrescribirán.
5. Copie el certificado de emisión autofirmado, el que utilizó para firmar el certificado del
clúster (p. 33), en la carpeta C:\ProgramData\Amazon\CloudHSM.
6. Ejecute el siguiente comando para actualizar los archivos de configuración. Asegúrese de detener e
iniciar el cliente durante la reconfiguración si lo está actualizando:
38
AWS CloudHSM Guía del usuario
Activación del clúster

c:\Program Files\Amazon\CloudHSM>configure.exe -a <HSM IP address>

7. Vaya a Activación del clúster (p. 39).

Activación del clúster


Cuando se activa un clúster de AWS CloudHSM, su estado cambia de "inicializado" a "activo". A
continuación, es posible administrar los usuarios de HSM (p. 54) y utilizar el HSM (p. 224).

Para activar el clúster, inicie sesión en el HSM con las credenciales del usuario responsable de criptografía
previa (PRECO) (p. 10). Es un usuario temporal que solo existe en el primer HSM de un clúster de
AWS CloudHSM. El primer HSM de un nuevo clúster contiene un usuario PRECO predeterminado con
un nombre de usuario y contraseña predeterminados. Al cambiar la contraseña, el usuario PRECO se
convierte en un responsable de criptografía (CO).

Para activar un clúster

1. Establezca conexión con la instancia cliente que lanzó anteriormente. Para obtener más información,
consulte Lanzamiento una instancia de cliente de Amazon EC2 (p. 20). Puede lanzar una instancia
de Linux o Windows Server.
2. Use el siguiente comando para iniciar la utilidad de la línea de comandos cloudhsm_mgmt_util.
Note
Si está utilizando una AMI que usa Amazon Linux 2, consulte Problemas conocidos para las
instancias Amazon EC2 que ejecutan Amazon Linux 2 (p. 366).

Amazon Linux

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

Ubuntu

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

Windows

C:\Program Files\Amazon\CloudhSM>cloudhsm_mgmt_util.exe C:\ProgramData\Amazon


\CloudHSM\data\cloudhsm_mgmt_util.cfg

3. Utilice el comando enable_e2e para habilitar el cifrado integral.

aws-cloudhsm>enable_e2e

E2E enabled on server 0(server1)

4. (Opcional) Utilice el comando listUsers para mostrar los usuarios existentes.

aws-cloudhsm>listUsers
Users on server 0(server1):
Number of users found:2

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PRECO admin NO
0 NO

39
AWS CloudHSM Guía del usuario
Reconfigurar SSL (opcional)

2 AU app_user NO
0 NO

5. Utilice el comando loginHSM para iniciar sesión en el HSM como usuario PRECO. Es un usuario
temporal que existe en el primer HSM de su clúster.

aws-cloudhsm>loginHSM PRECO admin password

loginHSM success on server 0(server1)

6. Utilice el comando changePswd para cambiar la contraseña del usuario PRECO. Al cambiar la
contraseña, el usuario PRECO se convierte en un responsable de criptografía (CO).

aws-cloudhsm>changePswd PRECO admin <NewPassword>

*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Changing password for admin(PRECO) on 1 nodes

Le recomendamos que anote la contraseña nueva en una hoja de cálculo de contraseñas. No pierda
la hoja de cálculo. Le recomendamos que imprima una copia de la hoja de cálculo de contraseñas,
que utilice dicha hoja para registrar las contraseñas de HSM de importancia fundamental y que
después la guarde en un lugar seguro. También es conveniente que guarde una copia de esta hoja de
cálculo en un lugar seguro fuera de las instalaciones.
7. (Opcional) Utilice el comando listUsers para verificar que el tipo de usuario ha cambiado a responsable
de criptografía (CO) (p. 11).

aws-cloudhsm>listUsers
Users on server 0(server1):
Number of users found:2

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 CO admin NO
0 NO
2 AU app_user NO
0 NO

8. Utilice el comando quit para detener la herramienta cloudhsm_mgmt_util.

aws-cloudhsm>quit

Reconfigurar SSL con un nuevo certificado y clave


privada (opcional)
AWS CloudHSM utiliza un certificado SSL para establecer una conexión con un HSM. Al instalar el
cliente, se incluyen una clave predeterminada y un certificado SSL. Sin embargo, puede crear y usar

40
AWS CloudHSM Guía del usuario
Reconfigurar SSL (opcional)

los suyos. Tenga en cuenta que necesitará el certificado autofirmado (customerCA.crt) que creó al
inicializar (p. 33) el clúster.

Para reconfigurar SSL con un nuevo certificado y clave privada

1. Cree una clave privada con el siguiente comando de OpenSSL:

openssl genrsa -out ssl-client.key 2048


Generating RSA private key, 2048 bit long modulus
........+++
............+++
e is 65537 (0x10001)

2. Utilice el siguiente comando de OpenSSL para crear una solicitud de firma de certificado (CSR). Se le
harán varias preguntas sobre su certificado.

openssl req -new -sha256 -key ssl-client.key -out ssl-client.csr


Enter pass phrase for ssl-client.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

Please enter the following 'extra' attributes


to be sent with your certificate request
A challenge password []:
An optional company name []:

3. Firme la CSR con el certificado customerCA.crt que creó al inicializar el clúster.

openssl x509 -req -days 3652 -in ssl-client.csr \


-CA customerCA.crt \
-CAkey customerCA.key \
-CAcreateserial \
-out ssl-client.crt
Signature ok
subject=/C=US/ST=WA/L=Seattle/O=Example Company/OU=sales
Getting CA Private Key

4. Copie la clave y el certificado en el directorio adecuado. En Linux, utilice los siguientes comandos. La
opción configure --ssl está disponible con la versión 1.0.14 del cliente de AWS CloudHSM.

sudo cp ssl-client.crt /opt/cloudhsm/etc/


sudo cp ssl-client.key /opt/cloudhsm/etc/
sudo /opt/cloudhsm/bin/configure --ssl --pkey /opt/cloudhsm/etc/ssl-client.key --cert /
opt/cloudhsm/etc/ssl-client.crt

41
AWS CloudHSM Guía del usuario
Prácticas recomendadas

5. Agregue el certificado customerCA.crt al almacén de confianza. Cree un hash del nombre del
firmante del certificado. De este modo se crea un índice que permite que busque el certificado por ese
nombre. Cree un archivo que contenga el certificado con el nombre de hash.

openssl x509 -in /opt/cloudhsm/etc/customerCA.crt -hash | head -n 1


1234abcd
sudo cp /opt/cloudhsm/etc/customerCA.crt /opt/cloudhsm/etc/certs/1234abcd.0

Prácticas recomendadas para AWS CloudHSM


Conozca las prácticas recomendadas por trabajar con AWS CloudHSM. Esta sección se actualizará a
medida que se identifiquen nuevas prácticas recomendadas.

Directrices operativas básicas de AWS CloudHSM


Siga estas directrices para trabajar con AWS CloudHSM. El acuerdo de nivel de servicios de AWS
CloudHSM requiere que se sigan estas directrices.

Administración: le recomendamos que cree al menos dos responsables de criptografía (CO) para
administrar el clúster. Antes de configurar la política de cuórum (MofN), debe crear al menos M+1 cuentas
de CO. Elimine las cuentas de CO con precaución. Si se sitúa por debajo del número de cuórum de CO, ya
no podrá administrar el clúster.

Administración: Si un HSM falla, puede experimentar una pérdida de datos irrecuperable. No configuramos
la tolerancia a errores por usted. Usted es responsable de configurar la tolerancia a errores para sus HSM.

Configuración del clúster: en el caso de los clústeres de producción, debe tener al menos dos instancias
de HSM en dos zonas de disponibilidad de una región. Para las cargas de trabajo sensibles a la latencia,
le recomendamos una redundancia de +1. En el caso de las aplicaciones que requieren la durabilidad de
las claves recién generadas, le recomendamos al menos tres instancias de HSM distribuidas en todas las
zonas de disponibilidad de una región.

Capacidad del clúster: debe crear un número suficiente de HSM en el clúster para gestionar la carga de
trabajo. Al decidir el número de HSM que va a crear en un clúster, debe tener en cuenta tanto la capacidad
del registro de auditoría como la capacidad criptográfica.

42
AWS CloudHSM Guía del usuario
Agregar o eliminar HSM

Administración de clústeres de AWS


CloudHSM
Puede administrar los clústeres de AWS CloudHSM desde la consola de AWS CloudHSM o uno de los
SDK o herramientas de línea de comandos de AWS. Para obtener más información, consulte los siguientes
temas.

Para crear un clúster, consulte Introducción (p. 15).

Temas
• Agregar o eliminar HSM en un clúster de AWS CloudHSM (p. 43)
• Copia de una copia de seguridad entre regiones (p. 46)
• Creación un clúster de AWS CloudHSM a partir de una copia de seguridad anterior (p. 47)
• Eliminación y restauración de una copia de seguridad del clúster de AWS CloudHSM (p. 48)
• Eliminación de un clúster de AWS CloudHSM (p. 50)
• Etiquetado de recursos de AWS CloudHSM (p. 50)

Agregar o eliminar HSM en un clúster de AWS


CloudHSM
Para aumentar o reducir el tamaño de un clúster de AWS CloudHSM, añada o quite HSM utilizando la
consola de AWS CloudHSM, uno de los SDK de AWS o las herramientas de la línea de comandos.

Temas
• Agregar un HSM (p. 43)
• Eliminación de un HSM (p. 45)

Agregar un HSM
En la figura siguiente se muestran los eventos que se producen cuando se añade un HSM a un clúster.

43
AWS CloudHSM Guía del usuario
Agregar un HSM

1. Añada un HSM nuevo a un clúster. En los siguientes procedimientos, se explica cómo realizar esta
operación en la consola de AWS CloudHSM, la AWS Command Line Interface(AWS CLI) y la API de
AWS CloudHSM.

Esta es la única acción que lleva a cabo. Los demás eventos se realizan de forma automática.
2. AWS CloudHSM realiza una copia de seguridad de uno de los HSM existentes del clúster. Para obtener
más información, consulte Copias de seguridad (p. 6).
3. AWS CloudHSM restaura la copia de seguridad en el nuevo HSM. Esto garantiza que el HSM esté
sincronizado con los demás HSM del clúster.
4. Los HSM existentes del clúster notifican al cliente de AWS CloudHSM que hay un HSM nuevo en el
clúster.
5. El cliente establece una conexión con el HSM nuevo.

44
AWS CloudHSM Guía del usuario
Eliminación de un HSM

Para añadir un HSM (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija un clúster para el HSM que va a añadir.
3. En la pestaña HSMs, elija Create HSM (Crear HSM).
4. Elija una zona de disponibilidad (AZ) para el HSM que está creando. A continuación, elija Create.

Para añadir un HSM (AWS CLI)

• En el símbolo del sistema, ejecute el comando create-hsm especificando un ID de clúster y una zona
de disponibilidad para el HSM que va a crear. Si no sabe cuál es el ID de su clúster preferido, ejecute
el comando describe-clusters. Especifique la zona de disponibilidad con el formato us-east-2a, us-
east-2b, etc.

$ aws cloudhsmv2 create-hsm --cluster-id <cluster ID> --availability-zone <Availability


Zone>
{
"Hsm": {
"State": "CREATE_IN_PROGRESS",
"ClusterId": "cluster-5a73d5qzrdh",
"HsmId": "hsm-lgavqitns2a",
"SubnetId": "subnet-0e358c43",
"AvailabilityZone": "us-east-2c",
"EniId": "eni-bab18892",
"EniIp": "10.0.3.10"
}
}

Para añadir un HSM (API de AWS CloudHSM)

• Envíe una solicitud CreateHsm en la que se especifique el ID del clúster y una zona de disponibilidad
para el HSM que está creando.

Eliminación de un HSM
Puede eliminar un HSM utilizando la consola de AWS CloudHSM, la AWS CLI o la API de AWS
CloudHSM.

Para eliminar un HSM (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija el clúster que contiene el HSM que va a eliminar.
3. En la pestaña HSMs elija el HSM que va a eliminar. A continuación, elija Delete HSM (Eliminar HSM).
4. Confirme que desea eliminar el HSM. A continuación, elija Delete.

Para eliminar un HSM (AWS CLI)

• En el símbolo del sistema, ejecute el comando delete-hsm. Pase el ID del clúster que contiene el HSM
que está eliminando y uno de los siguientes identificadores de HSM:

• El ID del HSM (--hsm-id)


• La dirección IP del HSM (--eni-ip)
• El ID de interfaz de red elástica del HSM (--eni-id)

45
AWS CloudHSM Guía del usuario
Copia de una copia de seguridad entre regiones

Si no sabe cuáles son los valores de estos identificadores, ejecute el comando describe-clusters.

$ aws cloudhsmv2 delete-hsm --cluster-id <cluster ID> --eni-ip <HSM IP address>


{
"HsmId": "hsm-lgavqitns2a"
}

Para eliminar un HSM (API de AWS CloudHSM)

• Envíe una solicitud DeleteHsm en la que especifique el ID del clúster y un identificador del HSM que
está eliminando.

Copia de una copia de seguridad entre regiones


AWS CloudHSM le permite clonar copias de seguridad de un clúster en otra región, donde luego puede
utilizarse para crear un nuevo clúster a partir de un clon del original. Copias de seguridad de los clústeres
de AWS CloudHSM (p. 6) son paquetes de datos cifrados que contienen los elementos de un determinado
clúster. Para clonar un clúster en una región diferente, primero hay que copiar la copia de seguridad del
clúster en la región de destino. A continuación, deberá crear un clúster a partir de la copia de seguridad
que ha copiado. Esto puede ser conveniente por diversas razones, como simplificar el proceso de
recuperación de desastres, entre otras.

Puede clonar la copia de seguridad de un clúster entre regiones en la AWS Command Line Interface (AWS
CLI) o la API de AWS CloudHSM. Cuando se ejecuta el comando copy-backup-to-region, la copia de
seguridad clonada aparece en la región de destino con el estado CREATE_IN_PROGRESS. Una vez que su
ejecución finaliza correctamente, el estado de la copia de seguridad copiada es READY.

En caso de que el comando copy-backup-to-region no finalice correctamente, el estado de la copia de


seguridad clonada será DELETED. Compruebe los parámetros de entrada por si presentan algún error y
asegúrese de que la copia de seguridad de origen especificada no se encuentre en el estado DELETED
antes de volver a ejecutar la operación.

Para obtener más información sobre cómo crear un clúster a partir de una copia de seguridad, consulte
Creación un clúster de AWS CloudHSM a partir de una copia de seguridad anterior (p. 47).
Important

Tenga en cuenta lo siguiente:

• Para clonar la copia de seguridad de un clúster en una región de destino, la cuenta debe tener
los permisos de la política de IAM adecuada. Para clonar la copia de seguridad en otra región,
la política de IAM debe permitir el acceso a la región de origen en la que se encuentra la copia
de seguridad. Una vez copiada de una región a otra, la política de IAM debe permitir el acceso
a la región de destino con el fin de interaccionar con la copia de seguridad clonada, lo que
incluye usar la operación CreateCluster. Para obtener más información, consulte Políticas
administradas por el cliente para AWS CloudHSM (p. 15).
• El clúster original y el clúster que puede crearse a partir de una copia de seguridad en la región
de destino no están vinculados. Deberá administrar cada uno de estos clústeres de manera
independiente. Para obtener más información, consulte Administración de clústeres de AWS
CloudHSM (p. 43)
• Las copias de seguridad no se pueden copiar entre las regiones de AWS restringidas y las
regiones estándar. Las copias de seguridad se pueden copiar entre el AWS GovCloud (EE.UU.)
y AWS GovCloud (EE.UU. Oeste).

46
AWS CloudHSM Guía del usuario
Creación de un clúster a partir de una copia de seguridad

Para clonar la copia de seguridad de un clúster en otra región (AWS CLI)

• En el símbolo del sistema, ejecute el comando copy-backup-to-region. Especifique la región de destino


y el ID del clúster de origen o el ID de la copia de seguridad de origen. Si especifica un ID de copia de
seguridad, se copiará la copia de seguridad asociada. Si especifica un ID de clúster, se copia la copia
de seguridad disponible más reciente del clúster asociado. Si se indican ambos, se utiliza de forma
predeterminada el ID de la copia de seguridad indicada. Si no conoce el ID del clúster o el ID de la
copia de seguridad, ejecute el comando describe-clusters o describe-backups, respectivamente.

$ aws cloudhsmv2 copy-backup-to-region --destination-region <destination region> \


--backup-id <backup ID>
{
"DestinationBackup": {
"CreateTimestamp": 1531742400,
"SourceBackup": "backup-4kuraxsqetz",
"SourceCluster": "cluster-kzlczlspnho",
"SourceRegion": "us-east-1"
}
}

Para clonar la copia de seguridad de un clúster en otra región (API de AWS CloudHSM)

• Envíe una solicitud CopyBackupToRegion. Especifique la región de destino y el ID de clúster o el ID


de copia de seguridad más reciente del clúster que se va a copiar.

Creación un clúster de AWS CloudHSM a partir de


una copia de seguridad anterior
Para restaurar un clúster de AWS CloudHSM a partir de una copia de seguridad anterior, cree un nuevo
clúster y especifique la copia de seguridad que debe restaurarse. Después de crear el clúster, no es
necesario que lo inicialice ni que lo active. Basta con que añada un HSM al clúster. Este HSM tendrá los
mismos usuarios, material de claves, certificados, configuración y políticas que la copia de seguridad
que ha restaurado. Para obtener más información acerca de las copias de seguridad, consulte Copias de
seguridad (p. 6).

Puede restaurar un clúster a partir de una copia de seguridad desde la consola de AWS CloudHSM, la
AWS Command Line Interface (AWS CLI) o la API de AWS CloudHSM.

Para crear un clúster a partir de una copia de seguridad anterior (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija Create cluster.
3. En la sección Cluster configuration, haga lo siguiente:

a. En VPC elija una VPC para el clúster que está creando.


b. En AZ (s) elija una subred privada para cada zona de disponibilidad que esté añadiendo al clúster.
4. En la sección Cluster source (Origen del clúster) haga lo siguiente:

a. Elija Restore cluster from existing backup (Restaurar clúster a partir de una copia de seguridad ya
existente).
b. Elija la copia de seguridad que está restaurando.
5. Elija Next: Review.
6. Revise la configuración del clúster y, a continuación, elija Create cluster (Crear clúster).

47
AWS CloudHSM Guía del usuario
Eliminación y restauración de una copia de seguridad

Para crear un clúster a partir de una copia de seguridad anterior (AWS CLI)

• En el símbolo del sistema, ejecute el comando create-cluster. Especifique el tipo de instancia de


HSM, los ID de las subredes donde piensa crear los HSM y el ID de la copia de seguridad que está
restaurando. Si no sabe cuál es el ID de la copia de seguridad, ejecute el comando describe-backups.

$ aws cloudhsmv2 create-cluster --hsm-type hsm1.medium \


--subnet-ids <subnet ID 1> <subnet ID 2> <subnet ID N>
\
--source-backup-id <backup ID>
{
"Cluster": {
"HsmType": "hsm1.medium",
"VpcId": "vpc-641d3c0d",
"Hsms": [],
"State": "CREATE_IN_PROGRESS",
"SourceBackupId": "backup-rtq2dwi2gq6",
"BackupPolicy": "DEFAULT",
"SecurityGroup": "sg-640fab0c",
"CreateTimestamp": 1504907311.112,
"SubnetMapping": {
"us-east-2c": "subnet-0e358c43",
"us-east-2a": "subnet-f1d6e798",
"us-east-2b": "subnet-40ed9d3b"
},
"Certificates": {
"ClusterCertificate": "<certificate string>"
},
"ClusterId": "cluster-jxhlf7644ne"
}
}

Para crear un clúster a partir de una copia de seguridad anterior (API de AWS CloudHSM)

• Envíe una solicitud CreateCluster. Especifique el tipo de instancia de HSM, los ID de las subredes
donde piensa crear los HSM y el ID de la copia de seguridad que está restaurando.

Para crear un HSM que contenga los mismos usuarios, material de clave, certificados, configuración y
políticas que estaban en la copia de seguridad que ha restaurado, añada un HSM (p. 43) al clúster.

Eliminación y restauración de una copia de


seguridad del clúster de AWS CloudHSM
Las copias de seguridad del clúster de AWS CloudHSM (p. 6) son paquetes de datos cifrados que
contienen los elementos de un determinado clúster. Las copias de seguridad se generan una vez al día y
siempre que se añade un HSM a un clúster.

Es posible que desee eliminar determinados materiales criptográficos del entorno de AWS, como una clave
caducada o un usuario inactivo. Para eliminar estos materiales, primero debe eliminarlos de sus HSM.
Para asegurarse de que la información eliminada no se restaure cuando se inicialice un nuevo clúster con
una copia de seguridad anterior, debe eliminar todas las copias de seguridad existentes del clúster. Para
ello, utilice la AWS Command Line Interface (AWS CLI) o la API de AWS CloudHSM.

Una copia de seguridad debe tener el estado READY para poder eliminarse. Puede comprobar el estado de
una copia de seguridad mediante el comando describe-backups de la AWS CLI o con una llamada a la API
DescribeBackups.

48
AWS CloudHSM Guía del usuario
Eliminación y restauración de una copia de seguridad

Una vez eliminada correctamente, la copia de seguridad permanece en el estado PENDING_DELETION


durante siete días, tiempo durante el cual se puede restaurar con el comando restore-backup. Una vez
transcurrido el periodo de eliminación, la copia de seguridad de destino ya no se puede restaurar.

Para eliminar y restaurar una copia de seguridad (AWS CLI)

1. En el símbolo del sistema, ejecute el comando delete-backup, pasando el ID de la copia de seguridad


que desea eliminar. Si no sabe cuál es el ID de la copia de seguridad, ejecute el comando describe-
backups.

$ aws cloudhsmv2 delete-backup --backup-id <backup ID>


{
"Backup": {
"CreateTimestamp": 1534461854.64,
"ClusterId": "cluster-dygnwhmscg5",
"BackupId": "backup-ro5c4er4aac",
"BackupState": "PENDING_DELETION",
"DeleteTimestamp": 1536339805.522
}
}

2. Para restaurar una copia de seguridad, ejecute el comando restore-backup, pasando el ID de


una copia de seguridad que tenga el estado PENDING_DELETION. Puede comprobar el estado
de una copia de seguridad ejecutando el comando describe-backups con el ID de la copia de
seguridad de destino. Si desea ver una lista de todas las copias de seguridad que tienen el estado
PENDING_DELETION, ejecute el comando describe-backups e incluya states=PENDING_DELETION
como filtro.

$ aws cloudhsmv2 describe-backups --filters states=PENDING_DELETION


{
"Backups": [
{
"BackupId": "backup-ro5c4er4aac",
"BackupState": "PENDING_DELETION",
"CreateTimestamp": 1534461854.64,
"ClusterId": "cluster-dygnwhmscg5",
"DeleteTimestap": 1536339805.522,
}
}

$ aws cloudhsmv2 restore-backup --backup-id <backup ID>


{
"Backup": {
"ClusterId": "cluster-dygnwhmscg5",
"CreateTimestamp": 1534461854.64,
"BackupState": "READY",
"BackupId": "backup-ro5c4er4aac"
}
}

Para eliminar y restaurar una copia de seguridad (API de AWS CloudHSM)

1. Para eliminar una copia de seguridad, envíe una solicitud DeleteBackup, especificando el ID de la
copia de seguridad que desea eliminar.
2. Para restaurar una copia de seguridad, envíe una solicitud RestoreBackup, especificando el ID de la
copia de seguridad que desea restaurar.

49
AWS CloudHSM Guía del usuario
Eliminación de un clúster

Eliminación de un clúster de AWS CloudHSM


Para eliminar un clúster, antes debe eliminar todos los HSM del clúster. Para obtener más información,
consulte Eliminación de un HSM (p. 45).

Después de eliminar todos los HSM, puede eliminar el clúster utilizando la consola de AWS CloudHSM, la
AWS Command Line Interface (AWS CLI) o la API de AWS CloudHSM.

Para eliminar un clúster (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija el clúster que está eliminado. A continuación, elija Delete cluster (Eliminar clúster).
3. Confirme que desea eliminar el clúster y, a continuación, elija Delete (Eliminar).

Para eliminar un clúster (AWS CLI)

• En el símbolo del sistema ejecute el comando delete-cluster, pasándole el ID del clúster que está
eliminando. Si no sabe cuál es el ID del clúster, ejecute el comando describe-clusters.

$ aws cloudhsmv2 delete-cluster --cluster-id <cluster ID>


{
"Cluster": {
"Certificates": {
"ClusterCertificate": "<certificate string>"
},
"SourceBackupId": "backup-rtq2dwi2gq6",
"SecurityGroup": "sg-40399d28",
"CreateTimestamp": 1504903546.035,
"SubnetMapping": {
"us-east-2a": "subnet-f1d6e798",
"us-east-2c": "subnet-0e358c43",
"us-east-2b": "subnet-40ed9d3b"
},
"ClusterId": "cluster-kdmrayrc7gi",
"VpcId": "vpc-641d3c0d",
"State": "DELETE_IN_PROGRESS",
"HsmType": "hsm1.medium",
"StateMessage": "The cluster is being deleted.",
"Hsms": [],
"BackupPolicy": "DEFAULT"
}
}

Para eliminar un clúster (API de AWS CloudHSM)

• Envíe una solicitud DeleteCluster en la que se especifique el ID del clúster que está eliminando.

Etiquetado de recursos de AWS CloudHSM


Una etiqueta es una marca que se asigna a un recurso de AWS. Puede asignar etiquetas a los clústeres
de AWS CloudHSM. Cada etiqueta consta de una clave de etiqueta y un valor de etiqueta, ambos definidos
por el usuario. Por ejemplo, la clave de etiqueta puede ser Centro de costos y el valor de etiqueta puede
ser 12345. Las claves de las etiquetas deben ser únicas para cada clúster.

Puede usar etiquetas para distintos fines. Uno de los usos habituales es categorizar y realizar el
seguimiento de los costos de AWS. Puede aplicar etiquetas que representen categorías de negocio

50
AWS CloudHSM Guía del usuario
Añadir o actualizar etiquetas

(por ejemplo, centros de costos, nombres de aplicación o propietarios) para estructurar los costos entre
diferentes servicios. Cuando se agregan etiquetas a los recursos de AWS, AWS genera un informe de
asignación de costos con el uso y los costos agregados por etiquetas. Puede usar este informe para ver
los costos de AWS CloudHSM en términos de proyectos o aplicaciones, en vez de ver todos los costos de
AWS CloudHSM como una sola partida.

Para obtener más información sobre el uso de etiquetas para la asignación de costos, consulte Uso de
etiquetas de asignación de costos en la Guía del usuario de AWS Billing and Cost Management.

Puede utilizar la consola de AWS CloudHSM o uno de los SDK o herramientas de línea de comandos de
AWS para añadir, actualizar, generar una lista o quitar etiquetas.

Temas
• Añadir o actualizar etiquetas (p. 51)
• Visualización de etiquetas (p. 52)
• Eliminación de etiquetas (p. 52)

Añadir o actualizar etiquetas


Puede añadir o actualizar etiquetas en la consola de AWS CloudHSM, la AWS Command Line Interface
(AWS CLI) o la API de AWS CloudHSM.

Para añadir o actualizar etiquetas (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija el clúster que está etiquetando.
3. Seleccione Tags (Etiquetas).
4. Para añadir una etiqueta, haga lo siguiente:

a. Seleccione Edit Tag (Editar etiqueta) y, a continuación, Add Tag (Añadir etiqueta).
b. En Tag Key (Clave de etiqueta), escriba una clave para la etiqueta.
c. (Opcional) En Value (Valor), escriba un valor para la etiqueta.
d. Seleccione Save.
5. Para actualizar una etiqueta, haga lo siguiente:

a. Seleccione Edit Tag (Editar etiqueta).


Note

Si actualiza la clave de una etiqueta existente, la consola elimina la etiqueta existente y


crea otra nueva.
b. Escriba el nuevo valor de la etiqueta.
c. Seleccione Save.

Para añadir o actualizar etiquetas (AWS CLI)

1. En el símbolo del sistema, ejecute el comando tag-resource especificando las etiquetas y el ID del
clúster que está etiquetando. Si no sabe cuál es el ID del clúster, ejecute el comando describe-
clusters.

$ aws cloudhsmv2 tag-resource --resource-id <cluster ID> \


--tag-list Key="<tag key>",Value="<tag value>"

51
AWS CloudHSM Guía del usuario
Visualización de etiquetas

2. Para actualizar etiquetas, utilice el mismo comando, pero especifique una clave de etiqueta ya
existente. Cuando especifique un valor de etiqueta nuevo para una etiqueta ya existente, la etiqueta se
sobrescribe con el nuevo valor.

Para añadir o actualizar etiquetas (API de AWS CloudHSM)

• Envíe una solicitud TagResource. Especifique las etiquetas y el ID del clúster que está etiquetando.

Visualización de etiquetas
Puede mostrar las etiquetas de un clúster en la consola de AWS CloudHSM, la AWS CLI o la API de AWS
CloudHSM.

Para generar una lista de etiquetas (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija el clúster cuyas etiquetas vaya a incluir en una lista.
3. Seleccione Tags (Etiquetas).

Para mostrar las etiquetas (AWS CLI)

• En el símbolo del sistema ejecute, el comando list-tags especificando el ID del clúster cuyas etiquetas
quiere mostrar. Si no sabe cuál es el ID del clúster, ejecute el comando describe-clusters.

$ aws cloudhsmv2 list-tags --resource-id <cluster ID>


{
"TagList": [
{
"Key": "Cost Center",
"Value": "12345"
}
]
}

Para mostrar las etiquetas (API de AWS CloudHSM)

• Envía una solicitud de ListTags en la que se especifique el ID del clúster cuyas etiquetas quiere
mostrar.

Eliminación de etiquetas
Puede eliminar las etiquetas de un clúster utilizando la consola de AWS CloudHSM, la AWS CLI o la API
de AWS CloudHSM.

Para eliminar etiquetas (consola)

1. Abra la consola de AWS CloudHSM en https://console.aws.amazon.com/cloudhsm/.


2. Elija el clúster cuyas etiquetas va a eliminar.
3. Seleccione Tags (Etiquetas).
4. Seleccione Edit Tag (Editar etiqueta) y haga clic en la opción Remove tag (Eliminar etiqueta) de la
etiqueta que desee eliminar.
5. Seleccione Save.

52
AWS CloudHSM Guía del usuario
Eliminación de etiquetas

Para eliminar etiquetas (AWS CLI)

• En el símbolo del sistema, ejecute el comando untag-resource especificando las claves de etiqueta de
las etiquetas que está eliminando y el ID del clúster cuyas etiquetas está eliminando. Cuando utilice la
AWS CLI para eliminar etiquetas, especifique solo las claves de las etiquetas y no sus valores.

$ aws cloudhsmv2 untag-resource --resource-id <cluster ID> \


--tag-key-list "<tag key>"

Para eliminar etiquetas (API de AWS CloudHSM)

• Envíe una solicitud de UntagResource en la API de AWS CloudHSM, especificando el ID del clúster y
las etiquetas que va a eliminar.

53
AWS CloudHSM Guía del usuario
Administración de usuarios de HSM

Administración de usuarios y claves


de HSM en AWS CloudHSM
Para poder utilizar un clúster de AWS CloudHSM para el procesamiento criptográfico, debe crear usuarios
y claves en los HSM del clúster. Consulte los siguientes temas para obtener más información acerca de
cómo se utilizan las herramientas de línea de comandos de AWS CloudHSM para administrar los usuarios
y las claves de HSM. También puede aprender a utilizar la autenticación de cuórum (también conocida
como "control de acceso M de N").

Temas
• Administración de usuarios de HSM en AWS CloudHSM (p. 54)
• Administración de claves en AWS CloudHSM (p. 57)
• Aplicación de la autenticación de cuórum (control de acceso M de N) (p. 67)

Administración de usuarios de HSM en AWS


CloudHSM
Para administrar los usuarios de los HSM del clúster de AWS CloudHSM, utilice la herramienta de línea de
comandos de AWS CloudHSM que se conoce como cloudhsm_mgmt_util. Para poder administrar usuarios,
debe iniciar cloudhsm_mgmt_util, habilitar el cifrado integral e iniciar sesión en los HSM. Para obtener más
información, consulte cloudhsm_mgmt_util (p. 81).

Para administrar usuarios de HSM, inicie sesión en el HSM con el nombre de usuario y la contraseña
de un responsable de criptografía (p. 11) (CO). Solo los CO pueden administrar otros usuarios. El HSM
contiene un CO predeterminado llamado admin. La contraseña de este usuario se establece al activar el
clúster (p. 39).

Temas
• Crear usuarios (p. 54)
• Enumerar usuarios (p. 55)
• Cambiar la contraseña de un usuario (p. 56)
• Eliminar usuarios (p. 56)

Crear usuarios
Utilice el comando createUser (p. 94) para crear un usuario en el HSM. Los siguientes ejemplos crean
nuevos usuarios CO y CU, respectivamente. Para obtener información sobre los tipos de usuario, consulte
Usuarios de HSM (p. 10).

aws-cloudhsm>createUser CO example_officer <password>


*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y

54
AWS CloudHSM Guía del usuario
Enumerar usuarios

Creating User example_officer(CO) on 3 nodes

aws-cloudhsm>createUser CU example_user <password>


*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Creating User example_user(CU) on 3 nodes

A continuación se muestra la sintaxis del comando createUser (p. 94). En los comandos de
cloudhsm_mgmt_util, los tipos de usuario y las contraseñas distinguen entre mayúsculas y minúsculas,
pero los nombres de usuario, no.

aws-cloudhsm>createUser <user type> <user name> <password>

Enumerar usuarios
Utilice el comando listUsers (p. 114) para enumerar los usuarios de cada HSM del clúster. Todos los
tipos de usuarios de HSM (p. 10) pueden utilizar este comando, ya que no está restringido únicamente a
los CO.

El PCO es el primer ("principal") CO creado en cada HSM. Tiene los mismos permisos en el HSM que
cualquier otro CO.

aws-cloudhsm>listUsers
Users on server 0(10.0.2.9):
Number of users found:4

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO example_officer NO
0 NO
4 CU example_user NO
0 NO
Users on server 1(10.0.3.11):
Number of users found:4

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO example_officer NO
0 NO
4 CU example_user NO
0 NO
Users on server 2(10.0.1.12):
Number of users found:4

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA

55
AWS CloudHSM Guía del usuario
Cambiar la contraseña de un usuario

1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO example_officer NO
0 NO
4 CU example_user NO
0 NO

Cambiar la contraseña de un usuario


Ejecute el comando changePswd para cambiar la contraseña de cualquier usuario. Todos los tipos de
usuario de HSM (p. 10) pueden emitir este comando, pero solo los CO pueden cambiar la contraseña de
otros usuarios. Los usuarios de criptografía (CU) y los usuarios de dispositivos (AU) solo pueden cambiar
su contraseña. En los siguientes ejemplos se cambia la contraseña de los usuarios CO y CU creados en
los ejemplos de Crear usuarios (p. 54).

aws-cloudhsm>changePswd CO example_officer <new password>


*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Changing password for example_officer(CO) on 3 nodes

aws-cloudhsm>changePswd CU example_user <new password>


*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Changing password for example_user(CU) on 3 nodes

A continuación, se muestra la sintaxis del comando changePswd. En los tipos de usuario y las contraseñas
se distingue entre mayúsculas y minúsculas, pero no en los nombres de usuario.

aws-cloudhsm>changePswd <user type> <user name> <new password>

Warning
El CO no puede cambiar la contraseña de un usuario (CO o CU) que ya ha iniciado sesión.

Eliminar usuarios
Ejecute el comando deleteUser para eliminar un usuario. En los siguientes ejemplos se eliminan los
usuarios CO y CU creados en los ejemplos de Crear usuarios (p. 54).

aws-cloudhsm>deleteUser CO example_officer
Deleting user example_officer(CO) on 3 nodes
deleteUser success on server 0(10.0.2.9)
deleteUser success on server 1(10.0.3.11)
deleteUser success on server 2(10.0.1.12)

56
AWS CloudHSM Guía del usuario
Administración de claves

aws-cloudhsm>deleteUser CU example_user
Deleting user example_user(CU) on 3 nodes
deleteUser success on server 0(10.0.2.9)
deleteUser success on server 1(10.0.3.11)
deleteUser success on server 2(10.0.1.12)

A continuación, se muestra la sintaxis del comando deleteUser.

aws-cloudhsm>deleteUser <user type> <user name>

Warning
La eliminación de un usuario CU dejará huérfanas todas las claves propiedad de dicho CU y estas
quedarán inservibles. No recibirá ninguna advertencia que el usuario que está a punto de eliminar
aún tiene claves de su propiedad en el clúster.

Administración de claves en AWS CloudHSM


Para administrar las claves de los HSM del clúster de AWS CloudHSM, utilice la herramienta de línea de
comandos key_mgmt_util (p. 129). Para poder administrar las claves, debe iniciar tanto el cliente de AWS
CloudHSM como key_mgmt_util e iniciar sesión en los HSM.

Para administrar las claves, inicie sesión en el HSM (p. 131) con el nombre de usuario y la contraseña de
un usuario de criptografía (CU). Solo los usuarios de criptografía pueden crear claves. El CU que creó las
claves es su propietario inherente y las administra.

Temas
• Generar claves (p. 57)
• Importar claves (p. 58)
• Exportar claves (p. 60)
• Eliminar claves (p. 61)
• Compartir y dejar de compartir claves (p. 61)
• Usar claves de confianza para controlar el desencapsulamiento de claves (p. 62)
• Encapsulamiento de claves AES en AWS CloudHSM con arreglo a la conformidad normativa (p. 64)

Generar claves
Para generar claves en el HSM, utilice el comando que corresponde al tipo de clave que desea generar.

Generar claves simétricas


Utilice el comando genSymKey (p. 167) para generar AES, triple DES y otros tipos de claves simétricas.
Para ver todas las opciones disponibles, utilice el comando genSymKey -h.

El siguiente ejemplo crea una clave AES de 256 bits.

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


Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Created. Key Handle: 524295

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

57
AWS CloudHSM Guía del usuario
Importar claves

Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Generar pares de claves RSA


Para generar un par de claves RSA, utilice el comando genRSAKeyPair (p. 162). Para ver todas las
opciones disponibles, utilice el comando genRSAKeyPair -h.

El siguiente ejemplo genera un par de claves RSA de 2048 bits.

Command: genRSAKeyPair -m 2048 -e 65537 -l rsa2048


Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair: public key handle: 524294 private key handle: 524296

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Generar pares de claves ECC (criptografía de curva elíptica)


Pares de claves de cifrado
Para generar un par de claves ECC, utilice el comando genECCKeyPair (p. 158). Para ver todas las
opciones disponibles, incluida una lista de las curvas elípticas admitidas, use el comando genECCKeyPair
-h.

En el ejemplo siguiente se genera un par de claves ECC con la curva elíptica P-384 definida en la
publicación de NIST FIPS 186-4.

Command: genECCKeyPair -i 14 -l ecc-p384


Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair: public key handle: 524297 private key handle: 524298

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Importar claves
Para importar claves secretas (es decir, claves simétricas y claves privadas asimétricas) en el HSM,
primero debe crear un clave de encapsulación en el HSM. Puede importar claves públicas directamente sin
una clave de encapsulamiento.

Importar claves secretas


Complete los pasos siguientes para importar una clave secreta. Antes de importar una clave secreta,
guárdela en un archivo. Guarde las claves simétricas como bytes sin procesar y las claves privadas
asimétricas en formato PEM.

En este ejemplo se muestra cómo importar una clave secreta sin cifrar desde un archivo hasta el HSM.
Para importar una clave cifrada desde un archivo hasta el HSM, utilice comando unWrapKey (p. 204).

58
AWS CloudHSM Guía del usuario
Importar claves

Para importar una clave secreta

1. Utilice el comando genSymKey (p. 167) para crear una clave de encapsulamiento. El siguiente
comando crea una clave de encapsulamiento AES de 128 bits que solo es válida durante la sesión
actual. Puede utilizar una clave de sesión o una clave persistente como clave de encapsulación.

Command: genSymKey -t 31 -s 16 -sess -l import-wrapping-key


Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Created. Key Handle: 524299

Cluster Error Status


Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

2. Utilice uno de los siguientes comandos, en función del tipo de clave secreta que va a importar.

• Para importar una clave simétrica, utilice el comando imSymKey. El siguiente comando importa una
clave AES de un archivo denominado aes256.key utilizando la clave de encapsulamiento creada
en el paso anterior. Para ver todas las opciones disponibles, utilice el comando imSymKey -h.

Command: imSymKey -f aes256.key -t 31 -l aes256-imported -w 524299


Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS

Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Unwrapped. Key Handle: 524300

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

• Para importar una clave privada asimétrica, utilice el comando importPrivateKey. El siguiente
comando importa una clave privada de un archivo denominado rsa2048.key utilizando la clave
de encapsulamiento creada en el paso anterior. Para ver todas las opciones disponibles, utilice el
comando importPrivateKey -h.

Command: importPrivateKey -f rsa2048.key -l rsa2048-imported -w 524299


BER encoded key length is 1216

Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS

Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS

Private Key Unwrapped. Key Handle: 524301

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Importar claves públicas


Utilice el comando importPubKey para importar una clave pública. Para ver todas las opciones disponibles,
utilice el comando importPubKey -h.

59
AWS CloudHSM Guía del usuario
Exportar claves

El siguiente ejemplo importa una clave pública RSA de un archivo denominado rsa2048.pub.

Command: importPubKey -f rsa2048.pub -l rsa2048-public-imported


Cfm3CreatePublicKey returned: 0x00 : HSM Return: SUCCESS

Public Key Handle: 524302

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Exportar claves
Para exportar claves secretas (es decir, claves simétricas y claves privadas asimétricas) desde el HSM,
primero debe crear un clave de encapsulado. Puede exportar claves públicas directamente sin una clave
de encapsulamiento.

Solo el propietario de la clave puede exportarla. Los usuarios con los que se comparte la clave pueden
utilizarla en operaciones criptográficas, pero no pueden exportarla. Cuando ejecute este ejemplo,
asegúrese de que exporta una clave que haya creado.
Important

El comando exSymKey (p. 143) escribe una copia sin cifrar de la clave secreta en un archivo. El
proceso de exportación requiere una clave de encapsulación, pero la clave que hay en el archivo
no es una clave encapsulada. Para exportar una copia encapsulada (cifrada) de una clave, utilice
el comando wrapKey (p. 211).

Exportar claves secretas


Complete los pasos siguientes para exportar una clave secreta.

Para exportar una clave secreta

1. Utilice el comando genSymKey (p. 167) para crear una clave de encapsulamiento. El siguiente
comando crea una clave de encapsulamiento AES de 128 bits que solo es válida durante la sesión
actual.

Command: genSymKey -t 31 -s 16 -sess -l export-wrapping-key


Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Created. Key Handle: 524304

Cluster Error Status


Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

2. Utilice uno de los siguientes comandos, en función del tipo de clave secreta que va a exportar.

• Para exportar una clave simétrica, utilice el comando exSymKey (p. 143). El siguiente ejemplo
exporta una clave AES a un archivo denominado aes256.key.exp. Para ver todas las opciones
disponibles, utilice el comando exSymKey -h.

Command: exSymKey -k 524295 -out aes256.key.exp -w 524304


Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS

60
AWS CloudHSM Guía del usuario
Eliminar claves

Wrapped Symmetric Key written to file "aes256.key.exp"

Note

La salida del comando indica que se ha escrito una "Wrapped Symmetric Key" (clave
simétrica encapsulada) en el archivo de salida. Sin embargo, el archivo de salida contiene
una clave sin cifrar (sin encapsular). Para exportar una clave encapsulada (cifrada) a un
archivo, utilice el comando wrapKey (p. 211).
• Para exportar una clave privada, utilice el comando exportPrivateKey. El siguiente comando exporta
una clave privada a un archivo denominado rsa2048.key.exp. Para ver todas las opciones
disponibles, utilice el comando exportPrivateKey -h.

Command: exportPrivateKey -k 524296 -out rsa2048.key.exp -w 524304


Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS

PEM formatted private key is written to rsa2048.key.exp

Exportar claves públicas


Utilice el comando exportPubKey para exportar una clave pública. Para ver todas las opciones disponibles,
utilice el comando exportPubKey -h.

El siguiente ejemplo exporta una clave pública RSA a un archivo denominado rsa2048.pub.exp.

Command: exportPubKey -k 524294 -out rsa2048.pub.exp


PEM formatted public key is written to rsa2048.pub.key

Cfm3ExportPubKey returned: 0x00 : HSM Return: SUCCESS

Eliminar claves
Utilice el comando deleteKey (p. 137) para eliminar una clave, como en el siguiente ejemplo. Solo el
propietario de la clave puede eliminar una clave.

Command: deleteKey -k 524300


Cfm3DeleteKey returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Compartir y dejar de compartir claves


En AWS CloudHSM, el propietario de la clave es el CU que la crea. El propietario administra la clave,
puede exportarla y eliminarla y, además, puede utilizar la clave en operaciones criptográficas. El
propietario también puede compartir la clave con otros usuarios CU. Los usuarios con quien se comparte
la clave pueden utilizar la clave en operaciones criptográficas, pero no pueden exportarla ni eliminarla ni
tampoco pueden compartirla con otros usuarios.

Puede compartir claves con otros usuarios CU cuando crea la clave, por ejemplo, utilizando el parámetro -
u de los comandos genSymKey (p. 167) o genRSAKeyPair (p. 162). Para compartir claves existentes

61
AWS CloudHSM Guía del usuario
Usar claves de confianza para controlar
el desencapsulamiento de claves

con otro usuario del HSM, utilice la herramienta de línea de comandos cloudhsm_mgmt_util (p. 81). Este
proceso es distinto de la mayoría de las tareas documentadas en esta sección, que utilizan la herramienta
de línea de comandos key_mgmt_util (p. 129).

Para poder compartir una clave, debe iniciar cloudhsm_mgmt_util, habilitar el cifrado integral e iniciar
sesión en los HSM. Para compartir una clave, inicie sesión en el HSM como el usuario de criptografía (CU)
que posee la clave. Solo los propietarios de clave pueden compartir una clave.

Utilice el comando shareKey para compartir o dejar de compartir una clave especificando el identificador de
la clave y el ID del usuario o usuarios. Para compartir o dejar de compartir con varios usuarios, especifique
una lista separada por comas de ID de usuario. Para compartir una clave, utilice 1 como último parámetro
del comando, como se muestra en el siguiente ejemplo. Para dejar de compartirla, utilice 0.

aws-cloudhsm>shareKey 524295 4 1
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


shareKey success on server 0(10.0.2.9)
shareKey success on server 1(10.0.3.11)
shareKey success on server 2(10.0.1.12)

A continuación, se muestra la sintaxis del comando shareKey.

aws-cloudhsm>shareKey <key handle> <user ID> <Boolean: 1 for share, 0 for unshare>

Usar claves de confianza para controlar el


desencapsulamiento de claves
Es posible que las claves exportables (una clave de datos, por ejemplo) en el HSM se puedan encapsular
con una clave arbitraria (por ejemplo, una clave de encapsulamiento incorrecta) y esto podría derivar en la
pérdida de la clave de datos. Aunque esta acción tendría que ser iniciada por un infiltrado hostil, si supone
una preocupación, hay soluciones destinadas a este problema.

La primera solución es bloquear todas las exportaciones de claves del clúster. Esta solución tiene
limitaciones porque restringir las exportaciones de claves afecta de forma negativa a las aplicaciones que
necesitan exportar e importar claves de datos. Sin embargo, una solución más flexible es usar una plantilla
de desencapsulamiento de claves junto con la clave de confianza y los atributos de encapsulamiento
con entidades de confianza. AWS CloudHSM 3.0 y superior admite claves de confianza y plantillas de
desencapsulamiento. En este artículo se explica cómo utilizar una plantilla de desencapsulamiento de
claves junto con la clave de confianza y los atributos de encapsulamiento con entidades de confianza.

Introducción
Un atributo clave es una propiedad asociada a la clave, dentro del HSM, que especifica los permisos
asociados a la clave. Si quiere .

• CKA_WRAP_WITH_TRUSTED: Cuando se aplica a una clave de datos exportable, este


atributo garantiza que la clave de datos solo se pueda encapsular con una clave marcada como
«CKA_TRUSTED» por un responsable de criptografía. Una vez establecido como true, se convierte en
un atributo de solo lectura y el usuario criptográfico no puede desconfigurarlo.

62
AWS CloudHSM Guía del usuario
Usar claves de confianza para controlar
el desencapsulamiento de claves

• CKA_TRUSTED: Este es el único atributo especificado por un responsable de criptografía, en lugar de


por el usuario criptográfico que es el propietario de una clave. CKA_TRUSTED indica que el responsable
de criptografía ha realizado la diligencia necesaria y reconoce que esta clave es de confianza.
• CKA_UNWRAP_TEMPLATE: Una plantilla de atributo es una colección de nombres y valores de
atributo. Cuando se especifica una plantilla de desencapsulamiento para una clave de encapsulamiento,
todos los atributos de esa plantilla se aplican automáticamente a la clave de datos desencapsulada.
Cuando una aplicación envía una clave para desencapsular, puede proporcionar una plantilla de
desencapsulamiento por separado. En este caso, el HSM utiliza la unión de ambas plantillas. Sin
embargo, si un valor de CKA_UNWRAP_TEMPLATE para la clave de encapsulamiento entra en conflicto
con un atributo proporcionado por la aplicación durante la solicitud de desencapsulamiento, se produce
un error en la solicitud de desencapsulamiento.

Para obtener más información acerca de los atributos PKCS#11 admitidos por AWS CloudHSM, consulte
el artículo sobre Atributos PKCS#11 admitidos.

Procesar
Paso 1: Generar la clave en bits para la clave de confianza

Para configurar una clave de confianza, un agente de seguridad humano establece una cuenta
de usuario criptográfico (CU) y genera las claves de encapsulamiento con la especificación
CKA_UNWRAP_TEMPLATE apropiada. Generalmente, debe incluir CKA_WRAP_WITH_TRUSTED
= TRUE como parte de esta plantilla. Si desea que las claves no encapsuladas no sean exportables,
establezca CKA_EXPORTABLE = FALSE. Para generar la clave, debe utilizar una aplicación PKCS#11.
Las herramientas de línea de comandos no admiten atributos avanzados.

Paso 2: Marque la clave como de confianza

El agente de seguridad humano inicia sesión en cloudhsm_mgmt_util con una cuenta de responsable
de criptografía (CO). Para marcar la clave como de confianza, llame a setAttribute con
OBJ_ATTR_TRUSTED (valor 134) establecido en TRUE. Para obtener más información sobre la función
setAttribute, consulte el artículo sobre setAttribute

loginHSM CO <user-name> <password>


setAttribute HH 134 1
quit

Paso 3: Compartir la clave de confianza con la aplicación

El agente de seguridad humano inicia sesión con la cuenta de CU y utiliza la función shareKey para
compartir las claves de encapsulamiento de confianza con las cuentas de CU que utilizarán las
aplicaciones. A continuación, la cuenta de CU de la aplicación puede utilizar las claves de confianza para
encapsular y desencapsular claves de datos. Sin embargo, los usuarios no pueden modificar atributos para
claves compartidas con ellos, y las cuentas de usuario criptográficas no se pueden utilizar para modificar el
atributo CKA_TRUSTED de la clave. Una vez hecho esto, el responsable de seguridad puede estar seguro
de que las claves de encapsulamiento de confianza permanecerán correctas.

Paso 4: Generar y encapsular todas las claves de datos

Mediante su cuenta de CU, el responsable de seguridad importa o genera todas las claves de datos y
las encapsula con la clave de encapsulamiento de confianza. Las claves encapsuladas se almacenan
externamente, según sea necesario. Dado que las claves de datos solo se pueden desencapsular con
las claves de encapsulamiento originales, se debe aplicar la plantilla adecuada al desencapsularlas.
Una aplicación puede desencapsular las claves bajo demanda según sea necesario y eliminar la clave
desencapsulada del HSM una vez que esta ya no sea necesaria.

63
AWS CloudHSM Guía del usuario
Encapsulamiento de claves AES

Ejemplo: Generar una clave con una plantilla de


desencapsulamiento en PKCS#11
En este ejemplo se utiliza una plantilla de desencapsulamiento para generar una clave.

std::vector CK_ATTRIBUTE unwrapTemplate = {


CK_ATTRIBUTE { CKA_KEY_TYPE, &aes, sizeof(aes) },
CK_ATTRIBUTE { CKA_CLASS, &aesClass, sizeof(aesClass) },
CK_ATTRIBUTE { CKA_TOKEN, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_EXTRACTABLE, &falseValue, sizeof(falseValue) }
};
std::vector CK_ATTRIBUTE pubAttributes = {
CK_ATTRIBUTE { CKA_KEY_TYPE, &rsa, sizeof(rsa) },
CK_ATTRIBUTE { CKA_CLASS, &pubClass, sizeof(pubClass) },
CK_ATTRIBUTE { CKA_TOKEN, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_MODULUS_BITS, &modulusBits, sizeof(modulusBits) },
CK_ATTRIBUTE { CKA_PUBLIC_EXPONENT, publicExponent.data(),
publicExponent.size() },
CK_ATTRIBUTE { CKA_VERIFY, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_WRAP, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_ENCRYPT, &trueValue, sizeof(trueValue) }
};
std::vector CK_ATTRIBUTE priAttributes = {
CK_ATTRIBUTE { CKA_KEY_TYPE, &rsa, sizeof(rsa) },
CK_ATTRIBUTE { CKA_CLASS, &priClass, sizeof(priClass) },
CK_ATTRIBUTE { CKA_PRIVATE, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_TOKEN, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_SIGN, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_UNWRAP, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_DECRYPT, &trueValue, sizeof(trueValue) },
CK_ATTRIBUTE { CKA_UNWRAP_TEMPLATE, unwrapTemplate.data(),
unwrapTemplate.size() * sizeof(CK_ATTRIBUTE) }
};
funcs->C_GenerateKeyPair(
session,
&rsaMechanism,
pubAttributes.data(),
pubAttributes.size(),
priAttributes.data(),
priAttributes.size(),
&pubKey,
&priKey
);

Encapsulamiento de claves AES en AWS CloudHSM


con arreglo a la conformidad normativa
En este tema, se describen las opciones de encapsulamiento de claves AES disponibles en AWS
CloudHSM. El encapsulamiento de claves AES utiliza una clave AES (la clave de encapsulamiento) para
encapsular otra clave de cualquier tipo (la clave de destino). Utilice el encapsulamiento de claves para
proteger las claves almacenadas o transmitir claves a través de redes poco seguras.

Algoritmos admitidos
AWS CloudHSM dispone de tres opciones para encapsular claves AES. La diferencia entre ellas está en
cómo se rellena la clave antes de que se encapsule. El relleno se realiza automáticamente, en función del
algoritmo que se utilice, cuando se invoca el encapsulamiento de claves. En la siguiente tabla, se muestran

64
AWS CloudHSM Guía del usuario
Encapsulamiento de claves AES

los algoritmos admitidos y detalles relacionados para ayudarle a elegir un mecanismo de encapsulamiento
adecuado para su aplicación.

Algoritmo de Especificación Tipos de claves de Esquema de Cliente de AWS


encapsulamiento destino admitidos relleno CloudHSM
de claves AES disponible

Encapsulamiento RFC 5649 y SP Todos Agrega ceros SDK 3.1 y


de claves AES con 800 - 38F después de los bits versiones
relleno de ceros de la clave, si es posteriores
necesario, para
alinear los bloques

Encapsulamiento RFC 3394 y SP Claves alineadas Ninguno SDK 3.1 y


de claves AES sin 800 - 38F en bloques, como versiones
relleno AES y 3DES posteriores
1
Encapsulamiento Ninguna Todos Se agregan al Todos
de claves AES con menos 8 bytes
relleno PKCS #5 según el esquema
de relleno PKCS
#5 para alinear los
bloques

Para obtener más información acerca de cómo puede utilizar en su aplicación los algoritmos de
encapsulamiento de claves AES de la tabla anterior, consulte Uso del encapsulamiento de claves AES en
AWS CloudHSM. (p. 66)

Descripción de los vectores de inicialización en el encapsulamiento de claves


AES
Antes de realizar el encapsulamiento, CloudHSM agrega un vector de inicialización (IV) a la clave de
destino para garantizar la integridad de los datos. Cada algoritmo de encapsulamiento de claves tiene una
restricciones específicas sobre el tipo de IV permitido. Para establecer el IV en AWS CloudHSM, tiene dos
opciones:

• IV implícito: el IV se establece en NULL y CloudHSM utiliza el valor predeterminado de ese algoritmo en


las operaciones de encapsulamiento y desencapsulamiento (recomendado)
• IV explicito: el IV se establece pasando su valor predeterminado a la función de encapsulamiento de
claves.

Important
Debe saber qué IV está utilizando en su aplicación. Para desencapsular la clave, debe
proporcionar el mismo IV que utilizó para encapsularla. Si usa un IV implícito para encapsularla,
use un IV implícito para desencapsularla. Con un IV implícito, CloudHSM usará el valor
predeterminado para realizar el desencapsulamiento.

En la tabla siguiente, se describen los valores permitidos para los IV, lo que determina el algoritmo de
encapsulamiento.

Algoritmo de encapsulamiento de IV implícito IV explícito


claves AES

Encapsulamiento de claves AES Obligatorio No permitido


con relleno de ceros

65
AWS CloudHSM Guía del usuario
Encapsulamiento de claves AES

Algoritmo de encapsulamiento de IV implícito IV explícito


claves AES
Valor predeterminado: (IV
calculado internamente en
función de la especificación)

Encapsulamiento de claves AES Permitido (recomendado) Permitir


sin relleno
Valor predeterminado: Solo se acepta este valor:
0xA6A6A6A6A6A6A6A6 0xA6A6A6A6A6A6A6A6

Encapsulamiento de claves AES Permitido (recomendado) Permitir


con relleno PKCS #5
Valor predeterminado: Solo se acepta este valor:
0xA6A6A6A6A6A6A6A6 0xA6A6A6A6A6A6A6A6

Uso del encapsulamiento de claves AES en AWS CloudHSM


Las claves se encapsular y desencapsulan del modo siguiente:

• En la biblioteca PCKS #11 (p. 224), seleccione el mecanismo apropiado para las funciones
C_UnWrapKey y C_WrapKey, tal y como se muestra en la siguiente tabla.
• En la biblioteca Java (p. 251), seleccione el algoritmo, el modo y la combinación de relleno que sean
apropiados, implementando los métodos de cifrado Cipher.WRAP_MODE y Cipher.UNWRAP_MODE, tal
y como se muestra en la siguiente tabla.
• En key_mgmt_util (KMU) (p. 129), utilice los comandos wrapKey y unWrapKey con los valores m
apropiados, tal y como se muestra en la siguiente tabla.

Algoritmo de Mecanismo de PKCS Método de Java Argumento de KMU


encapsulamiento de #11
claves AES

Encapsulamiento de • CKM_AES_KEY_WRAP_PAD
AESWrap/ECB/ m=6
claves AES con relleno ZeroPadding
de ceros

Encapsulamiento de • CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD
AESWrap/ECB/ m=5
claves AES sin relleno (mecanismo definido NoPadding
por el proveedor)
1
Encapsulamiento de • CKM_AES_KEY_WRAP AESWrap/ECB/ m=4
claves AES con relleno PKCS5Padding
• CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD
PKCS #5 (mecanismo definido
por el proveedor)

1
El mecanismo CKM_AES_KEY_WRAP no cumple la especificación PKCS #11 2.40. Para obtener más información, consulte el primer problema

conocido que se describe en Problemas conocidos para todas las instancias de HSM (p. 364).

66
AWS CloudHSM Guía del usuario
Autenticación de cuórum (M de N)

Aplicación de la autenticación de cuórum (control


de acceso M de N)
Los HSM del clúster de AWS CloudHSM admiten la autenticación de cuórum, también conocida como
control de acceso M de N. Con la autenticación de cuórum ningún usuario único del HSM puede realizar
operaciones controladas mediante cuórum en el HSM. En su lugar, para llevar a cabo estas operaciones
debe cooperar un número mínimo de usuarios del HSM (al menos 2). Con la autenticación de cuórum,
puede añadir una capa adicional de protección al exigir la aprobación de más de un usuario del HSM.

La autenticación de cuórum puede controlar las siguientes operaciones:

• Administración de los usuarios del HSM por parte de los responsables de criptografía (CO) (p. 11):
crear y eliminar usuarios de HSM y cambiar la contraseña de otro usuario del HSM. Para obtener más
información, consulte Uso de la autenticación de cuórum para responsables de criptografía (p. 72).

Los siguientes temas contienen más información acerca de la autenticación de cuórum en AWS
CloudHSM.

Temas
• Información general sobre la autenticación de cuórum (p. 67)
• Detalles adicionales sobre la autenticación de cuórum (p. 68)
• Uso de la autenticación de cuórum para responsables de criptografía: primera configuración (p. 68)
• Uso de la autenticación de cuórum para responsables de criptografía (p. 72)
• Cambiar el valor mínimo de cuórum para responsables de criptografía (p. 78)

Información general sobre la autenticación de cuórum


En los pasos siguientes se resumen los procesos de autenticación de cuórum. Para informarse de
las herramientas y los específicos, consulte Uso de la autenticación de cuórum para responsables de
criptografía (p. 72).

1. Cada usuario del HSM crea una clave asimétrica para la firma. El usuario efectúa esta operación fuera
del HSM y se encarga de proteger adecuadamente la clave.
2. Cada usuario del HSM inicia sesión en el HSM y registra la parte pública de su clave de firma (la clave
pública) en el HSM.
3. Cuando un usuario del HSM quiere realizar una operación controlada mediante cuórum, inicia sesión en
el HSM y obtiene un token de cuórum.
4. El usuario del HSM pasa el token de cuórum a uno o varios usuarios de ese HSM y les pide su
aprobación.
5. Los otros usuarios del HSM dan su aprobación utilizando sus claves para firmar criptográficamente el
token de cuórum. Esto se produce fuera del HSM.
6. Cuando el usuario del HSM tiene el número necesario de aprobaciones, inicia sesión en el HSM y pasa
el token de cuórum y las aprobaciones (firmas) al HSM.
7. El HSM utiliza las claves públicas registradas de cada firmante para verificar las firmas. Si las firmas son
válidas, el HSM aprueba el token.
8. Ahora el usuario del HSM ya puede realizar la operación controlada mediante cuórum.

67
AWS CloudHSM Guía del usuario
Detalles adicionales sobre la autenticación de cuórum

Detalles adicionales sobre la autenticación de cuórum


Tenga en cuenta la siguiente información adicional acerca del uso de la autenticación de cuórum en AWS
CloudHSM.

• Un usuario del HSM puede firmar su propio token de cuórum; es decir, el usuario solicitante puede
proporcionar una o varias de las aprobaciones exigidas para la autenticación de cuórum.
• Elija el número mínimo de aprobadores de cuórum para las operaciones controladas mediante cuórum.
El número mínimo que puede elegir es dos (2). Para las operaciones de administración de usuarios de
HSM realizadas por CO, el mayor número que puede elegir es veinte (20).
• El HSM puede almacenar hasta 1024 tokens de cuórum. Si el HSM ya tiene 1024 tokens cuando intenta
crear uno nuevo, el HSM eliminará uno de los tokens que haya caducado. De forma predeterminada, los
tokens caducan diez minutos después de su creación.

Uso de la autenticación de cuórum para responsables


de criptografía: primera configuración
Los siguientes temas describen los pasos que debe seguir para configurar el HSM de forma que
los responsables de criptografía (CO) (p. 11) puedan usar la autenticación de cuórum. Debe seguir
estos pasos solo una vez cuando configure por primera vez la autenticación de cuórum para CO.
Después de completar estos pasos, consulte Uso de la autenticación de cuórum para responsables de
criptografía (p. 72).

Temas
• Requisitos previos (p. 68)
• Crear y registrar una clave de firma (p. 69)
• Establecer el valor mínimo de cuórum en el HSM (p. 71)

Requisitos previos
Para comprender este ejemplo, debe estar familiarizado con la herramientas de línea de
comandoscloudhsm_mgmt_util (p. 81). En este ejemplo, el clúster de AWS CloudHSM tiene dos HSM,
cada uno de ellos con el mismo CO, tal y como se muestra en el siguiente resultado del comando listUsers.
Para obtener más información sobre la creación de usuarios, consulte Administración de usuarios de
HSM (p. 54).

aws-cloudhsm>listUsers
Users on server 0(10.0.2.14):
Number of users found:7

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO officer1 NO
0 NO
4 CO officer2 NO
0 NO
5 CO officer3 NO
0 NO
6 CO officer4 NO
0 NO

68
AWS CloudHSM Guía del usuario
Primera configuración para responsables de criptografía

7 CO officer5 NO
0 NO
Users on server 1(10.0.1.4):
Number of users found:7

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO officer1 NO
0 NO
4 CO officer2 NO
0 NO
5 CO officer3 NO
0 NO
6 CO officer4 NO
0 NO
7 CO officer5 NO
0 NO

Crear y registrar una clave de firma


Para utilizar la autenticación de cuórum, cada CO debe crear una clave asimétrica para firmar (una clave
de firma). Esto se realiza fuera del HSM.

Hay muchas formas de crear y proteger una clave de firma personal. El siguiente ejemplo muestra cómo
hacerlo con OpenSSL.

Example – Crear una clave de firma personal con OpenSSL

El siguiente ejemplo ilustra cómo utilizar OpenSSL para crear una clave RSA de 2048 bits que está
protegida por una frase de contraseña. Para utilizar este ejemplo, sustituya officer1.key por el nombre
del archivo donde desea almacenar la clave.

$ openssl genrsa -out officer1.key -aes256 2048


Generating RSA private key, 2048 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
Enter pass phrase for officer1.key:
Verifying - Enter pass phrase for officer1.key:

Cada CO debe crear su propia clave.

Después de crear una clave, el CO debe registrar la parte pública de la clave (la clave pública) en el HSM.

Para registrar una clave pública en el HSM

1. Use el siguiente comando para iniciar la utilidad de la línea de comandos cloudhsm_mgmt_util.

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

2. Utilice el comando enable_e2e para establecer la comunicación cifrada completa.


3. Utilice el comando loginHSM para iniciar sesión en los HSM como CO. Para obtener más información,
consulte Iniciar sesión en los HSM (p. 87).
4. Utilice el comando registerMofnPubKey para registrar la clave pública. Para obtener más información,
consulte el siguiente ejemplo o utilice el comando help registerMofnPubKey.

69
AWS CloudHSM Guía del usuario
Primera configuración para responsables de criptografía

Example – Registrar una clave pública con el HSM

En el siguiente ejemplo, se explica cómo se utiliza el comando registerMofnPubKey en la herramienta de


línea de comandos cloudhsm_mgmt_util para registrar una clave pública del CO con el HSM. Para utilizar
este comando, el CO tiene que haber iniciado sesión en el HSM. Reemplace estos valores por sus propios
valores:

• key_match_string: una cadena arbitraria que se utiliza para establecer correspondencias entre las
claves públicas y privadas. Puede utilizar cualquier cadena para este valor. La herramienta de línea de
comandos cloudhsm_mgmt_util cifra esta cadena con la clave privada y después envía el blob de cifrado
y la cadena de texto no cifrado al HSM. El HSM utiliza la clave pública para descifrar el blob cifrado y, a
continuación, compara la cadena descifrada con la cadena de texto no cifrado. Si las cadenas coinciden,
el HSM registra la clave pública; de lo contrario, no lo hace.
• officer1: nombre de usuario del CO que está registrando la clave pública. Debe ser el mismo CO que
ha iniciado sesión en el HSM y está ejecutando este comando.
• officer1.key: nombre del archivo que contiene la clave del CO. Este archivo debe contener la clave
completa (y no solo la parte pública), ya que la herramienta de línea de comandos cloudhsm_mgmt_util
utiliza la clave privada para cifrar la cadena de coincidencia de claves.

Cuando se le solicite, escriba la frase de contraseña que protege la clave del CO.

aws-cloudhsm>registerMofnPubKey CO key_match_string officer1 officer1.key


*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Enter PEM pass phrase:
registerMofnPubKey success on server 0(10.0.2.14)
registerMofnPubKey success on server 1(10.0.1.4)

Cada CO debe registrar su clave pública en el HSM. Una vez que todos los CO registran las claves
públicas, el resultado del comando listUsers lo muestra en la columna MofnPubKey, tal y como puede
verse en el siguiente ejemplo.

aws-cloudhsm>listUsers
Users on server 0(10.0.2.14):
Number of users found:7

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO officer1 YES
0 NO
4 CO officer2 YES
0 NO
5 CO officer3 YES
0 NO
6 CO officer4 YES
0 NO
7 CO officer5 YES
0 NO
Users on server 1(10.0.1.4):
Number of users found:7

70
AWS CloudHSM Guía del usuario
Primera configuración para responsables de criptografía

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO officer1 YES
0 NO
4 CO officer2 YES
0 NO
5 CO officer3 YES
0 NO
6 CO officer4 YES
0 NO
7 CO officer5 YES
0 NO

Establecer el valor mínimo de cuórum en el HSM


Para utilizar autenticación de cuórum para CO, un CO debe iniciar sesión en el HSM y, a continuación,
establecer el valor mínimo de cuórum, también conocido como "valor m". Este es el número mínimo
de aprobaciones del CO necesarias para realizar las operaciones de administración de usuarios de
HSM. Cualquier CO en el HSM puede establecer el valor mínimo de cuórum, incluidos los CO que
no han registrado una clave para firmar. Puede cambiar el valor mínimo del cuórum en cualquier
momento; para obtener más información, consulte Cambiar el valor de cuórum para responsables de
criptografía (p. 78).

Para establecer el valor mínimo de cuórum en el HSM

1. Use el siguiente comando para iniciar la utilidad de la línea de comandos cloudhsm_mgmt_util.

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

2. Utilice el comando enable_e2e para establecer la comunicación cifrada completa.


3. Utilice el comando loginHSM para iniciar sesión en los HSM como CO. Para obtener más información,
consulte Iniciar sesión en los HSM (p. 87).
4. Utilice el comando setMValue para establecer el valor mínimo de cuórum. Para obtener más
información, consulte el siguiente ejemplo o utilice el comando help setMValue.

Example – Establecer el valor mínimo de cuórum del HSM


Este ejemplo utiliza un valor mínimo de cuórum de dos. Puede elegir cualquier valor entre dos y veinte,
hasta alcanzar el número total de CO en el HSM. En este ejemplo, el HSM tiene seis CO (el usuario
PCO (p. 11) es el mismo que el CO), por lo que el valor máximo posible es seis.

Para utilizar el siguiente comando de ejemplo, reemplace el número final (2) por el valor mínimo de cuórum
preferido.

aws-cloudhsm>setMValue 3 2
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Setting M Value(2) for 3 on 2 nodes

71
AWS CloudHSM Guía del usuario
Autenticación de cuórum para responsables de criptografía

En el ejemplo anterior, el primer número (3) identifica el servicio de HSM cuyo valor mínimo de cuórum
está estableciendo.

En la siguiente tabla se incluyen los identificadores de servicio de HSM junto con sus nombres,
descripciones y los comandos incluidos en el servicio.

Identificador de servicio Nombre del servicio Descripción del servicio Comandos HSM

3 USER_MGMT Administración de • createUser


usuarios de HSM • deleteUser
• changePswd (solo
se aplica al cambiar
la contraseña en
un usuario de HSM
distinto)

4 MISC_CO Servicio de CO • setMValue


misceláneo

Para obtener el valor mínimo de cuórum de un servicio, utilice el comando getMValue, tal y como se
muestra en el siguiente ejemplo.

aws-cloudhsm>getMValue 3
MValue of service 3[USER_MGMT] on server 0 : [2]
MValue of service 3[USER_MGMT] on server 1 : [2]

El resultado del comando getMValue anterior muestra que el valor mínimo de cuórum para las operaciones
de administración de usuarios de HSM (servicio 3) ahora es dos.

Después de completar estos pasos, consulte Uso de la autenticación de cuórum para responsables de
criptografía (p. 72).

Uso de la autenticación de cuórum para responsables


de criptografía
Un responsable de criptografía (CO) (p. 11) en el HSM puede configurar la autenticación de cuórum para
las siguientes operaciones en el HSM:

• Creación de usuarios de HSM


• Eliminación de usuarios de HSM
• Cambio de la contraseña de otro usuario de HSM

Después de la configuración de HSM para la autenticación de cuórum, los CO no puede realizar


operaciones de administración de usuarios de HSM por su cuenta. El siguiente ejemplo muestra el
resultado cuando un CO intenta crear un usuario nuevo en el HSM. Se produce un error en el comando,
RET_MXN_AUTH_FAILED, lo que indica un error en la autenticación de cuórum.

aws-cloudhsm>createUser CU user1 password


*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.

72
AWS CloudHSM Guía del usuario
Autenticación de cuórum para responsables de criptografía

****************************************************************

Do you want to continue(y/n)?y


Creating User user1(CU) on 2 nodes
createUser failed: RET_MXN_AUTH_FAILED
creating user on server 0(10.0.2.14) failed

Retry/Ignore/Abort?(R/I/A):A

Para realizar una operación de administración de usuarios de HSM, un CO debe completar las siguientes
tareas:

1. Obtenga un token de cuórum (p. 73).


2. Obtenga aprobaciones (firmas) de otros CO (p. 74).
3. Apruebe el token en el HSM (p. 74).
4. Realice la operación de administración de usuarios de HSM (p. 76).

Si aún no ha configurado el HSM para la autenticación de cuórum para CO, hágalo ahora. Para obtener
más información, consulte Primera configuración para responsables de criptografía (p. 68).

Obtener un token de cuórum


En primer lugar, el CO debe utilizar la herramienta de línea de comandos cloudhsm_mgmt_util para
solicitar un token de quórum.

Para obtener un token de cuórum

1. Use el siguiente comando para iniciar la utilidad de la línea de comandos cloudhsm_mgmt_util.

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

2. Utilice el comando enable_e2e para establecer la comunicación cifrada completa.


3. Utilice el comando loginHSM para iniciar sesión en los HSM como CO. Para obtener más información,
consulte Iniciar sesión en los HSM (p. 87).
4. Utilice el comando getToken para obtener un token de cuórum. Para obtener más información,
consulte el siguiente ejemplo o utilice el comando help getToken.

Example – Obtener un token de cuórum

Este ejemplo obtiene un token de cuórum para el CO con nombre de usuario officer1 y guarda el token en
un archivo denominado officer1.token. Para utilizar el comando de ejemplo, sustituya estos valores
por los suyos:

• officer1: nombre del CO que está obteniendo el token. Debe ser el mismo CO que ha iniciado sesión
en el HSM y está ejecutando este comando.
• officer1.token: nombre del archivo que se va a utilizar para almacenar el token de cuórum.

En el siguiente comando, 3 identifica el servicio para el que puede utilizar el token que está obteniendo.
En este caso, el token es para las operaciones de administración de usuarios de HSM (servicio 3). Para
obtener más información, consulte Establecer el valor mínimo de cuórum en el HSM (p. 71).

aws-cloudhsm>getToken 3 officer1 officer1.token


getToken success on server 0(10.0.2.14)
Token:
Id:1

73
AWS CloudHSM Guía del usuario
Autenticación de cuórum para responsables de criptografía

Service:3
Node:1
Key Handle:0
User:officer1
getToken success on server 1(10.0.1.4)
Token:
Id:1
Service:3
Node:0
Key Handle:0
User:officer1

Obtener firmas de CO responsables de la aprobación


Un CO que tiene un token de cuórum debe obtener la aprobación del token de otros CO. Para dar su
aprobación, los otros CO utilizan su clave de firma para firmar criptográficamente el token. Lo hacen fuera
del HSM.

Existen muchas maneras diferentes de firmar el token. El siguiente ejemplo muestra cómo hacerlo con
OpenSSL. Para utilizar otra herramienta de firma, asegúrese de que la herramienta utiliza la clave privada
del CO (clave de firma) para firmar un resumen SHA-256 del token.

Example – Obtener firmas de los CO responsables de la aprobación

En este ejemplo, el CO que tiene el token (officer1) necesita al menos dos aprobaciones. Los
siguientes comandos de ejemplo muestran cómo pueden dos CO utilizar OpenSSL para firmar el token
criptográficamente.

En el primer comando, officer1 firma su propio token. Para utilizar los siguientes comandos de ejemplo,
sustituya estos valores por los suyos:

• officer1.key y officer2.key: nombre del archivo que contiene la clave de firma del CO.
• officer1.token.sig1 y officer1.token.sig2: nombre del archivo que se va a utilizar para
almacenar la firma. Asegúrese de guardar cada firma en un archivo diferente.
• officer1.token: nombre del archivo que contiene el token que el CO está firmando.

$ openssl dgst -sha256 -sign officer1.key -out officer1.token.sig1 officer1.token


Enter pass phrase for officer1.key:

En el siguiente comando, officer2 firma el mismo token.

$ openssl dgst -sha256 -sign officer2.key -out officer1.token.sig2 officer1.token


Enter pass phrase for officer2.key:

Aprobar el token firmado en el HSM


Una vez que un CO obtiene el número mínimo de aprobaciones (firmas) de otros CO, debe aprobar el
token firmado en el HSM.

Para aprobar el token firmado en el HSM

1. Cree un archivo de aprobación del token. Para obtener más información, consulte el siguiente ejemplo.
2. Use el siguiente comando para iniciar la utilidad de la línea de comandos cloudhsm_mgmt_util.

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

74
AWS CloudHSM Guía del usuario
Autenticación de cuórum para responsables de criptografía

3. Utilice el comando enable_e2e para establecer la comunicación cifrada completa.


4. Utilice el comando loginHSM para iniciar sesión en los HSM como CO. Para obtener más información,
consulte Iniciar sesión en los HSM (p. 87).
5. Utilice el comando approveToken para aprobar el token firmado, transmitiendo el archivo de
aprobación del token. Para obtener más información, consulte el siguiente ejemplo.

Example – Crear un archivo de aprobación del token y aprobar el token firmado en el HSM

El archivo de aprobación del token es un archivo de texto en un formato en particular que el HSM necesita.
El archivo contiene información sobre el token, los aprobadores y las firmas de los aprobadores. Se
muestra a continuación un archivo de aprobación del token de ejemplo.

# For "Multi Token File Path", type the path to the file that contains
# the token. You can type the same value for "Token File Path", but
# that's not required. The "Token File Path" line is required in any
# case, regardless of whether you type a value.
Multi Token File Path = officer1.token;
Token File Path = ;

# Total number of approvals


Number of Approvals = 2;

# Approver 1
# Type the approver's type, name, and the path to the file that
# contains the approver's signature.
Approver Type = 2; # 2 for CO, 1 for CU
Approver Name = officer1;
Approval File = officer1.token.sig1;

# Approver 2
# Type the approver's type, name, and the path to the file that
# contains the approver's signature.
Approver Type = 2; # 2 for CO, 1 for CU
Approver Name = officer2;
Approval File = officer1.token.sig2;

Después de crear el archivo de aprobación del token, el CO utiliza la herramienta de línea de comandos
cloudhsm_mgmt_util para iniciar sesión en el HSM. El CO utiliza después el comando approveToken para
aprobar el token, tal y como se muestra en el siguiente ejemplo. Sustituya approval.txt por el nombre
del archivo de aprobación del token.

aws-cloudhsm>approveToken approval.txt
approveToken success on server 0(10.0.2.14)
approveToken success on server 1(10.0.1.4)

Cuando este comando se ejecuta correctamente, el HSM ha aprobado el token de cuórum. Para
comprobar el estado de un token, utilice el comando listTokens, tal y como se muestra en el siguiente
ejemplo. El resultado del comando muestra que el token tiene el número necesario de aprobaciones.

El tiempo de validez del token indica durante cuánto tiempo se garantiza que el token persista en el HSM.
Incluso después de que transcurra el tiempo de validez del token (cero segundos), puede seguir usando el
token.

aws-cloudhsm>listTokens

=====================
Server 0(10.0.2.14)
=====================

75
AWS CloudHSM Guía del usuario
Autenticación de cuórum para responsables de criptografía

-------- Token - 0 ----------


Token:
Id:1
Service:3
Node:1
Key Handle:0
User:officer1
Token Validity: 506 sec
Required num of approvers : 2
Current num of approvals : 2
Approver-0: officer1
Approver-1: officer2
Num of tokens = 1

=====================
Server 1(10.0.1.4)
=====================
-------- Token - 0 ----------
Token:
Id:1
Service:3
Node:0
Key Handle:0
User:officer1
Token Validity: 506 sec
Required num of approvers : 2
Current num of approvals : 2
Approver-0: officer1
Approver-1: officer2
Num of tokens = 1

listTokens success

Utilizar el token para operaciones de administración de usuarios


Una vez que un CO tiene un token con el número necesario de aprobaciones, tal y como se muestra en la
sección anterior, el CO puede realizar una de las siguientes operaciones de administración de usuarios de
HSM:

• Crear un usuario de HSM con el comando createUser (p. 94)


• Eliminar un usuario de HSM con el comando deleteUser
• Cambiar la contraseña de un usuario de HSM diferente con el comando changePswd

Para obtener más información acerca del uso de estos comandos, consulte Administración de usuarios de
HSM (p. 54).

El CO puede utilizar el token para una sola operación. Cuando dicha operación se realiza correctamente,
el token ya no es válido. Para hacer otra operación de administración de usuarios de HSM, el CO tiene que
obtener un token de cuórum nuevo, obtener firmas nuevas de los aprobadores y aprobar el token nuevo en
el HSM.

En el siguiente comando de ejemplo, el CO crea un usuario nuevo en el HSM.

aws-cloudhsm>createUser CU user1 password


*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

76
AWS CloudHSM Guía del usuario
Autenticación de cuórum para responsables de criptografía

Do you want to continue(y/n)?y


Creating User user1(CU) on 2 nodes

Una vez que el comando anterior se ejecuta correctamente, otro comando listUsers posterior muestra al
usuario nuevo.

aws-cloudhsm>listUsers
Users on server 0(10.0.2.14):
Number of users found:8

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO officer1 YES
0 NO
4 CO officer2 YES
0 NO
5 CO officer3 YES
0 NO
6 CO officer4 YES
0 NO
7 CO officer5 YES
0 NO
8 CU user1 NO
0 NO
Users on server 1(10.0.1.4):
Number of users found:8

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin NO
0 NO
2 AU app_user NO
0 NO
3 CO officer1 YES
0 NO
4 CO officer2 YES
0 NO
5 CO officer3 YES
0 NO
6 CO officer4 YES
0 NO
7 CO officer5 YES
0 NO
8 CU user1 NO
0 NO

Si el CO intenta realizar otra operación de administración de usuarios de HSM, da error con un error de
autenticación de cuórum, tal y como se muestra en el siguiente ejemplo.

aws-cloudhsm>deleteUser CU user1
Deleting user user1(CU) on 2 nodes
deleteUser failed: RET_MXN_AUTH_FAILED
deleteUser failed on server 0(10.0.2.14)

Retry/rollBack/Ignore?(R/B/I):I
deleteUser failed: RET_MXN_AUTH_FAILED
deleteUser failed on server 1(10.0.1.4)

77
AWS CloudHSM Guía del usuario
Cambiar el valor de cuórum para
responsables de criptografía

Retry/rollBack/Ignore?(R/B/I):I

El comando listTokens muestra que el CO no tiene ningún token aprobado, tal y como puede verse en el
siguiente ejemplo. Para realizar otra operación de administración de usuarios de HSM, el CO tiene que
obtener un token de cuórum nuevo, obtener firmas nuevas de los aprobadores y aprobar el token nuevo en
el HSM.

aws-cloudhsm>listTokens

=====================
Server 0(10.0.2.14)
=====================
Num of tokens = 0

=====================
Server 1(10.0.1.4)
=====================
Num of tokens = 0

listTokens success

Cambiar el valor mínimo de cuórum para responsables


de criptografía
Después de establecer el valor mínimo de cuórum (p. 71) para que los responsables de criptografía
(CO) (p. 11) puedan usar autenticación de cuórum, sería aconsejable que cambiara el valor mínimo de
cuórum. El HSM le permite cambiar el valor mínimo de cuórum solo cuando el número de aprobadores es
igual o superior al actual valor mínimo de cuórum. Por ejemplo, si el valor mínimo de cuórum es dos, al
menos dos CO deben dar su aprobación para cambiar el valor mínimo de cuórum.

Para obtener aprobación de cuórum para cambiar el valor mínimo de cuórum, necesita un token de
cuórum para el comando setMValue (servicio 4). Si necesita obtener un token de cuórum para el comando
setMValue (servicio 4), el valor mínimo de cuórum del servicio 4 debe ser superior a uno. Esto significa que
para poder cambiar el valor mínimo de cuórum para CO (servicio 3), es posible que tenga que cambiar el
valor mínimo de cuórum para el servicio 4.

En la siguiente tabla se incluyen los identificadores de servicio de HSM junto con sus nombres,
descripciones y los comandos incluidos en el servicio.

Identificador de servicio Nombre del servicio Descripción del servicio Comandos HSM

3 USER_MGMT Administración de • createUser


usuarios de HSM • deleteUser
• changePswd (solo
se aplica al cambiar
la contraseña en
un usuario de HSM
distinto)

4 MISC_CO Servicio de CO • setMValue


misceláneo

Para cambiar el valor mínimo de cuórum para responsables de criptografía

1. Use el siguiente comando para iniciar la utilidad de la línea de comandos cloudhsm_mgmt_util.

78
AWS CloudHSM Guía del usuario
Cambiar el valor de cuórum para
responsables de criptografía

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

2. Utilice el comando enable_e2e para establecer la comunicación cifrada completa.


3. Utilice el comando loginHSM para iniciar sesión en los HSM como CO. Para obtener más información,
consulte Iniciar sesión en los HSM (p. 87).
4. Utilice el comando getMValue para obtener el valor mínimo de cuórum del servicio 3. Para obtener
más información, consulte el siguiente ejemplo.
5. Utilice el comando getMValue para obtener el valor mínimo de cuórum del servicio 4. Para obtener
más información, consulte el siguiente ejemplo.
6. Si el valor mínimo de cuórum del servicio 4 es inferior al valor del servicio 3, utilice el comando
setMValue para cambiar el valor del servicio 4. Cambie el valor para el servicio 4 a uno que sea igual o
superior al valor para el servicio 3. Para obtener más información, consulte el siguiente ejemplo.
7. Obtenga un token de cuórum (p. 73), teniendo cuidado de especificar el servicio 4 como el servicio
para el que puede utilizar el token.
8. Obtenga aprobaciones (firmas) de otros CO (p. 74).
9. Apruebe el token en el HSM (p. 74).
10. Utilice el comando setMValue para cambiar el valor mínimo de cuórum del servicio 3 (operaciones de
administración de usuarios realizadas por CO).

Example –: obtener valores mínimos de cuórum y cambiar el valor del servicio 4


El siguiente comando de ejemplo muestra que el valor mínimo de cuórum para el servicio 3 es actualmente
dos.

aws-cloudhsm>getMValue 3
MValue of service 3[USER_MGMT] on server 0 : [2]
MValue of service 3[USER_MGMT] on server 1 : [2]

El siguiente comando de ejemplo muestra que el valor mínimo de cuórum para el servicio 4 es actualmente
uno.

aws-cloudhsm>getMValue 4
MValue of service 4[MISC_CO] on server 0 : [1]
MValue of service 4[MISC_CO] on server 1 : [1]

Para cambiar el valor mínimo de cuórum del servicio 4, utilice el comando setMValue y establezca un valor
que sea igual o superior al valor del servicio 3. El siguiente ejemplo establece el valor mínimo de cuórum
para el servicio 4 en dos (2), el mismo valor establecido para el servicio 3.

aws-cloudhsm>setMValue 4 2
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Setting M Value(2) for 4 on 2 nodes

El siguiente comando muestra que el valor mínimo de cuórum es ahora dos para el servicio 3 y para el
servicio 4.

aws-cloudhsm>getMValue 3

79
AWS CloudHSM Guía del usuario
Cambiar el valor de cuórum para
responsables de criptografía

MValue of service 3[USER_MGMT] on server 0 : [2]


MValue of service 3[USER_MGMT] on server 1 : [2]

aws-cloudhsm>getMValue 4
MValue of service 4[MISC_CO] on server 0 : [2]
MValue of service 4[MISC_CO] on server 1 : [2]

80
AWS CloudHSM Guía del usuario
cloudhsm_mgmt_util

Herramientas de línea de comandos


de AWS CloudHSM
AWS CloudHSM proporciona herramientas de línea de comandos para administrar y utilizar AWS
CloudHSM.

Temas
• cloudhsm_mgmt_util (p. 81)
• key_mgmt_util (p. 129)
• Herramienta de configuración (p. 218)

Administración de clústeres y HSM

Las herramientas siguientes obtienen, crean, eliminan y etiquetan HSM y clústeres de AWS
CloudHSM:
• Comandos de CloudHSMv2 de la interfaz de línea de comandos de AWS (AWS CLI). Para utilizar
estos comandos, debe instalar y configurar AWS CLI.
• Cmdlets de HSM2 PowerShell en el módulo AWSPowerShell. Estos cmdlets están disponibles en un
módulo Windows PowerShell y un módulo PowerShell Core multiplataforma.

 
Administración de usuarios

Esta herramienta crea y elimina usuarios de HSM, incluida la implementación de la autenticación de


cuórum de las tareas de administración de usuarios:
• cloudhsm_mgmt_util (p. 81). Esta herramienta está incluida en el software cliente de AWS
CloudHSM.

 
Administración de claves

Esta herramienta crea, elimina, importa y exporta claves simétricas y pares de claves asimétricos:
• key_mgmt_util (p. 129). Esta herramienta está incluida en el software cliente de AWS CloudHSM.

 
Herramientas ayudantes

Estas herramientas le ayudan a utilizar las bibliotecas de software y de herramientas.


• configure (p. 218) actualiza sus archivos de configuración de cliente de CloudHSM. De este modo,
permite que AWS CloudHSM sincronice los HSM de un clúster.
• pkpspeed (p. 374) mide el desempeño del hardware del HSM con independencia de las
bibliotecas de software.

cloudhsm_mgmt_util
La herramienta de línea de comandos cloudhsm_mgmt_util ayuda a los responsables de criptografía a
administrar los usuarios de los HSM. Incluye herramientas que crean, eliminan y enumeran los usuarios, y
cambian las contraseñas de los usuarios.

81
AWS CloudHSM Guía del usuario
Introducción

cloudhsm_mgmt_util también incluye comandos que permiten a los usuarios de criptografía (CU) compartir
claves y obtener y configurar atributos de las claves. Estos comandos complementan a los comandos de
administración de claves de la herramienta de administración de clave principal, key_mgmt_util (p. 129).

Para informarse sobre cómo comenzar rápidamente, consulte Introducción a


cloudhsm_mgmt_util (p. 82). Para obtener información detallada y ejemplos de uso de los comandos de
cloudhsm_mgmt_util, consulte Referencia de comandos de cloudhsm_mgmt_util (p. 88).

Temas
• Introducción a cloudhsm_mgmt_util (p. 82)
• Referencia de comandos de cloudhsm_mgmt_util (p. 88)

Introducción a cloudhsm_mgmt_util
AWS CloudHSM incluye dos herramientas de línea de comandos con el software de cliente de AWS
CloudHSM (p. 35). La herramienta cloudhsm_mgmt_util (p. 88) dispone de comandos para la
administración de usuarios de HSM. La herramienta key_mgmt_util (p. 132) tiene comandos para
administrar las claves. Para comenzar a utilizar la herramienta de línea de comandos cloudhsm_mgmt_util,
complete las siguientes tareas.

Tareas
• Prepararse para ejecutar cloudhsm_mgmt_util (p. 82)
• Uso básico de cloudhsm_mgmt_util (p. 86)
• Uso de cloudhsm_mgmt_util en clústeres clonados (p. 88)

Prepararse para ejecutar cloudhsm_mgmt_util


Antes de usar cloudhsm_mgmt_util, complete las siguientes tareas: Debe seguir estos pasos la primera
vez que utilice cloudhsm_mgmt_util y después de añadir o eliminar un HSM del clúster. Este procedimiento
actualizará la lista de HSM en los archivos de configuración que el cliente de AWS CloudHSM y las
herramientas de línea de comandos utilizan. Mantener estos archivos actualizados ayuda a AWS
CloudHSM a sincronizar los datos y a mantener la coherencia en todos los HSM del clúster.

Tareas
• Paso 1: Detener el cliente de AWS CloudHSM (p. 82)
• Paso 2: Actualizar los archivos de configuración de AWS CloudHSM (p. 83)
• Paso 3: Iniciar el cliente de AWS CloudHSM (p. 84)
• Paso 4: Actualizar el archivo de configuración de cloudhsm_mgmt_util (p. 85)

Paso 1: Detener el cliente de AWS CloudHSM


Antes de actualizar los archivos de configuración que AWS CloudHSM y las herramientas de línea de
comandos utilizan, detenga el cliente de AWS CloudHSM. Si ya se ha detenido el cliente, la ejecución del
comando de detención no tiene ningún efecto nocivo.

Amazon Linux

$ sudo stop cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client stop

82
AWS CloudHSM Guía del usuario
Introducción

CentOS 6

$ sudo stop cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client stop

RHEL 6

$ sudo stop cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client stop

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client stop

Windows

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe stop AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

Use Ctrl+C en la ventana de comandos desde donde inició el cliente de AWS CloudHSM.

Paso 2: Actualizar los archivos de configuración de AWS CloudHSM


En este paso, se utiliza el parámetro -a de la herramienta de configuración (p. 218) para añadir la
dirección IP de la interfaz de red elástica (ENI) de uno de los HSM del clúster al archivo de configuración.

Amazon Linux

$ sudo /opt/cloudhsm/bin/configure -a <HSM ENI IP>

Amazon Linux 2

$ sudo /opt/cloudhsm/bin/configure -a <HSM ENI IP>

CentOS 6

$ sudo /opt/cloudhsm/bin/configure -a <HSM ENI IP>

CentOS 7

$ sudo /opt/cloudhsm/bin/configure -a <HSM ENI IP>

RHEL 6

$ sudo /opt/cloudhsm/bin/configure -a <HSM ENI IP>

83
AWS CloudHSM Guía del usuario
Introducción

RHEL 7

$ sudo /opt/cloudhsm/bin/configure -a <HSM ENI IP>

Ubuntu 16.04 LTS

$ sudo /opt/cloudhsm/bin/configure -a <HSM ENI IP>

Windows

c:\Program Files\Amazon\CloudHSM>configure.exe -a <HSM ENI IP>

Para obtener la dirección IP de la ENI de un HSM del clúster, vaya a la consola de AWS CloudHSM,
elija clusters (clústeres) y seleccione el clúster que desee. También puede utilizar la operación
DescribeClusters, el comando describe-clusters o el cmdlet Get-HSM2Cluster de PowerShell. Escriba una
sola dirección IP de ENI. No importa qué dirección IP de ENI use.

Paso 3: Iniciar el cliente de AWS CloudHSM


A continuación, inicie o reinicie el cliente de AWS CloudHSM. Cuando el cliente de AWS CloudHSM se
inicia, utiliza la dirección IP de ENI del archivo de configuración para realizar consultas en el clúster. A
continuación, añade las direcciones IP de ENI de todos los HSM en el clúster al archivo de información del
clúster.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

84
AWS CloudHSM Guía del usuario
Introducción

Windows

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:


\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg

Paso 4: Actualizar el archivo de configuración de cloudhsm_mgmt_util


El último paso utiliza el parámetro -m de la herramienta de configuración (p. 218) para copiar las
direcciones IP de la ENI actualizadas del archivo de información del clúster en el archivo de configuración
que utiliza cloudhsm_mgmt_util. Si omite este paso, podría tener problemas de sincronización, como por
ejemplo datos de usuario incoherentes (p. 374) en los HSM de su clúster.

Amazon Linux

$ sudo /opt/cloudhsm/bin/configure -m

Amazon Linux 2

$ sudo /opt/cloudhsm/bin/configure -m

CentOS 6

$ sudo /opt/cloudhsm/bin/configure -m

CentOS 7

$ sudo /opt/cloudhsm/bin/configure -m

RHEL 6

$ sudo /opt/cloudhsm/bin/configure -m

RHEL 7

$ sudo /opt/cloudhsm/bin/configure -m

Ubuntu 16.04 LTS

$ sudo /opt/cloudhsm/bin/configure -m

Windows

c:\Program Files\Amazon\CloudHSM>configure.exe -m

Una vez completado este paso, estará preparado para iniciar cloudhsm_mgmt_util. Si añade o elimina un
HSM en algún momento, no olvide repetir este procedimiento antes de usar cloudhsm_mgmt_util.

85
AWS CloudHSM Guía del usuario
Introducción

Uso básico de cloudhsm_mgmt_util


Las siguientes tareas cubren el uso básico de la herramienta cloudhsm_mgmt_util.
Warning

La herramienta cloudhsm_mgmt_util no admite la finalización automática mediante la tecla


tabulador. El uso de la tecla tabulador con cloudhsm_mgmt_util puede hacer que no responda.

Tareas
• Iniciar cloudhsm_mgmt_util (p. 86)
• Habilitar el cifrado integral (p. 87)
• Iniciar sesión en los HSM (p. 87)
• Cerrar la sesión de los HSM (p. 87)
• Detener cloudhsm_mgmt_util (p. 88)

Iniciar cloudhsm_mgmt_util
Use el siguiente comando para iniciar cloudhsm_mgmt_util.

Amazon Linux

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

Amazon Linux 2

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

CentOS 6

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

CentOS 7

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

RHEL 6

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

RHEL 7

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

Ubuntu 16.04 LTS

$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg

Windows

C:\Program Files\Amazon\CloudHSM>cloudhsm_mgmt_util.exe C:\ProgramData\Amazon\CloudHSM


\data\cloudhsm_mgmt_util.cfg

86
AWS CloudHSM Guía del usuario
Introducción

La salida será parecida a la que se muestra a continuación en función de la cantidad de HSM que tenga.

Connecting to the server(s), it may take time


depending on the server(s) load, please wait...

Connecting to server '10.0.2.9': hostname '10.0.2.9', port 2225...


Connected to server '10.0.2.9': hostname '10.0.2.9', port 2225.

Connecting to server '10.0.3.11': hostname '10.0.3.11', port 2225...


Connected to server '10.0.3.11': hostname '10.0.3.11', port 2225.

Connecting to server '10.0.1.12': hostname '10.0.1.12', port 2225...


Connected to server '10.0.1.12': hostname '10.0.1.12', port 2225.

El símbolo cambia a aws-cloudhsm> cuando se está ejecutando cloudhsm_mgmt_util.

Habilitar el cifrado integral


A partir de la versión 1.1.1 del cliente y las bibliotecas de software relacionadas, la comunicación
cifrada de extremo a extremo entre cloudhsm_mgmt_util y los HSM del clúster está habilitada de forma
predeterminada. Si utiliza una versión anterior, puede utilizar el comando enable_e2e para habilitar el
cifrado de extremo a extremo cada vez que inicie cloudhsm_mgmt_util.

aws-cloudhsm>enable_e2e
E2E enabled on server 0(10.0.2.9)
E2E enabled on server 1(10.0.3.11)
E2E enabled on server 2(10.0.1.12)

Iniciar sesión en los HSM


Utilice el comando loginHSM para iniciar sesión en los HSM. Cualquier usuario de cualquier tipo puede
utilizar este comando para iniciar sesión en los HSM.

El comando en el siguiente ejemplo inicia sesión como admin que es el responsable de criptografía
(CO) (p. 10) predeterminado. La contraseña de este usuario se establece al activar el clúster (p. 39). La
salida muestra que el comando registró el usuario admin en todos los HSM en el clúster.
Warning
Cuando inicie sesión en la herramienta cloudhsm_mgmt_util, compruebe que las direcciones IP de
ENI en los mensajes de éxito coinciden exactamente con las direcciones IP de ENI de todos los
HSM del clúster. Si no es así, deténgase y ejecute todos los pasos en el procedimiento the section
called “Prepararse para ejecutar cloudhsm_mgmt_util” (p. 82).
Para obtener las direcciones IP de ENI de los HSM del clúster, utilice la operación
DescribeClusters, el comando describe-clusters o el cmdlet Get-HSM2Cluster de PowerShell.

aws-cloudhsm>loginHSM CO admin <password>


loginHSM success on server 0(10.0.2.9)
loginHSM success on server 1(10.0.3.11)
loginHSM success on server 2(10.0.1.12)

A continuación, se muestra la sintaxis del comando loginHSM.

aws-cloudhsm>loginHSM <user type> <user name> <password>

Cerrar la sesión de los HSM


Utilice el comando logoutHSM para cerrar la sesión en los HSM.

aws-cloudhsm>logoutHSM

87
AWS CloudHSM Guía del usuario
Referencia

logoutHSM success on server 0(10.0.2.9)


logoutHSM success on server 1(10.0.3.11)
logoutHSM success on server 2(10.0.1.12)

Detener cloudhsm_mgmt_util
Utilice el comando quit para detener cloudhsm_mgmt_util.

aws-cloudhsm>quit

disconnecting from servers, please wait...

Uso de cloudhsm_mgmt_util en clústeres clonados


En algunos casos, utilizará cloudhsm_mgmt_util para sincronizar los cambios en los clústeres clonados.
Para ello, tendrá que crear manualmente un nuevo archivo de configuración de cloudhsm_mgmt_util
que especifica los HSM que se deben sincronizar. En este ejemplo, se crear una copia del archivo de
configuración actual (/opt/cloudhsm/etc/cloudhsm_mgmt_config.cfg) y se cambia el nombre de
la copia a syncConfig.cfg.

Edite syncConfig.cfg para que incluya las direcciones IP de la interfaz de red elástica (ENI) de los dos
HSM que se van a sincronizar. Le recomendamos que especifique primero el HSM de origen, seguido de
los HSM de destino. Para buscar la dirección IP de la ENI de un HSM, consulte Actualizar los archivos de
configuración de AWS CloudHSM (p. 83).

Inicialice cloudhsm_mgmt_util con el nuevo archivo de configuración; para ello, ejecute el siguiente
comando:

aws-cloudhsm> /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/userSync.cfg

Compruebe los mensajes de estado devueltos con el fin de asegurarse de que cloudhsm_mgmt_util
está conectado a todos los HSM y determinar cuál de las direcciones IP de la ENI devueltas corresponde a
cada clúster.

Cuando haya terminado de sincronizar los HSM o los clústeres, inicialice cloudhsm_mgmt_util con el
archivo de configuración original.

aws-cloudhsm> /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/


cloudhsm_mgmt_config.cfg

Referencia de comandos de cloudhsm_mgmt_util


La herramienta de línea de comandos cloudhsm_mgmt_util ayuda a los responsables de criptografía
a administrar los usuarios de los HSM. También incluye comandos que permiten a los usuarios de
criptografía (CU) compartir claves, obtener y configurar atributos de las claves. Estos comandos
complementan los comandos de administración de clave principal en la herramienta de línea de comandos
key_mgmt_util (p. 129).

Para informarse sobre cómo comenzar rápidamente, consulte Introducción a


cloudhsm_mgmt_util (p. 82).

Para poder ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar


cloudhsm_mgmt_util (p. 86), habilitar el cifrado integral (p. 87) e iniciar sesión (p. 87) en el HSM.
Asegúrese de que inicia sesión con un tipo de cuenta de usuario que pueda ejecutar los comandos que
desea utilizar.

Para mostrar una lista de todos los comandos de cloudhsm_mgmt_util, ejecute el comando siguiente:

88
AWS CloudHSM Guía del usuario
Referencia

aws-cloudhsm> help

Para obtener la sintaxis de un comando de cloudhsm_mgmt_util, ejecute el siguiente comando:

aws-cloudhsm> help <command-name>

Note
Utilice la sintaxis como se indica en la documentación. Aunque la ayuda integrada del software
puede proporcionar opciones adicionales, estas no deben considerarse compatibles y no deben
utilizarse en el código de producción.

Para ejecutar un comando, introduzca el nombre del comando o una parte suficiente para distinguirlo de
los nombres de los demás comandos de cloudhsm_mgmt_util.

Por ejemplo, para obtener una lista de los usuarios de los HSM, introduzca listUsers o listU.

aws-cloudhsm> listUsers

Para finalizar la sesión de cloudhsm_mgmt_util, ejecute el comando siguiente:

aws-cloudhsm> quit

Para obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

En los temas siguientes, se describen los comandos de la herramienta cloudhsm_mgmt_util.


Note
Algunos comandos en key_mgmt_util y cloudhsm_mgmt_util tienen los mismos nombres.
Sin embargo, normalmente los comandos tienen una sintaxis y una salida diferentes, y su
funcionalidad varía ligeramente.

Comando Descripción Tipo de usuario

changePswd (p. 90) Cambia las contraseñas de los CO


usuarios en los HSM. Cualquier
usuario puede cambiar su
propia contraseña. Los CO
pueden cambiar la contraseña de
cualquier persona.

createUser (p. 94) Crea usuarios de todo tipo en los CO


HSM.

deleteUser (p. 97) Elimina usuarios de todo tipo de CO


los HSM.

findAllKeys (p. 100) Obtiene las claves que un CO, AU


usuario posee o comparte.
También obtiene un hash de la
propiedad de la clave y del uso
compartido de datos para todas
las claves en cada HSM.

getAttribute (p. 103) Obtiene el valor de un atributo CU


de una clave de AWS CloudHSM

89
AWS CloudHSM Guía del usuario
Referencia

Comando Descripción Tipo de usuario


y lo escribe en un archivo o en
stdout (salida estándar).

getCert (p. 106) Obtiene el certificado de un Todos.


HSM específico y lo guarda en
el formato de certificado que se
desee.

getHSMInfo (p. 107) Obtiene información sobre el Todos. No es necesario iniciar


hardware en el que se está sesión.
ejecutando un HSM.

getKeyInfo (p. 108) Obtiene propietarios, usuarios Todos. No es necesario iniciar


compartidos y el estado de sesión.
autenticación de cuórum de una
clave.

info (p. 112) Obtiene información sobre un Todos. No es necesario iniciar


HSM, incluida la dirección IP, el sesión.
nombre de host, el puerto y el
usuario actual.

listUsers (p. 114) Obtiene los usuarios de cada Todos. No es necesario iniciar
uno de los HSM, su ID y tipo de sesión.
usuario y otros atributos.

loginHSM y logoutHSM (p. 116) Permiten iniciar y cerrar la sesión Todos.


en un HSM.

quit (p. 122) Cierra cloudhsm_mgmt_util. Todos. No es necesario iniciar


sesión.

servidor (p. 118) Permite entrar y salir del modo Todos.


de servidor en un HSM.

setAttribute (p. 119) Cambia los valores de los CU


atributos de la etiqueta, de
cifrado, descifrado, encapsulado
y desencapsulado de una clave
existente.

shareKey (p. 123) Comparte una clave existente CU


con otros usuarios.

syncKey (p. 125) Sincroniza una clave en los CU, CO


clústeres de AWS CloudHSM
clonados.

syncUser (p. 127) Sincroniza un usuario en los CO


clústeres de AWS CloudHSM
clonados.

changePswd
El comando changePswd de cloudhsm_mgmt_util cambia la contraseña de un usuario existente en los
HSM del clúster.

90
AWS CloudHSM Guía del usuario
Referencia

Cualquier usuario puede cambiar su propia contraseña. Además, los responsables de criptografía (CO y
PCO) pueden cambiar la contraseña de otro CO, usuario de criptografía (CU) o usuario de la aplicación
(AU). No es necesario que escriba la contraseña actual para realizar el cambio.
Note

No puede cambiar la contraseña de un usuario que haya iniciado sesión en el cliente de AWS
CloudHSM o en key_mgmt_util.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los usuarios siguientes pueden ejecutar este comando.

• Responsables de criptografía (CO)


• Usuarios de criptografía (CU)

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

changePswd <user-type> <user-name> <password>

Ejemplos
Los siguientes ejemplos muestran cómo utilizar changePassword para restablecer la contraseña del
usuario actual o de cualquier otro usuario de los HSM.

Example : Cambio de la contraseña

Cualquier usuario de los HSM puede utilizar changePswd para cambiar su propia contraseña. Antes de
cambiar la contraseña, utilice info (p. 112) para obtener información sobre cada uno de los HSM del
clúster, incluidos el nombre de usuario y el tipo de usuario del usuario que ha iniciado sesión.

La siguiente salida muestra que Bob ha iniciado sesión como usuario de criptografía (CU).

aws-cloudhsm> info server 0

Id Name Hostname Port State Partition


LoginState
0 10.1.9.193 10.1.9.193 2225 Connected hsm-jqici4covtv
Logged in as 'bob(CU)'

aws-cloudhsm> info server 1

Id Name Hostname Port State Partition


LoginState
1 10.1.10.7 10.1.10.7 2225 Connected hsm-ogi3sywxbqx
Logged in as 'bob(CU)'

91
AWS CloudHSM Guía del usuario
Referencia

Para cambiar la contraseña, Bob se ejecuta changePswd seguido del tipo de usuario, el nombre de usuario
y una contraseña nueva.

aws-cloudhsm> changePswd CU bob newPassword

*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Changing password for bob(CU) on 2 nodes

Example : Cambio de la contraseña de otro usuario

Debe ser un usuario de tipo CO o PCO para cambiar la contraseña de otro CO, CU o AU en los HSM.
Antes de cambiar la contraseña de otro usuario, utilice el comando info (p. 112) para confirmar que su
tipo de usuario es CO o PCO.

La siguiente salida confirma que Alice, que es un usuario de tipo CO, tiene una sesión iniciada
actualmente.

aws-cloudhsm>info server 0

Id Name Hostname Port State Partition


LoginState
0 10.1.9.193 10.1.9.193 2225 Connected hsm-jqici4covtv Logged in
as 'alice(CO)'

aws-cloudhsm>info server 1

Id Name Hostname Port State Partition


LoginState
0 10.1.10.7 10.1.10.7 2225 Connected hsm-ogi3sywxbqx Logged in
as 'alice(CO)'

Alice quiere restablecer la contraseña de otro usuario, John. Antes de cambiar la contraseña, utiliza el
comando listUsers (p. 114) para comprobar el tipo de usuario de John.

La siguiente salida muestra muestra que John es un usuario de tipo CO.

aws-cloudhsm> listUsers
Users on server 0(10.1.9.193):
Number of users found:5

User Id User Type User Name MofnPubKey LoginFailureCnt


2FA
1 PCO admin YES 0
NO
2 AU jane NO 0
NO

92
AWS CloudHSM Guía del usuario
Referencia

3 CU bob NO 0
NO
4 CU alice NO 0
NO
5 CO john NO 0
NO
Users on server 1(10.1.10.7):
Number of users found:5

User Id User Type User Name MofnPubKey LoginFailureCnt


2FA
1 PCO admin YES 0
NO
2 AU jane NO 0
NO
3 CU bob NO 0
NO
4 CO alice NO 0
NO
5 CO john NO 0
NO

Para cambiar la contraseña, Alice ejecuta changePswd seguido del tipo de usuario, el nombre de usuario y
la contraseña nueva de John.

aws-cloudhsm>changePswd CO john newPassword

*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


Changing password for john(CO) on 2 nodes

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

changePswd <user-type> <user-name> <password>

<user-type>

Especifica el tipo actual de usuario cuya contraseña está cambiando. No se puede utilizar
changePswd para cambiar el tipo de usuario.

Los valores válidos son CO, CU, AU, PCO y PRECO.

Para obtener el tipo de usuario, utilice listUsers (p. 114). Para obtener información detallada sobre
los tipos de usuario en un HSM, consulte Usuarios de HSM (p. 10).

Obligatorio: sí
<user-name>

Especifica el nombre fácil de recordar del usuario. Este parámetro no distingue entre mayúsculas y
minúsculas. No puede utilizar changePswd para cambiar el nombre del usuario.

Obligatorio: sí

93
AWS CloudHSM Guía del usuario
Referencia

<password>

Especifica una contraseña nueva para el usuario. Escriba una cadena de entre 7 y 32 caracteres. Este
valor distingue entre mayúsculas y minúsculas. La contraseña aparece en texto no cifrado cuando la
escribe.

Obligatorio: sí

Temas relacionados
• info (p. 112)
• listUsers (p. 114)
• createUser (p. 94)
• deleteUser (p. 97)

createUser
El comando createUser de cloudhsm_mgmt_util crea un usuario en los HSM. Solo los responsables
de criptografía (CO y PCO) pueden ejecutar este comando. Al crear un usuario, debe especificar el
tipo de usuario (CO o CU), un nombre de usuario y una contraseña. Cuando el comando se ejecuta
correctamente, crea el usuario en todos los HSM en el clúster.

Sin embargo, si configuración del HSM no es exacta, es posible que el usuario no se cree en todos los
HSM. Para añadir el usuario a cualquier HSM en el que falte, utilice los comandos syncUser (p. 127) o
createUser (p. 94) solo en los HSM en los que falte ese usuario. Para evitar errores de configuración,
ejecute la herramienta configure (p. 218) con la opción -m.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Responsables de criptografía (CO, PCO)

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

Tipo de usuario: responsable de criptografía (CO, PCO)

createUser <user-type> <user-name> <password>

Ejemplos
En estos ejemplos, se muestra cómo se utiliza createUser para crear usuarios nuevos en los HSM.

94
AWS CloudHSM Guía del usuario
Referencia

Example : Creación de un responsable de criptografía

Este ejemplo crea a un responsable de criptografía (CO) en los HSM de un clúster. El primer comando
utiliza loginHSM (p. 116) para iniciar sesión en los HSM como responsable de criptografía.

aws-cloudhsm> loginHSM CO admin 735782961

loginHSM success on server 0(10.0.0.1)


loginHSM success on server 1(10.0.0.2)
loginHSM success on server 1(10.0.0.3)

El segundo comando utiliza el comando createUser para crear alice, un nuevo responsable de
criptografía en el HSM.

El mensaje de precaución explica que el comando crea usuarios en todos los HSM en el clúster. Sin
embargo, si el comando produce un error en cualquier HSM, el usuario no existe en esos HSM. Para
continuar, escriba y.

El resultado muestra que se creó el usuario nuevo en los tres HSM del clúster.

aws-cloudhsm> createUser CO alice 391019314

*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?Invalid option, please type 'y' or 'n'

Do you want to continue(y/n)?y


Creating User alice(CO) on 3 nodes

Cuando se completa el comando, alice tiene los mismos permisos en el HSM que el usuario CO admin,
incluido el cambio de contraseña de cualquier usuario en los HSM.

El comando final utiliza el comando listUsers (p. 114) para verificar que alice existe en los tres HSM en
el clúster. El resultado también muestra que se ha asignado a alice el ID de usuario 3.. Puede utilizar el
ID de usuario para identificar alice en otros comandos, como findAllKeys (p. 100).

aws-cloudhsm> listUsers
Users on server 0(10.0.0.1):
Number of users found:3

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO
2 AU app_user NO
0 NO
3 CO alice NO
0 NO
Users on server 1(10.0.0.2):
Number of users found:3

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO

95
AWS CloudHSM Guía del usuario
Referencia

2 AU app_user NO
0 NO
3 CO alice NO
0 NO

Users on server 1(10.0.0.3):


Number of users found:3

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO
2 AU app_user NO
0 NO
3 CO alice NO
0 NO

Example : Creación de un usuario de criptografía

Este ejemplo crea un usuario de criptografía (CU) bob, en el HSM. Los usuarios de criptografía pueden
crear y administrar claves, pero no pueden administrar usuarios.

Después de escribir y para responder al mensaje de precaución, el resultado muestra que bob se creó en
los tres HSM en el clúster. El nuevo CU puede iniciar sesión en el HSM para crear y administrar claves.

El comando utilizó el valor de contraseña defaultPassword. Más adelante, bob o cualquier CO pueden
usar el comando changePswd (p. 90) para cambiar su contraseña.

aws-cloudhsm> createUser CU bob defaultPassword

*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?Invalid option, please type 'y' or 'n'

Do you want to continue(y/n)?y


Creating User bob(CU) on 3 nodes

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

createUser <user-type> <user-name> <password>

<user-type>

Especifica el tipo de usuario. Este parámetro es obligatorio.

Para obtener información detallada sobre los tipos de usuario en un HSM, consulte Usuarios de
HSM (p. 10).

Valores válidos:
• CO: los responsables de criptografía pueden administrar usuarios, pero no pueden administrar
claves.

96
AWS CloudHSM Guía del usuario
Referencia

• CU: los usuarios de criptografía pueden crear y administrar claves, y usar claves en operaciones
criptográficas.
• AU: los usuarios de dispositivos pueden clonar y sincronizar operaciones. Se crea un AU para usted
en cada HSM que se instala.

PCO, PRECO y preCO también son valores válidos, pero apenas se utilizan. Un PCO tiene la
misma funcionalidad que un usuario CO. Un usuario PRECO es un tipo temporal que se crea
automáticamente en cada HSM. El PRECO se convierte en un PCO cuando asigna una contraseña
durante la activación de HSM (p. 39).

Obligatorio: sí
<user-name>

Especifica un nombre fácil de recordar para el usuario. La longitud máxima es de 31 caracteres. El


único carácter especial permitido es un guion bajo (_).

No puede cambiar el nombre de un usuario después de crearlo. En los comandos


cloudhsm_mgmt_util, el tipo de usuario y la contraseña distinguen entre mayúsculas y minúsculas,
pero el nombre de usuario no.

Obligatorio: sí
<password>

Especifica una contraseña para el usuario. Escriba una cadena de entre 7 y 32 caracteres. Este
valor distingue entre mayúsculas y minúsculas. La contraseña aparece en texto no cifrado cuando se
escribe.

Para cambiar la contraseña de un usuario, utilice changePswd (p. 90). Cualquier usuario de HSM
puede cambiar su propia contraseña, pero los usuarios CO pueden cambiar la contraseña de cualquier
usuario (de cualquier tipo) en los HSM.

Obligatorio: sí

Temas relacionados
• listUsers (p. 114)
• deleteUser (p. 97)
• syncUser (p. 127)
• changePswd (p. 90)

deleteUser
El comando deleteUser de cloudhsm_mgmt_util elimina un usuario de los HSM. Solo los responsables
de criptografía (CO y PCO) pueden ejecutar este comando, pero cualquier usuario CO puede eliminar a
cualquier usuario de cualquier tipo de los HSM. Sin embargo, no puede eliminar un usuario que ha iniciado
sesión en el cliente de AWS CloudHSM, key_mgmt_util o cloudhsm_mgmt_util.
Warning

Cuando elimina un usuario de criptografía (CU), todas las claves propiedad del usuario se
eliminan, incluso si las claves se compartían con otros usuarios. Para evitar la eliminación
accidental o maliciosa de usuarios, utilice la autenticación de cuórum (p. 72).

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

97
AWS CloudHSM Guía del usuario
Referencia

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Responsables de criptografía (CO, PCO)

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

deleteUser <user-type> <user-name>

Ejemplo
Este ejemplo elimina un responsable de criptografía (CO) de los HSM de un clúster. El primer comando
utiliza listUsers (p. 114) para generar una lista de todos los usuarios de los HSM.

El resultado muestra que el usuario 3, alice, es un CO en los HSM.

aws-cloudhsm> listUsers
Users on server 0(10.0.0.1):
Number of users found:3

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO
2 AU app_user NO
0 NO
3 CO alice NO
0 NO
Users on server 1(10.0.0.2):
Number of users found:3

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO
2 AU app_user NO
0 NO
3 CO alice NO
0 NO

Users on server 1(10.0.0.3):


Number of users found:3

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO
2 AU app_user NO
0 NO
3 CO alice NO
0 NO

El segundo comando utiliza el comando deleteUser para eliminar alice de los HSM.

98
AWS CloudHSM Guía del usuario
Referencia

El resultado muestra que el comando se ha ejecutado correctamente en los tres HSM del clúster.

aws-cloudhsm> deleteUser CO alice


Deleting user alice(CO) on 3 nodes
deleteUser success on server 0(10.0.0.1)
deleteUser success on server 0(10.0.0.2)
deleteUser success on server 0(10.0.0.3)

El comando final utiliza el comando listUsers para verificar que alice se ha eliminado de los tres HSM del
clúster.

aws-cloudhsm> listUsers
Users on server 0(10.0.0.1):
Number of users found:2

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO
2 AU app_user NO
0 NO
Users on server 1(10.0.0.2):
Number of users found:2

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO
2 AU app_user NO
0 NO
Users on server 1(10.0.0.3):
Number of users found:2

User Id User Type User Name MofnPubKey


LoginFailureCnt 2FA
1 PCO admin YES
0 NO
2 AU app_user NO
0 NO

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

deleteUser <user-type> <user-name>

<user-type>

Especifica el tipo de usuario. Este parámetro es obligatorio.


Warning

Cuando elimina un usuario de criptografía (CU), todas las claves propiedad del usuario se
eliminan, incluso si las claves se compartían con otros usuarios. Para evitar la eliminación
accidental o maliciosa de usuarios, utilice la autenticación de cuórum (p. 72).

Los valores válidos son CO, CU, AU, PCO y PRECO.

Para obtener el tipo de usuario, utilice listUsers (p. 114). Para obtener información detallada sobre
los tipos de usuario en un HSM, consulte Usuarios de HSM (p. 10).

99
AWS CloudHSM Guía del usuario
Referencia

Obligatorio: sí
<user-name>

Especifica un nombre fácil de recordar para el usuario. La longitud máxima es de 31 caracteres. El


único carácter especial permitido es un guion bajo (_).

No puede cambiar el nombre de un usuario después de crearlo. En los comandos


cloudhsm_mgmt_util, el tipo de usuario y la contraseña distinguen entre mayúsculas y minúsculas,
pero el nombre de usuario no.

Obligatorio: sí

Temas relacionados
• listUsers (p. 114)
• createUser (p. 94)
• syncUser (p. 127)
• changePswd (p. 90)

findAllKeys
El comando findAllKeys de cloudhsm_mgmt_util obtiene las claves que un usuario de criptografía (CU)
especificado posee o comparte. También devuelve un valor hash de los datos de usuario en cada uno de
los HSM. Puede utilizar el hash para determinar de un vistazo si los usuarios, la propiedad de la clave y
los datos de uso compartido de la clave son los mismos en todos los HSM en el clúster. En la salida, las
claves que son propiedad del usuario se marcan con (o), mientras que las claves compartidas se marcan
con (s).

findAllKeys solo devuelve claves públicas cuando el CU especificado posee la clave, aunque todos los
CU del HSM puedan utilizar cualquier clave pública. Este comportamiento es diferente del comando
findKey (p. 149) de key_mgmt_util, que devuelve claves públicas para todos los usuarios de CU.

Solo los responsables de criptografía (CO y PCO) y los usuarios de dispositivos (AU) pueden ejecutar este
comando. Los usuarios de criptografía (CU) pueden ejecutar los siguientes comandos:

• listUsers (p. 114) para encontrar todos los usuarios


• findKey (p. 149) de key_mgmt_util para encontrar las claves que pueden utilizar
• getKeyInfo (p. 178) de key_mgmt_util para encontrar el propietario y los usuarios compartidos de una
clave determinada de su propiedad o compartida

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los usuarios siguientes pueden ejecutar este comando.

• Responsables de criptografía (CO, PCO)


• Usuarios de dispositivos (AU)

100
AWS CloudHSM Guía del usuario
Referencia

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

findAllKeys <user id> <key hash (0/1)> [<output file>]

Ejemplos
En estos ejemplos, se muestra cómo se utiliza findAllKeys para encontrar todas las claves de un
usuario y obtener un hash de la información del usuario de las claves en cada uno de los HSM.

Example : Búsqueda de las claves para un CU


Este ejemplo utiliza findAllKeys para buscar las claves en los HSM que el usuario 4 posee y comparte. El
comando utiliza un valor de 0 para el segundo argumento para suprimir el valor hash. Dado que se omite el
nombre del archivo opcional, el comando escribe en stdout (salida estándar).

El resultado muestra que el usuario 4 puede utilizar 6 claves: 8, 9, 17, 262162, 19 y 31. La salida utiliza
(s) para marcar las claves que el usuario comparte explícitamente. Las claves que posee el usuario se
marcan con (o) y se componen tanto de claves simétricas y privadas que el usuario no comparte como de
claves públicas que están disponibles para todos los usuarios de criptografía.

aws-cloudhsm> findAllKeys 4 0
Keys on server 0(10.0.0.1):
Number of keys found 6
number of keys matched from start index 0::6
8(s),9(s),17,262162(s),19(o),31(o)
findAllKeys success on server 0(10.0.0.1)

Keys on server 1(10.0.0.2):


Number of keys found 6
number of keys matched from start index 0::6
8(s),9(s),17,262162(s),19(o),31(o)
findAllKeys success on server 1(10.0.0.2)

Keys on server 1(10.0.0.3):


Number of keys found 6
number of keys matched from start index 0::6
8(s),9(s),17,262162(s),19(o),31(o)
findAllKeys success on server 1(10.0.0.3)

Example : Verificación de que los datos del usuario están sincronizados


Este ejemplo utiliza findAllKeys para comprobar que todos los HSM del clúster contienen los mismos
usuarios, la misma propiedad de las claves y los mismos valores de uso compartido de claves. Para ello,
obtiene un hash de los datos de usuario de la clave en cada HSM y compara los valores hash.

Para obtener el hash de la clave, el comando utiliza un valor de 1 en el segundo argumento. El nombre del
archivo opcional se omite, por lo que el comando escribe el hash de la clave en stdout.

El ejemplo especifica el usuario 6, pero el valor hash será el mismo para cualquier usuario que posea o
comparta cualquiera de las claves en los HSM. Si el usuario especificado no posee ni comparte ninguna
clave, como por ejemplo un CO, el comando no devuelve un valor hash.

El resultado muestra que el hash de la clave es idéntico para los dos HSM del clúster. Si uno de los HSM
tuviera diferentes usuarios, diferentes propietarios de clave o diferentes usuarios compartidos, los valores
del hash de la clave no serían iguales.

aws-cloudhsm> findAllKeys 6 1

101
AWS CloudHSM Guía del usuario
Referencia

Keys on server 0(10.0.0.1):


Number of keys found 3
number of keys matched from start index 0::3
8(s),9(s),11,17(s)
Key Hash:
55655676c95547fd4e82189a072ee1100eccfca6f10509077a0d6936a976bd49

findAllKeys success on server 0(10.0.0.1)


Keys on server 1(10.0.0.2):
Number of keys found 3
number of keys matched from start index 0::3
8(s),9(s),11(o),17(s)
Key Hash:
55655676c95547fd4e82189a072ee1100eccfca6f10509077a0d6936a976bd49

findAllKeys success on server 1(10.0.0.2)

Este comando demuestra que el valor hash representa los datos de usuario para todas las claves en el
HSM. El comando utiliza findAllKeys para el usuario 3. A diferencia del usuario 6, que posee o comparte
solo 3 claves, el usuario 3 es propietario o comparte 17 claves, pero el valor del hash de la clave es el
mismo.

aws-cloudhsm> findAllKeys 3 1
Keys on server 0(10.0.0.1):
Number of keys found 17
number of keys matched from start index 0::17
6(o),7(o),8(s),11(o),12(o),14(o),262159(o),262160(o),17(s),262162(s),19(s),20(o),21(o),262177(o),262179
Key Hash:
55655676c95547fd4e82189a072ee1100eccfca6f10509077a0d6936a976bd49

findAllKeys success on server 0(10.0.0.1)


Keys on server 1(10.0.0.2):
Number of keys found 17
number of keys matched from start index 0::17
6(o),7(o),8(s),11(o),12(o),14(o),262159(o),262160(o),17(s),262162(s),19(s),20(o),21(o),262177(o),262179
Key Hash:
55655676c95547fd4e82189a072ee1100eccfca6f10509077a0d6936a976bd49

findAllKeys success on server 1(10.0.0.2)

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

findAllKeys <user id> <key hash (0/1)> [<output file>]

<user id>

Obtiene todas las claves que el usuario especificado posee o comparte. Escriba el ID del usuario en
los HSM. Para encontrar los ID de todos los usuarios, utilice listUsers (p. 114).

Todos los ID de usuario son válidos, pero findAllKeys solamente devuelve las claves de los
usuarios de criptografía (CU).

Obligatorio: sí
<key hash>

Incluye (1) o excluye (0) un hash de la propiedad del usuario y de los datos de uso compartido para
todas las claves en cada HSM.

102
AWS CloudHSM Guía del usuario
Referencia

Cuando el argumento user id representa a un usuario que posee o comparte claves, se rellena
el hash de la clave. El valor del hash de la clave es idéntico para todos los usuarios que poseen o
comparten claves en el HSM, aunque posean y compartan claves diferentes. Sin embargo, cuando
el user id representa a un usuario que no posee ni comparte ninguna clave, como un CO, el valor
hash no se rellena.

Obligatorio: sí
<output file>

Escribe la salida en el archivo especificado.

Obligatorio: no

Valor predeterminado: stdout

Temas relacionados
• changePswd (p. 90)
• deleteUser (p. 97)
• listUsers (p. 114)
• syncUser (p. 127)
• findKey (p. 149) en key_mgmt_util
• getKeyInfo (p. 178) en key_mgmt_util

getAttribute
El comando getAttribute de cloudhsm_mgmt_util obtiene el valor de un atributo de una clave para todos los
HSM del clúster y lo escribe en stdout (salida estándar) o en un archivo. Solo los usuarios de criptografía
(CU) pueden ejecutar este comando.

Los atributos de la clave son las propiedades de una clave. Contienen características, como el tipo de
clave, clase, etiqueta e ID y los valores que representan las acciones que puede desempeñar en la clave,
como cifrar, descifrar, encapsular, firmar y verificar.

Solamente puede utilizar getAttribute en claves que sean de su propiedad y que hayan compartido con
usted. Puede ejecutar este comando o el comando getAttribute (p. 103) de key_mgmt_util, que escribe
uno o todos los valores de atributo de una clave en un archivo.

Para obtener una lista de los atributos y las constantes que los representan, ejecute el comando
listAttributes (p. 196). Para cambiar los valores de los atributos de las claves existentes, utilice
setAttribute (p. 200) en key_mgmt_util y setAttribute (p. 119) en cloudhsm_mgmt_util. Para
obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los usuarios siguientes pueden ejecutar este comando.

• Usuarios de criptografía (CU)

103
AWS CloudHSM Guía del usuario
Referencia

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

getAttribute <key handle> <attribute id> [<filename>]

Ejemplo
En este ejemplo se obtiene el valor del atributo extraíble de una clave de los HSM. Puede utilizar un
comando de este tipo para determinar si puede exportar una clave desde los HSM.

El primer comando utiliza listAttributes (p. 113) para encontrar la constante que representa el atributo
extraíble. La salida muestra que la constante de OBJ_ATTR_EXTRACTABLE es 354. Encontrará también
esta información con las descripciones de los atributos y sus valores, en la Referencia de los atributos de
claves (p. 214).

aws-cloudhsm> listAttributes

Following are the possible attribute values for getAttribute:

OBJ_ATTR_CLASS = 0
OBJ_ATTR_TOKEN = 1
OBJ_ATTR_PRIVATE = 2
OBJ_ATTR_LABEL = 3
OBJ_ATTR_TRUSTED = 134
OBJ_ATTR_KEY_TYPE = 256
OBJ_ATTR_ID = 258
OBJ_ATTR_SENSITIVE = 259
OBJ_ATTR_ENCRYPT = 260
OBJ_ATTR_DECRYPT = 261
OBJ_ATTR_WRAP = 262
OBJ_ATTR_UNWRAP = 263
OBJ_ATTR_SIGN = 264
OBJ_ATTR_VERIFY = 266
OBJ_ATTR_DERIVE = 268
OBJ_ATTR_LOCAL = 355
OBJ_ATTR_MODULUS = 288
OBJ_ATTR_MODULUS_BITS = 289
OBJ_ATTR_PUBLIC_EXPONENT = 290
OBJ_ATTR_VALUE_LEN = 353
OBJ_ATTR_EXTRACTABLE = 354
OBJ_ATTR_NEVER_EXTRACTABLE = 356
OBJ_ATTR_ALWAYS_SENSITIVE = 357
OBJ_ATTR_DESTROYABLE = 370
OBJ_ATTR_KCV = 371
OBJ_ATTR_WRAP_WITH_TRUSTED = 528
OBJ_ATTR_EKCV = 4099
OBJ_ATTR_WRAP_TEMPLATE = 1073742353
OBJ_ATTR_UNWRAP_TEMPLATE = 1073742354
OBJ_ATTR_ALL = 512

El segundo comando utiliza getAttribute para obtener el valor del atributo extraíble de la clave que tiene el
identificador de clave 262170 en los HSM. Para especificar el atributo extraíble, el comando utiliza 354,
la constante que representa el atributo. Como el comando no especifica el nombre de archivo, getAttribute
escribe la salida en stdout.

La salida muestra que el valor del atributo extraíble es 1 en todos los HSM. Este valor indica que el
propietario de la clave puede exportarla. Cuando el valor es 0 (0x0), no se puede exportar desde los HSM.
El valor del atributo extraíble se establece al crear la clave, pero no se puede cambiar.

104
AWS CloudHSM Guía del usuario
Referencia

aws-cloudhsm> getAttribute 262170 354

Attribute Value on server 0(10.0.1.10):


OBJ_ATTR_EXTRACTABLE
0x00000001

Attribute Value on server 1(10.0.1.12):


OBJ_ATTR_EXTRACTABLE
0x00000001

Attribute Value on server 2(10.0.1.7):


OBJ_ATTR_EXTRACTABLE
0x00000001

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

getAttribute <key handle> <attribute id> [<filename>]

<key-handle>

Especifica el identificador de la clave de destino. Puede especificar una única clave en cada comando.
Para obtener el identificador de una clave, use findKey (p. 149) en key_mgmt_util.

Debe ser propietario de la clave especificada o esta debe compartirse con usted. Para buscar a los
usuarios de una clave, use getKeyInfo (p. 178) en key_mgmt_util.

Obligatorio: sí
<attribute id>

Identifica el atributo. Escriba una constante que represente un atributo o 512, que representa todos los
atributos. Por ejemplo, para obtener el tipo de clave, especifique 256, que es la constante del atributo
OBJ_ATTR_KEY_TYPE.

Para generar una lista de los atributos y sus constantes, utilice listAttributes (p. 196). Para obtener
ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

Obligatorio: sí
<filename>

Escribe la salida en el archivo especificado. Escriba una ruta de archivo.

Si el archivo especificado existe, getAttribute sobrescribe el archivo sin ningún tipo de advertencia.

Obligatorio: no

Valor predeterminado: stdout

Temas relacionados
• getAttribute (p. 172) en key_mgmt_util
• listAttributes (p. 113)
• setAttribute (p. 119) en cloudhsm_mgmt_util
• setAttribute (p. 200) en key_mgmt_util

105
AWS CloudHSM Guía del usuario
Referencia

• Referencia de los atributos de claves (p. 214)

getCert
Con el comando getCert de cloudhsm_mgmt_util, puede recuperar los certificados de un HSM específico
de un clúster. Al ejecutar el comando, debe designar el tipo de certificado que desea recuperar.
Para ello, utilice el número entero correspondiente que se describe más adelante en la sección
Argumentos (p. 106). Para obtener más información sobre la función de cada uno de estos certificados,
consulte Verificar la identidad del HSM (p. 23).

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los usuarios siguientes pueden ejecutar este comando.

• Todos los usuarios.

Requisitos previos
Antes de comenzar, debe entrar en el modo de servidor en el HSM de destino. Para obtener más
información, consulte server (p. 118).

Sintaxis
Para utilizar el comando getCert una vez en modo de servidor:

server> getCert <file-name> <certificate-type>

Ejemplo
En primer lugar, entre el modo de servidor. Este comando entra en el modo de servidor en un HSM con el
número de servidor 0.

aws-cloudhsm> server 0

Server is in 'E2' mode...

A continuación, utilice el comando getCert. En este ejemplo, utilizamos /tmp/PO.crt como nombre
del archivo en el que se guardará el certificado y 4 (Certificado raíz del cliente) como tipo de certificado
deseado:

server0> getCert /tmp/PO.crt 4


getCert Success

Argumentos

getCert <file-name> <certificate-type>

106
AWS CloudHSM Guía del usuario
Referencia

<file-name>

Especifica el nombre del archivo en el que se va a guardar el certificado.

Obligatorio: sí
<certificate-type>

Un número entero que especifica el tipo de certificado que se desea recuperar. Los números enteros y
sus correspondientes tipos de certificados son los siguientes:
• 1: certificado raíz del fabricante
• 2: certificado de hardware del fabricante
• 4: certificado raíz del cliente
• 8: certificado del clúster (firmado por el certificado raíz del cliente)
• 16: certificado del clúster (encadenado con el certificado raíz del fabricante)

Obligatorio: sí

Temas relacionados
• Iniciar cloudhsm_mgmt_util (p. 86)
• servidor (p. 118)

getHSMInfo
El comando getHSMInfo de cloudhsm_mgmt_util obtiene información sobre el hardware en el que se
ejecuta cada HSM, incluido el modelo, el número de serie, el estado de FIPS, la memoria, la temperatura y
los números de versión del hardware y el firmware. La información también contiene el ID del servidor que
cloudhsm_mgmt_util utiliza para consultar el HSM.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Todos los usuarios. No es preciso haber iniciado sesión para ejecutar este comando.

Sintaxis
Este comando no tiene parámetros.

getHSMInfo

Ejemplo
En este ejemplo, se utiliza getHSMInfo para obtener información acerca de los HSM del clúster.

aws-cloudhsm> getHSMInfo

107
AWS CloudHSM Guía del usuario
Referencia

Getting HSM Info on 3 nodes


*** Server 0 HSM Info ***

Label :cavium
Model :NITROX-III CNN35XX-NFBE

Serial Number :3.0A0101-ICM000001


HSM Flags :0
FIPS state :2 [FIPS mode with single factor authentication]

Manufacturer ID :
Device ID :10
Class Code :100000
System vendor ID :177D
SubSystem ID :10

TotalPublicMemory :560596
FreePublicMemory :294568
TotalPrivateMemory :0
FreePrivateMemory :0

Hardware Major :3
Hardware Minor :0

Firmware Major :2
Firmware Minor :03

Temperature :56 C

Build Number :13

Firmware ID :xxxxxxxxxxxxxxx

...

Temas relacionados
• info (p. 112)

getKeyInfo
El comando getKeyInfo de la herramienta key_mgmt_util devuelve los ID de HSM de los usuarios que
pueden utilizar la clave, incluidos el propietario y los usuarios de criptografía (CU) con quienes se comparte
la clave. Cuando la autenticación de cuórum está habilitada en una clave, getKeyInfo también devuelve
el número de usuarios que deben aprobar las operaciones criptográficas que utilizan la clave. Solamente
puede ejecutar getKeyInfo en las claves que son de su propiedad y han compartido con usted.

Cuando ejecuta getKeyInfo en claves públicas, getKeyInfo solamente devuelve el propietario de la


clave, aunque todos los usuarios del HSM puedan utilizar la clave pública. Para encontrar los ID de
HSM de los usuarios en sus HSM, utilice listUsers (p. 197). Para buscar las claves de un usuario
concreto, utilice findKey (p. 149) -u en key_mgmt_util. Los responsables de criptografía pueden usar
findAllKeys (p. 100) en la herramienta cloudhsm_mgmt_util.

Es propietario de las claves que crea. Puede compartir una clave con otros usuarios cuando la crea.
A continuación, para compartir o dejar de compartir una clave existente, utilice shareKey (p. 123) en
cloudhsm_mgmt_util.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

108
AWS CloudHSM Guía del usuario
Referencia

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Usuarios de criptografía (CU)

Sintaxis

getKeyInfo -k <key-handle> [<output file>]

Ejemplos
En estos ejemplos, se muestra cómo se utiliza getKeyInfo para obtener información sobre los usuarios de
una clave.

Example : Obtención de los usuarios de una clave asimétrica

Este comando obtiene los usuarios que pueden utilizar la clave AES (asimétrica) con identificador de clave
262162. El resultado muestra que el usuario 3 es propietario de la clave y la comparte con los usuarios 4 y
6.

Solo los usuarios 3, 4 y 6 pueden ejecutar getKeyInfo en la clave 262162.

aws-cloudhsm>getKeyInfo 262162
Key Info on server 0(10.0.0.1):

Token/Flash Key,

Owned by user 3

also, shared to following 2 user(s):

4
6
Key Info on server 1(10.0.0.2):

Token/Flash Key,

Owned by user 3

also, shared to following 2 user(s):

4
6

Example : Obtención de los usuarios de un par de claves simétricas

Estos comandos utilizan getKeyInfo para obtener los usuarios que pueden utilizar las claves de un par
de claves ECC (simétricas) (p. 167). La clave pública tiene el identificador de clave 262179. La clave
privada tiene el identificador de clave 262177.

Cuando ejecuta getKeyInfo en la clave privada (262177), devuelve el propietario de la clave (3) y los
usuarios de criptografía (CU) 4, con quienes se comparte la clave.

109
AWS CloudHSM Guía del usuario
Referencia

aws-cloudhsm>getKeyInfo -k 262177
Key Info on server 0(10.0.0.1):

Token/Flash Key,

Owned by user 3

also, shared to following 1 user(s):

4
Key Info on server 1(10.0.0.2):

Token/Flash Key,

Owned by user 3

also, shared to following 1 user(s):

Cuando ejecuta getKeyInfo en la clave pública (262179), devuelve solo el propietario de la clave, el
usuario 3.

aws-cloudhsm>getKeyInfo -k 262179
Key Info on server 0(10.0.3.10):

Token/Flash Key,

Owned by user 3

Key Info on server 1(10.0.3.6):

Token/Flash Key,

Owned by user 3

Para confirmar que el usuario 4 puede utilizar la clave pública (y todas las claves públicas del HSM), utilice
el parámetro -u de findKey (p. 149) en key_mgmt_util.

El resultado muestra que el usuario 4 puede utilizar la clave pública (262179) y la clave privada (262177)
en el par de claves. El usuario 4 también puede utilizar todas las demás claves públicas y cualquier clave
privada creadas o que se hayan compartido con ellos.

Command: findKey -u 4

Total number of keys present 8

number of keys matched from start index 0::7


11, 12, 262159, 262161, 262162, 19, 20, 21, 262177, 262179

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Example : Obtención del valor de autenticación de cuórum (valor_m) para una clave

Este ejemplo muestra cómo obtener m_value para una clave. El m_value es el número de usuarios en
el cuórum que debe aprobar las operaciones criptográficas que utilizan la clave y las operaciones para
compartir y dejar de compartir la clave.

110
AWS CloudHSM Guía del usuario
Referencia

Cuando la autenticación de cuórum está habilitada en una clave, un cuórum de usuarios debe aprobar
cualquier operación criptográfica que utilice la clave. Para habilitar la autenticación de cuórum y establecer
el tamaño de cuórum, utilice el parámetro -m_value al crear la clave.

Este comando utiliza genSymKey (p. 167) para crear una clave AES de 256 bits que se comparte
con el usuario 4. Utiliza el parámetro m_value para habilitar la autenticación de cuórum y establecer el
tamaño de cuórum en dos usuarios. El número de usuarios debe ser lo suficientemente grande como para
proporcionar las aprobaciones necesarias.

El resultado muestra que el comando ha creado la clave 10.

Command: genSymKey -t 31 -s 32 -l aes256m2 -u 4 -m_value 2

Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Created. Key Handle: 10

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 getKeyInfo en cloudhsm_mgmt_util para obtener información sobre los usuarios de
la clave 10. El resultado muestra que la clave es propiedad del usuario 3 y se comparte con el usuario 4.
También muestra que un cuórum de dos usuarios debe aprobar todas las operaciones criptográficas que
utilizan la clave.

aws-cloudhsm>getKeyInfo 10

Key Info on server 0(10.0.0.1):

Token/Flash Key,

Owned by user 3

also, shared to following 1 user(s):

4
2 Users need to approve to use/manage this key
Key Info on server 1(10.0.0.2):

Token/Flash Key,

Owned by user 3

also, shared to following 1 user(s):

4
2 Users need to approve to use/manage this key

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

getKeyInfo -k <key-handle> <output file>

<key-handle>

Especifica el identificador de una clave en el HSM. Escriba el identificador de una clave de su


propiedad o que comparte. Este parámetro es obligatorio.

111
AWS CloudHSM Guía del usuario
Referencia

Obligatorio: sí
<output file>

Escribe la salida en el archivo especificado, en lugar de stdout. Si el archivo existe, el comando lo


sobrescribe sin ningún tipo de advertencia.

Obligatorio: no

Valor predeterminado: stdout

Temas relacionados
• getKeyInfo (p. 178) en key_mgmt_util
• findKey (p. 149) en key_mgmt_util
• findAllKeys (p. 100) en cloudhsm_mgmt_util
• listUsers (p. 114)
• shareKey (p. 123)

info
El comando info de cloudhsm_mgmt_util obtiene información sobre cada uno de los HSM del clúster,
incluido el nombre de host, el puerto, la dirección IP y el nombre y el tipo de usuario que ha iniciado sesión
en cloudhsm_mgmt_util en el HSM.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Todos los usuarios. No es preciso haber iniciado sesión para ejecutar este comando.

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

info server <server ID>

Ejemplo
En este ejemplo, se utiliza info para obtener información acerca de un HSM del clúster. El comando utiliza
0 para consultar el primer HSM del clúster. La salida muestra la dirección IP, el puerto y el tipo y el nombre
del usuario actual.

aws-cloudhsm> info server 0


Id Name Hostname Port State Partition
LoginState

112
AWS CloudHSM Guía del usuario
Referencia

0 10.0.0.1 10.0.0.1 2225 Connected hsm-udw0tkfg1ab


Logged in as 'testuser(CU)'

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

info server <server ID>

<server id>

Especifica el ID de servidor del HSM. El sistema asigna a los HSM números ordinales que representan
el orden en el que se añaden al clúster, comenzando por 0. Para encontrar el ID de servidor de un
HSM, utilice getHSMInfo.

Obligatorio: sí

Temas relacionados
• getHSMInfo (p. 107)
• loginHSM y logoutHSM (p. 116)

listAttributes
El comando listAttributes de cloudhsm_mgmt_util enumera los atributos de una clave de AWS CloudHSM
y las constantes que los representan. Usted utiliza estas constantes para identificar los atributos en los
comandos getAttribute (p. 103) y setAttribute (p. 119).

Para obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Tipo de usuario
Los usuarios siguientes pueden ejecutar este comando.

• Todos los usuarios. No es preciso haber iniciado sesión para ejecutar este comando.

Sintaxis

listAttributes [-h]

Ejemplo
Este comando enumera los atributos de clave que se pueden obtener y cambiar en key_mgmt_util, así
como las constantes que los representan. Para obtener ayuda sobre cómo interpretar los atributos de
claves, consulte Referencia de los atributos de claves (p. 214). Para representar todos los atributos,
utilice 512.

Command: listAttributes

113
AWS CloudHSM Guía del usuario
Referencia

Description
===========
The following are all of the possible attribute values for getAttribute.

OBJ_ATTR_CLASS = 0
OBJ_ATTR_TOKEN = 1
OBJ_ATTR_PRIVATE = 2
OBJ_ATTR_LABEL = 3
OBJ_ATTR_TRUSTED = 134
OBJ_ATTR_KEY_TYPE = 256
OBJ_ATTR_ID = 258
OBJ_ATTR_SENSITIVE = 259
OBJ_ATTR_ENCRYPT = 260
OBJ_ATTR_DECRYPT = 261
OBJ_ATTR_WRAP = 262
OBJ_ATTR_UNWRAP = 263
OBJ_ATTR_SIGN = 264
OBJ_ATTR_VERIFY = 266
OBJ_ATTR_DERIVE = 268
OBJ_ATTR_LOCAL = 355
OBJ_ATTR_MODULUS = 288
OBJ_ATTR_MODULUS_BITS = 289
OBJ_ATTR_PUBLIC_EXPONENT = 290
OBJ_ATTR_VALUE_LEN = 353
OBJ_ATTR_EXTRACTABLE = 354
OBJ_ATTR_NEVER_EXTRACTABLE = 356
OBJ_ATTR_ALWAYS_SENSITIVE = 357
OBJ_ATTR_DESTROYABLE = 370
OBJ_ATTR_KCV = 371
OBJ_ATTR_WRAP_WITH_TRUSTED = 528
OBJ_ATTR_EKCV = 4099
OBJ_ATTR_WRAP_TEMPLATE = 1073742353
OBJ_ATTR_UNWRAP_TEMPLATE = 1073742354
OBJ_ATTR_ALL = 512

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí

Temas relacionados
• getAttribute (p. 103)
• setAttribute (p. 119)
• Referencia de los atributos de claves (p. 214)

listUsers
El comando listUsers de cloudhsm_mgmt_util obtiene los usuarios de cada HSM, junto con el tipo de
usuario y otros atributos. Este comando lo pueden ejecutar todo tipo de usuarios. Ni siquiera es preciso
haber iniciado sesión en cloudhsm_mgmt_util para ejecutar este comando.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

114
AWS CloudHSM Guía del usuario
Referencia

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Todos los usuarios. No es preciso haber iniciado sesión para ejecutar este comando.

Sintaxis
Este comando no tiene parámetros.

listUsers

Ejemplo
Este comando enumera los usuarios de cada uno de los HSM del clúster y muestra sus atributos.
Puede utilizar el atributo User ID para identificar a los usuarios en otros comandos, como deleteUser,
changePswd y findAllKeys.

aws-cloudhsm> listUsers
Users on server 0(10.0.0.1):
Number of users found:6

User Id User Type User Name MofnPubKey LoginFailureCnt


2FA
1 PCO admin YES 0
NO
2 AU app_user NO 0
NO
3 CU crypto_user1 NO 0
NO
4 CU crypto_user2 NO 0
NO
5 CO officer1 YES 0
NO
6 CO officer2 NO 0
NO
Users on server 1(10.0.0.2):
Number of users found:5

User Id User Type User Name MofnPubKey LoginFailureCnt


2FA
1 PCO admin YES 0
NO
2 AU app_user NO 0
NO
3 CU crypto_user1 NO 0
NO
4 CU crypto_user2 NO 0
NO
5 CO officer1 YES 0
NO

La salida contiene los siguientes atributos de usuario:

• User ID (ID de usuario): identifica al usuario en los comandos key_mgmt_util y


cloudhsm_mgmt_util (p. 81).

115
AWS CloudHSM Guía del usuario
Referencia

• User type (p. 10) (Tipo de usuario): determina las operaciones que el usuario puede realizar en el HSM.
• User Name (Nombre de usuario): muestra el nombre fácil de recordar definido por el usuario para el
usuario.
• MofnPubKey: indica si el usuario ha registrado un par de claves para firmar tokens de autenticación de
cuórum (p. 67).
• LoginFailureCnt: indica el número de veces que el usuario ha intentado iniciar sesión sin éxito.
• 2FA: indica que el usuario ha activado la autenticación multifactor.

Temas relacionados
• listUsers (p. 197) en key_mgmt_util
• createUser (p. 94)
• deleteUser (p. 97)
• changePswd (p. 90)

loginHSM y logoutHSM
Puede usar los comandos loginHSM y logoutHSM de cloudhsm_mgmt_util para iniciar y cerrar sesión en
cada HSM de un clúster. Todos los usuarios del tipo que sean pueden utilizar estos comandos.
Note

Si se superan cinco intentos de inicio de sesión incorrectos, se bloquea la cuenta. Si creó el


clúster antes de febrero de 2018, la cuenta se bloquea después de 20 intentos de inicio de sesión
incorrectos. Para desbloquear la cuenta, un responsable de criptografía (CO) debe restablecer la
contraseña mediante el comando changePswd (p. 90) en cloudhsm_mgmt_util.
Si tiene más de un HSM en el clúster, es posible que puedan realizarse intentos adicionales de
inicio de sesión incorrectos antes de que se bloquee la cuenta. Esto se debe a que el cliente
CloudHSM equilibra la carga entre los diversos HSM. Por lo tanto, el intento de inicio de sesión no
puede comenzar en el mismo HSM cada vez. Si va a probar esta funcionalidad, recomendamos
que lo haga en un clúster con un solo HSM activo.

Antes de ejecutar estos comandos de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86).

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los usuarios siguientes pueden ejecutar estos comandos.

• Responsable de criptografía previa (PRECO)


• Responsable de criptografía (CO)
• Usuario de criptografía (CU)
• Usuario de dispositivos (AU)

Sintaxis
Dado que estos comandos no tienen parámetros designados, debe introducir los argumentos en el orden
especificado en los diagramas de sintaxis.

loginHSM <user type> <user name> <password>

116
AWS CloudHSM Guía del usuario
Referencia

logoutHSM

Ejemplos
En estos ejemplos, se muestra cómo utilizar loginHSM y logoutHSM para iniciar y cerrar sesión en todos
los HSM de un clúster.

Example : Inicio de sesión en los HSM de un clúster


Este comando inicia sesión en todos los HSM de un clúster con las credenciales de un usuario CO llamado
admin y con la contraseña co12345. El resultado muestra que el comando se ha ejecutado correctamente
y que el usuario se ha conectado los HSM (que, en este caso, son server 0 y server 1).

aws-cloudhsm>loginHSM CO admin co12345


loginHSM success on server 0(10.0.2.9)
loginHSM success on server 1(10.0.3.11)

Example : Cierre de sesión en un HSM


Este comando cierra la sesión de los HSM en los que haya iniciado sesión actualmente (que, en este caso,
son server 0 y server 1). El resultado muestra que el comando se ha ejecutado correctamente y que
el usuario se ha desconectado de los HSM.

aws-cloudhsm>logoutHSM
logoutHSM success on server 0(10.0.2.9)
logoutHSM success on server 1(10.0.3.11)

Argumentos
Dado que estos comandos no tienen parámetros designados, debe introducir los argumentos en el orden
especificado en los diagramas de sintaxis.

loginHSM <user type> <user name> <password>

<user type>

Especifica el tipo de usuario que inicia sesión en los HSM. Para obtener más información, consulte
Tipo de usuario (p. 116) más arriba.

Obligatorio: sí
<user name>

Especifica el nombre de usuario del usuario que va a iniciar sesión en los HSM.

Obligatorio: sí
<password>

Especifica la contraseña del usuario que va a iniciar sesión en los HSM.

Obligatorio: sí

Temas relacionados
• Introducción a cloudhsm_mgmt_util (p. 82)

117
AWS CloudHSM Guía del usuario
Referencia

• Activación del clúster (p. 39)

server
Normalmente, cuando se emite un comando en cloudhsm_mgmt_util, el comando afecta a todos los HSM
del clúster designado (modo global). Sin embargo, puede haber ocasiones en las que necesite emitir
comandos en un único HSM. Por ejemplo, si se produce un error en la sincronización automática, puede
que tenga que sincronizar las claves y los usuarios de un HSM con el fin de mantener la coherencia en
el clúster. Puede utilizar el comando server de cloudhsm_mgmt_util para entrar en el modo de servidor e
interactuar directamente con una instancia específica de HSM.

Tras la inicialización correcta, el símbolo del sistema aws-cloudhsm> se sustituye por el símbolo del
sistema server>.

Para salir del modo de servidor, utilice el comando exit. Después de salir correctamente, volverá al
símbolo del sistema de cloudhsm_mgmt_util.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86).

Tipo de usuario
Los usuarios siguientes pueden ejecutar este comando.

• Todos los usuarios.

Requisitos previos
Para entrar en el modo de servidor, primero debe conocer el número de servidor del HSM de destino. Los
números de servidor son los que se muestran en la salida de rastreo generada por cloudhsm_mgmt_util al
iniciarse. Los números de servidor se asignan en el mismo orden en que aparecen los HSM en el archivo
de configuración. En este ejemplo, suponemos que server 0 es el servidor que se corresponde con el
HSM deseado.

Sintaxis
Para entrar en el modo de servidor:

server <server-number>

Para salir del modo de servidor:

server> exit

Ejemplo
Este comando entra en el modo de servidor en un HSM con el número de servidor 0.

aws-cloudhsm> server 0

Server is in 'E2' mode...

Para salir del modo de servidor, utilice el comando exit.

server0> exit

118
AWS CloudHSM Guía del usuario
Referencia

Argumentos

server <server-number>

<server-number>

Especifica el número de servidor del HSM de destino.

Obligatorio: sí

El comando exit no tiene argumentos.

Temas relacionados
• Iniciar cloudhsm_mgmt_util (p. 86)
• syncKey (p. 125)
• createUser (p. 94)
• deleteUser (p. 97)

setAttribute
El comando setAttribute de cloudhsm_mgmt_util cambia el valor de la etiqueta y cifra, descifra,
encapsula y desencapsula atributos de una clave en los HSM. También puede utilizar el comando
setAttribute (p. 200) de key_mgmt_util para convertir la clave de una sesión en una clave persistente.
Solo puede cambiar los atributos de claves de su propiedad.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los usuarios siguientes pueden ejecutar este comando.

• Usuarios de criptografía (CU)

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

setAttribute <key handle> <attribute id>

Ejemplo
En este ejemplo, se muestra cómo deshabilitar la funcionalidad de descifrar de una clave simétrica. Puede
utilizar un comando como este para configurar una clave de encapsulamiento que debe poder encapsular y
desencapsular otras claves, pero no cifrar ni descifrar datos.

119
AWS CloudHSM Guía del usuario
Referencia

El primer paso consiste en crear la clave de encapsulamiento. Este comando utiliza el comando
genSymKey (p. 167) de key_mgmt_util para generar una clave simétrica AES de 256 bits. La salida
muestra que la nueva clave tiene el identificador de clave 14.

$ genSymKey -t 31 -s 32 -l aes256

Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Created. Key Handle: 14

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

A continuación, queremos confirmar el valor actual del atributo de descifrar. Para obtener el ID de atributo
del atributo de descifrar, utilice listAttributes (p. 113). La salida muestra que la constante que representa
al atributo OBJ_ATTR_DECRYPT es 261. Para obtener ayuda sobre cómo interpretar los atributos de
claves, consulte Referencia de los atributos de claves (p. 214).

aws-cloudhsm> listAttributes

Following are the possible attribute values for getAttribute:

OBJ_ATTR_CLASS = 0
OBJ_ATTR_TOKEN = 1
OBJ_ATTR_PRIVATE = 2
OBJ_ATTR_LABEL = 3
OBJ_ATTR_TRUSTED = 134
OBJ_ATTR_KEY_TYPE = 256
OBJ_ATTR_ID = 258
OBJ_ATTR_SENSITIVE = 259
OBJ_ATTR_ENCRYPT = 260
OBJ_ATTR_DECRYPT = 261
OBJ_ATTR_WRAP = 262
OBJ_ATTR_UNWRAP = 263
OBJ_ATTR_SIGN = 264
OBJ_ATTR_VERIFY = 266
OBJ_ATTR_DERIVE = 268
OBJ_ATTR_LOCAL = 355
OBJ_ATTR_MODULUS = 288
OBJ_ATTR_MODULUS_BITS = 289
OBJ_ATTR_PUBLIC_EXPONENT = 290
OBJ_ATTR_VALUE_LEN = 353
OBJ_ATTR_EXTRACTABLE = 354
OBJ_ATTR_NEVER_EXTRACTABLE = 356
OBJ_ATTR_ALWAYS_SENSITIVE = 357
OBJ_ATTR_DESTROYABLE = 370
OBJ_ATTR_KCV = 371
OBJ_ATTR_WRAP_WITH_TRUSTED = 528
OBJ_ATTR_EKCV = 4099
OBJ_ATTR_WRAP_TEMPLATE = 1073742353
OBJ_ATTR_UNWRAP_TEMPLATE = 1073742354
OBJ_ATTR_ALL = 512

Para obtener el valor actual del atributo de descifrado de la clave 14, el siguiente comando utiliza
getAttribute (p. 103) en cloudhsm_mgmt_util.

La salida muestra que el valor del atributo de descifrar es verdadera (1) en ambos HSM del clúster.

aws-cloudhsm> getAttribute 14 261

Attribute Value on server 0(10.0.0.1):

120
AWS CloudHSM Guía del usuario
Referencia

OBJ_ATTR_DECRYPT
0x00000001

Attribute Value on server 1(10.0.0.2):


OBJ_ATTR_DECRYPT
0x00000001

Este comando utiliza setAttribute para cambiar el valor del atributo de descifrado (atributo 261) de la clave
14 a 0. Esto desactiva la funcionalidad de descifrar en la clave.

La salida muestra que el comando se ha ejecutado correctamente en ambos HSM del clúster.

aws-cloudhsm> setAttribute 14 261 0


*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)? y


setAttribute success on server 0(10.0.0.1)
setAttribute success on server 1(10.0.0.2)

El comando final repite el comando getAttribute. En este caso también obtiene el atributo de descifrar
(atributo 261) de la clave 14.

Ahora la salida muestra que el valor del atributo de descifrar es falso (0) en ambos HSM del clúster.

aws-cloudhsm>getAttribute 14 261
Attribute Value on server 0(10.0.3.6):
OBJ_ATTR_DECRYPT
0x00000000

Attribute Value on server 1(10.0.1.7):


OBJ_ATTR_DECRYPT
0x00000000

Argumentos

setAttribute <key handle> <attribute id>

<key-handle>

Especifica el identificador de una clave de su propiedad. Puede especificar una única clave en cada
comando. Para obtener el identificador de una clave, use findKey (p. 149) en key_mgmt_util. Para
encontrar los usuarios de una clave, use getKeyInfo (p. 108).

Obligatorio: sí
<attribute id>

Especifica la constante que representa el atributo que desea cambiar. Puede especificar
un único atributo en cada comando. Para obtener los atributos y sus valores enteros, utilice
listAttributes (p. 196). Para obtener ayuda sobre cómo interpretar los atributos de claves, consulte
Referencia de los atributos de claves (p. 214).

Valores válidos:
• 3: OBJ_ATTR_LABEL.
• 134: OBJ_ATTR_TRUSTED.

121
AWS CloudHSM Guía del usuario
Referencia

• 260: OBJ_ATTR_ENCRYPT.
• 261: OBJ_ATTR_DECRYPT.
• 262: OBJ_ATTR_WRAP.
• 263: OBJ_ATTR_UNWRAP.
• 264: OBJ_ATTR_SIGN.
• 266: OBJ_ATTR_VERIFY.
• 268: OBJ_ATTR_DERIVE.
• 370: OBJ_ATTR_DESTROYABLE.
• 528: OBJ_ATTR_WRAP_WITH_TRUSTED.
• 1073742353: OBJ_ATTR_WRAP_TEMPLATE.
• 1073742354: OBJ_ATTR_UNWRAP_TEMPLATE.

Obligatorio: sí

Temas relacionados
• setAttribute (p. 200) en key_mgmt_util
• getAttribute (p. 103)
• listAttributes (p. 113)
• Referencia de los atributos de claves (p. 214)

quit
El comando quit de cloudhsm_mgmt_util permite salir de cloudhsm_mgmt_util. Todos los usuarios del tipo
que sean pueden utilizar este comando.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86).

Tipo de usuario
Los usuarios siguientes pueden ejecutar este comando.

• Todos los usuarios. No es preciso haber iniciado sesión para ejecutar este comando.

Sintaxis

quit

Ejemplo
Este comando permite salir de cloudhsm_mgmt_util. Una vez que finaliza correctamente, se vuelve a la
línea de comandos normal. Este comando no tiene parámetros de salida.

aws-cloudhsm> quit

disconnecting from servers, please wait...

Temas relacionados
• Introducción a cloudhsm_mgmt_util (p. 82)
• Iniciar cloudhsm_mgmt_util (p. 86)

122
AWS CloudHSM Guía del usuario
Referencia

shareKey
El comando shareKey de cloudhsm_mgmt_util comparte y cancela el uso compartido de claves de su
propiedad con otros usuarios de criptografía. Solo el propietario de la clave puede compartir y dejar de
compartir una clave. También puede compartir una clave cuando la crea.

Los usuarios que comparten la clave pueden utilizar la clave en operaciones criptográficas, pero no
pueden eliminar, exportar, compartir o dejar de compartir la clave, o cambiar sus atributos. Cuando la
autenticación de cuórum está habilitada en una clave, el cuórum debe aprobar cualquier operación que
comparta o deje de compartir la clave.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Usuarios de criptografía (CU)

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

Tipo de usuario: usuario de criptografía (CU)

shareKey <key handle> <user id> <(share/unshare key?) 1/0>

Ejemplo
Los siguientes ejemplos muestran cómo utilizar shareKey para compartir y dejar de compartir claves que
posee con otros usuarios de criptografía.

Example : Compartir una clave

En este ejemplo, se utiliza shareKey para compartir una clave privada de ECC (p. 167) que el usuario
actual posee con otro usuario de criptografía de los HSM. Las claves públicas están disponibles para todos
los usuarios del HSM, por lo que no puede compartirlas o dejar de compartirlas.

El primer comando utiliza getKeyInfo (p. 108) para obtener la información del usuario para la clave
262177, una clave privada de ECC en los HSM.

El resultado muestra que la clave 262177 es propiedad del usuario 3, pero no se comparte.

aws-cloudhsm>getKeyInfo 262177

Key Info on server 0(10.0.3.10):

Token/Flash Key,

Owned by user 3

123
AWS CloudHSM Guía del usuario
Referencia

Key Info on server 1(10.0.3.6):

Token/Flash Key,

Owned by user 3

Este comando utiliza shareKey para compartir la clave 262177 con el usuario 4, otro usuario de
criptografía de los HSM. El último argumento utiliza un valor de 1 para indicar una operación compartida.

El resultado muestra que la operación ha tenido éxito en ambos HSM en el clúster.

aws-cloudhsm>shareKey 262177 4 1
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


shareKey success on server 0(10.0.3.10)
shareKey success on server 1(10.0.3.6)

Para comprobar que la operación se ha realizado correctamente, el ejemplo repite el primer comando
getKeyInfo.

El resultado muestra que la clave 262177 se comparte ahora con el usuario 4.

aws-cloudhsm>getKeyInfo 262177

Key Info on server 0(10.0.3.10):

Token/Flash Key,

Owned by user 3

also, shared to following 1 user(s):

4
Key Info on server 1(10.0.3.6):

Token/Flash Key,

Owned by user 3

also, shared to following 1 user(s):

Example : Dejar de compartir una clave

En este ejemplo, se deja de compartir una clave simétrica, es decir, se elimina un usuario de criptografía
de la lista de usuarios compartidos para la clave.

Este comando utiliza shareKey para eliminar al usuario 4 de la lista de usuarios compartidos para la clave
6. El último argumento utiliza el valor 0 para indicar una operación para dejar de compartir.

El resultado muestra que el comando ha tenido éxito en ambos HSM. Como resultado, el usuario 4 ya no
puede utilizar la clave 6 en operaciones criptográficas.

aws-cloudhsm>shareKey 6 4 0

124
AWS CloudHSM Guía del usuario
Referencia

*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. Cav server does NOT synchronize these changes with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)?y


shareKey success on server 0(10.0.3.10)
shareKey success on server 1(10.0.3.6)

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

shareKey <key handle> <user id> <(share/unshare key?) 1/0>

<key-handle>

Especifica el identificador de una clave de su propiedad. Puede especificar una única clave en cada
comando. Para obtener el identificador de una clave, use findKey (p. 149) en key_mgmt_util. Para
verificar que usted es propietario de una clave, utilice getKeyInfo (p. 108).

Obligatorio: sí
<user id>

Especifica el ID del usuario de criptografía (CU) con quien está compartiendo o dejando de compartir
la clave. Para encontrar el ID del usuario, utilice listUsers (p. 114).

Obligatorio: sí
<share 1 o unshare 0>

Para compartir la clave con el usuario especificado, escriba 1. Para dejar de compartir la clave, es
decir, para eliminar al usuario especificado de la lista de los usuarios compartidos para la clave,
escriba 0.

Obligatorio: sí

Temas relacionados
• getKeyInfo (p. 108)

syncKey
Puede utilizar el comando syncKey de cloudhsm_mgmt_util para sincronizar manualmente las claves entre
las instancias de HSM de un clúster o entre clústeres clonados. En general, no es preciso utilizar este
comando, puesto que las instancias de HSM dentro de un clúster sincronizan las claves automáticamente.
Sin embargo, la sincronización de claves entre clústeres clonados debe realizarse manualmente. Los
clústeres clonados suelen crearse en diferentes regiones de AWS con el fin de simplificar el escalado
global y los procesos de recuperación de desastres.

No puede utilizar syncKey para sincronizar claves entre clústeres arbitrarios: uno de los clústeres debe
haberse creado a partir de una copia de seguridad del otro. Además, ambos clústeres deben tener las
credenciales de CO y CU coherentes para que la operación se lleve a cabo correctamente. Para obtener
más información, consulte Usuarios de HSM (p. 10).

125
AWS CloudHSM Guía del usuario
Referencia

Para utilizar syncKey, primero debe crear un archivo de configuración de AWS CloudHSM (p. 88) en
el que se especifique un HSM correspondiente al clúster de origen y uno correspondiente al de destino.
De este modo, cloudhsm_mgmt_util podrá conectarse a ambas instancias de HSM. Utilice este archivo de
configuración para iniciar cloudhsm_mgmt_util (p. 86). A continuación, inicie sesión (p. 87) con las
credenciales de un CO o un CU que tenga las claves que desea sincronizar.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Responsables de criptografía (CO)


• Usuarios de criptografía (CU)

Note

Los CO pueden utilizar syncKey con todas las claves; en cambio, los CU solo pueden utilizar este
comando con las claves que les pertenecen. Para obtener más información, consulte Usuarios de
HSM (p. 10).

Requisitos previos
Antes de comenzar, debe conocer el key handle de la clave del HSM de origen que hay que sincronizar
con el HSM de destino. Si desea buscar el key handle, utilice el comando listUsers (p. 114) para
enumerar todos los identificadores de los usuarios designados. A continuación, utilice el comando
findAllKeys (p. 100) para encontrar todas las claves que pertenecen a un usuario determinado.

También debe conocer los server IDs asignados a los HSM de origen y de destino, que se muestran en
la salida de rastreo devuelta por cloudhsm_mgmt_util al iniciarse. Estos se asignan en el mismo orden con
que aparecen los HSM en el archivo de configuración.

Siga las instrucciones de Uso de cloudhsm_mgmt_util en clústeres clonados (p. 88) e inicialice
cloudhsm_mgmt_util con el archivo de configuración nuevo. A continuación, entre en el modo de servidor
en el HSM; para ello, ejecute el comando server (p. 118).

Sintaxis
Note

Para ejecutar syncKey, en primer lugar, entre en el modo de servidor en el HSM que contiene la
clave que se va a sincronizar.

Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

Tipo de usuario: usuario de criptografía (CU)

syncKey <key handle> <destination hsm>

Ejemplo
Ejecute el comando server para iniciar sesión en el HSM de origen y entrar en el modo de servidor. En este
ejemplo, se supone que server 0 es el HSM de origen.

aws-cloudhsm> server 0

A continuación, ejecute el comando syncKey. En este ejemplo, se supone que la clave 261251 se va a
sincronizar con server 1.

126
AWS CloudHSM Guía del usuario
Referencia

aws-cloudhsm> syncKey 261251 1


syncKey success

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

syncKey <key handle> <destination hsm>

<key handle>

Especifica el identificador de la clave que se va a sincronizar. Puede especificar una única clave en
cada comando. Para obtener el identificador de una clave, utilice findAllKeys (p. 100) mientras tiene
una sesión iniciada en un servidor de HSM.

Obligatorio: sí
<destination hsm>

Especifica el número del servidor con el que se va a sincronizar una clave.

Obligatorio: sí

Temas relacionados
• listUsers (p. 114)
• findAllKeys (p. 100)
• describe-clusters en la AWS CLI
• servidor (p. 118)

syncUser
Puede utilizar el comando syncUser de cloudhsm_mgmt_util para sincronizar manualmente usuarios de
criptografía (CU) o responsables de criptografía (CO) en las instancias de HSM de un clúster o en los
clústeres clonados. AWS CloudHSM no sincroniza automáticamente los usuarios. Por lo general, los
usuarios se administran en modo global con objeto de que todos los HSM de un clúster se actualicen
conjuntamente. Es posible que tenga que utilizar syncUser si un HSM se desincroniza accidentalmente
(por ejemplo, debido a los cambios de contraseña) o si desea rotar las credenciales de usuario en los
clústeres clonados. Los clústeres clonados suelen crearse en regiones de AWS distintas con objeto de
simplificar los procesos de escalado global y recuperación de desastres.

Antes de ejecutar cualquier comando de cloudhsm_mgmt_util, debe iniciar cloudhsm_mgmt_util (p. 86)
el HSM e iniciar sesión (p. 87) en este. Asegúrese de que inicia sesión con un tipo de cuenta de usuario
que pueda ejecutar los comandos que desea utilizar.

Si añade o elimina algún HSM, actualice los archivos de configuración (p. 82) utilizados por el cliente de
AWS CloudHSM y la herramienta de línea de comandos. De lo contrario, es posible que los cambios que
realice no se hagan efectivos en todos los HSM del clúster.

Tipo de usuario
Los tipos de usuarios siguientes pueden ejecutar este comando.

• Responsables de criptografía (CO)

127
AWS CloudHSM Guía del usuario
Referencia

Requisitos previos
Antes de comenzar, debe conocer el user ID del usuario del HSM de origen que hay que sincronizar con
el HSM de destino. Para encontrar el user ID, utilice el comando listUsers (p. 114) para obtener una
lista de todos los usuarios de los HSM del clúster.

También debe conocer los server ID asignados a los HSM de origen y de destino, que se muestran en
la salida de rastreo devuelta por cloudhsm_mgmt_util al iniciarse. Estos se asignan en el mismo orden con
que aparecen los HSM en el archivo de configuración.

Si va a sincronizar HSM en clústeres clonados, siga las instrucciones de Uso de cloudhsm_mgmt_util en


clústeres clonados (p. 88) e inicialice cloudhsm_mgmt_util con el archivo de configuración nuevo.

Cuando esté listo para ejecutar syncUser, emita el comando server (p. 118) para entrar en el modo de
servidor en el HSM de origen.

Sintaxis
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

syncUser <user ID> <server ID>

Ejemplo
Ejecute el comando server para iniciar sesión en el HSM de origen y entrar en el modo de servidor. En este
ejemplo, se supone que server 0 es el HSM de origen.

aws-cloudhsm> server 0

Ejecute el comando syncUser. En este ejemplo, suponemos que se va a sincronizar el usuario 6 en el


HSM de destino server 1.

server 0> syncUser 6 1


ExtractMaskedObject: 0x0 !
InsertMaskedObject: 0x0 !
syncUser success

Argumentos
Dado que este comando no tiene parámetros designados, debe introducir los argumentos en el orden
especificado en el diagrama de sintaxis.

syncUser <user ID> <server ID>

<user ID>

Especifica el ID del usuario que se va a sincronizar. Solo se puede especificar un usuario en cada
comando. Para obtener el ID de un usuario, utilice listUsers (p. 114).

Obligatorio: sí
<server ID>

Especifica el número de servidor del HSM con el que se va a sincronizar un usuario.

Obligatorio: sí

128
AWS CloudHSM Guía del usuario
key_mgmt_util

Temas relacionados
• listUsers (p. 114)
• describe-clusters en la AWS CLI
• servidor (p. 118)

key_mgmt_util
La herramienta de línea de comandos key_mgmt_util ayuda a los usuarios de criptografía (CU) a
administrar claves en los HSM. Contiene varios comandos que generan, eliminan, importan y exportan
claves, obtienen y establecen atributos, encuentran claves y realizan operaciones criptográficas.

Para informarse sobre cómo comenzar rápidamente, consulte Introducción a key_mgmt_util (p. 129).
Para obtener información detallada acerca de los comandos, consulte Referencia de comandos de
key_mgmt_util (p. 132). Para obtener ayuda sobre cómo interpretar los atributos de claves, consulte
Referencia de los atributos de claves (p. 214).

Para utilizar key_mgmt_util si usa Linux, conéctese a la instancia de cliente y, a continuación, consulte
Instalación y configuración del cliente de AWS CloudHSM (Linux) (p. 35). Si usa Windows, consulte
Instalación y configuración del cliente de AWS CloudHSM (Windows) (p. 37).

Temas
• Introducción a key_mgmt_util (p. 129)
• Referencia de comandos de key_mgmt_util (p. 132)

Introducción a key_mgmt_util
AWS CloudHSM incluye dos herramientas de línea de comandos con el software de cliente de AWS
CloudHSM (p. 35). La herramienta cloudhsm_mgmt_util (p. 88) dispone de comandos para la
administración de usuarios de HSM. La herramienta key_mgmt_util (p. 132) tiene comandos para
administrar las claves. Para comenzar a utilizar la herramienta de línea de comandos key_mgmt_util,
consulte los siguientes temas.

Temas
• Configurar key_mgmt_util (p. 129)
• Uso básico de key_mgmt_util (p. 131)

Si detecta un mensaje de error o resultados inesperados para un comando, consulte los temas de Solución
de problemas de AWS CloudHSM (p. 364) para obtener ayuda. Para obtener más detalles acerca de los
comandos de key_mgmt_util, consulte Referencia de comandos de key_mgmt_util (p. 132).

Configurar key_mgmt_util
Siga los pasos de configuración que se describen a continuación antes de utilizar key_mgmt_util.

Inicialización del cliente de AWS CloudHSM


Antes de utilizar key_mgmt_util, debe iniciar el cliente de AWS CloudHSM. El cliente es un demonio
establece una comunicación cifrada integral con los HSM del clúster. La herramienta key_mgmt_util utiliza
la conexión del cliente para comunicarse con los HSM del clúster. Sin ella, key_mgmt_util no funciona.

Para iniciar el cliente de AWS CloudHSM

129
AWS CloudHSM Guía del usuario
Introducción

Use el siguiente comando para iniciar el cliente de AWS CloudHSM.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

Windows

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:


\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg

Iniciar key_mgmt_util
Después de iniciar el cliente de AWS CloudHSM, utilice el siguiente comando para iniciar key_mgmt_util.

Amazon Linux

$ /opt/cloudhsm/bin/key_mgmt_util

Amazon Linux 2

$ /opt/cloudhsm/bin/key_mgmt_util

130
AWS CloudHSM Guía del usuario
Introducción

RHEL 6

$ /opt/cloudhsm/bin/key_mgmt_util

RHEL 7

$ /opt/cloudhsm/bin/key_mgmt_util

CentOS 6

$ /opt/cloudhsm/bin/key_mgmt_util

CentOS 7

$ /opt/cloudhsm/bin/key_mgmt_util

Ubuntu 16.04 LTS

$ /opt/cloudhsm/bin/key_mgmt_util

Windows

c:\Program Files\Amazon\CloudHSM>key_mgmt_util.exe

El símbolo cambia a Command: cuando se está ejecutando key_mgmt_util.

Si el comando produce un error, como, por ejemplo, devuelve un mensaje Daemon socket connection
error, intente actualizar su archivo de configuración (p. 372).

Uso básico de key_mgmt_util


Consulte los siguientes temas para conocer el uso básico de la herramienta key_mgmt_util.

Temas
• Iniciar sesión en los HSM (p. 131)
• Cerrar la sesión de los HSM (p. 132)
• Detener key_mgmt_util (p. 132)

Iniciar sesión en los HSM


Utilice el comando loginHSM para iniciar sesión en los HSM. El siguiente comando inicia sesión como un
usuario de criptografía (CU) (p. 10) denominado example_user. El resultado indica un inicio de sesión
correcto para los tres HSM del clúster.

Command: loginHSM -u CU -s example_user -p <password>


Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

131
AWS CloudHSM Guía del usuario
Referencia

A continuación, se muestra la sintaxis del comando loginHSM.

Command: loginHSM -u <user type> -s <username> -p <password>

Cerrar la sesión de los HSM


Utilice el comando logoutHSM para cerrar sesión en los HSM.

Command: logoutHSM
Cfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Detener key_mgmt_util
Utilice el comando exit para detener key_mgmt_util.

Command: exit

Referencia de comandos de key_mgmt_util


La herramienta de línea de comandos key_mgmt_util le ayuda a administrar claves en los HSM de un
clúster, incluidas la creación, la eliminación y la búsqueda de claves y sus atributos. Contiene varios
comandos, cada uno de los cuales se describe en detalle en este tema.

Para informarse sobre cómo comenzar rápidamente, consulte Introducción a key_mgmt_util (p. 129).
Para obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los
atributos de claves (p. 214). Para obtener información sobre la herramienta de línea de comandos
cloudhsm_mgmt_util que contiene los comandos necesarios para administrar el HSM y los usuarios del
clúster, consulte cloudhsm_mgmt_util (p. 81).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Para generar una lista de todos los comandos de key_mgmt_util, escriba:

Command: help

Para obtener ayuda sobre un comando de key_mgmt_util específico, escriba:

Command: <command-name> -h

Para finalizar la sesión de key_mgmt_util, escriba:

Command: exit

En los temas siguientes, se describen los comandos de la herramienta key_mgmt_util.


Note

Algunos comandos en key_mgmt_util y cloudhsm_mgmt_util tienen los mismos nombres.


Sin embargo, normalmente los comandos tienen una sintaxis y una salida diferentes, y su
funcionalidad varía ligeramente.

132
AWS CloudHSM Guía del usuario
Referencia

Comando Descripción

aesWrapUnwrap (p. 134) Cifra y descifra el contenido de una clave de un


archivo.

deleteKey (p. 137) Elimina una clave de los HSM.

Error2String (p. 138) Obtiene el error que corresponde al código de error


hexadecimal key_mgmt_util.

exit (p. 139) Sale de key_mgmt_util.

exportPrivateKey (p. 140) Exporta una copia de una clave privada de un HSM
a un archivo en disco.

exportPubKey (p. 142) Exporta una copia de una clave pública de un HSM
a un archivo.

exSymKey (p. 143) Exporta una copia de texto no cifrado de una clave
simétrica desde los HSM a un archivo.

extractMaskedObject (p. 148) Extrae una clave de un HSM como un archivo de


objeto enmascarado.

findKey (p. 149) Busca claves en función de un valor de atributo de


clave.

findSingleKey (p. 152) Comprueba que todos los HSM del clúster tengan
una clave.

genDSAKeyPair (p. 153) Genera un par de claves de algoritmo de firma


digital (DSA) en los HSM.

genECCKeyPair (p. 158) Genera un par de claves de criptografía de curva


elíptica (ECC) en sus HSM.

genPBEKey (p. 162) (Este comando no es compatible con los HSM


validados mediante FIPS).

genRSAKeyPair (p. 162) Genera un par de claves asimétricas RSA en sus


HSM.

genSymKey (p. 167) Genera una clave simétrica en sus HSM.

getAttribute (p. 172) Obtiene los valores de los atributos de una clave
de AWS CloudHSM y los escribe en un archivo.

getCaviumPrivKey (p. 175) Crea una versión en formato PEM falso de una
clave privada y la exporta a un archivo.

getCert (p. 176) Recupera los certificados de las particiones de un


HSM y los guarda en un archivo.

getKeyInfo (p. 178) Obtiene los ID de los usuarios de HSM que pueden
utilizar la clave.

Si la clave se controla mediante cuórum, obtiene el


número de usuarios del cuórum.

help (p. 180) Muestra información de ayuda para los comandos


disponibles en key_mgmt_util.

133
AWS CloudHSM Guía del usuario
Referencia

Comando Descripción

importPrivateKey (p. 182) Importa una clave privada en un HSM.

importPubKey (p. 185) Importa una clave pública en un HSM.

imSymKey (p. 187) Importa una copia de texto no cifrado de una clave
simétrica desde un archivo a los HSM.

insertMaskedObject (p. 193) Inserta un objeto enmascarado desde un archivo


en disco a un HSM perteneciente al clúster
relacionado con el clúster de origen del objeto. Un
clúster relacionado es cualquier clúster generado
a partir de una copia de seguridad del clúster de
origen (p. 47).

??? (p. 195) Determina si un archivo determinado contiene una


clave privada verdadera o una clave PEM falsa.

listAttributes (p. 196) Muestra una lista de los atributos de una clave
de AWS CloudHSM y las constantes que los
representan.

listUsers (p. 197) Obtiene los usuarios de los HSM, su ID y tipo de


usuario y otros atributos.

loginHSM y logoutHSM (p. 198) Inicia y cierra sesión en los HSM de un clúster.

setAttribute (p. 200) Convierte una clave de sesión en una clave


persistente.

sign (p. 202) Genera una firma para un archivo utilizando la


clave privada elegida.

unWrapKey (p. 204) Importa una clave encapsulada (cifrada) desde un


archivo a los HSM.

verify (p. 209) Verifica si se utilizó una clave determinada para


firmar un archivo concreto.

wrapKey (p. 211) Exporta una copia cifrada de una clave desde el
HSM a un archivo.

aesWrapUnwrap
El comando aesWrapUnwrap cifra o descifra el contenido de un archivo en el disco. Este comando está
diseñado para encapsular y desencapsular claves de cifrado, pero se puede utilizar en cualquier archivo
que contenga menos de 4 KB (4096 bytes) de datos.

aesWrapUnwrap utiliza el encapsulado de claves AES. Emplea una clave AES en el HSM como clave de
encapsulación o desencapsulación. A continuación escribe el resultado en otro archivo en el disco.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

aesWrapUnwrap -h

134
AWS CloudHSM Guía del usuario
Referencia

aesWrapUnwrap -m <wrap-unwrap mode>


-f <file-to-wrap-unwrap>
-w <wrapping-key-handle>
[-i <wrapping-IV>]
[-out <output-file>]

Ejemplos
En estos ejemplos, se muestra cómo se utiliza aesWrapUnwrap para cifrar y descifrar una clave de cifrado
en un archivo.

Example : Encapsulación de una clave de cifrado

Este comando utiliza aesWrapUnwrap para encapsular una clave simétrica triple DES que se ha exportado
desde el HSM sin cifrar (p. 143) hasta el archivo 3DES.key. Puede utilizar un comando similar para
encapsular toda clave que esté guardada en un archivo.

El comando utiliza el parámetro -m con un valor de 1 para indicar el modo de encapsulación, el parámetro
-w para especificar una clave AES en el HSM (indicador de clave 6) como clave de encapsulación y, por
último, escribe la clave encapsulada obtenida en el archivo 3DES.key.wrapped.

La salida muestra que el comando se ha ejecutado correctamente y que la operación ha utilizado el IV


predeterminado, que es el preferido.

Command: aesWrapUnwrap -f 3DES.key -w 6 -m 1 -out 3DES.key.wrapped

Warning: IV (-i) is missing.


0xA6A6A6A6A6A6A6A6 is considered as default IV
result data:
49 49 E2 D0 11 C1 97 22
17 43 BD E3 4E F4 12 75
8D C1 34 CF 26 10 3A 8D
6D 0A 7B D5 D3 E8 4D C2
79 09 08 61 94 68 51 B7

result written to file 3DES.key.wrapped

Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS

Example : Desencapsulación de una clave de cifrado

En este ejemplo, se muestra cómo se utiliza aesWrapUnwrap para desencapsular (descifrar) una clave
encapsulada (cifrada) en un archivo. Puede que le interese realizar una operación de este tipo antes de
importar una clave al HSM. Por ejemplo, si intenta utilizar el comando imSymKey (p. 187) para importar
una clave cifrada, este devuelve un error, ya que la clave cifrada no tiene el formato necesario para una
clave sin cifrar de ese tipo.

El comando desencapsula la clave del archivo 3DES.key.wrapped y escribe el texto sin cifrar en el
archivo 3DES.key.unwrapped. El comando utiliza el parámetro -m con un valor de 0 para indicar el
modo de desencapsulación, el parámetro -w para especificar una clave AES en el HSM (indicador de
clave 6) como clave de encapsulación y, por último, escribe la clave encapsulada obtenida en el archivo
3DES.key.unwrapped.

Command: aesWrapUnwrap -m 0 -f 3DES.key.wrapped -w 6 -out 3DES.key.unwrapped

Warning: IV (-i) is missing.


0xA6A6A6A6A6A6A6A6 is considered as default IV
result data:
14 90 D7 AD D6 E4 F5 FA

135
AWS CloudHSM Guía del usuario
Referencia

A1 95 6F 24 89 79 F3 EE
37 21 E6 54 1F 3B 8D 62

result written to file 3DES.key.unwrapped

Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí
-m

Especifica el modo. Para encapsular (cifrar) el contenido del archivo, escriba 1; para desencapsular
(descifrar) el contenido del archivo, escriba 0.

Obligatorio: sí
-f

Especifica el archivo que se va a encapsular. Especifique un archivo que contenga menos de 4 KB


(4096 bytes) de datos. Esta operación está diseñada para encapsular y desencapsular claves de
cifrado.

Obligatorio: sí
-w

Especifica la clave de encapsulamiento. Escriba 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 (p. 149).

Para crear una clave de encapsulamiento, utilice genSymKey (p. 167) para generar una clave AES
(tipo 31) o genRSAKeyPair (p. 162) para generar un par de claves RSA (tipo 0). Si está utilizando
un par de claves RSA, asegúrese de encapsular la clave con una de las claves y desencapsularla
con la otra. Para verificar que se puede usar una clave como clave de encapsulamiento, use
getAttribute (p. 172) para obtener el valor del atributo OBJ_ATTR_WRAP, que se representa con la
constante 262.

Requerido: sí
-i

Especifica un valor inicial alternativo (IV) para el algoritmo. Utilice el valor predeterminado a menos
que tenga una condición especial que requiera una alternativa.

Valor predeterminado: 0xA6A6A6A6A6A6A6A6. El valor predeterminado se define en la especificación


de algoritmo de encapsulación de claves AES.

Obligatorio: no
-out

Especifica un nombre alternativo para el archivo de salida que contiene la clave encapsulada o
desencapsulada. El valor predeterminado es wrapped_key (para operaciones de encapsulación) y
unwrapped_key (para operaciones de desencapsulación) en el directorio local.

Si el archivo existe, el comando aesWrapUnwrap lo sobrescribe sin ningún tipo de advertencia. Si se


produce un error en el comando, aesWrapUnwrap crea un archivo de salida sin contenido.

136
AWS CloudHSM Guía del usuario
Referencia

Valor predeterminado: para la encapsulación: wrapped_key. Para la desencapsulación:


unwrapped_key.

Obligatorio: no

Temas relacionados
• exSymKey (p. 143)
• imSymKey (p. 187)
• unWrapKey (p. 204)
• wrapKey (p. 211)

deleteKey
El comando deleteKey de key_mgmt_util elimina una clave del HSM. Solo puede eliminar las claves de una
en una. La eliminación de una clave de un par de claves no influye en la otra clave del par.

Solo el propietario de la clave puede eliminar una clave. Los usuarios que comparten la clave pueden
utilizarla en operaciones criptográficas, pero no eliminarla.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

deleteKey -h

deleteKey -k

Ejemplos
En los ejemplos siguientes, se muestra cómo se utiliza deleteKey para eliminar claves de los HSM.

Example : Eliminación de una clave


Este comando elimina la clave que tiene el identificador de clave 6. Cuando el comando se ejecuta
correctamente, deleteKey devuelve mensajes de éxito desde cada HSM del clúster.

Command: deleteKey -k 6

Cfm3DeleteKey returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Example : Eliminación de una clave (error)


Cuando se produce un error en el comando porque ninguna clave tiene el identificador de clave
especificado, deleteKey devuelve un mensaje de error de identificador de objeto no válido.

Command: deleteKey -k 252126

Cfm3FindKey returned: 0xa8 : HSM Error: Invalid object handle is passed to this
operation

137
AWS CloudHSM Guía del usuario
Referencia

Cluster Error Status


Node id 1 and err state 0x000000a8 : HSM Error: Invalid object handle is passed to
this operation
Node id 2 and err state 0x000000a8 : HSM Error: Invalid object handle is passed to
this operation

Cuando el comando genera un error porque el usuario actual no es el propietario de la clave, el comando
devuelve un error de acceso denegado.

Command: deleteKey -k 262152

Cfm3DeleteKey returned: 0xc6 : HSM Error: Key Access is denied.

Parámetros
-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-k

Especifica el identificador de la clave que se va a eliminar. Para encontrar los identificadores de clave
de las claves del HSM, utilice findKey (p. 149).

Obligatorio: sí

Temas relacionados
• findKey (p. 149)

Error2String
El comando de ayuda Error2String de la herramienta key_mgmt_util devuelve el error que corresponde a
un código de error hexadecimal de key_mgmt_util. Puede utilizar este comando cuando esté solucionando
problemas de los comandos y los scripts.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

Error2String -h

Error2String -r <response-code>

Ejemplos
En estos ejemplos, se muestra cómo utilizar Error2String para obtener la cadena de error de un código de
error de key_mgmt_util.

Example : Obtención de una descripción del error

Este comando obtiene la descripción del error del código de error 0xdb. En la descripción, se explica que
un intento de iniciar sesión en key_mgmt_util generó un error porque el usuario no era del tipo adecuado.
Solo los usuarios de criptografía (CU) pueden iniciar sesión en key_mgmt_util.

138
AWS CloudHSM Guía del usuario
Referencia

Command: Error2String -r 0xdb

Error Code db maps to HSM Error: Invalid User Type.

Example : Búsqueda del código de error

En este ejemplo, se muestra dónde se puede encontrar el código de un error de key_mgmt_util. El código
de error, 0xc6, se muestra después de la cadena: Cfm3command-name returned: .

En este ejemplo getKeyInfo (p. 178) indica que el usuario actual (usuario 4) puede utilizar la clave en
operaciones de criptografía. Sin embargo, cuando el usuario intenta utilizar deleteKey (p. 137) para
eliminar la clave, el comando devuelve el código de error 0xc6.

Command: deleteKey -k 262162

Cfm3DeleteKey returned: 0xc6 : HSM Error: Key Access is denied

Cluster Error Status

Command: getKeyInfo -k 262162

Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

Owned by user 3

also, shared to following 1 user(s):

Si se le notifica el error 0xc6, puede utilizar un comando Error2String como este para buscar el error. En
este caso el comando deleteKey ha generado un error de acceso denegado porque la clave se comparte
con el usuario actual, pero es propiedad de otro usuario. Solo los propietarios de la clave tienen permiso
para eliminarla.

Command: Error2String -r 0xa8

Error Code c6 maps to HSM Error: Key Access is denied

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí
-r

Especifica un código de error hexadecimal. El indicador 0x hexadecimal es obligatorio.

Obligatorio: sí

exit
El comando exit de key_mgmt_util permite salir de key_mgmt_util. Después de salir correctamente, volverá
a la línea de comandos estándar.

139
AWS CloudHSM Guía del usuario
Referencia

Para poder ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130).

Sintaxis

exit

Parámetros
Este comando no tiene parámetros.

Temas relacionados
• Iniciar key_mgmt_util (p. 130)

exportPrivateKey
El comando exportPrivateKey de key_mgmt_util exporta una clave privada asimétrica de un HSM a un
archivo. Puede utilizarlo para exportar las claves privadas que genere en el HSM. También puede utilizar el
comando para exportar las claves privadas que se importaron en un HSM, como las que se importaron con
el comando importPrivateKey (p. 182).

Durante el proceso de exportación, exportPrivateKey utiliza la clave AES que se seleccione (la clave
de encapsulación) para encapsular (cifrar) la clave privada. De esta forma, el archivo de clave privada
mantiene la integridad durante el tránsito. Para obtener más información, consulte wrapKey (p. 211).

El comando exportPrivateKey copia el material de claves en el archivo que se especifique. Sin embargo,
no elimina la clave del HSM, no cambia sus atributos de clave (p. 214) ni le impide a usted utilizar la
clave en operaciones criptográficas posteriores. Puede exportar la misma clave varias veces.

Solo puede exportar claves privadas que tengan un atributo OBJ_ATTR_EXTRACTABLE con valor 1. Para
buscar los atributos de una clave, utilice el comando getAttribute (p. 172).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

exportPrivateKey -h

exportPrivateKey -k <private-key-handle
-w <wrapping-key-handle>
-out <key-file>
[-m <wrapping-mechanism>]
[-wk <wrapping-key-file>]

Ejemplos
Este ejemplo muestra cómo utilizar exportPrivateKey para exportar una clave privada de un HSM.

Example Exportar una clave privada


Este comando exporta la clave privada con el identificador 15 utilizando una clave de encapsulación
con el identificador 16 a un archivo PEM denominado exportKey.pem. Cuando el comando se ejecuta
correctamente, exportPrivateKey devuelve un mensaje de confirmación.

Command: exportPrivateKey -k 15 -w 16 -out exportKey.pem

140
AWS CloudHSM Guía del usuario
Referencia

Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS

PEM formatted private key is written to exportKey.pem

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-k

Especifica el identificador de clave de la clave privada que se va a exportar.

Obligatorio: sí
-w

Especifica el identificador de la clave de encapsulación. Este parámetro es obligatorio. Para buscar


identificadores de clave, utilice el comando findKey (p. 149).

Para determinar si una clave se puede utilizar como clave de encapsulación, utilice
getAttribute (p. 172) para obtener el valor del atributo OBJ_ATTR_WRAP (262). Para crear una clave
de encapsulación, utilice genSymKey (p. 167) 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 para desencapsular, la clave durante la
exportación.

Obligatorio: sí
-out

Especifica el nombre del archivo en el que se escribirá la clave privada exportada.

Obligatorio: sí
-m

Especifica el mecanismo de encapsulación que se aplicará a la clave privada que se va a exportar. El


único valor válido es 4, que representa el mecanismo NIST_AES_WRAP mechanism.

Valor predeterminado: 4 (NIST_AES_WRAP)

Obligatorio: no
-wk

Especifica la clave que se utilizará para desencapsular la clave que se está exportando. Escriba la ruta
y el nombre de un archivo que contenga una clave AES sin cifrar.

Si se incluye este parámetro, exportPrivateKey utiliza la clave del archivo especificado en el parámetro
-w para encapsular la clave que se va a exportar y utiliza la clave especificada con el parámetro -wk
para desencapsularla.

Valor predeterminado: utilizar la clave de encapsulación especificada en el parámetro -w para


encapsular y desencapsular.

141
AWS CloudHSM Guía del usuario
Referencia

Obligatorio: no

Temas relacionados
• importPrivateKey (p. 182)
• wrapKey (p. 211)
• unWrapKey (p. 204)
• genSymKey (p. 167)

exportPubKey
El comando exportPubKey de key_mgmt_util exporta una clave pública de un HSM a un archivo. Puede
utilizarlo para exportar las claves públicas que genere en un HSM. También puede utilizar este comando
para exportar las claves públicas que se importaron en un HSM, como las que se importaron con el
comando importPubKey (p. 185).

El comando exportPubKey copia el material de claves en el archivo que se especifique. Sin embargo, no
elimina la clave del HSM, no cambia sus atributos de clave (p. 214) ni le impide a usted utilizar la clave
en operaciones criptográficas posteriores. Puede exportar la misma clave varias veces.

Solo puede exportar las claves públicas cuyo valor de OBJ_ATTR_EXTRACTABLE es 1. Para buscar los
atributos de una clave, utilice el comando getAttribute (p. 172).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

exportPubKey -h

exportPubKey -k <public-key-handle
-out <key-file>

Ejemplos
Este ejemplo muestra cómo utilizar exportPubKey para exportar una clave pública de un HSM.

Example Exportar una clave pública


Este comando exporta una clave pública con el identificador 10 a un archivo denominado public.pem.
Cuando el comando se ejecuta correctamente, exportPubKey devuelve un mensaje de confirmación.

Command: exportPubKey -k 10 -out public.pem

PEM formatted public key is written to public.pem

Cfm3ExportPubKey returned: 0x00 : HSM Return: SUCCESS

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

142
AWS CloudHSM Guía del usuario
Referencia

Obligatorio: sí
-k

Especifica el identificador de clave de la clave pública que se va a exportar.

Obligatorio: sí
-out

Especifica el nombre del archivo en el que se escribirá la clave pública exportada.

Obligatorio: sí

Temas relacionados
• importPubKey (p. 185)
• Generar claves (p. 57)

exSymKey
El comando exSymKey de 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 (p. 211). Para importar una clave no cifrada como las que exSymKey exporta,
utilice imSymKey (p. 187).

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 (p. 214), 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 (p. 142). Para exportar claves privadas, utilice exportPrivateKey (p. 140).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) 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.

143
AWS CloudHSM Guía del usuario
Referencia

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.
Warning
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 : Exportación 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 utiliza genSymKey (p. 167) 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 (p. 149), 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 the
section called “Referencia de los atributos de claves” (p. 214).

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).

144
AWS CloudHSM Guía del usuario
Referencia

// 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.

145
AWS CloudHSM Guía del usuario
Referencia

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 (p. 187) 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"

Parámetros
-h

Muestra ayuda para el comando.

Requerido: 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 (p. 149).

Para verificar que se puede exportar una clave, ejecute el comando getAttribute (p. 172) 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, ejecute el comando getKeyInfo (p. 178).

Obligatorio: sí

146
AWS CloudHSM Guía del usuario
Referencia

-w

Especifica el identificador de la clave de encapsulación. Este parámetro es obligatorio. Para buscar


identificadores de clave, use el comando findKey (p. 149).

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 (p. 172)
para obtener el valor del atributo OBJ_ATTR_WRAP, que se representa con la constante 262. Para
crear una clave de encapsulamiento, use genSymKey (p. 167) para crear una clave AES (escriba
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.
Note

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
• genSymKey (p. 167)
• imSymKey (p. 187)
• wrapKey (p. 211)

147
AWS CloudHSM Guía del usuario
Referencia

extractMaskedObject
El comando extractMaskedObject de key_mgmt_util extrae una clave de un HSM y la guarda en un archivo
como un objeto enmascarado. Los objetos enmascarados son objetos clonados que solo se pueden utilizar
después volver a insertarlos en el clúster original mediante el comando insertMaskedObject (p. 193).
Solo puede insertar un objeto enmascarado en el mismo clúster desde el que se generó, o en un clon de
ese clúster. Esto incluye cualquier versión clonada del clúster generada al copiar una copia de seguridad
entre regiones (p. 46) y al utilizar la copia de seguridad para crear un clúster nuevo (p. 47).

Los objetos enmascarados son una forma eficaz de descargar y sincronizar claves, incluidas las claves
no extraíbles (es decir, las claves que tienen un valor de OBJ_ATTR_EXTRACTABLE (p. 214) igual a
0). De esta forma, las claves se pueden sincronizar de forma segura entre los clústeres relacionados de
diferentes regiones sin necesidad de actualizar el archivo de configuración (p. 218) de AWS CloudHSM.
Important

Tras su inserción, los objetos enmascarados se descifran y se les asigna un identificador de clave
que es distinto del identificador de clave de la clave original. Un objeto enmascarado incluye todos
los metadatos asociados a la clave original, incluidos los atributos, la información de propiedad y
uso compartido y la configuración de cuórum. Si necesita sincronizar claves entre los clústeres de
una aplicación, utilice syncKey (p. 125) en cloudhsm_mgmt_util en su lugar.

Para poder ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM. El comando extractMaskedObject lo puede utilizar el CU que es el propietario
de la clave o cualquier CO.

Sintaxis

extractMaskedObject -h

extractMaskedObject -o <object-handle>
-out <object-file>

Ejemplos
Este ejemplo muestra cómo utilizar extractMaskedObject para extraer una clave de un HSM como un
objeto enmascarado.

Example Extraer un objeto enmascarado

Este comando extrae un objeto enmascarado de un HSM a partir de la clave con el identificador 524295
y lo guarda como un archivo denominado maskedObj. Cuando el comando se ejecuta correctamente,
extractMaskedObject devuelve un mensaje de confirmación.

Command: extractMaskedObject -o 524295 -out maskedObj

Object was masked and written to file "maskedObj"

Cfm3ExtractMaskedObject returned: 0x00 : HSM Return: SUCCESS

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

148
AWS CloudHSM Guía del usuario
Referencia

Obligatorio: sí
-o

Especifica el identificador de la clave que se va a extraer como objeto enmascarado.

Obligatorio: sí
-out

Especifica el nombre del archivo en el que se guardará el objeto enmascarado.

Obligatorio: sí

Temas relacionados
• insertMaskedObject (p. 193)
• syncKey (p. 125)
• Copia de una copia de seguridad entre regiones (p. 46)
• Creación un clúster de AWS CloudHSM a partir de una copia de seguridad anterior (p. 47)

findKey
Utilice el comando findKey de key_mgmt_util para buscar claves mediante los valores de los atributos
de clave. Cuando una clave coincide con todos los criterios que ha establecido, findKey devuelve el
identificador de clave. Si no se especifica ningún parámetro, findKey devuelve los identificadores de
todas las claves que se pueden utilizar en el HSM. Para encontrar los valores de atributo de una clave en
particular, utilice getAttribute (p. 172).

Al igual que todos los comandos de key_mgmt_util, findKey es específico del usuario. Devuelve solo las
claves que el usuario actual puede utilizar en las operaciones criptográficas. Esto incluye las claves que el
usuario actual posee y claves que se han compartido con el usuario actual.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

findKey -h

findKey [-c <key class>]


[-t <key type>]
[-l <key label>]
[-id <key ID>]
[-sess (0 | 1)]
[-u <user-ids>]
[-m <modulus>]
[-kcv <key_check_value>]

Ejemplos
En estos ejemplos, se muestra cómo se utiliza findKey para encontrar e identificar claves en los HSM.

Example : Búsqueda de todas las claves

Este comando encuentra todas las claves para el usuario actual en el HSM. El resultado incluye claves que
el usuario posee y comparte, y todas las claves públicas en los HSM.

149
AWS CloudHSM Guía del usuario
Referencia

Para obtener los atributos de una clave con un identificador de clave particular, utilice
getAttribute (p. 172). Para determinar si el usuario actual posee o comparte una clave determinada,
utilice getKeyInfo (p. 178) o findAllKeys (p. 100) en cloudhsm_mgmt_util.

Command: findKey

Total number of keys present 13

number of keys matched from start index 0::12


6, 7, 524296, 9, 262154, 262155, 262156, 262157, 262158, 262159, 262160, 262161, 262162

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Example : Búsqueda de claves por tipo, usuario y sesión

Este comando encuentra claves de AES persistentes que el usuario actual y el usuario 3 pueden utilizar.
(Es posible que el usuario 3 pueda utilizar otras claves que el usuario actual no puede ver.)

Command: findKey -t 31 -sess 0 -u 3

Example : Búsqueda de claves por clase y etiqueta

Este comando encuentra todas las claves públicas para el usuario actual con la etiqueta 2018-sept.

Command: findKey -c 2 -l 2018-sept

Example : Búsqueda de claves RSA por módulo

Este comando encuentra claves RSA (tipo 0) para el usuario actual que se crearon utilizando el módulo en
el archivo m4.txt.

Command: findKey -t 0 -m m4.txt

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí
-t

Encuentra claves del tipo especificado. Escriba la constante que representa la clase de clave. Por
ejemplo, para encontrar las claves 3DES, escriba -t 21.

Valores válidos:
• 0: RSA
• 1: DSA
• 3: EC
• 16: GENERIC_SECRET

150
AWS CloudHSM Guía del usuario
Referencia

• 18: RC4
• 21: Triple DES (3DES)
• 31: AES

Obligatorio: no
-c

Encuentra claves en la clase especificada. Escriba la constante que representa la clase de clave. Por
ejemplo, para encontrar claves públicas, escriba -c 2.

Valores válidos para cada tipo de clave:


• 2: pública. Esta clase contiene las claves públicas de los pares de claves públicas–privadas.
• 3: privada. Esta clase contiene las claves privadas de los pares de claves públicas–privadas.
• 4: secreta. Esta clase contiene todas las claves simétricas.

Obligatorio: no
-l

Encuentra claves con la etiqueta especificada. Escriba la etiqueta exacta. No puede utilizar caracteres
comodín ni expresiones regulares en el valor --l.

Obligatorio: no
-id

Encuentra la clave con el ID especificado. Escriba la cadena exacta del ID. No puede utilizar
caracteres comodín ni expresiones regulares en el valor -id.

Obligatorio: no
-sess

Encuentra claves por estado de la sesión. Para encontrar claves que solo sean válidas en la sesión
actual, escriba 1. Para encontrar claves persistentes, escriba 0.

Obligatorio: no
-u

Encuentra claves que los usuarios especificados y el actual usuario comparten. Escriba una lista
separada por comas de los ID de usuario de HSM, como -u 3 o -u 4,7. Para encontrar los ID de los
usuarios en un HSM, utilice listUsers (p. 197).

Si se especifica un ID de usuario, findKey devuelve las claves de ese usuario. Si se especifican varios
ID de usuario, findKey devuelve las claves que todos los usuarios especificados pueden utilizar.

Como findKey solo devuelve las claves que el usuario actual puede utilizar, los resultados de -u son
siempre idénticos a las claves del usuario actual, o a un subconjunto de ellas. Para obtener todas las
claves que posee un usuario o que se comparten con él, los responsables de criptografía (CO) pueden
utilizar findAllKeys (p. 100) en cloudhsm_mgmt_util.

Obligatorio: no
-m

Encuentra claves que se crearon utilizando el módulo RSA en el archivo especificado. Escriba la ruta
al archivo que almacena el módulo.

Obligatorio: no

151
AWS CloudHSM Guía del usuario
Referencia

-kcv

Encuentra claves con el valor de comprobación de clave que se ha especificado.

El valor de comprobación de clave (KCV) es un hash de 3 bytes o una suma de comprobación de


una clave que se genera cuando el HSM importa o genera una clave. También puede calcular un
KCV fuera del HSM, por ejemplo, después de exportar una clave. A continuación, puede comparar
los valores de KCV para confirmar la identidad y la integridad de la clave. Para obtener el KCV de una
clave, use getAttribute (p. 172).

AWS CloudHSM usa el siguiente método estándar para generar un valor de comprobación de clave:
• Claves simétricas: primeros 3 bytes del resultado de cifrar un bloque de cero con la clave.
• Pares de claves asimétricos: primeros 3 bytes del hash SHA-1 de la clave pública.
• Claves de HMAC: el KVC para claves de HMAC no es compatible en este momento.

Obligatorio: no

Salida
El resultado de findKey muestra el número total de claves coincidentes y sus identificadores de clave

Command: findKey
Total number of keys present 10

number of keys matched from start index 0::9


6, 7, 8, 9, 10, 11, 262156, 262157, 262158, 262159

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Temas relacionados
• findSingleKey (p. 152)
• getKeyInfo (p. 178)
• getAttribute (p. 172)
• findAllKeys (p. 100) en cloudhsm_mgmt_util
• Referencia de los atributos de claves (p. 214)

findSingleKey
El comando findSingleKey de la herramienta key_mgmt_util comprueba si existe una clave en todos los
HSM del clúster.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

findSingleKey -h

findSingleKey -k <key-handle>

152
AWS CloudHSM Guía del usuario
Referencia

Ejemplo
Example
Este comando verifica que la clave 252136 exista en los tres HSM del clúster.

Command: findSingleKey -k 252136


Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status


Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
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.

Requerido: sí
-k

Especifica el identificador de una clave en el HSM. Este parámetro es obligatorio.

Para buscar identificadores de clave, use el comando findKey (p. 197).

Obligatorio: sí

Temas relacionados
• findKey (p. 197)
• getKeyInfo (p. 197)
• getAttribute (p. 149)

genDSAKeyPair
El comando genDSAKeyPair de la herramienta key_mgmt_util genera un par de claves de algoritmo de
firma digital (DSA) en los HSM. Debe especificar la longitud del módulo; el comando genera el valor del
módulo. También puede asignar un ID, compartir la clave con otros usuarios del HSM, crear claves no
extraíbles y claves que caduquen cuando la sesión finaliza. Cuando el comando se ejecuta correctamente,
devuelve identificadores de clave que el HSM asigna a las claves públicas y privadas. Puede utilizar estos
identificadores de clave para identificar las claves ante otros comandos.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).
Tip

Para buscar los atributos de una clave que ha creado, como el tipo, la longitud, la etiqueta
y el ID, use getAttribute (p. 172). Para buscar las claves de un usuario concreto, use
getKeyInfo (p. 178). Para buscar claves en función de sus valores de atributo, use
findKey (p. 149).

Sintaxis

genDSAKeyPair -h

153
AWS CloudHSM Guía del usuario
Referencia

genDSAKeyPair -m <modulus length>


-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
En estos ejemplos, se muestra cómo se utiliza genDSAKeyPair para crear un par de claves de DSA.

Example : Creación de un par de claves de DSA

Este comando crea un par de claves de DSA con una etiqueta DSA. La salida muestra que el identificador
de clave de la clave pública es 19, mientras que el identificador de la clave privada es 21.

Command: genDSAKeyPair -m 2048 -l DSA

Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair: public key handle: 19 private key handle: 21

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Example : Creación de un par de claves de DSA solo para la sesión

Este comando crea un par de claves de DSA que es válido únicamente en la sesión actual. El comando
asigna el ID exclusivo DSA_temp_pair además de la etiqueta obligatoria (que no es exclusiva).
Es posible que le interese crear un par de claves de este tipo para firmar y verificar un token de una
sola sesión. La salida muestra que el identificador de clave de la clave pública es 12, mientras que el
identificador de la clave privada es 14.

Command: genDSAKeyPair -m 2048 -l DSA-temp -id DSA_temp_pair -sess

Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair: public key handle: 12 private key handle: 14

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Para confirmar que el par de claves exista únicamente en la sesión, utilice el parámetro -sess de
findKey (p. 149) con el valor 1 (true).

Command: findKey -sess 1

Total number of keys present 2

number of keys matched from start index 0::1


12, 14

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

154
AWS CloudHSM Guía del usuario
Referencia

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Example : Creación de un par de claves de DSA no extraíbles y compartidas

Este comando crea un par de claves de DSA. La clave privada se comparte con otros tres usuarios y no
se puede exportar desde el HSM. Cualquier usuario puede utilizar las claves públicas y estas siempre se
pueden extraer.

Command: genDSAKeyPair -m 2048 -l DSA -id DSA_shared_pair -nex -u 3,5,6

Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair: public key handle: 11 private key handle: 19

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Example : Creación de un par de claves controladas mediante cuórum

Este comando crea un par de claves de DSA con la etiqueta DSA-mV2. El comando utiliza el parámetro -
u para compartir la clave privada con los usuarios 4 y 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 privada.
El comando también utiliza el parámetro -attest para verificar la integridad del firmware en el que se
genera el par de claves.

La salida muestra que el comando genera una clave pública con el identificador de clave 12 y una clave
privada con el identificador de clave 17 y que la comprobación de declaración del firmware del clúster ha
pasado.

Command: genDSAKeyPair -m 2048 -l DSA-mV2 -m_value 2 -u 4,6 -attest

Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair: public key handle: 12 private key handle: 17

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

Este comando utiliza getKeyInfo (p. 178) en la clave privada (identificador de clave 17). La salida
confirma que la clave es propiedad del usuario actual (usuario 3) y que se comparte con los usuarios 4 y 6
(y nadie más). La salida también muestra que la autenticación de cuórum está habilitada y que el cuórum
es de dos.

Command: getKeyInfo -k 17

Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

Owned by user 3

also, shared to following 2 user(s):

4
6
2 Users need to approve to use/manage this key

155
AWS CloudHSM Guía del usuario
Referencia

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí
-m

Especifica la longitud del módulo en bits. El único valor válido es 2048.

Obligatorio: sí
-l

Especifica una etiqueta definida por el usuario para el par de claves. Escriba una cadena. La misma
etiqueta se aplica a las dos claves del par.

Puede usar cualquier frase que le ayude a identificar la clave. Dado que la etiqueta no tiene que ser
única, puede usarla para agrupar claves y dividirlas en categorías.

Requerido: sí
-id

Especifica un identificador definido por el usuario para el par de claves. Escriba una cadena que sea
única en el clúster. El valor predeterminado es una cadena vacía. El ID que especifique se aplica a las
dos claves del par.

Predeterminado: sin valor de ID.

Requerido: No
-min_srv

Especifica el número mínimo de HSM en los que la clave se sincroniza antes de que el valor del
parámetro -timeout expire. 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
-m_value

Especifica el número de usuarios que deben aprobar cualquier operación criptográfica que use la
clave privada del par. Escriba un valor de 0 a 8.

Este parámetro establece un requisito de autenticación de cuórum para la clave privada. El valor
predeterminado, 0, deshabilita la característica de autenticación de cuórum para la clave. Cuando
la autenticación de cuórum está habilitada, el número especificado de usuarios deben firmar un
token para aprobar las operaciones criptográficas que usan la clave privada y las operaciones que la
comparten o la dejan de compartir.

156
AWS CloudHSM Guía del usuario
Referencia

Para buscar el m_value de una clave, use getKeyInfo (p. 178).

Este parámetro solo es válido cuando el parámetro -u del comando comparte el par de claves con
suficientes usuarios para satisfacer el requisito m_value.

Predeterminado: 0

Requerido: No
-nex

Hace que la clave privada no se pueda extraer. La clave privada que se genera no se puede exportar
desde el HSM (p. 60). Las claves públicas son siempre extraíbles.

Predeterminado: las claves públicas y privadas de un par de claves son extraíbles.

Requerido: No
-sess

Crea una clave que solo existe en la sesión actual. La clave no se puede recuperar después de que
finalice la sesión.

Use este parámetro cuando necesite solo una clave de manera breve, como una clave de
encapsulamiento, y descifre rápidamente, otra clave. No use una clave de sesión para cifrar datos que
pueda necesitar descifrar después de que finalice la sesión.

Para cambiar una clave de sesión a una clave persistente (token), use setAttribute (p. 200).

Predeterminada: la clave es persistente.

Requerido: No
-timeout

Especifica cuánto tiempo (en segundos) espera el comando para sincronizar una clave con el número
de HSM que especifica el parámetro min_srv.

Este parámetro solo es válido cuando el parámetro min_srv también se usa en el comando.

Predeterminado: sin tiempo de espera. El comando espera indefinidamente y se devuelve solo cuando
la clave se sincroniza con el número mínimo de servidores.

Requerido: No
-u

Comparte la clave privada del par con los usuarios especificados. Este parámetro concede permiso a
otros usuarios de criptografía (CU) de HSM para usar la clave privada en operaciones criptográficas.
Cualquier usuario puede usar claves públicas sin compartir.

Escriba una lista de ID de usuario de HSM separada por comas, como -u 5,6. No incluya el ID de
usuario de HSM del usuario actual. Para buscar los ID de usuario de HSM de los CU del HSM, use
listUsers (p. 197). Para compartir y dejar de compartir claves existentes, use shareKey (p. 123) en
cloudhsm_mgmt_util.

Predeterminado: solo el usuario actual puede usar la clave privada.

Requerido: No
-attest

Ejecuta una comprobación de integridad que verifica el firmware en el que se ejecuta el clúster no se
ha manipulado.

157
AWS CloudHSM Guía del usuario
Referencia

Predeterminado: sin comprobación de declaración

Requerido: No

Temas relacionados
• genRSAKeyPair (p. 162)
• genSymKey (p. 167)
• genECCKeyPair (p. 158)

genECCKeyPair
El comando genECCKeyPair de la herramienta key_mgmt_util genera un par de claves de criptografía
de curva elíptica (ECC) en los HSM. Cuando ejecute el comando genECCKeyPair, debe especificar
el identificador de curva elíptica y una etiqueta para el par de claves. También puede compartir la clave
privada con otros usuarios de CU, crear claves no extraíbles, claves controladas mediante cuórum y
claves que caduquen cuando finalice la sesión. Cuando el comando se ejecuta correctamente, devuelve
identificadores de clave que el HSM asigna a las claves ECC públicas y privadas. Puede utilizar estos
identificadores de clave para identificar las claves ante otros comandos.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).
Tip

Para buscar los atributos de una clave que ha creado, como el tipo, la longitud, la etiqueta
y el ID, use getAttribute (p. 172). Para buscar las claves de un usuario concreto, use
getKeyInfo (p. 178). Para buscar claves en función de sus valores de atributo, use
findKey (p. 149).

Sintaxis

genECCKeyPair -h

genECCKeyPair -i <EC curve id>


-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
En los siguientes ejemplos, se muestra cómo se utiliza genECCKeyPair para crear un par de claves ECC
en los HSM.

Example : crear y examinar un par de claves ECC


Este comando utiliza una curva elíptica NID_sect571r1 y una etiqueta ecc14 para crear un par de claves
ECC. El resultado muestra que el identificador de clave de la clave privada es 262177, mientras que el
identificador de clave de la clave pública es 262179. La etiqueta se aplica a las clave privada y pública.

Command: genECCKeyPair -i 14 -l ecc14

158
AWS CloudHSM Guía del usuario
Referencia

Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair: public key handle: 262179 private key handle: 262177

Cluster Error Status


Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Después de generar la clave, puede examinar sus atributos. Utilice getAttribute (p. 172) para escribir
todos los atributos (representados por la constante 512) de la nueva clave privada de ECC en el archivo
attr_262177.

Command: getAttribute -o 262177 -a 512 -out attr_262177


got all attributes of size 529 attr cnt 19
Attributes dumped into attr_262177

Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS

A continuación, utilice el comando cat para ver el contenido del archivo de atributos attr_262177. El
resultado muestra que la clave es una clave privada de curva elíptica que puede usarse para firmar, pero
no para cifrar, descifrar, encapsular, desencapsular o verificar. La clave es persistente y exportable.

$ cat attr_262177

OBJ_ATTR_CLASS
0x03
OBJ_ATTR_KEY_TYPE
0x03
OBJ_ATTR_TOKEN
0x01
OBJ_ATTR_PRIVATE
0x01
OBJ_ATTR_ENCRYPT
0x00
OBJ_ATTR_DECRYPT
0x00
OBJ_ATTR_WRAP
0x00
OBJ_ATTR_UNWRAP
0x00
OBJ_ATTR_SIGN
0x01
OBJ_ATTR_VERIFY
0x00
OBJ_ATTR_LOCAL
0x01
OBJ_ATTR_SENSITIVE
0x01
OBJ_ATTR_EXTRACTABLE
0x01
OBJ_ATTR_LABEL
ecc2
OBJ_ATTR_ID

OBJ_ATTR_VALUE_LEN
0x0000008a
OBJ_ATTR_KCV
0xbbb32a
OBJ_ATTR_MODULUS
044a0f9d01d10f7437d9fa20995f0cc742552e5ba16d3d7e9a65a33e20ad3e569e68eb62477a9960a87911e6121d112b698e469
OBJ_ATTR_MODULUS_BITS

159
AWS CloudHSM Guía del usuario
Referencia

0x0000019f

Example Uso de una curva de EEC no válida

Este comando intenta crear un par de claves ECC utilizando una curva NID_X9_62_prime192v1. Debido a
que esta curva elíptica no es válida para los HSM de modo FIPS-mode HSM, el comando produce un error.
El mensaje informa que un servidor en el clúster no está disponible, pero esto no suele indicar un problema
con los HSM en el clúster.

Command: genECCKeyPair -i 1 -l ecc1

Cfm3GenerateKeyPair returned: 0xb3 : HSM Error: This operation violates the current
configured/FIPS policies

Cluster Error Status


Node id 0 and err state 0x30000085 : HSM CLUSTER ERROR: Server in cluster is
unavailable

Parámetros
-h

Muestra ayuda para el comando.

Obligatorio: sí
-i

Especifica el identificador de la curva elíptica. Escriba un identificador.

Valores válidos:
• 2: NID_X9_62_prime256v1
• 14: NID_secp384r1
• 16: NID_secp256k1

Obligatorio: sí
-l

Especifica una etiqueta definida por el usuario para el par de claves. Escriba una cadena. La misma
etiqueta se aplica a las dos claves del par.

Puede usar cualquier frase que le ayude a identificar la clave. Dado que la etiqueta no tiene que ser
única, puede usarla para agrupar claves y dividirlas en categorías.

Requerido: sí
-id

Especifica un identificador definido por el usuario para el par de claves. Escriba una cadena que sea
única en el clúster. El valor predeterminado es una cadena vacía. El ID que especifique se aplica a las
dos claves del par.

Predeterminado: sin valor de ID.

Requerido: No
-min_srv

Especifica el número mínimo de HSM en los que la clave se sincroniza antes de que el valor del
parámetro -timeout expire. Si la clave no está sincronizada con el número especificado de
servidores en el tiempo asignado, no se creará.

160
AWS CloudHSM Guía del usuario
Referencia

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
-m_value

Especifica el número de usuarios que deben aprobar cualquier operación criptográfica que use la
clave privada del par. Escriba un valor de 0 a 8.

Este parámetro establece un requisito de autenticación de cuórum para la clave privada. El valor
predeterminado, 0, deshabilita la característica de autenticación de cuórum para la clave. Cuando
la autenticación de cuórum está habilitada, el número especificado de usuarios deben firmar un
token para aprobar las operaciones criptográficas que usan la clave privada y las operaciones que la
comparten o la dejan de compartir.

Para buscar el m_value de una clave, use getKeyInfo (p. 178).

Este parámetro solo es válido cuando el parámetro -u del comando comparte el par de claves con
suficientes usuarios para satisfacer el requisito m_value.

Predeterminado: 0

Requerido: No
-nex

Hace que la clave privada no se pueda extraer. La clave privada que se genera no se puede exportar
desde el HSM (p. 60). Las claves públicas son siempre extraíbles.

Predeterminado: las claves públicas y privadas de un par de claves son extraíbles.

Requerido: No
-sess

Crea una clave que solo existe en la sesión actual. La clave no se puede recuperar después de que
finalice la sesión.

Use este parámetro cuando necesite solo una clave de manera breve, como una clave de
encapsulamiento, y descifre rápidamente, otra clave. No use una clave de sesión para cifrar datos que
pueda necesitar descifrar después de que finalice la sesión.

Para cambiar una clave de sesión a una clave persistente (token), use setAttribute (p. 200).

Predeterminada: la clave es persistente.

Requerido: No
-timeout

Especifica cuánto tiempo (en segundos) espera el comando para sincronizar una clave con el número
de HSM que especifica el parámetro min_srv.

Este parámetro solo es válido cuando el parámetro min_srv también se usa en el comando.

Predeterminado: sin tiempo de espera. El comando espera indefinidamente y se devuelve solo cuando
la clave se sincroniza con el número mínimo de servidores.

Requerido: No

161
AWS CloudHSM Guía del usuario
Referencia

-u

Comparte la clave privada del par con los usuarios especificados. Este parámetro concede permiso a
otros usuarios de criptografía (CU) de HSM para usar la clave privada en operaciones criptográficas.
Cualquier usuario puede usar claves públicas sin compartir.

Escriba una lista de ID de usuario de HSM separada por comas, como -u 5,6. No incluya el ID de
usuario de HSM del usuario actual. Para buscar los ID de usuario de HSM de los CU del HSM, use
listUsers (p. 197). Para compartir y dejar de compartir claves existentes, use shareKey (p. 123) en
cloudhsm_mgmt_util.

Predeterminado: solo el usuario actual puede usar la clave privada.

Requerido: No
-attest

Ejecuta una comprobación de integridad que verifica el firmware en el que se ejecuta el clúster no se
ha manipulado.

Predeterminado: sin comprobación de declaración

Requerido: No

Temas relacionados
• genSymKey (p. 167)
• genRSAKeyPair (p. 162)
• genDSAKeyPair (p. 153)

genPBEKey
El comando genPBEKey en la herramienta key_mgmt_util genera una clave simétrica Triple DES (3DES)
basada en una contraseña. Este comando no es compatible con los HSM validados mediante FIPS que
AWS CloudHSM proporciona.

Para crear claves simétricas, utilice genSymKey (p. 167). Para crear pares de claves asimétricas, utilice
genRSAKeyPair (p. 162), genDSAKeyPair (p. 153)o genECCKeyPair (p. 158).

genRSAKeyPair
El comando genRSAKeyPair de la herramienta key_mgmt_util genera un par de claves asimétricas RSA.
Deberá especificar el tipo de clave, la longitud del módulo y un exponente público. El comando genera
un módulo de la longitud especificada y crea el par de claves. Puede asignar un ID, compartir la clave
con otros usuarios del HSM, crear claves no extraíbles y claves que caduquen cuando la sesión finaliza.
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 (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).
Tip

Para buscar los atributos de una clave que ha creado, como el tipo, la longitud, la etiqueta
y el ID, use getAttribute (p. 172). Para buscar las claves de un usuario concreto, use
getKeyInfo (p. 178). Para buscar claves en función de sus valores de atributo, use
findKey (p. 149).

162
AWS CloudHSM Guía del usuario
Referencia

Sintaxis

genRSAKeyPair -h

genRSAKeyPair -m <modulus length>


-e <public exponent>
-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
En estos ejemplos, se muestra cómo se utiliza genRSAKeyPair para crear pares de claves asimétricas en
los HSM.

Example : Creación y examen de un par de claves RSA


Este comando crea un par de claves RSA con un módulo de 2048 bits y un exponente de 65541. La salida
muestra que el identificador de clave pública es 262159, mientras que el identificador de la clave privada
es 262160.

Command: genRSAKeyPair -m 2048 -e 65541 -l rsa_test

Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS


Cfm3GenerateKeyPair: public key handle: 262159 private key handle: 262160
Cluster Error Status
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

El siguiente comando utiliza getAttribute (p. 172) para obtener los atributos de la clave pública que
acabamos de crear. Escribe la salida en el archivo attr_262159. Va seguido de un comando cat que
obtiene el contenido del archivo de atributos. Para obtener ayuda sobre cómo interpretar los atributos de
claves, consulte Referencia de los atributos de claves (p. 214).

Los valores hexadecimales resultantes confirman que se trata de una clave pública (OBJ_ATTR_CLASS
0x02) con un tipo de RSA (OBJ_ATTR_KEY_TYPE 0x00). Puede utilizar esta clave pública para cifrar
(OBJ_ATTR_ENCRYPT 0x01), pero no para descifrar (OBJ_ATTR_DECRYPT 0x00) o encapsular
(OBJ_ATTR_WRAP 0x00). Los resultados también incluyen la longitud de la clave (512, 0x200), el módulo,
la longitud del módulo (2048, 0x800) y el exponente público (65541, 0x10005).

Command: getAttribute -o 262159 -a 512 -out attr_262159

got all attributes of size 731 attr cnt 20


Attributes dumped into attr_262159 file

Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS

$ cat attr_262159
OBJ_ATTR_CLASS
0x02
OBJ_ATTR_KEY_TYPE
0x00
OBJ_ATTR_TOKEN
0x01
OBJ_ATTR_PRIVATE

163
AWS CloudHSM Guía del usuario
Referencia

0x00
OBJ_ATTR_ENCRYPT
0x01
OBJ_ATTR_DECRYPT
0x00
OBJ_ATTR_WRAP
0x00
OBJ_ATTR_UNWRAP
0x00
OBJ_ATTR_SIGN
0x00
OBJ_ATTR_VERIFY
0x01
OBJ_ATTR_LOCAL
0x01
OBJ_ATTR_SENSITIVE
0x00
OBJ_ATTR_EXTRACTABLE
0x01
OBJ_ATTR_LABEL
rsa_test
OBJ_ATTR_ID

OBJ_ATTR_VALUE_LEN
0x00000200
OBJ_ATTR_KCV
0x0a4364
OBJ_ATTR_MODULUS
9162b8d5d01d7b5b1179686d15e74d1dd38eaa5b6e64673195aaf951df8828deeca002c215d4209a
c0bf90a9587ddca7f6351d5d4df0f6201b65daccd9955e4f49a819c0d39cb6717623bfa33436facc
835c15961a58a63ca25bf0d2d4888d77418c571c190f8cc5a82483050658c00df4658dff248202bc
95e886b1b5c7a981f09b0eb4f606641efe09bf3881f63c90d4a4415219ba796df449862b9d9c2a78
d1c24fff56cf9b25f2b7dee44e200dd9550bd097a7044b22ca004033236bc708a0bad4a111533ed4
6d049e5ec0b449b4a3877e566b0ce9d0a60fd1c15352b131ccc234f1719bed3918df579a66e7fff2
9dc80dc5dbbf6e3d7d092d67c6abca7d
OBJ_ATTR_MODULUS_BITS
0x00000800
OBJ_ATTR_PUBLIC_EXPONENT
0x010005

Example : Generación de un par de claves RSA compartidas


Este comando genera un par de claves RSA y comparte la clave privada con el usuario 4, otro CU en el
HSM. El comando utiliza el parámetro m_value para solicitar al menos dos aprobaciones para poder usar
la clave privada en el par en una operación criptográfica. Al utilizar el parámetro m_value, también tiene
que utilizar -u en el comando y el m_value no puede superar el número total de usuarios (número de
valores en -u + propietario).

Command: genRSAKeyPair -m 2048 -e 195193 -l rsa_mofn -id rsa_mv2 -u 4 -m_value 2

Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair: public key handle: 27 private key handle: 28

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

Parámetros
-h

Muestra ayuda para el comando.

164
AWS CloudHSM Guía del usuario
Referencia

Requerido: sí
-m

Especifica la longitud del módulo en bits. El valor mínimo es 2048.

Obligatorio: sí
-e

Especifica el exponente público. El valor debe ser un número impar superior o igual a 65537.

Obligatorio: sí
-l

Especifica una etiqueta definida por el usuario para el par de claves. Escriba una cadena. La misma
etiqueta se aplica a las dos claves del par.

Puede usar cualquier frase que le ayude a identificar la clave. Dado que la etiqueta no tiene que ser
única, puede usarla para agrupar claves y dividirlas en categorías.

Requerido: sí
-id

Especifica un identificador definido por el usuario para el par de claves. Escriba una cadena que sea
única en el clúster. El valor predeterminado es una cadena vacía. El ID que especifique se aplica a las
dos claves del par.

Predeterminado: sin valor de ID.

Requerido: No
-min_srv

Especifica el número mínimo de HSM en los que la clave se sincroniza antes de que el valor del
parámetro -timeout expire. 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
-m_value

Especifica el número de usuarios que deben aprobar cualquier operación criptográfica que use la
clave privada del par. Escriba un valor de 0 a 8.

Este parámetro establece un requisito de autenticación de cuórum para la clave privada. El valor
predeterminado, 0, deshabilita la característica de autenticación de cuórum para la clave. Cuando
la autenticación de cuórum está habilitada, el número especificado de usuarios deben firmar un
token para aprobar las operaciones criptográficas que usan la clave privada y las operaciones que la
comparten o la dejan de compartir.

Para buscar el m_value de una clave, use getKeyInfo (p. 178).

Este parámetro solo es válido cuando el parámetro -u del comando comparte el par de claves con
suficientes usuarios para satisfacer el requisito m_value.

165
AWS CloudHSM Guía del usuario
Referencia

Predeterminado: 0

Requerido: No
-nex

Hace que la clave privada no se pueda extraer. La clave privada que se genera no se puede exportar
desde el HSM (p. 60). Las claves públicas son siempre extraíbles.

Predeterminado: las claves públicas y privadas de un par de claves son extraíbles.

Requerido: No
-sess

Crea una clave que solo existe en la sesión actual. La clave no se puede recuperar después de que
finalice la sesión.

Use este parámetro cuando necesite solo una clave de manera breve, como una clave de
encapsulamiento, y descifre rápidamente, otra clave. No use una clave de sesión para cifrar datos que
pueda necesitar descifrar después de que finalice la sesión.

Para cambiar una clave de sesión a una clave persistente (token), use setAttribute (p. 200).

Predeterminada: la clave es persistente.

Requerido: No
-timeout

Especifica cuánto tiempo (en segundos) espera el comando para sincronizar una clave con el número
de HSM que especifica el parámetro min_srv.

Este parámetro solo es válido cuando el parámetro min_srv también se usa en el comando.

Predeterminado: sin tiempo de espera. El comando espera indefinidamente y se devuelve solo cuando
la clave se sincroniza con el número mínimo de servidores.

Requerido: No
-u

Comparte la clave privada del par con los usuarios especificados. Este parámetro concede permiso a
otros usuarios de criptografía (CU) de HSM para usar la clave privada en operaciones criptográficas.
Cualquier usuario puede usar claves públicas sin compartir.

Escriba una lista de ID de usuario de HSM separada por comas, como -u 5,6. No incluya el ID de
usuario de HSM del usuario actual. Para buscar los ID de usuario de HSM de los CU del HSM, use
listUsers (p. 197). Para compartir y dejar de compartir claves existentes, use shareKey (p. 123) en
cloudhsm_mgmt_util.

Predeterminado: solo el usuario actual puede usar la clave privada.

Requerido: No
-attest

Ejecuta una comprobación de integridad que verifica el firmware en el que se ejecuta el clúster no se
ha manipulado.

Predeterminado: sin comprobación de declaración

Requerido: No

166
AWS CloudHSM Guía del usuario
Referencia

Temas relacionados
• genSymKey (p. 167)
• genDSAKeyPair (p. 153)
• genECCKeyPair (p. 158)

genSymKey
El comando genSymKey de la herramienta key_mgmt_util genera una clave simétrica en los 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 (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).
Tip

Para buscar los atributos de una clave que ha creado, como el tipo, la longitud, la etiqueta
y el ID, use getAttribute (p. 172). Para buscar las claves de un usuario concreto, use
getKeyInfo (p. 178). Para buscar claves en función de sus valores de atributo, use
findKey (p. 149).

Sintaxis

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
En estos ejemplos, se muestra cómo se utiliza genSymKey para crear claves simétricas en los HSM.

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

167
AWS CloudHSM Guía del usuario
Referencia

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 en todos los HSM en el 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 de HSM antes de que venza
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

168
AWS CloudHSM Guía del usuario
Referencia

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 (p. 178). 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 (p. 172). 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 obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

Command: getAttribute -o 7 -a 512 -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

169
AWS CloudHSM Guía del usuario
Referencia

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

Parámetros
-h

Muestra ayuda para el comando.

Requerido: 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. 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. Las claves RC4 no son válidas en los HSM en modo FIPS
• 21: Triple DES (3DES).
• 31: AES

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. Escriba una cadena.

Puede usar cualquier frase que le ayude a identificar la clave. Dado que la etiqueta no tiene que ser
única, puede usarla para agrupar claves y dividirlas en categorías.

Requerido: sí

170
AWS CloudHSM Guía del usuario
Referencia

-attest

Ejecuta una comprobación de integridad que verifica el firmware en el que se ejecuta el clúster no se
ha manipulado.

Predeterminado: sin comprobación de declaración

Requerido: 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.

Requerido: No
-min_srv

Especifica el número mínimo de HSM en los que la clave se sincroniza antes de que el valor del
parámetro -timeout expire. 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
-m_value

Especifica el número de usuarios que deben aprobar cualquier operación criptográfica que use la
clave. Escriba un valor de 0 a 8.

Este parámetro establece un requisito de autenticación de cuó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 cuórum está habilitada, el número especificado de usuarios deben firmar un token
para aprobar las operaciones criptográficas que usan la clave y las operaciones que la comparten o la
dejan de compartir.

Para buscar el m_value de una clave, use getKeyInfo (p. 178).

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

Requerido: No
-nex

Hace que la clave no se pueda extraer. La clave que se genera no se puede exportar desde el
HSM (p. 60).

Predeterminada: la clave es extraíble.

Requerido: No
-sess

Crea una clave que solo existe en la sesión actual. La clave no se puede recuperar después de que
finalice la sesión.

171
AWS CloudHSM Guía del usuario
Referencia

Use este parámetro cuando necesite solo una clave de manera breve, como una clave de
encapsulamiento, y descifre rápidamente, otra clave. No use una clave de sesión para cifrar datos que
pueda necesitar descifrar después de que finalice la sesión.

Para cambiar una clave de sesión a una clave persistente (token), use setAttribute (p. 200).

Predeterminada: la clave es persistente.

Requerido: No
-timeout

Especifica cuánto tiempo (en segundos) espera el comando para sincronizar una clave con el número
de HSM que especifica el parámetro min_srv.

Este parámetro solo es válido cuando el parámetro min_srv también se usa en el comando.

Predeterminado: sin tiempo de espera. El comando espera indefinidamente y se devuelve solo cuando
la clave se sincroniza con el número mínimo de servidores.

Requerido: No
-u

Comparte la clave con los usuarios especificados. Este parámetro concede permiso a otros usuarios
de criptografía (CU) de HSM para usar esta clave en operaciones criptográficas.

Escriba una lista de ID de usuario de HSM separada por comas, como -u 5,6. No incluya el ID de
usuario de HSM del usuario actual. Para buscar los ID de usuario de HSM de los CU del HSM, use
listUsers (p. 197). Para compartir y dejar de compartir claves existentes, use shareKey (p. 123) en
cloudhsm_mgmt_util.

Predeterminado: solo el usuario actual puede usar la clave.

Requerido: No

Temas relacionados
• exSymKey (p. 143)
• genRSAKeyPair (p. 162)
• genDSAKeyPair (p. 153)
• genECCKeyPair (p. 158)

getAttribute
El comando getAttribute de key_mgmt_util escribe uno o varios valores de atributo de una clave de AWS
CloudHSM en un archivo. Si el atributo que especifica no existe para el tipo de clave, como el módulo de
una clave AES, getAttribute devuelve un error.

Los atributos de la clave son las propiedades de una clave. Contienen características, como el tipo de
clave, clase, etiqueta e ID y los valores que representan las acciones que puede desempeñar con la clave,
como cifrar, descifrar, encapsular, firmar y verificar.

Solamente puede utilizar getAttribute en claves que sean de su propiedad y que hayan compartido con
usted. Puede ejecutar este comando o el comando getAttribute (p. 103) en cloudhsm_mgmt_util, que
obtiene el valor de un atributo de una clave de todos los HSM de un clúster y lo escribe en stdout o en un
archivo.

172
AWS CloudHSM Guía del usuario
Referencia

Para obtener una lista de los atributos y las constantes que los representan, ejecute el comando
listAttributes (p. 196). Para cambiar los valores de los atributos de las claves existentes, utilice
setAttribute (p. 200) en key_mgmt_util y setAttribute (p. 119) en cloudhsm_mgmt_util. Para
obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

getAttribute -h

getAttribute -o <key handle>


-a <attribute constant>
-out <file>

Ejemplos
En estos ejemplos, se muestra cómo se utiliza getAttribute para obtener los atributos de las claves de los
HSM.

Example : Obtención del tipo de clave

En este ejemplo se obtiene el tipo de la clave, por ejemplo una AES, 3DES o una clave genérica, o una
clave RSA o par de claves de curva elíptica.

El primer comando ejecuta listAttributes (p. 196), que obtiene los atributos de una clave y las constantes
que los representan. La salida muestra que la constante del tipo de clave es 256. Para obtener ayuda
sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de claves (p. 214).

Command: listAttributes

Description
===========
The following are all of the possible attribute values for getAttributes.

OBJ_ATTR_CLASS = 0
OBJ_ATTR_TOKEN = 1
OBJ_ATTR_PRIVATE = 2
OBJ_ATTR_LABEL = 3
OBJ_ATTR_KEY_TYPE = 256
OBJ_ATTR_ID = 258
OBJ_ATTR_SENSITIVE = 259
OBJ_ATTR_ENCRYPT = 260
OBJ_ATTR_DECRYPT = 261
OBJ_ATTR_WRAP = 262
OBJ_ATTR_UNWRAP = 263
OBJ_ATTR_SIGN = 264
OBJ_ATTR_VERIFY = 266
OBJ_ATTR_LOCAL = 355
OBJ_ATTR_MODULUS = 288
OBJ_ATTR_MODULUS_BITS = 289
OBJ_ATTR_PUBLIC_EXPONENT = 290
OBJ_ATTR_VALUE_LEN = 353
OBJ_ATTR_EXTRACTABLE = 354
OBJ_ATTR_KCV = 371

El segundo comando ejecuta getAttribute. Solicita el tipo de clave (atributo 256) del indicador de clave
524296 y lo escribe en el archivo attribute.txt.

173
AWS CloudHSM Guía del usuario
Referencia

Command: getAttribute -o 524296 -a 256 -out attribute.txt


Attributes dumped into attribute.txt file

El último comando obtiene el contenido del archivo de clave. La salida revela que el tipo de clave es 0x15
o 21, lo que es una clave triple DES (3DES). Para informarse de las definiciones de los valores de clase y
tipo, consulte la sección de referencia de los atributos de clave (p. 214).

$ cat attribute.txt
OBJ_ATTR_KEY_TYPE
0x00000015

Example : Obtención de todos los atributos de una clave

Este comando obtiene todos los atributos de la clave que tiene el indicador 6 y los escribe en el archivo
attr_6. Utiliza un valor de atributo de 512, que representa todos los atributos.

Command: getAttribute -o 6 -a 512 -out attr_6

got all attributes of size 444 attr cnt 17


Attributes dumped into attribute.txt file

Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS>

Este comando muestra el contenido de un archivo de atributo de muestra con todos los valores de
atributo. Entre los valores, se indica que la clave es una clave AES de 256 bits con el ID test_01 y la
etiqueta aes256. La clave es extraíble y persistente; es decir, no es una clave de una única sesión. Para
obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

$ cat attribute.txt

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
0x01
OBJ_ATTR_UNWRAP
0x01
OBJ_ATTR_SIGN
0x00
OBJ_ATTR_VERIFY
0x00
OBJ_ATTR_LOCAL
0x01
OBJ_ATTR_SENSITIVE
0x01
OBJ_ATTR_EXTRACTABLE
0x01
OBJ_ATTR_LABEL
aes256
OBJ_ATTR_ID

174
AWS CloudHSM Guía del usuario
Referencia

test_01
OBJ_ATTR_VALUE_LEN
0x00000020
OBJ_ATTR_KCV
0x1a4b31

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí
-o

Especifica el identificador de la clave de destino. Puede especificar una única clave en cada comando.
Para obtener el identificador de una clave, use findKey (p. 149).

Además, debe ser propietario de la clave especificada o esta debe compartirse con usted. Para
encontrar los usuarios de una clave, use getKeyInfo (p. 178).

Obligatorio: sí
-a

Identifica el atributo. Escriba una constante que represente un atributo o 512, que representa todos
los atributos. Por ejemplo, para obtener el tipo de clave, escriba 256, que es la constante del atributo
OBJ_ATTR_KEY_TYPE.

Para generar una lista de los atributos y sus constantes, utilice listAttributes (p. 196). Para obtener
ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

Obligatorio: sí
-out

Escribe la salida en el archivo especificado. Escriba una ruta de archivo. No puede escribir la salida en
stdout.

Si el archivo especificado existe, getAttribute sobrescribe el archivo sin ningún tipo de advertencia.

Obligatorio: sí

Temas relacionados
• getAttribute (p. 103) en cloudhsm_mgmt_util
• listAttributes (p. 196)
• setAttribute (p. 200)
• findKey (p. 149)
• Referencia de los atributos de claves (p. 214)

getCaviumPrivKey
El comando getCaviumPrivKey de key_mgmt_util exporta una clave privada de un HSM en formato PEM
falso. El archivo PEM falso, que no contiene el material de la clave privada sino que hace referencia a la
clave privada en el HSM, se puede utilizar para establecer la descarga SSL/TLS del servidor web a AWS
CloudHSM. Para obtener más información, consulte Descarga de SSL/TLS en Linux (p. 291).

175
AWS CloudHSM Guía del usuario
Referencia

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

getCaviumPrivKey -h

exportPrivateKey -k <private-key-handle
-out <fake-PEM-file>

Ejemplos
Este ejemplo muestra cómo utilizar getCaviumPrivKey para exportar una clave privada en formato PEM
falso.

Example Exportar un archivo en formato PEM falso


Este comando crea y exporta una versión PEM falsa de una clave privada con el identificador 15 y
la guarda en un archivo denominado cavKey.pem. Cuando el comando se ejecuta correctamente,
exportPrivateKey devuelve un mensaje de confirmación.

Command: getCaviumPrivKey -k 15 -out cavKey.pem

Private Key Handle is written to cavKey.pem in fake PEM format

getCaviumPrivKey returned: 0x00 : HSM Return: SUCCESS

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-k

Especifica el identificador de clave de la clave privada que se va a exportar en formato PEM falso.

Obligatorio: sí
-out

Especifica el nombre del archivo en el que se escribirá la clave PEM falsa.

Obligatorio: sí

Temas relacionados
• importPrivateKey (p. 182)
• Descarga de SSL/TLS en Linux (p. 291)

getCert
El comando getCert de key_mgmt_util recupera los certificados de partición de un HSM y los guarda en un
archivo. Al ejecutar el comando, debe designar el tipo de certificado que desea recuperar. Para ello, utilice

176
AWS CloudHSM Guía del usuario
Referencia

uno de los números enteros que se describen a continuación en la sección Parámetros (p. 177). Para
obtener más información sobre la función de cada uno de estos certificados, consulte Verificar la identidad
del HSM (p. 23).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

getCert -h

getCert -f <file-name>
-t <certificate-type>

Ejemplo
En este ejemplo, se muestra cómo utilizar getCert para recuperar el certificado raíz del cliente de un clúster
y guardarlo en un archivo.

Example : Recuperación de un certificado raíz del cliente

Este comando exporta un certificado raíz del cliente (representado por el númeroentero 4) y lo guarda en
un archivo denominado userRoot.crt. Si el comando se ejecuta correctamente, getCert devuelve un
mensaje de confirmación.

Command: getCert -f userRoot.crt -s 4

Cfm3GetCert() returned 0 :HSM Return: SUCCESS

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-f

Especifica el nombre del archivo en el que se guardará el certificado recuperado.

Obligatorio: sí
-s

Un número entero que especifica el tipo de certificado de partición que se desea recuperar. Los
números enteros y sus correspondientes tipos de certificados son los siguientes:
• 1: certificado raíz del fabricante
• 2: certificado de hardware del fabricante
• 4: certificado raíz del cliente
• 8: certificado del clúster (firmado por el certificado raíz del cliente)
• 16: certificado del clúster (encadenado con el certificado raíz del fabricante)

Obligatorio: sí

177
AWS CloudHSM Guía del usuario
Referencia

Temas relacionados
• Verificar la identidad del HSM (p. 23)
• getCert (p. 106) (en cloudhsm_mgmt_util (p. 81))

getKeyInfo
El comando getKeyInfo de la herramienta key_mgmt_util devuelve los ID de HSM de los usuarios que
pueden utilizar la clave, incluidos el propietario y los usuarios de criptografía (CU) con quienes se comparte
la clave. Cuando la autenticación de cuórum está habilitada en una clave, getKeyInfo también devuelve
el número de usuarios que deben aprobar las operaciones criptográficas que utilizan la clave. Solamente
puede ejecutar getKeyInfo en las claves que son de su propiedad y han compartido con usted.

Cuando ejecuta getKeyInfo en claves públicas, getKeyInfo solamente devuelve el propietario de la clave,
aunque todos los usuarios del HSM puedan utilizar la clave pública. Para encontrar los ID de HSM de los
usuarios en sus HSM, utilice listUsers (p. 197). Para encontrar las claves de un usuario concreto, use
findKey (p. 149) -u.

Es propietario de las claves que crea. Puede compartir una clave con otros usuarios cuando la crea.
A continuación, para compartir o dejar de compartir una clave existente, utilice shareKey (p. 123) en
cloudhsm_mgmt_util.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

getKeyInfo -h

getKeyInfo -k <key-handle>

Ejemplos
En estos ejemplos, se muestra cómo se utiliza getKeyInfo para obtener información sobre los usuarios de
una clave.

Example : Obtención de los usuarios para una clave simétrica

Este comando obtiene los usuarios que pueden utilizar la clave AES (simétrica) con identificador de clave
9. El resultado muestra que el usuario 3 es propietario de la clave y la comparte con el usuario 4.

Command: getKeyInfo -k 9

Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

Owned by user 3

also, shared to following 1 user(s):

Example : Obtención de los usuarios para un par de claves asimétricas

Estos comandos utilizan getKeyInfo para obtener los usuarios que pueden utilizar las claves de un par
de claves RSA (simétricas). La clave pública tiene el identificador de clave 21. La clave privada tiene el
identificador de clave 20.

178
AWS CloudHSM Guía del usuario
Referencia

Cuando ejecuta getKeyInfo en la clave privada (20), devuelve el propietario de la clave (3) y los usuarios
de criptografía (CU) 4 y 5, con quienes se comparte la clave.

Command: getKeyInfo -k 20

Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

Owned by user 3

also, shared to following 2 user(s):

4
5

Cuando ejecuta getKeyInfo en la clave pública (21), solamente devuelve el propietario de la clave (3).

Command: getKeyInfo -k 21

Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

Owned by user 3

Para confirmar que el usuario 4 puede utilizar la clave pública (y todas las claves públicas en el HSM),
utilice el parámetro -u de findKey (p. 149).

El resultado muestra que el usuario 4 puede utilizar la clave pública (21) y la clave privada (20) en el par
de claves. El usuario 4 también puede utilizar todas las demás claves públicas y cualquier clave privada
creadas o que se hayan compartido con ellos.

Command: findKey -u 4
Total number of keys present 8

number of keys matched from start index 0::7


11, 12, 262159, 262161, 262162, 19, 20, 21

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Example : Obtención del valor de autenticación de cuórum (valor_m) para una clave

Este ejemplo muestra cómo obtener el m_value para una clave, esto es, el número de usuarios en el
cuórum que debe aprobar las operaciones criptográficas que utilizan la clave.

Cuando la autenticación de cuórum está habilitada en una clave, un cuórum de usuarios debe aprobar
cualquier operación criptográfica que utilice la clave. Para habilitar la autenticación de cuórum y establecer
el tamaño de cuórum, utilice el parámetro -m_value al crear la clave.

Este comando utiliza genRSAKeyPair (p. 162) para crear un par de claves RSA que se comparte con el
usuario 4. Utiliza el parámetro m_value para habilitar la autenticación de cuórum en la clave privada en el
par y establecer el tamaño de cuórum en dos usuarios. El número de usuarios debe ser lo suficientemente
grande como para proporcionar las aprobaciones necesarias.

El resultado muestra que el comando creó la clave pública 27 y la clave privada 28.

Command: genRSAKeyPair -m 2048 -e 195193 -l rsa_mofn -id rsa_mv2 -u 4 -m_value 2

Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS

179
AWS CloudHSM Guía del usuario
Referencia

Cfm3GenerateKeyPair: public key handle: 27 private key handle: 28

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

Este comando utiliza getKeyInfo para obtener información sobre los usuarios de la clave privada. El
resultado muestra que la clave es propiedad del usuario 3 y se comparte con el usuario 4. También
muestra que un cuórum de dos usuarios debe aprobar todas las operaciones criptográficas que utilizan la
clave.

Command: getKeyInfo -k 28

Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

Owned by user 3

also, shared to following 1 user(s):

4
2 Users need to approve to use/manage this key

Parámetros
-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-k

Especifica el identificador de una clave en el HSM. Escriba el identificador de una clave de su


propiedad o que comparte. Este parámetro es obligatorio.

Para buscar identificadores de clave, use el comando findKey (p. 197).

Obligatorio: sí

Temas relacionados
• getKeyInfo (p. 108) en cloudhsm_mgmt_util
• listUsers (p. 197)
• findKey (p. 149)
• findAllKeys (p. 100) en cloudhsm_mgmt_util

help
El comando help de key_mgmt_util muestra información sobre todos los comandos disponibles de
key_mgmt_util.

Antes de ejecutar el comando help, debe iniciar key_mgmt_util (p. 130).

Sintaxis

help

180
AWS CloudHSM Guía del usuario
Referencia

Ejemplo
Este ejemplo muestra la salida del comando help.

Example

Command: help

Help Commands Available:

Syntax: <command> -h

Command Description
======= ===========

exit Exits this application


help Displays this information

Configuration and Admin Commands


getHSMInfo Gets the HSM Information
getPartitionInfo Gets the Partition Information
listUsers Lists all users of a partition
loginStatus Gets the Login Information
loginHSM Login to the HSM
logoutHSM Logout from the HSM

M of N commands
getToken Initiate an MxN service and get Token
delToken delete Token(s)
approveToken Approves an MxN service
listTokens List all Tokens in the current partition

Key Generation Commands

Asymmetric Keys:
genRSAKeyPair Generates an RSA Key Pair
genDSAKeyPair Generates a DSA Key Pair
genECCKeyPair Generates an ECC Key Pair

Symmetric Keys:
genPBEKey Generates a PBE DES3 key
genSymKey Generates a Symmetric keys

Key Import/Export Commands


createPublicKey Creates an RSA public key
importPubKey Imports RSA/DSA/EC Public key
exportPubKey Exports RSA/DSA/EC Public key
importPrivateKey Imports RSA/DSA/EC private key
exportPrivateKey Exports RSA/DSA/EC private key
imSymKey Imports a Symmetric key
exSymKey Exports a Symmetric key
wrapKey Wraps a key from from HSM using the specified handle
unWrapKey UnWraps a key into HSM using the specified handle

Key Management Commands


deleteKey Delete Key
setAttribute Sets an attribute of an object
getKeyInfo Get Key Info about shared users/sessions
findKey Find Key
findSingleKey Find single Key
getAttribute Reads an attribute from an object

Certificate Setup Commands


getCert Gets Partition Certificates stored on HSM

181
AWS CloudHSM Guía del usuario
Referencia

Key Transfer Commands


insertMaskedObject Inserts a masked object
extractMaskedObject Extracts a masked object

Management Crypto Commands


sign Generates a signature
verify Verifies a signature
aesWrapUnwrap Does NIST AES Wrap/Unwrap

Helper Commands
Error2String Converts Error codes to Strings
save key handle in fake PEM format
getCaviumPrivKey Saves an RSA private key handle
in fake PEM format
IsValidKeyHandlefile Checks if private key file has
an HSM key handle or a real key
listAttributes List all attributes for getAttributes
listECCCurveIds List HSM supported ECC CurveIds

Parámetros
Este comando no tiene parámetros.

Temas relacionados
• loginHSM y logoutHSM (p. 198)

importPrivateKey
El comando importPrivateKey de key_mgmt_util importa una clave privada asimétrica en un HSM.
Puede utilizarlo para importar claves privadas generadas fuera del HSM. También puede utilizar este
comando para importar claves que se exportaron de un HSM, como las exportadas por el comando
exportPrivateKey (p. 140).

Durante el proceso de importación, importPrivateKey utiliza la clave AES (la clave de encapsulación)
seleccionada para encapsular (cifrar) la clave privada. Al encapsular la clave privada, esta permanece
confidencial durante el tránsito. Para obtener más información, consulte wrapKey (p. 211).
Note

Este comando no ofrece la opción de marcar la clave importada como no exportable.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

importPrivateKey -h

importPrivateKey -l <label>
-f <key-file>
-w <wrapping-key-handle>
[-sess]
[-id <key-id>]
[-m_value <0...8>]
[min_srv <minimum-number-of-servers>]
[-timeout <number-of-seconds>]
[-u <user-ids>]
[-wk <wrapping-key-file>]

182
AWS CloudHSM Guía del usuario
Referencia

[-attest]

Ejemplos
Este ejemplo muestra cómo utilizar importPrivateKey para importar una clave privada en un HSM.

Example Importar una clave privada

Este comando importa la clave privada de un archivo denominado rsa2048.key con la etiqueta
rsa2048-imported y una clave de encapsulación con el identificador 524299. Cuando el comando se
ejecuta correctamente, importPrivateKey devuelve un identificador de clave para la clave importada y un
mensaje de confirmación.

Command: importPrivateKey -f rsa2048.key -l rsa2048-imported -w 524299

BER encoded key length is 1216

Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS

Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS

Private Key Unwrapped. Key Handle: 524301

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-l

Especifica la etiqueta de clave privada definida por el usuario.

Obligatorio: sí
-f

Especifica el nombre de archivo de la clave que se va a importar.

Obligatorio: sí
-w

Especifica el identificador de la clave de encapsulación. Este parámetro es obligatorio. Para buscar


identificadores de clave, utilice el comando findKey (p. 149).

Para determinar si una clave se puede utilizar como clave de encapsulación, utilice
getAttribute (p. 172) para obtener el valor del atributo OBJ_ATTR_WRAP (262). Para crear una clave
de encapsulación, utilice genSymKey (p. 167) 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 importación.

183
AWS CloudHSM Guía del usuario
Referencia

Obligatorio: sí
-sess

Especifica la clave importada como una clave de sesión.

Valor predeterminado: la clave importada se mantiene como clave persistente (token) en el clúster.

Obligatorio: no
-id

Especifica el ID de la clave que se va a importar.

Predeterminado: sin valor de ID.

Obligatorio: no
-m_value

Especifica el número de usuarios que deben aprobar cualquier operación criptográfica que utilice la
clave importada. Especifique un valor entre 0 y 8.

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

Obligatorio: no
-timout

Especifica el número de segundos que se debe esperar hasta que la clave se sincronice entre
los HSM cuando se incluye el parámetro min-serv. Si no se ningún número, el sondeo continúa
indefinidamente.

Valor predeterminado: sin límite

Obligatorio: no
-u

Especifica la lista de usuarios con los que se va a compartir la clave privada importada. Este
parámetro concede a otros usuarios de criptografía (CU) de HSM permiso para usar la clave
importada en operaciones criptográficas.

Escriba una lista de identificadores de usuario de HSM separada por comas, como -u 5,6. No
incluya el ID de usuario de HSM del usuario actual. Para buscar los ID de usuario de HSM de los CU
del HSM, utilice listUsers (p. 197).

184
AWS CloudHSM Guía del usuario
Referencia

Valor predeterminado: solo el usuario actual puede utilizar la clave importada.

Obligatorio: no
-wk

Especifica la clave que se utilizará para encapsular la clave que se está importando. Escriba la ruta y
el nombre de un archivo que contenga una clave AES sin cifrar.

Si se incluye este parámetro, importPrivateKey utiliza la clave del archivo -wk para encapsular la clave
que se va a importar. También utiliza la clave especificada por el parámetro -w para desencapsularla.

Valor predeterminado: utilizar la clave de encapsulación especificada en el parámetro -w para


encapsular y desencapsular.

Obligatorio: no
-attest

Realiza una comprobación de conformidad de la respuesta del firmware para asegurarse de que el
firmware en el que se ejecuta el clúster no ha sido manipulado.

Obligatorio: no

Temas relacionados
• wrapKey (p. 211)
• unWrapKey (p. 204)
• genSymKey (p. 167)
• exportPrivateKey (p. 140)

importPubKey
El comando importPubKey de key_mgmt_util importa una clave pública con formato PEM en un HSM.
Puede utilizarlo para importar claves públicas que se han generado fuera del HSM. También puede
utilizarlo para importar claves que se han exportado desde un HSM, como las que exporta el comando
exportPubKey (p. 142).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

importPubKey -h

importPubKey -l <label>
-f <key-file>
[-sess]
[-id <key-id>]
[min_srv <minimum-number-of-servers>]
[-timeout <number-of-seconds>]

Ejemplos
Este ejemplo muestra cómo utilizar importPubKey para importar una clave pública en un HSM.

185
AWS CloudHSM Guía del usuario
Referencia

Example Importar una clave pública


Este comando importa una clave pública desde un archivo denominado public.pem con la etiqueta
importedPublicKey. Cuando el comando se ejecuta correctamente, importPubKey devuelve un
identificador de clave para la clave importada y un mensaje de confirmación.

Command: importPubKey -l importedPublicKey -f public.pem

Cfm3CreatePublicKey returned: 0x00 : HSM Return: SUCCESS

Public Key Handle: 262230

Cluster Error Status


Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-l

Especifica la etiqueta de clave pública definida por el usuario.

Obligatorio: sí
-f

Especifica el nombre de archivo de la clave que se va a importar.

Obligatorio: sí
-sess

Designa la clave importada como clave de sesión.

Valor predeterminado: la clave importada se mantiene como clave persistente (token) en el clúster.

Obligatorio: no
-id

Especifica el ID de la clave que se va a importar.

Predeterminado: sin valor de ID.

Obligatorio: no
-min_srv

Especifica el número mínimo de HSM en los que la clave importada se sincroniza antes de que el
caduque 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.

186
AWS CloudHSM Guía del usuario
Referencia

Predeterminado: 1

Obligatorio: no
-timout

Especifica el número de segundos que se debe esperar hasta que la clave se sincronice entre
los HSM cuando se incluye el parámetro min-serv. Si no se ningún número, el sondeo continúa
indefinidamente.

Valor predeterminado: sin límite

Obligatorio: no

Temas relacionados
• exportPubKey (p. 142)
• Generar claves (p. 57)

imSymKey
El comando imSymKey de la herramienta key_mgmt_util importa una copia sin cifrar de una clave simétrica
desde un archivo en el HSM. Puede utilizarlo para importar claves que genera con cualquier método fuera
del HSM y las claves que se exportaron desde un HSM, como, por ejemplo, las claves que el comando
exSymKey (p. 143) escribe en un archivo.

Durante el proceso de importación imSymKey utiliza la clave AES seleccionada (la clave de encapsulación)
para encapsular (cifrar) y, a continuación desencapsular (descifrar) la clave que se va a importar. Sin
embargo, imSymKey funciona solo en archivos que contienen claves no cifradas. Para exportar e importar
claves cifradas, utilice los comandos wrapKey (p. 211) y unWrapKey (p. 204).

Además, el comando imSymKey importa únicamente claves simétricas. Para importar claves públicas,
utilice importPubKey (p. 185). Para importar claves privadas, utilice importPrivateKey (p. 182) o
wrapKey (p. 211).

Las claves importadas funcionan de forma muy parecida a las claves que se generan en el HSM. Sin
embargo, el valor del atributo OBJ_ATTR_LOCAL (p. 214) es cero, lo que indica que no se generó
localmente. Puede utilizar el siguiente comando para compartir una clave simétrica al importarla. Puede
utilizar el comando shareKey de cloudhsm_mgmt_util (p. 81) para compartir la clave después de
importarla.

imSymKey -l aesShared -t 31 -f kms.key -w 3296 -u 5

Después de importar una clave, asegúrese de marcar o eliminar el archivo de clave. Este comando no
le impide importar el mismo material de claves varias veces. El resultado, 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 (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

imSymKey -h

imSymKey -f <key-file>
-w <wrapping-key-handle>

187
AWS CloudHSM Guía del usuario
Referencia

-t <key-type>
-l <label>
[-id <key-ID>]
[-sess]
[-wk <wrapping-key-file> ]
[-attest]
[-min_srv <minimum-number-of-servers>]
[-timeout <number-of-seconds> ]
[-u <user-ids>]

Ejemplos
En los ejemplos siguientes se muestra cómo utilizar imSymKey para importar claves simétricas a sus HSM.

Example : Importación de una clave simétrica AES

En este ejemplo se utiliza imSymKey para importar una clave simétrica AES a HSM.

El primer comando utiliza OpenSSL para generar una clave simétrica AES de 256 bits aleatoria. Guarda la
clave en el archivo aes256.key.

$ openssl rand -out aes256-forImport.key 32

El segundo comando utiliza imSymKey para importar la clave AES desde el archivo aes256.key hasta los
HSM. Utiliza la clave 20, una clave AES del HSM, como clave de encapsulación y especifica una etiqueta
de tipo imported. A diferencia del ID, no es necesario que la etiqueta sea única en el clúster. El valor del
parámetro -t (tipo) es 31, que representa AES.

La salida muestra que la clave del archivo se encapsuló y se desencapsuló y después se importó al HSM,
donde se asignó al identificador de clave 262180.

Command: imSymKey -f aes256.key -w 20 -t 31 -l imported

Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS

Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Unwrapped. Key Handle: 262180

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

El siguiente comando utiliza getAttribute (p. 172) para obtener el atributo OBJ_ATTR_LOCAL (atributo
355 (p. 214)) de la clave que acaba de importar y lo escribe en el archivo attr_262180.

Command: getAttribute -o 262180 -a 355 -out attributes/attr_262180


Attributes dumped into attributes/attr_262180_imported file

Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS

Cuando examine el archivo de atributos, verá que el valor del atributo OBJ_ATTR_LOCAL es cero, lo que
indica que el material de clave no se ha generado en el HSM.

$ cat attributes/attr_262180_local

188
AWS CloudHSM Guía del usuario
Referencia

OBJ_ATTR_LOCAL
0x00000000

Example : Desplazamiento de una clave simétrica entre clústeres

En este ejemplo, se muestra cómo utilizar exSymKey (p. 143) e imSymKey para mover una clave AES
sin cifrar entre clústeres. Se puede utilizar un proceso como este para crear una encapsulación AES que
exista en los HSM de ambos clústeres. Cuando la clave de encapsulación compartida esté en vigor, podrá
utilizar wrapKey (p. 211) y unWrapKey (p. 204) para mover las claves cifradas entre los clústeres.

El usuario CU encargado de realizar esta operación deberá tener permiso para iniciar sesión en los HSM
de ambos clústeres.

El primer comando utiliza exSymKey (p. 143) para exportar la clave 14, una clave AES de 32 bits desde
el clúster 1 hasta el archivo aes.key. También utiliza la clave 6, una clave AES que está en los HSM del
clúster 1, como clave de encapsulación.

Command: exSymKey -k 14 -w 6 -out aes.key

Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS

Wrapped Symmetric Key written to file "aes.key"

A continuación, el usuario inicia sesión en key_mgmt_util en el clúster 2 y ejecuta un comando imSymKey


para importar la clave contenida en el archivo aes.key a los HSM del clúster 2. Este comando utiliza la
clave 252152, una clave AES que está en los HSM del clúster 2, como clave de encapsulación.

Como las claves de encapsulación que utilizan exSymKey (p. 143) e imSymKey encapsulan y
desencapsulan inmediatamente las claves de destino, no es necesario que las claves de encapsulación de
los distintos clústeres sean iguales.

La salida muestra que la clave se ha importado correctamente al clúster 2 y que se le ha asignado el


identificador de clave 21.

Command: imSymKey -f aes.key -w 262152 -t 31 -l xcluster

Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS

Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Unwrapped. Key Handle: 21

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Para demostrar que la clave 14 del clúster 1 y la clave 21 del clúster 2 tienen el mismo material de clave,
obtenga el valor de comprobación clave (KCV) de cada clave. Si los valores de KCV son los mismos, el
material de clave es el mismo.

El siguiente comando utiliza getAttribute (p. 172) en el clúster 1 para escribir el valor del atributo KCV
(atributo 371) de la clave 14 en el archivo attr_14_kcv. A continuación, utiliza un comando cat para
obtener el contenido del archivo attr_14_kcv.

189
AWS CloudHSM Guía del usuario
Referencia

Command: getAttribute -o 14 -a 371 -out attr_14_kcv


Attributes dumped into attr_14_kcv file

$ cat attr_14_kcv
OBJ_ATTR_KCV
0xc33cbd

Este comando similar utiliza getAttribute (p. 172) en el clúster 2 para escribir el valor del atributo KCV
(atributo 371) de la clave 21 en el archivo attr_21_kcv. A continuación, utiliza un comando cat para
obtener el contenido del archivo attr_21_kcv.

Command: getAttribute -o 21 -a 371 -out attr_21_kcv


Attributes dumped into attr_21_kcv file

$ cat attr_21_kcv
OBJ_ATTR_KCV
0xc33cbd

La salida muestra que los valores de KCV de las dos claves son los mismos, lo que demuestra que el
material de clave es el mismo.

Dado que los HSM de ambos clústeres tienen el mismo material de clave, ahora puede compartir las
claves cifradas entre los clústeres sin que se exponga la clave sin cifrar. Por ejemplo, puede utilizar el
comando wrapKey con la clave de encapsulación 14 para exportar una clave cifrada desde el clúster 1
y, a continuación, utilizar unWrapKey con la clave de encapsulación 21 para importar la clave cifrada al
clúster 2.

Example : Importación de una clave de sesión

Este comando utiliza los parámetros -sess de imSymKey para importar una clave triple DES de 192 bits
que es válida únicamente en la sesión actual.

El comando utiliza el parámetro -f para especificar el archivo que contiene la clave para importar,
el parámetro -t para especificar el tipo de clave y el parámetro -w para especificar la clave de
encapsulación. También utiliza el parámetro -l para especificar una etiqueta que establece la categoría
de la clave, el parámetro -id para crear un identificador descriptivo y único para la clave y el parámetro -
attest para verificar el firmware que importa la clave.

La salida muestra que la clave se encapsuló y se desencapsuló correctamente, se importó al HSM y se


le asignó el identificador de clave 37. Además, muestra que se pasó la comprobación de atestación, que
indica que el firmware no ha sufrido ninguna manipulación.

Command: imSymKey -f 3des192.key -w 6 -t 21 -l temp -id test01 -sess -attest

Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS

Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS

Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Unwrapped. Key Handle: 37

Attestation Check : [PASS]

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

A continuación, puede ejecutar los comandos getAttribute (p. 172) o findKey (p. 149) para verificar
los atributos de la clave recién importada. El siguiente comando utiliza findKey para verificar que la clave

190
AWS CloudHSM Guía del usuario
Referencia

37 tenga el tipo, la etiqueta y el ID especificados por el comando y que sea una clave de sesión. Tal y
como se muestra en la línea 5 de la salida, findKey informa que la única clave que coincide con todos los
atributos es la clave 37.

Command: findKey -t 21 -l temp -id test01 -sess 1


Total number of keys present 1

number of keys matched from start index 0::0


37

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Parámetros
-attest

Ejecuta una comprobación de integridad que verifica el firmware en el que se ejecuta el clúster no se
ha manipulado.

Predeterminado: sin comprobación de declaración

Requerido: No
-f

Especifica el archivo que contiene la clave que se va a importar.

El archivo debe contener una copia sin cifrar de una clave AES o triple DES de la longitud
especificada. Las claves RC4 y DES no son válidas en los HSM en modo FIPS.
• AES: 16, 24 o 32 bytes
• Triple DES (3DES): 24 bytes

Obligatorio: sí
-h

Muestra ayuda para el comando.

Requerido: sí
-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.

Requerido: No
-l

Especifica una etiqueta definida por el usuario para la clave. Escriba una cadena.

Puede usar cualquier frase que le ayude a identificar la clave. Dado que la etiqueta no tiene que ser
única, puede usarla para agrupar claves y dividirlas en categorías.

Requerido: sí

191
AWS CloudHSM Guía del usuario
Referencia

-min_srv

Especifica el número mínimo de HSM en los que la clave se sincroniza antes de que el valor del
parámetro -timeout expire. 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
-sess

Crea una clave que solo existe en la sesión actual. La clave no se puede recuperar después de que
finalice la sesión.

Use este parámetro cuando necesite solo una clave de manera breve, como una clave de
encapsulamiento, y descifre rápidamente, otra clave. No use una clave de sesión para cifrar datos que
pueda necesitar descifrar después de que finalice la sesión.

Para cambiar una clave de sesión a una clave persistente (token), use setAttribute (p. 200).

Predeterminada: la clave es persistente.

Requerido: No
-timeout

Especifica cuánto tiempo (en segundos) espera el comando para sincronizar una clave con el número
de HSM que especifica el parámetro min_srv.

Este parámetro solo es válido cuando el parámetro min_srv también se usa en el comando.

Predeterminado: sin tiempo de espera. El comando espera indefinidamente y se devuelve solo cuando
la clave se sincroniza con el número mínimo de servidores.

Requerido: No
-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:
• 21: triple DES (3DES).
• 31: AES

Obligatorio: sí
-u

Comparte la clave que va a importar con los usuarios especificados. Este parámetro concede permiso
a otros usuarios de criptografía (CU) de HSM para usar esta clave en operaciones criptográficas.

Escriba un ID o una lista separada por comas de los ID de usuario de HSM, como -u 5,6. No
incluya el ID de usuario de HSM del usuario actual. Para encontrar el ID, puede utilizar el comando
listUsers en la herramienta de la línea de comandos cloudhsm_mgmt_util o el comando listUsers de la
herramienta de la línea de comandos key_mgmt_util.

Obligatorio: no

192
AWS CloudHSM Guía del usuario
Referencia

-w

Especifica el identificador de la clave de encapsulación. Este parámetro es obligatorio. Para buscar


identificadores de clave, use el comando findKey (p. 149).

Una clave de encapsulación es una clave del HSM que se utiliza para cifrar ("encapsular") y después
descifrar ("desencapsular") la clave durante el proceso de importación. 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 (p. 172)
para obtener el valor del atributo OBJ_ATTR_WRAP (262). Para crear una clave de encapsulamiento,
use genSymKey (p. 167) para crear una clave AES (escriba 31).

Si utiliza el parámetro -wk para especificar una clave de encapsulación externa, la clave de
encapsulación -w se utilizará para desencapsular, pero no encapsular, la clave que se va a importar.
Note

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

Obligatorio: sí
-wk

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

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

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

Obligatorio: no

Temas relacionados
• genSymKey (p. 167)
• exSymKey (p. 143)
• wrapKey (p. 211)
• unWrapKey (p. 204)
• exportPrivateKey (p. 140)
• exportPubKey (p. 142)

insertMaskedObject
El comando insertMaskedObject de key_mgmt_util inserta un objeto enmascarado desde un archivo en
un HSM designado. Los objetos enmascarados son objetos clonados que se extraen de un HSM usando
el comando extractMaskedObject (p. 148). Solo se pueden utilizar después de insertarlos de nuevo
en el clúster original. Solo puede insertar un objeto enmascarado en el mismo clúster desde el que se
generó, o en un clon de ese clúster. Esto incluye cualquier versión clonada del clúster original generada al
copiar una copia de seguridad entre regiones (p. 46) y utilizar la copia de seguridad para crear un clúster
nuevo (p. 47).

193
AWS CloudHSM Guía del usuario
Referencia

Los objetos enmascarados son una forma eficaz de descargar y sincronizar claves, incluidas las claves
no extraíbles (es decir, las claves que tienen un valor de OBJ_ATTR_EXTRACTABLE (p. 214) igual a
0). De esta forma, las claves se pueden sincronizar de forma segura entre los clústeres relacionados de
diferentes regiones sin necesidad de actualizar el archivo de configuración (p. 218) de AWS CloudHSM.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

insertMaskedObject -h

insertMaskedObject -f <filename>
[-min_srv <minimum-number-of-servers>]
[-timeout <number-of-seconds>]

Ejemplos
Este ejemplo muestra cómo utilizar insertMaskedObject para insertar un archivo de objeto enmascarado en
un HSM.

Example Insertar un objeto enmascarados

Este comando inserta un objeto enmascarado en un HSM desde un archivo denominado maskedObj.
Cuando el comando se ejecuta correctamente, insertMaskedObject devuelve un identificador de clave para
la clave descifrada del objeto enmascarado y un mensaje de confirmación.

Command: insertMaskedObject -f maskedObj

Cfm3InsertMaskedObject returned: 0x00 : HSM Return: SUCCESS


New Key Handle: 262433

Cluster Error Status


Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-f

Especifica el nombre de archivo del objeto enmascarado que se va a insertar.

Obligatorio: sí
-min_srv

Especifica el número mínimo de servidores en los que se sincroniza el objeto enmascarado insertado
antes de que caduque el valor del parámetro -timeout. Si el objeto no se sincroniza con el número
de servidores especificado en el tiempo asignado, no se insertará.

Predeterminado: 1

194
AWS CloudHSM Guía del usuario
Referencia

Obligatorio: no
-timout

Especifica el número de segundos que se debe esperar para que la clave se sincronice entre los
servidores cuando se incluye el parámetro min-serv. Si no se ningún número, el sondeo continúa
indefinidamente.

Valor predeterminado: sin límite

Obligatorio: no

Temas relacionados
• extractMaskedObject (p. 148)
• syncKey (p. 125)
• Copia de una copia de seguridad entre regiones (p. 46)
• Creación un clúster de AWS CloudHSM a partir de una copia de seguridad anterior (p. 47)

IsValidKeyHandlefile
El comando IsValidKeyHandlefile de key_mgmt_util se utiliza para averiguar si un archivo de clave de un
HSM contiene una clave privada verdadera o una clave PEM falsa. Un archivo de clave PEM falso no
contiene material de una clave privada real sino que hace referencia a la clave privada del HSM. Este tipo
de archivo se puede utilizar para establecer descarga de SSL/TLS del servidor web a AWS CloudHSM.
Para obtener más información, consulte Descarga de SSL/TLS en Linux (p. 291).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

IsValidKeyHandlefile -h

IsValidKeyHandlefile -k <private-key-handle
-f <private-key-file>

Ejemplos
Estos ejemplos muestran cómo utilizar IsValidKeyHandlefile para determinar si un archivo de clave
determinado contiene material de clave verdadero o material de clave PEM falso.

Example Validar una clave privada verdadera

Este comando confirma que el archivo privateKey.pem contiene material de clave verdadero.

Command: IsValidKeyHandlefile -f privateKey.pem

Input key file has real private key

Example Invalidar una clave PEM falsa

Este comando confirma que el archivo caviumKey.pem contiene material de clave PEM falso creado con
el identificador de clave 15.

195
AWS CloudHSM Guía del usuario
Referencia

Command: IsValidKeyHandlefile -f caviumKey.pem

Input file has invalid key handle: 15

Parámetros
Este comando admite los siguientes parámetros.

-h

Muestra la ayuda de la línea de comando para el comando.

Obligatorio: sí
-f

Especifica el nombre del archivo que se va a comprobar para ver si contiene material de clave válido.

Obligatorio: sí

Temas relacionados
• getCaviumPrivKey (p. 175)
• Descarga de SSL/TLS en Linux (p. 291)

listAttributes
El comando listAttributes de key_mgmt_util enumera los atributos de una clave de AWS CloudHSM y las
constantes que los representan. Estas constantes se utilizan para identificar los atributos en los comandos
getAttribute (p. 172) y setAttribute (p. 200). Para obtener ayuda sobre cómo interpretar los atributos de
claves, consulte Referencia de los atributos de claves (p. 214).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis
Este comando no tiene parámetros.

listAttributes

Ejemplo
Este comando enumera los atributos de clave que se pueden obtener y cambiar en key_mgmt_util y
las constantes que los representan. Para obtener ayuda sobre cómo interpretar los atributos de claves,
consulte Referencia de los atributos de claves (p. 214).

Para representar a todos los atributos del comando getAttribute (p. 172) en key_mgmt_util, utilice 512.

Command: listAttributes

Following are the possible attribute values for getAttributes:

OBJ_ATTR_CLASS = 0
OBJ_ATTR_TOKEN = 1
OBJ_ATTR_PRIVATE = 2
OBJ_ATTR_LABEL = 3

196
AWS CloudHSM Guía del usuario
Referencia

OBJ_ATTR_KEY_TYPE = 256
OBJ_ATTR_ENCRYPT = 260
OBJ_ATTR_DECRYPT = 261
OBJ_ATTR_WRAP = 262
OBJ_ATTR_UNWRAP = 263
OBJ_ATTR_SIGN = 264
OBJ_ATTR_VERIFY = 266
OBJ_ATTR_LOCAL = 355
OBJ_ATTR_MODULUS = 288
OBJ_ATTR_MODULUS_BITS = 289
OBJ_ATTR_PUBLIC_EXPONENT = 290
OBJ_ATTR_VALUE_LEN = 353
OBJ_ATTR_EXTRACTABLE = 354
OBJ_ATTR_KCV = 371

Temas relacionados
• listAttributes (p. 113) en cloudhsm_mgmt_util
• getAttribute (p. 172)
• setAttribute (p. 200)
• Referencia de los atributos de claves (p. 214)

listUsers
El comando listUsers de key_mgmt_util obtiene los usuarios de los HSM, junto con el tipo de usuario y
otros atributos.

En key_mgmt_util, listUsers devuelve un resultado que representa todos los HSM del clúster, aun cuando
no sean coherentes. Para obtener información acerca de los usuarios de cada HSM, utilice el comando
listUsers (p. 197) en cloudhsm_mgmt_util.

Los comandos del usuario de key_mgmt_util, listUsers y getKeyInfo (p. 178), son comandos de solo
lectura que los usuarios de criptografía (CU) tienen permiso para ejecutar. Los demás comandos de
administración de usuarios forman parte de cloudhsm_mgmt_util. Son ejecutados por responsables de
criptografía (CO) que tienen permisos de administración de usuarios.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

listUsers

listUsers -h

Ejemplo
Este comando enumera los usuarios de HSM en el clúster y sus atributos. Puede utilizar el atributo
User ID para identificar a los usuarios en otros comandos, como por ejemplo findKey (p. 149),
getAttribute (p. 172) y getKeyInfo (p. 178).

Command: listUsers

Number Of Users found 4

Index User ID User Type User Name MofnPubKey


LoginFailureCnt 2FA

197
AWS CloudHSM Guía del usuario
Referencia

1 1 PCO admin NO
0 NO
2 2 AU app_user NO
0 NO
3 3 CU alice YES
0 NO
4 4 CU bob NO
0 NO
5 5 CU trent YES
0 NO

Cfm3ListUsers returned: 0x00 : HSM Return: SUCCESS

La salida contiene los siguientes atributos de usuario:

• User ID (ID de usuario): identifica al usuario en los comandos key_mgmt_util y


cloudhsm_mgmt_util (p. 81).
• User type (p. 10) (Tipo de usuario): determina las operaciones que el usuario puede realizar en el HSM.
• User Name (Nombre de usuario): muestra el nombre fácil de recordar definido por el usuario para el
usuario.
• MofnPubKey: indica si el usuario ha registrado un par de claves para firmar tokens de autenticación de
cuórum (p. 67).
• LoginFailureCnt:
• 2FA: indica que el usuario ha activado la autenticación multifactor.

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí

Temas relacionados
• listUsers (p. 197) en cloudhsm_mgmt_util
• findKey (p. 149)
• getAttribute (p. 172)
• getKeyInfo (p. 178)

loginHSM y logoutHSM
Los comandos loginHSM y logoutHSM de key_mgmt_util permiten iniciar y cerrar sesión en los HSM de
un clúster. Una vez que inicie sesión en los HSM, puede utilizar key_mgmt_util para realizar diversas
operaciones de administración de claves, como la generación, sincronización y encapsulación de claves
públicas y privadas.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar start key_mgmt_util (p. 130).
Para administrar claves con key_mgmt_util, debe iniciar sesión en los HSM como usuario de criptografía
(CU) (p. 11).
Note

Si se superan cinco intentos de inicio de sesión incorrectos, se bloquea la cuenta. Si creó el


clúster antes de febrero de 2018, la cuenta se bloquea después de 20 intentos de inicio de sesión

198
AWS CloudHSM Guía del usuario
Referencia

incorrectos. Para desbloquear la cuenta, un responsable de criptografía (CO) debe restablecer la


contraseña mediante el comando changePswd (p. 90) en cloudhsm_mgmt_util.
Si tiene más de un HSM en el clúster, es posible que puedan realizarse intentos adicionales de
inicio de sesión incorrectos antes de que se bloquee la cuenta. Esto se debe a que el cliente
CloudHSM equilibra la carga entre los diversos HSM. Por lo tanto, el intento de inicio de sesión no
puede comenzar en el mismo HSM cada vez. Si va a probar esta funcionalidad, recomendamos
que lo haga en un clúster con un solo HSM activo.

Sintaxis

loginHSM -h

loginHSM -u <user type>


-p <password>
-s <username>

Ejemplo
Este ejemplo muestra cómo iniciar y cerrar sesión en los HSM de un clúster con los comandos loginHSM
y logoutHSM.

Example Iniciar sesión en los HSM

Este comando inicia sesión en los HSM como usuario de criptografía (CU) con el nombre de usuario
example_user y la contraseña aws. Una vez que finaliza correctamente, la salida del comando indica que
se ha iniciado sesión en todos los HSM del clúster.

Command: loginHSM -u CU -s example_user -p aws

Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Example Cerrar sesión en los HSM

Este comando cierra sesión en los HSM. Una vez que finaliza correctamente, la salida del comando indica
que se ha cerrado sesión en todos los HSM del clúster.

Command: logoutHSM

>Cfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Parámetros
-h

Muestra ayuda para este comando.

Obligatorio: sí

199
AWS CloudHSM Guía del usuario
Referencia

-u

Especifica el tipo de usuario que inicia la sesión. Para poder utilizar key_mgmt_util, debe iniciar sesión
como CU.

Obligatorio: sí
-s

Especifica el nombre del usuario que inicia la sesión.


-p

Especifica la contraseña de inicio de sesión.

Obligatorio: sí

Temas relacionados
• exit (p. 139)

setAttribute
El comando setAttribute de key_mgmt_util convierte una clave que es válida únicamente en la sesión
actual en una clave persistente que existe hasta que la elimina. El comando realiza esta operación
cambiando el valor de atributo de token de la clave (OBJ_ATTR_TOKEN) de falso (0) a verdadero (1). Solo
puede cambiar los atributos de claves de su propiedad.

También puede utilizar el comando setAttribute de cloudhsm_mgmt_util para cambiar la etiqueta,


encapsular, desencapsular, cifrar y descifrar atributos.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

setAttribute -h

setAttribute -o <object handle>


-a 1

Ejemplo
En este ejemplo se muestra cómo convertir una clave de sesión en una clave persistente.

El primer comando utiliza el parámetro -sess de genSymKey (p. 167) para crear una clave AES válida
de 192 bits que es válida únicamente en la sesión actual. La salida muestra que el indicador de la clave de
la nueva sesión es 262154.

Command: genSymKey -t 31 -s 24 -l tmpAES -sess

Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

Symmetric Key Created. Key Handle: 262154

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

200
AWS CloudHSM Guía del usuario
Referencia

Este comando utiliza findKey (p. 149) para encontrar las claves de sesión de la sesión actual. La salida
verifica que la clave 262154 es una clave de sesión.

Command: findKey -sess 1

Total number of keys present 1

number of keys matched from start index 0::0


262154

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Este comando utiliza setAttribute para convertir la clave de sesión 262154 en una clave persistente. Para
ello, cambia el valor del atributo de token (OBJ_ATTR_TOKEN) de la clave de 0 (falso) a 1 (verdadero).
Para obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

El comando utiliza el parámetro -o para especificar el indicador de clave (262154) y el parámetro -a para
especificar la constante que representa el atributo de token (1). Cuando ejecuta el comando, este le solicita
un valor para el atributo de token. El único valor válido es 1 (verdadero), el valor de una clave persistente.

Command: setAttribute -o 262154 -a 1


This attribute is defined as a boolean value.
Enter the boolean attribute value (0 or 1):1

Cfm3SetAttribute returned: 0x00 : HSM Return: SUCCESS

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Para confirmar que la clave 262154 es ahora persistente, este comando busca claves de sesión (-sess
1) y claves persistentes (-sess 0) utilizando findKey. Esta vez el comando no encuentra claves de
sesión, pero devuelve 262154 en la lista de claves persistentes.

Command: findKey -sess 1

Total number of keys present 0

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Command: findKey -sess 0

Total number of keys present 5

number of keys matched from start index 0::4


6, 7, 524296, 9, 262154

Cluster Error Status


Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

201
AWS CloudHSM Guía del usuario
Referencia

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí
-o

Especifica el identificador de la clave de destino. Puede especificar una única clave en cada comando.
Para obtener el identificador de una clave, use findKey (p. 149).

Obligatorio: sí
-a

Especifica la constante que representa el atributo que desea cambiar. El único valor válido es 1, que
representa el atributo de token OBJ_ATTR_TOKEN.

Para obtener los atributos y sus valores enteros, utilice listAttributes (p. 196).

Obligatorio: sí

Temas relacionados
• setAttribute (p. 119) en cloudhsm_mgmt_util
• getAttribute (p. 172)
• listAttributes (p. 196)
• Referencia de los atributos de claves (p. 214)

sign
El comando sign de key_mgmt_util utiliza la clave privada elegida para generar una firma para un archivo.

Para poder utilizar sign, primero debe tener una clave privada en el HSM. Puede generar una clave
privada con los comandos genSymKey (p. 167), genRSAKeyPair (p. 162) o genECCKeyPair (p. 158).
También puede importarla con el comando importPrivateKey (p. 182). Para obtener más información,
consulte Generar claves (p. 57).

El comando sign utiliza un mecanismo de firma designado por el usuario, representado por un número
entero, para firmar un archivo de mensaje. Para obtener una lista de posibles mecanismos de firma,
consulte Parámetros (p. 203).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

sign -h

sign -f <file name>


-k <private key handle>
-m <signature mechanism>
-out <signed file name>

202
AWS CloudHSM Guía del usuario
Referencia

Ejemplo
Este ejemplo muestra cómo utilizar sign para firmar un archivo.

Example Firmar un archivo

Este comando firma un archivo denominado messageFile con una clave privada con el identificador
266309. Utiliza el mecanismo de firma SHA256_RSA_PKCS (1) y guarda el archivo firmado resultante
como signedFile.

Command: sign -f messageFile -k 266309 -m 1 -out signedFile

Cfm3Sign returned: 0x00 : HSM Return: SUCCESS

signature is written to file signedFile

Cluster Error Status


Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

Parámetros
Este comando admite los siguientes parámetros.

-f

El nombre del archivo que se va a firmar.

Obligatorio: sí
-k

El identificador de la clave privada que se va a utilizar para la firma.

Obligatorio: sí
-m

Un número entero que representa el mecanismo de firma que se va a utilizar para la firma. Los
mecanismos posibles se corresponden con los siguientes valores enteros:

Mecanismo de firma Número entero correspondiente

SHA1_RSA_PKCS 0

SHA256_RSA_PKCS 1

SHA384_RSA_PKCS 2

SHA512_RSA_PKCS 3

SHA224_RSA_PKCS 4

SHA1_RSA_PKCS_PSS 5

SHA256_RSA_PKCS_PSS 6

SHA384_RSA_PKCS_PSS 7

SHA512_RSA_PKCS_PSS 8

203
AWS CloudHSM Guía del usuario
Referencia

Mecanismo de firma Número entero correspondiente

SHA224_RSA_PKCS_PSS 9

ECDSA_SHA1 15

ECDSA_SHA224 16

ECDSA_SHA256 17

ECDSA_SHA384 18

ECDSA_SHA512 19

Obligatorio: sí
-out

El nombre del archivo en el que se va a guardar el archivo firmado.

Obligatorio: sí

Temas relacionados
• verify (p. 209)
• importPrivateKey (p. 182)
• genRSAKeyPair (p. 162)
• genECCKeyPair (p. 158)
• genSymKey (p. 167)
• Generar claves (p. 57)

unWrapKey
El comando unWrapKey de la herramienta key_mgmt_util importa una clave privada o simétrica
encapsulada (cifrada) de un archivo en el HSM. Está diseñado para importar claves de cifrado
encapsuladas con el comando wrapKey (p. 211) 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 (p. 224) o JCE (p. 251) 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 (p. 214) 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. El resultado, es decir, varias claves con
diferentes identificadores de clave y el mismo material de claves, dificulta el seguimiento del uso de los
materiales de claves e impide que superen sus límites criptográficos.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

unWrapKey -h

204
AWS CloudHSM Guía del usuario
Referencia

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, desencapsularemos una clave que se ha encapsulado con el comando
wrapKey (p. 211) de key_mgmt_util y que, por lo tanto, tiene un encabezado. En el segundo ejemplo,
desencapsularemos una clave que se ha encapsulado fuera de key_mgmt_util y que, por lo tanto, no tiene
encabezado.

Example : Desencapsulación 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

Example : Desencapsulación 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

205
AWS CloudHSM Guía del usuario
Referencia

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.

Requerido: sí
-f

Especifica la ruta y el nombre del archivo que contiene la clave encapsulada.

Obligatorio: sí
-w

Especifica la clave de encapsulamiento. Escriba 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 (p. 149).

Para crear una clave de encapsulamiento, utilice genSymKey (p. 167) para generar una clave AES
(tipo 31) o genRSAKeyPair (p. 162) para generar un par de claves RSA (tipo 0). Si está utilizando
un par de claves RSA, asegúrese de encapsular la clave con una de las claves y desencapsularla
con la otra. Para verificar que se puede usar una clave como clave de encapsulamiento, use
getAttribute (p. 172) para obtener el valor del atributo OBJ_ATTR_WRAP, que se representa con la
constante 262.

Requerido: sí
-sess

Crea una clave que solo existe en la sesión actual. La clave no se puede recuperar después de que
finalice la sesión.

Use este parámetro cuando necesite solo una clave de manera breve, como una clave de
encapsulamiento, y descifre rápidamente, otra clave. No use una clave de sesión para cifrar datos que
pueda necesitar descifrar después de que finalice la sesión.

Para cambiar una clave de sesión a una clave persistente (token), use setAttribute (p. 200).

Predeterminada: la clave es persistente.

Requerido: No
-min_srv

Especifica el número mínimo de HSM en los que la clave se sincroniza antes de que el valor del
parámetro -timeout expire. 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

206
AWS CloudHSM Guía del usuario
Referencia

Requerido: No
-timeout

Especifica cuánto tiempo (en segundos) espera el comando para sincronizar una clave con el número
de HSM que especifica el parámetro min_srv.

Este parámetro solo es válido cuando el parámetro min_srv también se usa en el comando.

Predeterminado: sin tiempo de espera. El comando espera indefinidamente y se devuelve solo cuando
la clave se sincroniza con el número mínimo de servidores.

Requerido: No
-attest

Ejecuta una comprobación de integridad que verifica el firmware en el que se ejecuta el clúster no se
ha manipulado.

Predeterminado: sin comprobación de declaración

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 8


los datos, consulte la nota que se incluye más
adelante en esta sección)

NIST_TDEA_WRAP (el tamaño de los datos de la 9


clave debe ser un múltiplo de 4 bytes)

AES_GCM 10

CLOUDHSM_AES_GCM 11

Obligatorio: sí
-t

Algoritmo hash Valor

SHA1 2

SHA256 3

SHA384 4

SHA512 5

207
AWS CloudHSM Guía del usuario
Referencia

Algoritmo hash Valor

SHA224 (válido para los mecanismos RSA_AES y 6


RSA_OAEP)

Note

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.

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.

Obligatorio: no
Note

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:

208
AWS CloudHSM Guía del usuario
Referencia

• -id

El ID que se van a añadir a la clave desencapsulada.

Obligatorio: no
• -i

El vector de inicialización (IV) de desencapsulación que se va a utilizar.

Obligatorio: no

Temas relacionados
• wrapKey (p. 211)
• exSymKey (p. 143)
• imSymKey (p. 187)

verify
El comando verify de key_mgmt_util confirma si un archivo está firmado con una clave determinada.
Para ello, el comando verify compara un archivo firmado con un archivo de origen y analiza si están
relacionados criptográficamente en función de una clave pública y un mecanismo de firma determinados.
Los archivos se pueden firmar en AWS CloudHSM con la operación sign (p. 202).

Los mecanismos de firma están representados por los números enteros indicados en la sección de
parámetros (p. 210).

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

verify -h

verify -f <message-file>
-s <signature-file>
-k <public-key-handle>
-m <signature-mechanism>

Ejemplo
Estos ejemplos muestran cómo utilizar verify para comprobar si se ha utilizado una clave pública
determinada para firmar un archivo concreto.

Example Comprobar la firma correcta de un archivo


Este comando intenta verificar si un archivo denominado hardwarCert.crt se firmó con la clave
pública 262276 mediante el mecanismo de firma SHA256_RSA_PKCS para producir el archivo firmado
hardwareCertSigned. Dado que los parámetros especificados representan una relación de firma
verdadera, el comando devuelve un mensaje de confirmación.

Command: verify -f hardwareCert.crt -s hardwareCertSigned -k 262276 -m 1

Signature verification successful

Cfm3Verify returned: 0x00 : HSM Return: SUCCESS

209
AWS CloudHSM Guía del usuario
Referencia

Example Demostrar una relación de firma falsa


Este comando verifica si un archivo denominado hardwareCert.crt se firmó con la clave pública
262276 mediante el mecanismo de firma SHA256_RSA_PKCS para producir el archivo firmado
userCertSigned. Dado que los parámetros especificados no constituyen una relación de firma
verdadera, el comando devuelve un mensaje de error.

Command: verify -f hardwarecert.crt -s usercertsigned -k 262276 -m 1


Cfm3Verify rturned: 0x1b

CSP Error: ERR_BAD_PKCS_DATA

Parámetros
Este comando admite los siguientes parámetros.

-f

El nombre del archivo de mensaje de origen.

Obligatorio: sí
-s

El nombre del archivo firmado.

Obligatorio: sí
-k

El identificador de la clave pública que se cree que se utilizó para firmar el archivo.

Obligatorio: sí
-m

Un número entero que representa el mecanismo de firma que se supone que se utilizó para firmar el
archivo. Los mecanismos posibles se corresponden con los siguientes valores enteros:

Mecanismo de firma Número entero correspondiente

SHA1_RSA_PKCS 0

SHA256_RSA_PKCS 1

SHA384_RSA_PKCS 2

SHA512_RSA_PKCS 3

SHA224_RSA_PKCS 4

SHA1_RSA_PKCS_PSS 5

SHA256_RSA_PKCS_PSS 6

SHA384_RSA_PKCS_PSS 7

SHA512_RSA_PKCS_PSS 8

SHA224_RSA_PKCS_PSS 9

ECDSA_SHA1 15

210
AWS CloudHSM Guía del usuario
Referencia

Mecanismo de firma Número entero correspondiente

ECDSA_SHA224 16

ECDSA_SHA256 17

ECDSA_SHA384 18

ECDSA_SHA512 19

Obligatorio: sí

Temas relacionados
• sign (p. 202)
• getCert (p. 158)
• Generar claves (p. 57)

wrapKey
El comando wrapKey de key_mgmt_util exporta una copia cifrada de una clave simétrica o privada desde
el HSM a un archivo. Cuando ejecute wrapKey, debe especificar la clave que va a exportar, una clave del
HSM para cifrar (encapsular) la clave que se va a exportar y el archivo de salida.

El comando wrapKey escribe la clave cifrada en el archivo especificado, pero no la elimina del HSM ni le
impide utilizarla en operaciones criptográficas. Puede exportar la misma clave varias veces.

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

Para volver a importar la clave cifrada de nuevo en el HSM, utilice unWrapKey (p. 204). Para exportar
una clave sin cifrar de un HSM, utilice exSymKey (p. 143) o exportPrivateKey (p. 140), según
corresponda. El comando aesWrapUnwrap (p. 134) no puede descifrar (desencapsular) las claves que
wrapKey cifra.

Antes de ejecutar cualquier comando de key_mgmt_util, debe iniciar key_mgmt_util (p. 130) e iniciar
sesión (p. 131) en el HSM como usuario de criptografía (CU).

Sintaxis

wrapKey -h

wrapKey -k <exported-key-handle>
-w <wrapping-key-handle>
-out <output-file>
[-m <wrapping-mechanism>]
[-aad <addtional authenticated data filename>]
[-t <hash-type>]
[-noheader]
[-i <wrapping IV>]
[-iv_file <IV file>]
[-tag_size <num_tag_bytes>>]

211
AWS CloudHSM Guía del usuario
Referencia

Ejemplo
Example
Este comando exporta una clave simétrica Triple DES (3DES) de 192 bits (identificador de clave 7).
Utiliza una clave AES de 256 bits en el HSM (identificador de clave 14) para encapsular la clave 7. A
continuación, escribe la clave 3DES cifrada en el archivo 3DES-encrypted.key.

La salida muestra que la clave 7 (la clave 3DES) se ha encapsulado correctamente y que se ha escrito en
el archivo especificado. La clave cifrada tiene 307 bytes de largo.

Command: wrapKey -k 7 -w 14 -out 3DES-encrypted.key -m 4

Key Wrapped.

Wrapped Key written to file "3DES-encrypted.key length 307

Cfm2WrapKey returned: 0x00 : HSM Return: SUCCESS

Parámetros
-h

Muestra ayuda para el comando.

Requerido: sí
-k

Identificador de la clave que desea exportar. Escriba el identificador de una clave simétrica o privada
de su propiedad. Para buscar identificadores de clave, use el comando findKey (p. 149).

Para confirmar que una clave se puede exportar, ejecute el comando getAttribute (p. 172) para
obtener el valor del atributo OBJ_ATTR_EXTRACTABLE, que se representa con la constante 354. Para
obtener ayuda sobre cómo interpretar los atributos de claves, consulte Referencia de los atributos de
claves (p. 214).

Además, únicamente puede exportar las claves que son de su propiedad. Para encontrar el propietario
de una clave, ejecute el comando getKeyInfo (p. 178).

Obligatorio: sí
-w

Especifica la clave de encapsulamiento. Escriba 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 (p. 149).

Para crear una clave de encapsulamiento, utilice genSymKey (p. 167) para generar una clave AES
(tipo 31) o genRSAKeyPair (p. 162) para generar un par de claves RSA (tipo 0). Si está utilizando
un par de claves RSA, asegúrese de encapsular la clave con una de las claves y desencapsularla
con la otra. Para verificar que se puede usar una clave como clave de encapsulamiento, use
getAttribute (p. 172) para obtener el valor del atributo OBJ_ATTR_WRAP, que se representa con la
constante 262.

Requerido: sí
-out

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

Obligatorio: sí

212
AWS CloudHSM Guía del usuario
Referencia

-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 8


los datos, consulte la nota que se incluye más
adelante en esta sección)

NIST_TDEA_WRAP (el tamaño de los datos de la 9


clave debe ser un múltiplo de 4 bytes)

AES_GCM 10

CLOUDHSM_AES_GCM 11

Obligatorio: sí
-t

Valor que representa el algoritmo hash. CloudHSM admite los siguientes algoritmos:

Algoritmo hash Valor

SHA1 2

SHA256 3

SHA384 4

SHA512 5

SHA224 (válido para los mecanismos RSA_AES y 6


RSA_OAEP)

Obligatorio: no
Note
Cuando se utiliza el mecanismo de encapsulación RSA_OAEP, el tamaño de
clave de 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).
-aad

Nombre del archivo que contiene AAD.


Note
Válido solo para los mecanismos AES_GCM y CLOUDHSM_AES_GCM.

213
AWS CloudHSM Guía del usuario
Referencia

Requerido: No
-noheader

Omite el encabezado que especifica los atributos de clave (p. 132) específicos de CloudHSM. Utilice
este parámetro únicamente si tiene previsto desencapsular la clave otras herramientas que no sean
key_mgmt_util.

Requerido: No
-i

Vector de inicialización (IV) (valor hexadecimal).


Note

Solo es válido cuando se pasa con el parámetro -noheader de los mecanismos


CLOUDHSM_AES_KEY_WRAP, NIST_AES_WRAP y NIST_TDEA_WRAP.

Requerido: No
-iv_file

Archivo en el que va a escribir el valor del IV obtenido como respuesta.


Note

Solo es válido cuando se pasa con el parámetro -noheader del mecanismo AES_GCM.

Requerido: No
-tag_size

Tamaño de la etiqueta que se va a guardar junto con el blob ajustado.


Note

Solo es válido cuando se pasa con el parámetro -noheader de los mecanismos AES_GCM y
CLOUDHSM_AES_GCM. El tamaño mínimo de la etiqueta es ocho.

Obligatorio: no

Temas relacionados
• exSymKey (p. 143)
• imSymKey (p. 187)
• unWrapKey (p. 204)

Referencia de los atributos de claves


Los comandos key_mgmt_util utilizan constantes para representar los atributos de claves en un HSM. Este
tema puede ayudarle a identificar los atributos, encontrar las constantes que los representan en comandos
y comprender sus valores.

Usted configura los atributos de una clave cuando la crea. Para cambiar el atributo del token, que
indica si una clave es persistente o solo existe en la sesión, utilice el comando setAttribute (p. 200)
en key_mgmt_util. Para cambiar los atributos de etiquetado, encapsulado, desencapsulado, cifrado y
descifrado, utilice el comando setAttribute en cloudhsm_mgmt_util.

Para obtener una lista de los atributos y sus constantes, utilice listAttributes (p. 196). Para obtener los
valores de atributo de una clave, utilice getAttribute (p. 172).

En la siguiente tabla se enumeran los atributos clave, sus constantes y sus valores válidos.

214
AWS CloudHSM Guía del usuario
Referencia

Atributo Constant Valores

OBJ_ATTR_CLASS 0 2: clave pública de un par de


claves pública–privada.
3: clave privada de un par de
claves pública–privada.

4: clave secreta (simétrica).

OBJ_ATTR_TOKEN 1 0: falso. Clave de sesión.

1: verdadero. Clave persistente.

OBJ_ATTR_PRIVATE 2 0: falso.

1: verdadero. Este atributo indica


si los usuarios sin autenticar
pueden enumerar los atributos de
la clave. Dado que el proveedor
PKCS#11 de CloudHSM no
admite actualmente las sesiones
públicas, todas las claves
(incluidas las claves públicas de
un par de clave pública-privada)
tienen este atributo establecido
en 1.

OBJ_ATTR_LABEL 3 Cadena definida por el usuario.


No tiene que ser única en el
clúster.

OBJ_ATTR_TRUSTED 134 0: falso.

1: verdadero.

OBJ_ATTR_KEY_TYPE 256 0: RSA.

1: DSA.

3: EC.

16: secreto genérico.

18: RC4.

21: Triple DES (3DES).

31: AES.

OBJ_ATTR_ID 258 Cadena definida por el usuario.


Debe ser única en el clúster. El
valor predeterminado es una
cadena vacía.

OBJ_ATTR_SENSITIVE 259 0: falso. Clave pública de un par


de claves pública–privada.

1: verdadero.

OBJ_ATTR_ENCRYPT 260 0: falso.

215
AWS CloudHSM Guía del usuario
Referencia

Atributo Constant Valores


1: verdadero. La clave se puede
utilizar para cifrar datos.

OBJ_ATTR_DECRYPT 261 0: falso.

1: verdadero. La clave se puede


utilizar para descifrar datos.

OBJ_ATTR_WRAP 262 0: falso.

1: verdadero. La clave se puede


utilizar para cifrar claves.

OBJ_ATTR_UNWRAP 263 0: falso.

1: verdadero. La clave se puede


utilizar para descifrar claves.

OBJ_ATTR_SIGN 264 0: falso.

1: verdadero. La clave se puede


utilizar para firmar (claves
privadas).

OBJ_ATTR_VERIFY 266 0: falso.

1: verdadero. La clave se puede


utilizar para verificación (claves
públicas).

OBJ_ATTR_DERIVE 268 0: falso.

1: verdadero. La función deriva la


clave.

OBJ_ATTR_MODULUS 288 El módulo que se utilizó para


generar un par de claves RSA.

Para otros tipos de clave, este


atributo no existe.

OBJ_ATTR_MODULUS_BITS 289 La longitud del módulo que se


utilizó para generar un par de
claves RSA.

Para otros tipos de clave, este


atributo no existe.

OBJ_ATTR_PUBLIC_EXPONENT 290 El exponente público que se


utilizó para generar un par de
claves RSA.

Para otros tipos de clave, este


atributo no existe.

OBJ_ATTR_VALUE_LEN 353 Longitud de la clave en bytes.

216
AWS CloudHSM Guía del usuario
Referencia

Atributo Constant Valores

OBJ_ATTR_EXTRACTABLE 354 0: falso.

1: verdadero. Es posible exportar


la clave desde los HSM.

OBJ_ATTR_LOCAL 355 0. Falso. La clave se importó a


los HSM.

1: verdadero.

OBJ_ATTR_NEVER_EXTRACTABLE
356 0: falso.

1: verdadero. No es posible
exportar la clave desde los HSM.

OBJ_ATTR_ALWAYS_SENSITIVE 357 0: falso.

1: verdadero.

OBJ_ATTR_DESTROYABLE 370 0: falso.

1: verdadero.

OBJ_ATTR_KCV 371 Valor de comprobación de clave


de la clave. Para obtener más
información, consulte Detalles
adicionales (p. 217).

OBJ_ATTR_ALL 512 Representa todos los atributos.

OBJ_ATTR_WRAP_WITH_TRUSTED
528 0: falso.

1: verdadero.

OBJ_ATTR_EKCV 4099 EKCV es un valor de suma


de comprobación generado
mediante los bytes clave.

OBJ_ATTR_WRAP_TEMPLATE 1073742353 Los valores deben usar la


plantilla de atributo para coincidir
con la clave encapsulada usando
esta clave de encapsulamiento.

OBJ_ATTR_UNWRAP_TEMPLATE 1073742354 Los valores deben usar la


plantilla de atributo aplicada a
cualquier clave desencapsulada
mediante esta clave de
encapsulamiento.

Detalles adicionales
Valor de comprobación de clave (kcv)

El valor de comprobación de clave (KCV) es un hash de 3 bytes o una suma de comprobación de


una clave que se genera cuando el HSM importa o genera una clave. También puede calcular un
KCV fuera del HSM, por ejemplo, después de exportar una clave. A continuación, puede comparar

217
AWS CloudHSM Guía del usuario
Herramienta de configuración

los valores de KCV para confirmar la identidad y la integridad de la clave. Para obtener el KCV de una
clave, use getAttribute (p. 172).

AWS CloudHSM usa el siguiente método estándar para generar un valor de comprobación de clave:
• Claves simétricas: primeros 3 bytes del resultado de cifrar un bloque de cero con la clave.
• Pares de claves asimétricos: primeros 3 bytes del hash SHA-1 de la clave pública.
• Claves de HMAC: el KVC para claves de HMAC no es compatible en este momento.

Herramienta de configuración
AWS CloudHSM sincroniza automáticamente los datos entre todos los HSM de un clúster. La herramienta
configure actualiza los datos de los HSM en los archivos de configuración que utilizan los mecanismos de
sincronización. Utilice configure para actualizar los datos de los HSM antes de utilizar las herramientas de
línea de comandos, especialmente cuando los HSM del clúster han cambiado.

Sintaxis
configure -h | --help
-a <ENI IP address>
-m [-i <daemon_id>]
--ssl --pkey <private key file> --cert <certificate file>

Ejemplos
En estos ejemplos, se muestra cómo se utiliza la herramienta configure.

Example : Actualización de los datos de los HSM para el cliente de AWS CloudHSM y
key_mgmt_util
En este ejemplo, se utiliza el parámetro -a de configure para actualizar los datos de los HSM del cliente
de AWS CloudHSM y key_mgmt_util. Este comando también es el primer paso a la hora de actualizar el
archivo de configuración de cloudhsm_mgmt_util.

Antes de actualizar el parámetro -a, detenga el cliente de AWS CloudHSM. De esta forma, evitará los
conflictos que podrían producirse mientras configure edita el archivo de configuración del cliente. Si el
cliente ya se ha detenido, este comando no tiene ningún efecto, por lo que puede utilizarlo en un script.

Amazon Linux

$ sudo stop cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client stop

CentOS 6

$ sudo stop cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client stop

218
AWS CloudHSM Guía del usuario
Ejemplos

RHEL 6

$ sudo stop cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client stop

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client stop

Windows

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe stop AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

Use Ctrl+C en la ventana de comandos desde donde inició el cliente de AWS CloudHSM.

A continuación, obtenga la dirección IP de ENI de un HSM cualquiera de su clúster. Este comando utiliza el
comando describe-clusters de la AWS CLI, pero también puede utilizar la operación DescribeClusters o el
cmdlet Get-HSM2Cluster de PowerShell.

Este fragmento de la salida muestra la dirección IP de ENI de los HSM de un clúster de muestra. Podemos
utilizar cualquiera de las direcciones IP en el comando siguiente.

$ aws cloudhsmv2 describe-clusters

{
"Clusters": [
{ ... }
"Hsms": [
{
...
"EniIp": "10.0.0.9",
...
},
{
...
"EniIp": "10.0.1.6",
...

Este paso utiliza el parámetro -a de configure para añadir la dirección IP de la ENI 10.0.0.9 a los
archivos de configuración.

Amazon Linux

$ sudo /opt/cloudhsm/bin/configure -a 10.0.0.9

Amazon Linux 2

$ sudo /opt/cloudhsm/bin/configure -a 10.0.0.9

219
AWS CloudHSM Guía del usuario
Ejemplos

CentOS 6

$ sudo /opt/cloudhsm/bin/configure -a 10.0.0.9

CentOS 7

$ sudo /opt/cloudhsm/bin/configure -a 10.0.0.9

RHEL 6

$ sudo /opt/cloudhsm/bin/configure -a 10.0.0.9

RHEL 7

$ sudo /opt/cloudhsm/bin/configure -a 10.0.0.9

Ubuntu 16.04 LTS

$ sudo /opt/cloudhsm/bin/configure -a 10.0.0.9

Windows

c:\Program Files\Amazon\CloudHSM>configure.exe -a 10.0.0.9

A continuación, reinicie el cliente de AWS CloudHSM. Cuando el cliente se inicia, utiliza la dirección IP
de ENI en su archivo de configuración para realizar consultas en el clúster. A continuación, escribe las
direcciones IP de ENI de todos los HSM del clúster en el archivo cluster.info.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

220
AWS CloudHSM Guía del usuario
Ejemplos

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

Windows

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:


\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg

Cuando el comando se completa, los datos del HSM que el cliente de AWS CloudHSM y la herramienta
key_mgmt_util utilizan son completos y precisos. Antes de utilizar cloudhsm_mgmt_util, actualice el
parámetro -m de configure, tal y como se muestra en el ejemplo siguiente.

Example : Actualización de los datos de HSM para cloudhsm_mgmt_util

En este ejemplo, se utiliza el comando configure -m para copiar los datos actualizados de los HSM del
archivo cluster.info en el archivo cloudhsm_mgmt_util.cfg que utiliza cloudhsm_mgmt_util.

Antes de utilizar el parámetro -m, detenga el cliente de AWS CloudHSM, ejecute el comando con -a
y reinicie el cliente de AWS CloudHSM, tal y como se muestra en el ejemplo anterior (p. 218). Esto
garantiza que los datos que se copian en el archivo cloudhsm_mgmt_util.cfg desde el archivo
cluster.info sean completos y precisos.

Amazon Linux

$ sudo /opt/cloudhsm/bin/configure -m

Amazon Linux 2

$ sudo /opt/cloudhsm/bin/configure -m

CentOS 6

$ sudo /opt/cloudhsm/bin/configure -m

CentOS 7

$ sudo /opt/cloudhsm/bin/configure -m

RHEL 6

$ sudo /opt/cloudhsm/bin/configure -m

RHEL 7

$ sudo /opt/cloudhsm/bin/configure -m

221
AWS CloudHSM Guía del usuario
Parámetros

Ubuntu 16.04 LTS

$ sudo /opt/cloudhsm/bin/configure -m

Windows

c:\Program Files\Amazon\CloudHSM>configure.exe -m

Parámetros
-h | --help

Muestra la sintaxis del comando.

Obligatorio: sí
-a <ENI IP address>

Agrega la dirección IP de la interfaz de red elástica (ENI) del HSM especificado a los archivos de
configuración de AWS CloudHSM. Escriba la dirección IP de ENI de cualquiera de los HSM del clúster.
No importa qué HSM seleccione.

Para obtener las direcciones IP de ENI de los HSM del clúster, ejecute la operación DescribeClusters,
el comando describe-clusters de AWS CLI o el cmdlet Get-HSM2Cluster de PowerShell.
Note

Antes de ejecutar el comando configure -a, detenga el cliente de AWS CloudHSM. A


continuación, cuando finalice el comando -a, reinicie el cliente de AWS CloudHSM. Para
obtener información detallada, consulte los ejemplos (p. 218).

Este parámetro edita los archivos de configuración siguientes:


• /opt/cloudhsm/etc/cloudhsm_client.cfg: se utiliza en el cliente de AWS CloudHSM y en
key_mgmt_util (p. 129).
• /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg: se utiliza en cloudhsm_mgmt_util (p. 81).

Cuando el cliente de AWS CloudHSM se inicia, utiliza la dirección IP de ENI que figura en su archivo
de configuración para consultar el clúster y actualizar el archivo cluster.info (/opt/cloudhsm/
daemon/1/cluster.info) con las direcciones IP de ENI correctas para todos los HSM del clúster.

Obligatorio: sí
-m

Actualiza las direcciones IP de ENI de HSM que figuran en el archivo de configuración que
cloudhsm_mgmt_util utiliza.

Cuando se ejecuta configure con el parámetro -a y después se inicia el cliente de AWS CloudHSM,
el demonio de cliente consulta el clúster y actualiza los archivos cluster.info con las direcciones
IP correctas de todos los HSM del clúster. Al ejecutar el comando configure -m, se completa la
actualización copiando las direcciones IP de los HSM del archivo cluster.info en el archivo de
configuración cloudhsm_mgmt_util.cfg que utiliza cloudhsm_mgmt_util.

No olvide ejecutar el comando configure -a y reiniciar el cliente de AWS CloudHSM antes de ejecutar
el comando con el parámetro -m. De esta forma se asegura de que los datos que se copien en el
archivo cloudhsm_mgmt_util.cfg desde el archivo cluster.info sean completos y precisos.

Obligatorio: sí

222
AWS CloudHSM Guía del usuario
Temas relacionados

-i

Especifica un demonio de cliente alternativo. El valor predeterminado representa el cliente de AWS


CloudHSM.

Valor predeterminado: 1

Obligatorio: no
--ssl

Sustituye el certificado y la clave SSL del clúster por la clave privada y el certificado especificados.
Cuando se utiliza este parámetro, los parámetros --pkey y --cert son obligatorios.

Obligatorio: no
--pkey

Especifica la clave privada nueva. Introduzca la ruta y el nombre del archivo que contiene la clave
privada.

Obligatorio: sí, en caso de que se especifique --ssl. De lo contrario, no debe usarse.


--cert

Especifica el certificado nuevo. Introduzca la ruta y el nombre del archivo que contiene el certificado.
El certificado debe encadenarse hasta el certificado customerCA.crt, el certificado autofirmado que
se utiliza para inicializar el clúster. Para obtener más información, consulte Inicializar el clúster.

Obligatorio: sí, en caso de que se especifique --ssl. De lo contrario, no debe usarse.

Temas relacionados
• Configurar key_mgmt_util (p. 129)
• Prepararse para ejecutar cloudhsm_mgmt_util (p. 82)

223
AWS CloudHSM Guía del usuario
Biblioteca de PKCS #11

Uso de las bibliotecas de software de


AWS CloudHSM
Las bibliotecas de software de AWS CloudHSM integran sus aplicaciones con los HSM del clúster. Las
bibliotecas permiten que la aplicación realice operaciones criptográficas en los HSM.

Para obtener información detallada sobre las plataformas compatibles y un historial de versiones completo,
consulte Información de cliente y de software de AWS CloudHSM (p. 381).

Temas
• Biblioteca de software de AWS CloudHSM para PKCS #11 (p. 224)
• Motor dinámico de AWS CloudHSM para OpenSSL (p. 248)
• Biblioteca de software de AWS CloudHSM para Java (p. 251)
• Proveedores de KSP y CNG para Windows (p. 281)

Biblioteca de software de AWS CloudHSM para


PKCS #11
La biblioteca de software de AWS CloudHSM para PKCS #11 es una implementación estándar de PKCS
#11 que se comunica con los HSM del clúster de AWS CloudHSM. Solo se admite en Linux y en sistemas
operativos compatibles. Esta biblioteca es compatible con PKCS #11 versión 2.40, e implementa los
siguientes tipos de claves, mecanismos y operaciones de la API.

Temas
• Instalación de la biblioteca de software de AWS CloudHSM para PKCS #11 (p. 224)
• Autenticación en PKCS #11 (p. 230)
• Tipos de clave de PKCS #11 admitidos (p. 231)
• Mecanismos de PKCS #11 admitidos (p. 231)
• Operaciones API de PKCS #11 admitidas (p. 235)
• Atributos de PKCS # 11 admitidos (p. 236)
• Ejemplos de código de la biblioteca de software de AWS CloudHSM sobre PKCS#11 (p. 247)

Instalación de la biblioteca de software de AWS


CloudHSM para PKCS #11
Con las bibliotecas de software de AWS CloudHSM para PKCS #11, puede crear aplicaciones compatibles
con PKCS #11 que utilicen los HSM del clúster de AWS CloudHSM. Puede utilizar la biblioteca PKCS
#11 de AWS CloudHSM estándar o la biblioteca de PKCS #11 de AWS CloudHSM que utiliza una caché
de Redis (p. 227). Las dos bibliotecas PKCS #11 de AWS CloudHSM solamente son compatibles con
sistemas operativos Linux.

Temas

224
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de PKCS #11

• Requisitos previos (p. 225)


• Instalar la biblioteca de PKCS #11 (p. 225)
• Instalar la biblioteca PKCS #11 con Redis (no aplicable a la versión 3.0 o posteriores del
SDK) (p. 227)

Requisitos previos
Las bibliotecas de software de AWS CloudHSM para PKCS # 11 necesitan el cliente de AWS CloudHSM.

Si no ha instalado y configurado el cliente de AWS CloudHSM, hágalo ahora siguiendo los pasos de
Instalar el cliente (Linux) (p. 35). Después de instalar y configurar el cliente, utilice el siguiente comando
para iniciarlo.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

Instalar la biblioteca de PKCS #11


El siguiente comando descarga e instala la biblioteca de software de AWS CloudHSM para PKCS #11.
Este paso es necesario en la biblioteca PKCS #11 estándar de AWS CloudHSM y la biblioteca PKCS #11
con Redis de AWS CloudHSM (p. 227).
Note

Para obtener actualizaciones, consulte Actualización del cliente (p. 398).

225
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de PKCS #11

Amazon Linux

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
pkcs11-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-pkcs11-latest.el6.x86_64.rpm

Amazon Linux 2

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
pkcs11-latest.el7.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm

CentOS 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
pkcs11-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-pkcs11-latest.el6.x86_64.rpm

CentOS 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
pkcs11-latest.el7.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm

RHEL 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
pkcs11-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-pkcs11-latest.el6.x86_64.rpm

RHEL 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
pkcs11-latest.el7.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm

Ubuntu 16.04 LTS

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-
client-pkcs11_latest_amd64.deb

$ sudo dpkg -i cloudhsm-client-pkcs11_latest_amd64.deb

226
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de PKCS #11

Cuando la instalación se realiza correctamente, las bibliotecas PKCS #11 están en /opt/cloudhsm/lib.

Instalar la biblioteca PKCS #11 con Redis (no aplicable a la


versión 3.0 o posteriores del SDK)
Antes de la versión 3.0, AWS CloudHSM disponía de una biblioteca de software opcional para PKCS #11
que utilizaba una caché de Redis. La caché almacena identificadores de clave y los atributos de forma
local para que pueda obtener acceso a ellas sin llamar a sus HSM.
Note

Redis no es necesario en la versión 3.0 o posteriores. Si utiliza la versión 2.0.4 de AWS


CloudHSM u otra anterior, AWS CloudHSM dispone de una biblioteca de software opcional para
PKCS #11 que utiliza una caché de Redis. La caché almacena identificadores de clave y los
atributos de forma local para que pueda obtener acceso a ellas sin llamar a sus HSM.

Al crear la caché, especifique el usuario de criptografía (CU) que su aplicación PKCS #11 utiliza para la
autenticación (p. 230). La caché tiene precargadas las claves que posee y comparte el CU. Se actualiza
automáticamente cuando la aplicación utiliza funciones de la biblioteca de PKCS #11 para realizar cambios
en los HSM. Por ejemplo, para la creación o eliminación de claves o la modificación de sus atributos. La
caché no conoce otras claves del HSM.

El almacenamiento en caché puede mejorar el desempeño de su aplicación PKCS #11, pero podría no ser
la elección adecuada para todas las aplicaciones. Considere lo siguiente:

• Redis almacena en caché todas las operaciones de biblioteca PKCS #11 que se ejecutan en el host,
pero no tiene conocimiento de las operaciones que se realizan fuera de la biblioteca. Por ejemplo, si
utiliza las herramientas de línea de comandos (p. 81) o la biblioteca de software para Java (p. 251) con
el fin de administrar las claves de su HSM, dichas operaciones no actualizan la caché. Puede reconstruir
la caché para actualizarla al nuevo estado de los HSM, pero la caché no se sincroniza con los HSM de
forma automática.

 
• Si tiene otras aplicaciones que utilizan Redis en el mismo host, no utilice la biblioteca de PKCS #11 con
Redis. La biblioteca PKCS #11 configura Redis para reconocerlo como el único consumidor Redis en el
host.

Para instalar la biblioteca PKCS #11 con Redis, utilice el repositorio de paquetes adicionales para
Enterprise Linux (EPEL). A continuación, habilite y configure Redis para que funcione con AWS CloudHSM
y PKCS #11.

Algunos pasos en este proceso solo se necesitan en determinados sistemas operativos.

Paso 1: Instalar la biblioteca PKCS #11 de AWS CloudHSM


Para instalar la biblioteca PKCS #11 con Redis, primero debe instalar la biblioteca PKCS #11 de AWS
CloudHSM estándar (p. 225). Esta biblioteca es obligatoria.

Obligatorio para Redis en todos los sistemas operativos compatibles.

Paso 2: Instalar el repositorio EPEL


Este paso instala el repositorio Extra Packages for Enterprise Linux (EPEL). Solo es necesario en sistemas
operativos que no incluyen EPEL.

Obligatorio para Redis solo en:Amazon Linux 2, CentOS 6, CentOS 7, RedHat Enterprise Linux (RHEL) 6,
RedHat Enterprise Linux (RHEL) 7

227
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de PKCS #11

Amazon Linux

No hay que hacer nada.


Amazon Linux 2

1. Descargue el repositorio EPEL.

curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2. Instale el repositorio EPEL.

sudo yum install epel-release-latest-7.noarch.rpm

CentOS 6

1. Descargue el repositorio EPEL.

curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

2. Instale el repositorio EPEL.

sudo yum install epel-release-latest-6.noarch.rpm

CentOS 7

1. Descargue el repositorio EPEL.

curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2. Instale el repositorio EPEL.

sudo yum install epel-release-latest-7.noarch.rpm

RHEL 6

1. Descargue el repositorio EPEL.

curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

2. Instale el repositorio EPEL.

sudo yum install epel-release-latest-6.noarch.rpm

RHEL 7

1. Descargue el repositorio EPEL.

curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2. Instale el repositorio EPEL.

228
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de PKCS #11

sudo yum install epel-release-latest-7.noarch.rpm

Ubuntu 16.04 LTS

No hay que hacer nada.

Paso 3: Preparación para Redis


Este paso incluye tareas específicas del sistema que deben llevarse a cabo antes de instalar y configurar
la biblioteca PKCS #11 para Redis.

Obligatorio para Redis solo en: Amazon Linux, CentOS 7, RedHat Enterprise Linux (RHEL) 6

Amazon Linux

Este paso habilita el repositorio EPEL. Solo es obligatorio en Amazon Linux, pero puede utilizar este
procedimiento para comprobar que EPEL está habilitado en cualquier sistema operativo Linux.

1. Abra el archivo /etc/yum.repos.d/epel.repo en un editor de texto. Este paso requiere


permisos administrativos (sudo).
2. En la configuración de [epel] en el archivo, establezca el valor de enabled en 1, como se
muestra en el siguiente ejemplo. A continuación, guarde el archivo y ciérrelo.

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

Amazon Linux 2

No hay que hacer nada.


CentOS 6

No hay que hacer nada.


CentOS 7

Este comando deshabilita una política Security-Enhanced Linux (SELinux) que impide que Redis use
los recursos de AWS CloudHSM.

sudo semanage module -d redis

RHEL 6

Este comando elimina el requisito TTY en el archivo sudoers. El archivo sudoers contiene las reglas
para el comando sudo.

1. Use el editor visudo para modificar el archivo /etc/sudoers.


2. Comente la instrucción Defaults requiretty. A continuación, guarde el archivo y salga de
visudo.

229
AWS CloudHSM Guía del usuario
Autenticación en PKCS #11

# Defaults requiretty

RHEL 7

No hay que hacer nada.


Ubuntu 16.04 LTS

No hay que hacer nada.

Paso 4: Instalar, configurar y crear la caché de Redis


Utilice el siguiente procedimiento para instalar y configurar el paquete Redis de la biblioteca de AWS
CloudHSM para PKCS #11 y crear la caché.

Obligatorio para Redis en todos los sistemas operativos compatibles.

1. Utilice el script setup_redis para instalar Redis y configurarlo para que funcione con la biblioteca
PKCS #11 de AWS CloudHSM para Redis.

$ sudo /opt/cloudhsm/bin/setup_redis

2. Inicie el servicio Redis.

$ sudo service redis start

3. Utilice el comando build_keystore para crear la caché de Redis. Escriba el nombre y la


contraseña del usuario de criptografía (CU) (p. 11) que su aplicación PKCS #11 utiliza para la
autenticación (p. 230).

La caché tiene precargadas las claves que posee y comparte el CU especificado. Se actualiza
automáticamente cuando la aplicación realiza cambios en los HSM en nombre del CU. Por ejemplo, al
crear o eliminar claves o al cambiar sus atributos. La caché no conoce otras claves de los HSM.

$ /opt/cloudhsm/bin/build_keystore -s <CU user name> -p < CU password>

Autenticación en PKCS #11


Cuando se utiliza PKCS #11 con AWS CloudHSM, la aplicación se ejecuta como un determinado usuario
de criptografía (CU) (p. 10) en los HSM. La aplicación solo puede ver y administrar las claves que posee
y comparte el CU. Puede utilizar un CU existente en sus HSM o crear un nuevo CU (p. 54) para su
aplicación.

Para especificar el CU para PKCS #11, utilice el parámetro de pin de la función C_Login de PKCS #11. En
AWS CloudHSM, el parámetro pin tiene el siguiente formato:

<CU_user_name>:<password>

Por ejemplo, el siguiente comando establece el pin de PKCS #11 para el CU con el nombre de usuario
CryptoUser y la contraseña CUPassword123!.

CryptoUser:CUPassword123!

230
AWS CloudHSM Guía del usuario
Tipos de clave de PKCS #11 admitidos

Tipos de clave de PKCS #11 admitidos


La biblioteca de software de AWS CloudHSM para PKCS #11 admite los siguientes tipos de clave.

• RSA: claves RSA de 2048 a 4096 bits, en incrementos de 256 bits.


• ECDSA: generación de claves con las curvas P-224, P-256, P-384, P-521 y secp256k1. Para firmar o
verificar, solo se admiten las curvas P-256, P-384 y secp256k1.
• AES: claves AES de 128, 192 y 256 bits.
• Triple DES (3DES): claves de 192 bits.
• GENERIC_SECRET: de 1 a 64 bytes.

Mecanismos de PKCS #11 admitidos


La biblioteca de software de AWS CloudHSM para PKCS #11 admite los siguientes algoritmos:

• Cifrado y descifrado: AES-CBC, AES-CTR, AES-ECB, AES-GCM, DES3-CBC, DES3-ECB, RSA-OAEP


y RSA-PKCS
• Firma y verificación: – RSA, HMAC y ECDSA; con y sin hash
• Hash/digest:– SHA1, SHA224, SHA256, SHA384 y SHA512
4
• Encapsulación de claves: – encapsulación de claves AES , AES-GCM, RSA-AES y RSA-OAEP
5
• Derivación de claves:– ECDH

La biblioteca de software de AWS CloudHSM para PKCS #11 es compatible con PKCS #11 versión 2.40.
Para invocar una característica criptográfica con PKCS #11, llame a una función con un mecanismo
determinado. En la siguiente tabla, se resumen las combinaciones de funciones y mecanismos admitidos
por AWS CloudHSM.

Interpretación de la tabla de mecanismos y funciones compatibles con PKCS #11

La marca ✔ indica que CloudHSM es compatible con el mecanismo para esa función. No se admiten
todas las funciones posibles que se muestran en la especificación de PKCS #11. La marca ✖ indica que
CloudHSM todavía no es compatible con el mecanismo para esa función, aunque el estándar de PKCS
#11 lo admita. Las celdas vacías indican que el estándar de PKCS #11 no admite el mecanismo para esa
función.

Mecanismos y funciones compatibles con PKCS #11

Mecanismo Funciones

  Generar Firmar y SR y VR Resumir Cifrar o Derivar Encapsular


claves o verificar descifrar clave y
pares de desencapsular
claves
2
CKM_RSA_X9_31_KEY_PAIR_GEN ✔            
1 1
CKM_RSA_PKCS   ✔ ✖   ✔   ✖
1 6
CKM_RSA_PKCS_OAEP         ✔   ✔

CKM_SHA1_RSA_PKCS   ✔          

CKM_SHA224_RSA_PKCS   ✔          

CKM_SHA256_RSA_PKCS   ✔          

231
AWS CloudHSM Guía del usuario
Mecanismos de PKCS #11 admitidos

Mecanismo Funciones

CKM_SHA384_RSA_PKCS   ✔          

CKM_SHA512_RSA_PKCS   ✔          
1
CKM_RSA_PKCS_PSS   ✔          

CKM_SHA1_RSA_PKCS_PSS   ✔          

CKM_SHA224_RSA_PKCS_PSS   ✔          

CKM_SHA256_RSA_PKCS_PSS   ✔          

CKM_SHA384_RSA_PKCS_PSS   ✔          

CKM_SHA512_RSA_PKCS_PSS   ✔          

CKM_EC_KEY_PAIR_GEN ✔            
1
CKM_ECDSA   ✔          

CKM_ECDSA_SHA1   ✔          

CKM_ECDSA_SHA224   ✔          

CKM_ECDSA_SHA256   ✔          

CKM_ECDSA_SHA384   ✔          

CKM_ECDSA_SHA512   ✔          
5
CKM_ECDH1_DERIVE           ✔  

CKM_GENERIC_SECRET_KEY_GEN ✔            

CKM_AES_KEY_GEN ✔            

CKM_AES_ECB         ✔   ✖

CKM_AES_CTR         ✔   ✖
3.2
CKM_AES_CBC         ✔   ✖

CKM_AES_CBC_PAD         ✔   ✖

CKM_DES3_KEY_GEN ✔            
3.2
CKM_DES3_CBC         ✔   ✖

CKM_DES3_CBC_PAD         ✔   ✖
3.2
CKM_DES3_ECB         ✔   ✖
3.2, 4
CKM_AES_GCM         ✔    
7 7
CKM_CLOUDHSM_AES_GCM         ✔   ✔
3.1
CKM_SHA_1       ✔      
3.2
CKM_SHA_1_HMAC   ✔          
3.1
CKM_SHA224       ✔      

232
AWS CloudHSM Guía del usuario
Mecanismos de PKCS #11 admitidos

Mecanismo Funciones
3.2
CKM_SHA224_HMAC   ✔          
3.1
CKM_SHA256       ✔      
3.2
CKM_SHA256_HMAC   ✔          
3.1
CKM_SHA384       ✔      
3.2
CKM_SHA384_HMAC   ✔          
3.1
CKM_SHA512       ✔      
3.2
CKM_SHA512_HMAC   ✔          

CKM_AES_KEY_WRAP             ✔

CKM_RSA_AES_KEY_WRAP             ✔

CKM_AES_KEY_WRAP_PAD             ✔
7
CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD             ✔
7
CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD            ✔

Anotaciones:

1
Únicamente para operaciones de una sola parte

2
Este mecanismo es funcionalmente idéntico al mecanismo CKM_RSA_PKCS_KEY_PAIR_GEN, pero ofrece más garantías en la generación de
p y q.

3.1
Cuando se aplica una función de hash a los datos mediante cualquiera de los siguientes mecanismos, si el búfer de datos tiene un
tamaño inferior a 16 KB, la operación se realiza en el HSM. Si el búfer de datos es más grande, entre 16 KB y el tamaño máximo de datos, la
operación de hash se realiza localmente en el software. En la tabla siguiente, se muestra el tamaño máximo de datos establecido para cada
mecanismo:

Mecanismo Tamaño máximo de datos

CKM_SHA_1 16296

CKM_SHA224 16264

CKM_SHA256 16296

CKM_SHA384 16232

CKM_SHA512 16232

3.2
Cuando se opera con datos mediante cualquiera de los mecanismos siguientes, si el búfer de datos supera el tamaño máximo de datos, la
operación produce un error. En la tabla siguiente, se muestra el tamaño máximo de datos establecido para cada mecanismo:

Mecanismo Tamaño máximo de datos

CKM_SHA_1_HMAC 16288

CKM_SHA224_HMAC 16256

233
AWS CloudHSM Guía del usuario
Mecanismos de PKCS #11 admitidos

Mecanismo Tamaño máximo de datos

CKM_SHA256_HMAC 16288

CKM_SHA384_HMAC 16224

CKM_SHA512_HMAC 16224

CKM_SHA1_RSA_PKCS 16296

CKM_SHA224_RSA_PKCS 16264

CKM_SHA256_RSA_PKCS 16296

CKM_SHA364_RSA_PKCS 16232

CKM_SHA512_RSA_PKCS 16232

CKM_AES_CBC 16272

CKM_AES_GCM 16224

CKM_DES3_CBC 16280

4
Al realizar el cifrado AES-GCM, el HSM no acepta los datos del vector de inicialización (IV) de la aplicación. Debe utilizar un vector de
inicialización generado. El IV de 12 bytes proporcionado por el HSM se escribe en la referencia de memoria a la que apunta el elemento pIV
de la estructura de parámetros CK_GCM_PARAMS especificada por el usuario. Para asegurarse de no generar confusión en el usuario, el SDK
de PKCS#11 versión 1.1.1 y posteriores obliga a que el elemento pIV apunte a un búfer puesto a cero cuando se inicializa el cifrado AES-
GCM.

5
Este mecanismo se implementa para admitir casos de descarga de SSL/TLS y solo se ejecuta parcialmente en el HSM. Antes de usar

este mecanismo, consulte Issue: ECDH key derivation is executed only partially within the HSM en Problemas conocidos para el SDK de

PKCS#11 (p. 366).

6
Los siguientes CK_MECHANISM_TYPE y CK_RSA_PKCS_MGF_TYPE se admiten como CK_RSA_PKCS_OAEP_PARAMS para
CKM_RSA_PKCS_OAEP:

• CKM_SHA_1 con CKG_MGF1_SHA1

• CKM_SHA224 con CKG_MGF1_SHA224

• CKM_SHA256 con CKG_MGF1_SHA256

• CKM_SHA384 con CKM_MGF1_SHA384

• CKM_SHA512 con CKM_MGF1_SHA512

7
mecanismo definido por el proveedor. Para poder utilizar los mecanismos definidos por el proveedor de CloudHSM, las aplicaciones
PKCS#11 deben incluir /opt/cloudhsm/include/pkcs11t.h durante la compilación. Para obtener más información sobre el mecanismo
definido por el proveedor, consulte la siguiente descripción:

CKM_CLOUDHSM_AES_GCM: este mecanismo exclusivo es una alternativa programáticamente segura del estándar CKM_AES_GCM. Antepone
el IV generado por el HSM al texto cifrado en lugar de volver a escribirlo en la estructura CK_GCM_PARAMS que se proporciona durante la
inicialización del cifrado. Puede utilizar este mecanismo con las funciones C_Encrypt, C_WrapKey, C_Decrypt y C_UnwrapKey. Cuando se
utiliza este mecanismo, la variable pIV de la estructura CK_GCM_PARAMS debe establecerse en NULL. Cuando se utiliza este mecanismo con
C_Decrypt y C_UnwrapKey, se espera que el IV se anteponga al texto cifrado que se está desencapsulando. Para obtener más opciones de

encapsulamiento de claves AES, consulte Encapsulamiento de claves con AES (p. 64).

234
AWS CloudHSM Guía del usuario
Operaciones API de PKCS #11 admitidas

Operaciones API de PKCS #11 admitidas


La biblioteca de software de AWS CloudHSM para PKCS #11 admite las siguientes operaciones API de
PKCS #11.

• C_CreateObject
• C_Decrypt
• C_DecryptFinal
• C_DecryptInit
• C_DecryptUpdate
• C_DestroyObject
• C_DigestInit
• C_Digest
• C_Encrypt
• C_EncryptFinal
• C_EncryptInit
• C_EncryptUpdate
• C_FindObjects
• C_FindObjectsFinal
• C_FindObjectsInit
• C_Finalize
• C_GenerateKey
• C_GenerateKeyPair
• C_GenerateRandom
• C_GetAttributeValue
• C_GetFunctionList
• C_GetInfo
• C_GetMechanismInfo
• C_GetMechanismList
• C_GetOperationState
• C_GetSessionInfo
• C_GetSlotInfo
• C_GetSlotList
• C_GetTokenInfo
• C_Initialize
• C_Login
• C_Logout
• C_OpenSession
• C_Sign
• C_SignFinal
• C_SignInit
• C_SignRecover
• C_SignRecoverInit
• C_SignUpdate
• C_UnWrapKey
• C_Verify

235
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

• C_VerifyFinal
• C_VerifyInit
• C_VerifyRecover
• C_VerifyRecoverInit
• C_VerifyUpdate
• C_WrapKey

Atributos de PKCS # 11 admitidos


Un objeto de clave puede ser una clave pública, privada o secreta. Las acciones permitidas en un objeto
de clave se especifican mediante atributos. Los atributos se definen cuando se crea el objeto de clave.
Cuando se utiliza el SDK de PKCS #11 de CloudHSM, asignamos los valores predeterminados que se
especifican en el estándar PKCS #11.
Note

CloudHSM no admite todos los atributos que se indican en la especificación de PKCS #11.
Seguimos esta especificación en todos los atributos que admitimos. Estos atributos se indican en
sus respectivas tablas.

Las funciones criptográficas como C_CreateObject, C_GenerateKey, C_GenerateKeyPair,


C_UnwrapKey y C_DeriveKey que crean, modifican o copian objetos toman una plantilla de atributos
como uno de sus parámetros. Para obtener más información acerca de cómo pasar una plantilla de
atributos durante la creación de objetos, consulte el ejemplo Generar claves mediante la biblioteca de
PKCS #11.

Interpretación de la tabla de atributos de PKCS #11


La tabla de PKCS #11 contiene una lista de atributos que difieren por tipo de clave. Indica si un
determinado atributo es compatible con un determinado tipo de clave cuando se utiliza una función
criptográfica con AWS CloudHSM.

Leyenda

• ✔ indica que CloudHSM admite el atributo para el tipo de clave específico.


• ✖ indica que CloudHSM no admite el atributo para el tipo de clave específico.
• R indica que el valor del atributo se establece en de solo lectura para el tipo de clave específico.
• S indica que GetAttributeValue no puede leer el atributo porque distingue entre mayúsculas y
minúsculas.
• Una celda vacía en la columna Valor predeterminado indica que no hay ningún valor predeterminado
específico asignado al atributo.

GenerateKeyPair

Atributo Tipo de clave Default


Value (Valor
predeterminado)

  EC privada EC pública RSA privada RSA pública  

CKA_CLASS ✔ ✔ ✔ ✔

CKA_KEY_TYPE ✔ ✔ ✔ ✔

236
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Atributo Tipo de clave Default


Value (Valor
predeterminado)

CKA_LABEL ✔ ✔ ✔ ✔

CKA_ID ✔ ✔ ✔ ✔

CKA_LOCAL R R R R True

<<<<<CKA_TOKEN ✔ ✔ ✔ ✔ Falso

CKA_PRIVATE ✔
1

1 1

1
✔ True

CKA_ENCRYPT ✖ ✔ ✖ ✔ Falso

CKA_DECRYPT ✔ ✖ ✔ ✖ Falso

CKA_DERIVE ✔ ✔ ✔ ✔ Falso

CKA_MODIFIABLE ✔
1

1 1

1
✔ True

CKA_DESTROYABLE ✔ ✔ ✔ ✔ True

CKA_SIGN ✔ ✖ ✔ ✖ Falso

CKA_SIGN_RECOVER ✖ ✖ 3
✔ ✖  

CKA_VERIFY ✖ ✔ ✖ ✔ Falso

CKA_VERIFY_RECOVER ✖ ✖ ✖ 4
✔  

CKA_WRAP ✖ ✔ ✖ ✔ Falso

CKA_WRAP_TEMPLATE ✖ ✔ ✖ ✔  

CKA_TRUSTED ✖ ✔ ✖ ✔ Falso

CKA_WRAP_WITH_TRUSTED ✔ ✖ ✔ ✖ Falso

CKA_UNWRAP ✔ ✖ ✔ ✖ Falso

CKA_UNWRAP_TEMPLATE ✔ ✖ ✔ ✖  

CKA_SENSITIVE ✔ ✖ ✔ ✖ True

CKA_ALWAYS_SENSITIVE R ✖ R ✖  

CKA_EXTRACTABLE ✔ ✖ ✔ ✖ True

CKA_NEVER_EXTRACTABLE R ✖ R ✖  

CKA_MODULUS ✖ ✖ ✖ ✖  

CKA_MODULUS_BITS ✖ ✖ ✖ 2
✔  

CKA_PRIME_1 ✖ ✖ ✖ ✖  

CKA_PRIME_2 ✖ ✖ ✖ ✖  

CKA_COEFFICIENT ✖ ✖ ✖ ✖  

237
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Atributo Tipo de clave Default


Value (Valor
predeterminado)

CKA_EXPONENT_1 ✖ ✖ ✖ ✖  

CKA_EXPONENT_2 ✖ ✖ ✖ ✖  

CKA_PRIVATE_EXPONENT ✖ ✖ ✖ ✖  

CKA_PUBLIC_EXPONENT ✖ ✖ ✖ 2
✔  

CKA_EC_PARAMS ✖ ✔
2 ✖ ✖  

CKA_EC_POINT ✖ ✖ ✖ ✖  

CKA_VALUE ✖ ✖ ✖ ✖  

CKA_VALUE_LEN ✖ ✖ ✖ ✖  

CKA_CHECK_VALUE R R R R  

GenerateKey

Atributo Tipo de clave Default


Value (Valor
predeterminado)

  AES DES3 Secreto  


genérico

CKA_CLASS ✔ ✔ ✔

CKA_KEY_TYPE ✔ ✔ ✔

CKA_LABEL ✔ ✔ ✔

CKA_ID ✔ ✔ ✔

CKA_LOCAL R R R True

<<<<<CKA_TOKEN ✔ ✔ ✔ Falso

CKA_PRIVATE ✔
1

1

1 True

CKA_ENCRYPT ✔ ✔ ✖ Falso

CKA_DECRYPT ✔ ✔ ✖ Falso

CKA_DERIVE ✔ ✔ ✔ Falso

CKA_MODIFIABLE ✔
1

1

1 True

CKA_DESTROYABLE ✔ ✔ ✔ True

CKA_SIGN ✔ ✔ ✔ Falso

CKA_SIGN_RECOVER ✖ ✖ ✖  

238
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Atributo Tipo de clave Default


Value (Valor
predeterminado)

CKA_VERIFY ✔ ✔ ✔ Falso

CKA_VERIFY_RECOVER ✖ ✖ ✖  

CKA_WRAP ✔ ✔ ✖ Falso

CKA_WRAP_TEMPLATE ✔ ✔ ✖  

CKA_TRUSTED ✔ ✔ ✖ Falso

CKA_WRAP_WITH_TRUSTED ✔ ✔ ✔ Falso

CKA_UNWRAP ✔ ✔ ✖ Falso

CKA_UNWRAP_TEMPLATE ✔ ✔ ✖  

CKA_SENSITIVE ✔ ✔ ✔ True

CKA_ALWAYS_SENSITIVE ✖ ✖ ✖  

CKA_EXTRACTABLE ✔ ✔ ✔ True

CKA_NEVER_EXTRACTABLE R R R  

CKA_MODULUS ✖ ✖ ✖  

CKA_MODULUS_BITS ✖ ✖ ✖  

CKA_PRIME_1 ✖ ✖ ✖  

CKA_PRIME_2 ✖ ✖ ✖  

CKA_COEFFICIENT ✖ ✖ ✖  

CKA_EXPONENT_1 ✖ ✖ ✖  

CKA_EXPONENT_2 ✖ ✖ ✖  

CKA_PRIVATE_EXPONENT ✖ ✖ ✖  

CKA_PUBLIC_EXPONENT ✖ ✖ ✖  

CKA_EC_PARAMS ✖ ✖ ✖  

CKA_EC_POINT ✖ ✖ ✖  

CKA_VALUE ✖ ✖ ✖  

CKA_VALUE_LEN ✔
2 ✖ 2
✔  

CKA_CHECK_VALUE R R R  

239
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

CreateObject

Atributo Tipo de clave Default


Value
(Valor
predeterminado)

  EC EC RSA RSA AES DES3 Secreto  


privada pública privada pública genérico

CKA_CLASS 2 2 2 2 2 2 2
✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_KEY_TYPE 2 2 2 2 2 2 2
✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_LABEL ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_ID ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_LOCAL R R R R R R R Falso

<<<<<CKA_TOKEN ✔ ✔ ✔ ✔ ✔ ✔ ✔ Falso

CKA_PRIVATE ✔
1

1

1

1

1

1

1 True

CKA_ENCRYPT ✖ ✖ ✖ ✔ ✔ ✔ ✖ Falso

CKA_DECRYPT ✖ ✖ ✔ ✖ ✔ ✔ ✖ Falso

CKA_DERIVE ✔ ✔ ✔ ✔ ✔ ✔ ✔ Falso

CKA_MODIFIABLE ✔
1

1

1

1

1

1

1 True

CKA_DESTROYABLE ✔ ✔ ✔ ✔ ✔ ✔ ✔ True

CKA_SIGN ✔ ✖ ✔ ✖ ✔ ✔ ✔ Falso

CKA_SIGN_RECOVER ✖ ✖ ✔
3 ✖ ✖ ✖ ✖ Falso

CKA_VERIFY ✖ ✔ ✖ ✔ ✔ ✔ ✔ Falso

CKA_VERIFY_RECOVER ✖ ✖ ✖ ✔
4 ✖ ✖ ✖  

CKA_WRAP ✖ ✖ ✖ ✔ ✔ ✔ ✖ Falso

CKA_WRAP_TEMPLATE ✖ ✔ ✖ ✔ ✔ ✔ ✖  

CKA_TRUSTED ✖ ✔ ✖ ✔ ✔ ✔ ✖ Falso

CKA_WRAP_WITH_TRUSTED ✔ ✖ ✔ ✖ ✔ ✔ ✔ Falso

CKA_UNWRAP ✖ ✖ ✔ ✖ ✔ ✔ ✖ Falso

CKA_UNWRAP_TEMPLATE ✔ ✖ ✔ ✖ ✔ ✔ ✖  

CKA_SENSITIVE ✔ ✖ ✔ ✖ ✔ ✔ ✔ True

CKA_ALWAYS_SENSITIVE R ✖ R ✖ R R R  

CKA_EXTRACTABLE ✔ ✖ ✔ ✖ ✔ ✔ ✔ True

240
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Atributo Tipo de clave Default


Value
(Valor
predeterminado)

CKA_NEVER_EXTRACTABLE R ✖ R ✖ R R R  

CKA_MODULUS ✖ ✖ ✔
2 2
✔ ✖ ✖ ✖  

CKA_MODULUS_BITS ✖ ✖ ✖ ✖ ✖ ✖ ✖  

CKA_PRIME_1 ✖ ✖ ✔ ✖ ✖ ✖ ✖  

CKA_PRIME_2 ✖ ✖ ✔ ✖ ✖ ✖ ✖  

CKA_COEFFICIENT ✖ ✖ ✔ ✖ ✖ ✖ ✖  

CKA_EXPONENT_1 ✖ ✖ ✔ ✖ ✖ ✖ ✖  

CKA_EXPONENT_2 ✖ ✖ ✔ ✖ ✖ ✖ ✖  

CKA_PRIVATE_EXPONENT ✖ ✖ ✔
2 ✖ ✖ ✖ ✖  

CKA_PUBLIC_EXPONENT ✖ ✖ ✔
2 2
✔ ✖ ✖ ✖  

CKA_EC_PARAMS 2

2
✔ ✖ ✖ ✖ ✖ ✖  

CKA_EC_POINT ✖ 2
✔ ✖ ✖ ✖ ✖ ✖  

CKA_VALUE 2
✔ ✖ ✖ ✖ 2

2
✔ ✔
2  

CKA_VALUE_LEN ✖ ✖ ✖ ✖ ✖ ✖ ✖  

CKA_CHECK_VALUE R R R R R R R  

UnwrapKey

Atributo Tipo de clave Default


Value
(Valor
predeterminado)

  EC privada RSA AES DES3 Secreto  


privada genérico

CKA_CLASS 2 2 2 2 2
✔ ✔ ✔ ✔ ✔

CKA_KEY_TYPE 2 2 2 2 2
✔ ✔ ✔ ✔ ✔

CKA_LABEL ✔ ✔ ✔ ✔ ✔

CKA_ID ✔ ✔ ✔ ✔ ✔

CKA_LOCAL R R R R R Falso

<<<<<CKA_TOKEN ✔ ✔ ✔ ✔ ✔ Falso

241
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Atributo Tipo de clave Default


Value
(Valor
predeterminado)

CKA_PRIVATE ✔
1

1

1 1

1
✔ True

CKA_ENCRYPT ✖ ✖ ✔ ✔ ✖ Falso

CKA_DECRYPT ✖ ✔ ✔ ✔ ✖ Falso

CKA_DERIVE ✔ ✔ ✔ ✔ ✔ Falso

CKA_MODIFIABLE ✔
1

1

1 1

1
✔ True

CKA_DESTROYABLE ✔ ✔ ✔ ✔ ✔ True

CKA_SIGN ✔ ✔ ✔ ✔ ✔ Falso

CKA_SIGN_RECOVER ✖ ✔
3 ✖ ✖ ✖ Falso

CKA_VERIFY ✖ ✖ ✔ ✔ ✔ Falso

CKA_VERIFY_RECOVER ✖ ✖ ✖ ✖ ✖  

CKA_WRAP ✖ ✖ ✔ ✔ ✖ Falso

CKA_UNWRAP ✖ ✔ ✔ ✔ ✖ Falso

CKA_SENSITIVE ✔ ✔ ✔ ✔ ✔ True

CKA_EXTRACTABLE ✔ ✔ ✔ ✔ ✔ True

CKA_NEVER_EXTRACTABLE R R R R R  

CKA_ALWAYS_SENSITIVE R R R R R  

CKA_MODULUS ✖ ✖ ✖ ✖ ✖  

CKA_MODULUS_BITS ✖ ✖ ✖ ✖ ✖  

CKA_PRIME_1 ✖ ✖ ✖ ✖ ✖  

CKA_PRIME_2 ✖ ✖ ✖ ✖ ✖  

CKA_COEFFICIENT ✖ ✖ ✖ ✖ ✖  

CKA_EXPONENT_1 ✖ ✖ ✖ ✖ ✖  

CKA_EXPONENT_2 ✖ ✖ ✖ ✖ ✖  

CKA_PRIVATE_EXPONENT ✖ ✖ ✖ ✖ ✖  

CKA_PUBLIC_EXPONENT ✖ ✖ ✖ ✖ ✖  

CKA_EC_PARAMS ✖ ✖ ✖ ✖ ✖  

CKA_EC_POINT ✖ ✖ ✖ ✖ ✖  

CKA_VALUE ✖ ✖ ✖ ✖ ✖  

CKA_VALUE_LEN ✖ ✖ ✖ ✖ ✖  

242
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Atributo Tipo de clave Default


Value
(Valor
predeterminado)

CKA_CHECK_VALUE R R R R R  

DeriveKey

Atributo Tipo de clave Default


Value (Valor
predeterminado)

  AES DES3 Secreto  


genérico

CKA_CLASS 2 2 2
✔ ✔ ✔

CKA_KEY_TYPE 2 2 2
✔ ✔ ✔

CKA_LABEL ✔ ✔ ✔

CKA_ID ✔ ✔ ✔

CKA_LOCAL R R R True

<<<<<CKA_TOKEN ✔ ✔ ✔ Falso

CKA_PRIVATE ✔
1

1

1 True

CKA_ENCRYPT ✔ ✔ ✖ Falso

CKA_DECRYPT ✔ ✔ ✖ Falso

CKA_DERIVE ✔ ✔ ✔ Falso

CKA_MODIFIABLE ✔
1

1

1 True

CKA_DESTROYABLE ✔
1

1

1 True

CKA_SIGN ✔ ✔ ✔ Falso

CKA_SIGN_RECOVER ✖ ✖ ✖  

CKA_VERIFY ✔ ✔ ✔ Falso

CKA_VERIFY_RECOVER ✖ ✖ ✖  

CKA_WRAP ✔ ✔ ✖ Falso

CKA_UNWRAP ✔ ✔ ✖ Falso

CKA_SENSITIVE ✔ ✔ ✔ True

CKA_EXTRACTABLE ✔ ✔ ✔ True

CKA_NEVER_EXTRACTABLE R R R  

243
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Atributo Tipo de clave Default


Value (Valor
predeterminado)

CKA_ALWAYS_SENSITIVE R R R  

CKA_MODULUS ✖ ✖ ✖  

CKA_MODULUS_BITS ✖ ✖ ✖  

CKA_PRIME_1 ✖ ✖ ✖  

CKA_PRIME_2 ✖ ✖ ✖  

CKA_COEFFICIENT ✖ ✖ ✖  

CKA_EXPONENT_1 ✖ ✖ ✖  

CKA_EXPONENT_2 ✖ ✖ ✖  

CKA_PRIVATE_EXPONENT ✖ ✖ ✖  

CKA_PUBLIC_EXPONENT ✖ ✖ ✖  

CKA_EC_PARAMS ✖ ✖ ✖  

CKA_EC_POINT ✖ ✖ ✖  

CKA_VALUE ✖ ✖ ✖  

CKA_VALUE_LEN 2
✔ ✖ ✔
2  

CKA_CHECK_VALUE R R R  

GetAttributeValue

Atributo Tipo de clave

  EC EC RSA RSA AES DES3 Secreto


privada pública privada pública genérico

CKA_CLASS ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_KEY_TYPE ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_LABEL ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_ID ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_LOCAL ✔ ✔ ✔ ✔ ✔ ✔ ✔

<<<<<CKA_TOKEN ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_PRIVATE 1 1 1 1 1 1 1
✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_ENCRYPT ✖ ✖ ✖ ✔ ✔ ✔ ✖

CKA_DECRYPT ✖ ✖ ✔ ✖ ✔ ✔ ✖

CKA_DERIVE ✔ ✔ ✔ ✔ ✔ ✔ ✔

244
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Atributo Tipo de clave

CKA_MODIFIABLE ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_DESTROYABLE ✔ ✔ ✔ ✔ ✔ ✔ ✔

CKA_SIGN ✔ ✖ ✔ ✖ ✔ ✔ ✔

CKA_SIGN_RECOVER ✖ ✖ ✔ ✖ ✖ ✖ ✖

CKA_VERIFY ✖ ✔ ✖ ✔ ✔ ✔ ✔

CKA_VERIFY_RECOVER ✖ ✖ ✖ ✔ ✖ ✖ ✖

CKA_WRAP ✖ ✖ ✖ ✔ ✔ ✔ ✖

CKA_WRAP_TEMPLATE ✖ ✔ ✖ ✔ ✔ ✔ ✖

CKA_TRUSTED ✖ ✔ ✖ ✔ ✔ ✔ ✔

CKA_WRAP_WITH_TRUSTED ✔ ✖ ✔ ✖ ✔ ✔ ✔

CKA_UNWRAP ✖ ✖ ✔ ✖ ✔ ✔ ✖

CKA_UNWRAP_TEMPLATE ✔ ✖ ✔ ✖ ✔ ✔ ✖

CKA_SENSITIVE ✔ ✖ ✔ ✖ ✔ ✔ ✔

CKA_EXTRACTABLE ✔ ✖ ✔ ✖ ✔ ✔ ✔

CKA_NEVER_EXTRACTABLE ✔ ✖ ✔ ✖ ✔ ✔ ✔

CKA_ALWAYS_SENSITIVE R R; R R R R R

CKA_MODULUS ✖ ✖ ✔ ✔ ✖ ✖ ✖

CKA_MODULUS_BITS ✖ ✖ ✖ ✔ ✖ ✖ ✖

CKA_PRIME_1 ✖ ✖ S ✖ ✖ ✖ ✖

CKA_PRIME_2 ✖ ✖ S ✖ ✖ ✖ ✖

CKA_COEFFICIENT ✖ ✖ S ✖ ✖ ✖ ✖

CKA_EXPONENT_1 ✖ ✖ S ✖ ✖ ✖ ✖

CKA_EXPONENT_2 ✖ ✖ S ✖ ✖ ✖ ✖

CKA_PRIVATE_EXPONENT ✖ ✖ S ✖ ✖ ✖ ✖

CKA_PUBLIC_EXPONENT ✖ ✖ ✔ ✔ ✖ ✖ ✖

CKA_EC_PARAMS ✔ ✔ ✖ ✖ ✖ ✖ ✖

CKA_EC_POINT ✖ ✔ ✖ ✖ ✖ ✖ ✖

CKA_VALUE S ✖ ✖ ✖ 2

2

2

CKA_VALUE_LEN ✖ ✖ ✖ ✖ ✔ ✖ ✔

CKA_CHECK_VALUE ✔ ✔ ✔ ✔ ✔ ✔ ✖

245
AWS CloudHSM Guía del usuario
Atributos de PKCS # 11 admitidos

Anotaciones:
1
Este atributo es parcialmente compatible con el firmware y debe establecer de forma explícita únicamente
en el valor predeterminado.
2
Atributo obligatorio.
3
El atributo CKA_SIGN_RECOVER se obtiene del atributo CKA_SIGN. Si debe configurarse, solo se puede
establecer en el mismo valor que el establecido para CKA_SIGN. Si no se establece, se obtiene el valor
predeterminado de CKA_SIGN. Como CloudHSM solo admite los mecanismos de firma recuperable
basados en RSA, este atributo solo se puede aplicar a clases públicas de RSA actualmente.
4
El CKA_VERIFY_RECOVER atributo se obtiene del atributo CKA_VERIFY. Si debe configurarse, solo
se puede establecer en el mismo valor que el establecido para CKA_VERIFY. Si no se establece, se
obtiene el valor predeterminado de CKA_VERIFY. Como CloudHSM solo admite los mecanismos de firma
recuperable basados en RSA, este atributo solo se puede aplicar a clases públicas de RSA actualmente.

Modificación de atributos
Algunos atributos de un objeto se pueden modificar una vez creado el objeto, mientras que otros no.
Para modificar los atributos, utilice el comando setAttribute (p. 119) de cloudhsm_mgmt_util. También
puede generar una lista de atributos y las constantes que los representan mediante el comando
listAttribute (p. 113) de cloudhsm_mgmt_util.

En la siguiente lista se muestran los atributos que se pueden modificar después de crear un objeto:

• CKA_LABEL
• <<<<<CKA_TOKEN
Note

La modificación solo se permite para cambiar una clave de sesión por una clave de token.
Utilice el comando setAttribute (p. 200) de key_mgmt_util para cambiar el valor del atributo.
• CKA_ENCRYPT
• CKA_DECRYPT
• CKA_SIGN
• CKA_VERIFY
• CKA_WRAP
• CKA_UNWRAP
• CKA_LABEL
• CKA_SENSITIVE
• CKA_DERIVE
Note

Este atributo admite la derivación de claves. Debe ser False para todas las claves públicas
y no puede establecerse en True. Para las claves secretas y privadas de EC, se puede
establecer en True o False.
• CKA_TRUSTED
Note

Este atributo se puede establecer en True o False solo mediante Crypto Officer (CO).
• CKA_WRAP_WITH_TRUSTED
246
AWS CloudHSM Guía del usuario
Ejemplos de PKCS#11

Note

Este atributo se puede establecer enTrue si la clave solo se puede encapsular con una clave
de encapsulamiento que tenga CKA_TRUSTED establecido en True. Se permite la modificación
para cambiar el valor del atributo de False a True. Una vez establecido en True, no puede
modificar el valor del atributo.

Interpretación de los códigos de error


La especificación en la plantilla de un atributo que no es compatible con una clave específica produce
un error. La siguiente tabla contiene los códigos de error que se generan cuando se infringen las
especificaciones:

Código de error Descripción

CKR_TEMPLATE_INCONSISTENT Este error aparece cuando se especifica un


atributo en la plantilla de atributos que cumple la
especificación PKCS #11, pero no es compatible
con CloudHSM.

CKR_ATTRIBUTE_TYPE_INVALID Recibirá este error cuando recupere un valor de un


atributo que cumple la especificación PKCS #11,
pero no es compatible con CloudHSM.

CKR_ATTRIBUTE_INCOMPLETE Este error aparece cuando no se especifica el


atributo obligatorio en la plantilla de atributos.

CKR_ATTRIBUTE_READ_ONLY Este error aparece cuando se especifica un


atributo de solo lectura en la plantilla de atributos.

Ejemplos de código de la biblioteca de software de


AWS CloudHSM sobre PKCS#11
En los ejemplos de código de PKCS#11 de GitHub se muestra cómo pueden realizarse tareas básicas
utilizando la biblioteca de software de AWS CloudHSM con PKCS#11.

Requisitos previos para el código de muestra


Antes de ejecutar las muestras, siga estos pasos para configurar su entorno:

• Instale y configure la biblioteca de software de PKCS#11 (p. 224) de AWS CloudHSM y el paquete de
cliente de AWS CloudHSM (p. 35).
• Configure un nombre de usuario y contraseña de HSM (p. 54) válidos. Los permisos del usuario
criptográfico (CU) son suficientes para estas tareas. La aplicación utiliza estas credenciales para iniciar
sesión en el HSM en cada ejemplo.

Ejemplos de código
Los ejemplos de código de la biblioteca de software de AWS CloudHSM para PKCS#11 están disponibles
en GitHub. Este repositorio contiene ejemplos acerca de cómo realizar operaciones comunes con
PKCS#11, como el cifrado, el descifrado, la firma y la verificación.

247
AWS CloudHSM Guía del usuario
Motor dinámico de OpenSSL

• Generar claves (AES, RSA, EC)


• Mostrar atributos de clave
• Cifrado y descifrado de datos con AES-GCM
• Cifrado y descifrado de datos con AES_CTR
• Cifrado y descifrado de datos con 3DES
• Firmar y verificar datos con RSA
• Derivar claves usando HMAC KDF
• Encapsule y desencapsule las claves con AES utilizando el relleno PKCS #5
• Encapsule y desencapsule las claves con AES sin relleno
• Encapsule y desencapsule las claves con AES usando cero relleno
• Encapsulamiento y desencapsulamiento de claves con AES-GCM
• Cómo encapsular y desencapsular claves con RSA
• Generar una clave con una plantilla de desencapsulamiento (p. 64)

Motor dinámico de AWS CloudHSM para OpenSSL


El motor dinámico de AWS CloudHSM para OpenSSL es un motor dinámico de OpenSSL que admite la
interfaz de línea de comandos de OpenSSL y las operaciones API de EVP. El motor dinámico permite que
las aplicaciones que se integran con OpenSSL, como los servidores web NGINX y Apache, descarguen
su procesamiento criptográfico en los HSM del clúster de AWS CloudHSM. El motor admite los siguientes
tipos de claves y cifrados:

• Generación de claves RSA para claves de 2048, 3072 y 4096 bits


• Firma o verificación de RSA
• Cifrado o descifrado de RSA
• Generación de números aleatorios criptográficamente segura y validada por FIPS

Para obtener más información, consulte el siguiente tema.

Temas
• Instalar y utilizar el motor dinámico de AWS CloudHSM para OpenSSL (p. 248)

Instalar y utilizar el motor dinámico de AWS


CloudHSM para OpenSSL
Para poder utilizar el motor dinámico de AWS CloudHSM para OpenSSL, necesita el cliente de AWS
CloudHSM.

El cliente es un demonio que establece una comunicación cifrada integral con los HSM del clúster, y el
motor de OpenSSL se comunica localmente con el cliente. Si no ha instalado y configurado el paquete de
cliente de AWS CloudHSM, hágalo ahora siguiendo los pasos de Instalar el cliente (Linux) (p. 35). Después
de instalar y configurar el cliente, utilice el siguiente comando para iniciarlo.

El motor dinámico de AWS CloudHSM para OpenSSL solo se admite en Linux y en sistemas operativos
compatibles.

Amazon Linux

$ sudo start cloudhsm-client

248
AWS CloudHSM Guía del usuario
Instalación del motor dinámico de OpenSSL

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

Temas
• Instalar y configurar el motor dinámico de OpenSSL (p. 249)
• Usar el motor dinámico de OpenSSL (p. 251)

Instalar y configurar el motor dinámico de OpenSSL


Siga los pasos que se describen a continuación para instalar y configurar el motor dinámico de AWS
CloudHSM para OpenSSL. Solo se admite en Linux y en sistemas operativos compatibles.
Note

Para obtener actualizaciones, consulte Actualización del cliente (p. 398).

Para instalar y configurar el motor de OpenSSL

1. Utilice los comandos siguientes para descargar e instalar el motor de OpenSSL.

Amazon Linux

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-
client-dyn-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-dyn-latest.el6.x86_64.rpm

Amazon Linux 2

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-
client-dyn-latest.el7.x86_64.rpm

249
AWS CloudHSM Guía del usuario
Instalación del motor dinámico de OpenSSL

$ sudo yum install -y ./cloudhsm-client-dyn-latest.el7.x86_64.rpm

CentOS 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-
client-dyn-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-dyn-latest.el6.x86_64.rpm

CentOS 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-
client-dyn-latest.el7.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-dyn-latest.el7.x86_64.rpm

RHEL 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-
client-dyn-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-dyn-latest.el6.x86_64.rpm

RHEL 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-
client-dyn-latest.el7.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-dyn-latest.el7.x86_64.rpm

Ubuntu 16.04 LTS

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-
client-dyn_latest_amd64.deb

$ sudo dpkg -i cloudhsm-client-dyn_latest_amd64.deb

2. Después de realizar el paso anterior, puede encontrar el motor de OpenSSL en /opt/cloudhsm/


lib/libcloudhsm_openssl.so.
3. Utilice el siguiente comando para definir una variable de entorno denominada n3fips_password con
las credenciales de un usuario de criptografía (CU).

$ export n3fips_password=<HSM user name>:<password>

250
AWS CloudHSM Guía del usuario
Biblioteca de Java

Usar el motor dinámico de OpenSSL


Si desea usar el motor dinámico de AWS CloudHSM para OpenSSL desde la línea de comandos de
OpenSSL, utilice la opción -engine para especificar el motor dinámico de OpenSSL denominado
cloudhsm. Por ejemplo:

$ openssl s_server -cert server.crt -key server.key -engine cloudhsm

Si desea utilizar el motor dinámico de AWS CloudHSM para OpenSSL desde una aplicación integrada
de OpenSSL, asegúrese de que la aplicación utiliza el motor dinámico de OpenSSL denominado
cloudhsm. La biblioteca compartida para el motor dinámico se encuentra en /opt/cloudhsm/lib/
libcloudhsm_openssl.so.

Biblioteca de software de AWS CloudHSM para


Java
La biblioteca de software de AWS CloudHSM para Java es una implementación de proveedor para el
marco de proveedores de Sun Java JCE (Java Cryptography Extension). Incluye implementaciones para
interfaces y clases de motor en el estándar JCA (Java Cryptography Architecture). Para obtener más
información sobre cómo instalar y usar la biblioteca de Java, consulte los siguientes temas.

Temas
• Instalación y utilización de la biblioteca de software de AWS CloudHSM para Java (p. 251)
• Mecanismos admitidos (p. 256)
• Atributos de Java admitidos (p. 259)
• Muestras de código de la biblioteca de software de AWS CloudHSM para Java (p. 266)
• Uso de la clase KeyStore de Java en CloudHSM (p. 266)
• Uso del almacén de claves de AWS CloudHSM con herramientas de terceros (p. 269)

Instalación y utilización de la biblioteca de software de


AWS CloudHSM para Java
Si desea utilizar la biblioteca de software de AWS CloudHSM para Java, necesita el cliente de AWS
CloudHSM.

El cliente es un demonio establece una comunicación cifrada integral con los HSM del clúster. La biblioteca
de Java se comunica localmente con el cliente. Si no ha instalado y configurado el paquete de cliente
de AWS CloudHSM, hágalo ahora siguiendo los pasos de Instalar el cliente (Linux) (p. 35). Después de
instalar y configurar el cliente, utilice el siguiente comando para iniciarlo.

Tenga en cuenta que la biblioteca de software de AWS CloudHSM para Java solo se admite en Linux y en
los sistemas operativos compatibles.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

251
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de Java

CentOS 6

$ sudo start cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

Temas
• Instalación de la biblioteca de Java (p. 252)
• Validación de la instalación (p. 253)
• Proporcionar credenciales a la biblioteca de Java (p. 255)
• Conceptos básicos de administración de claves en la biblioteca de Java (p. 256)

Instalación de la biblioteca de Java


Utilice los comandos siguientes para descargar e instalar la biblioteca de Java de AWS CloudHSM. Esta
biblioteca solo se admite en Linux y en sistemas operativos compatibles.
Note

Para obtener actualizaciones, consulte Actualización del cliente (p. 398).

Amazon Linux

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
jce-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-jce-latest.el6.x86_64.rpm

Amazon Linux 2

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
jce-latest.el7.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-jce-latest.el7.x86_64.rpm

252
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de Java

CentOS 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
jce-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-jce-latest.el6.x86_64.rpm

CentOS 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
jce-latest.el7.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-jce-latest.el7.x86_64.rpm

RHEL 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
jce-latest.el6.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-jce-latest.el6.x86_64.rpm

RHEL 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
jce-latest.el7.x86_64.rpm

$ sudo yum install -y ./cloudhsm-client-jce-latest.el7.x86_64.rpm

Ubuntu 16.04 LTS

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-
client-jce_latest_amd64.deb

$ sudo dpkg -i cloudhsm-client-jce_latest_amd64.deb

Después de ejecutar los comandos anteriores, encontrará los siguientes archivos de la biblioteca de Java:

• /opt/cloudhsm/java/cloudhsm-version.jar
• /opt/cloudhsm/java/cloudhsm-test-version.jar
• /opt/cloudhsm/java/hamcrest-all-1.3.jar
• /opt/cloudhsm/java/junit.jar
• /opt/cloudhsm/java/log4j-api-2.8.jar
• /opt/cloudhsm/java/log4j-core-2.8.jar
• /opt/cloudhsm/lib/libcaviumjca.so

Validación de la instalación
Realice operaciones básicas en el HSM para validar la instalación.

253
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de Java

Para validar la instalación de la biblioteca de Java

1. (Opcional) Si todavía no tiene instalado Java en su entorno, ejecute el comando siguiente para
instalarlo.

Linux (and compatible libraries)

$ sudo yum install -y java-1.8.0-openjdk

Ubuntu

$ sudo apt-get install openjdk-8-jre

2. Utilice los siguientes comandos para definir las variables de entorno necesarias. Sustituya <nombre
de usuario de HSM> y <password> con las credenciales de un usuario de criptografía (CU).

$ export LD_LIBRARY_PATH=/opt/cloudhsm/lib

$ export HSM_PARTITION=PARTITION_1

$ export HSM_USER=<HSM user name>

$ export HSM_PASSWORD=<password>

3. Utilice el siguiente comando para ejecutar la prueba de funcionalidad básica. Si se ejecuta


correctamente, la salida del comando debería ser similar a la siguiente.

$ java8 -classpath "/opt/cloudhsm/java/*" org.junit.runner.JUnitCore


TestBasicFunctionality

JUnit version 4.11


.2018-08-20 17:53:48,514 DEBUG [main] TestBasicFunctionality
(TestBasicFunctionality.java:33) - Adding provider.
2018-08-20 17:53:48,612 DEBUG [main] TestBasicFunctionality
(TestBasicFunctionality.java:42) - Logging in.
2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:104) - Looking
for credentials in HsmCredentials.properties
2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:122) - Looking
for credentials in System.properties
2018-08-20 17:53:48,613 INFO [main] cfm2.LoginManager (LoginManager.java:130) - Looking
for credentials in System.env
SDK Version: 2.03
2018-08-20 17:53:48,655 DEBUG [main] TestBasicFunctionality
(TestBasicFunctionality.java:54) - Generating AES Key with key size 256.
2018-08-20 17:53:48,698 DEBUG [main] TestBasicFunctionality
(TestBasicFunctionality.java:63) - Encrypting with AES Key.
2018-08-20 17:53:48,705 DEBUG [main] TestBasicFunctionality
(TestBasicFunctionality.java:84) - Deleting AES Key.
2018-08-20 17:53:48,707 DEBUG [main] TestBasicFunctionality
(TestBasicFunctionality.java:92) - Logging out.

Time: 0.205

OK (1 test)

254
AWS CloudHSM Guía del usuario
Instalación de la biblioteca de Java

Proporcionar credenciales a la biblioteca de Java


Los HSM necesitan autenticar la aplicación de Java antes de que la aplicación pueda utilizarlos. Cada
aplicación puede utilizar una sesión. Los HSM autentican una sesión mediante el método de inicio de
sesión explícito o implícito.

Inicio de sesión explícito: este método le permite proporcionar credenciales de CloudHSM directamente
en la aplicación. Utiliza el método LoginManager.login(), en el que se pasa el nombre de usuario y la
contraseña del CU y el ID de la partición de HSM. Para obtener más información acerca de cómo utilizar el
método de inicio de sesión explícito, consulte el ejemplo de código de inicio de sesión en un HSM.

Inicio de sesión implícito: este método le permite configurar credenciales de CloudHSM en un archivo de
propiedades nuevo, en las propiedades del sistema o como variables de entorno.

• Archivo de propiedad es nuevo: cree un archivo nuevo denominado HsmCredentials.properties y


añádalo a la ruta CLASSPATH de la aplicación. El archivo debe contener lo siguiente:

HSM_PARTITION = PARTITION_1
HSM_USER = <HSM user name>
HSM_PASSWORD = <password>

• Propiedades del sistema: configure las credenciales a través de las propiedades del sistema cuando
ejecute la aplicación. En los siguientes ejemplos, se muestran dos maneras diferentes de hacerlo:

$ java -DHSM_PARTITION=PARTITION_1 -DHSM_USER=<HSM user name> -DHSM_PASSWORD=<password>

System.setProperty("HSM_PARTITION","PARTITION_1");
System.setProperty("HSM_USER","<HSM user name>");
System.setProperty("HSM_PASSWORD","<password>");

• Variables de entorno: configure las credenciales como variables de entorno.

$ export HSM_PARTITION=PARTITION_1
$ export HSM_USER=<HSM user name>
$ export HSM_PASSWORD=<password>

Es posible que las credenciales no estén disponibles si la aplicación no las proporciona o si se intenta
realizar una operación antes de que el HSM autentique la sesión. En esos casos, la biblioteca de software
de CloudHSM para Java busca las credenciales en el orden que se indica a continuación:

1. HsmCredentials.properties
2. Propiedades del sistema
3. Variables de entorno

Control de errores

El control de errores es más fácil con el método de inicio de sesión explícito que con el de inicio de
sesión implícito. Si utiliza la clase LoginManager, tendrá más control sobre el modo en que la aplicación
gestiona los errores. Con el método de inicio de sesión implícito, la gestión de errores resulta difícil de
comprender cuando las credenciales no son válidas o cuando los HSM tienen problemas en la sesión de
autenticación.

255
AWS CloudHSM Guía del usuario
Mecanismos admitidos

Conceptos básicos de administración de claves en la biblioteca


de Java
Los aspectos básicos de la administración de claves en la biblioteca de Java están relacionados con la
importación o la exportación de claves, la carga de claves por identificador o la eliminación de claves.
Para obtener más información acerca de la administración de claves, consulte el ejemplo de código de
administración de claves.

También puede encontrar más ejemplos de código de la biblioteca de Java en Muestras de Java (p. 266).

Mecanismos admitidos
Para obtener más información acerca de las interfaces y clases de motor del estándar JCA (Java
Cryptography Architecture) admitidas por AWS CloudHSM, consulte los siguientes temas.

Temas
• Claves compatibles (p. 256)
• Cifrados compatibles (p. 256)
• Resúmenes compatibles (p. 258)
• Algoritmos de código de autenticación de mensajes basado en hash (HMAC) compatibles (p. 259)
• Mecanismos de firma y verificación compatibles (p. 259)

Claves compatibles
La biblioteca de software de AWS CloudHSM para Java le permite generar los siguientes tipos de claves.

• RSA: claves RSA de 2048 a 4096 bits, en incrementos de 256 bits.


• AES: claves AES de 128, 192 y 256 bits.
• Pares de claves ECC para curvas de NIST secp256r1 (P-256), secp384r1 (P-384) y secp256k1
(Blockchain).

Además de los parámetros estándar, admitimos los siguientes parámetros para cada clave que se genere.

• Label: etiqueta de clave que puede utilizar para buscar claves.


• isExtractable: indica si la clave se puede exportar desde el HSM.
• isPersistent: indica si la clave permanece en el HSM cuando finaliza la sesión en curso.

Note

La versión 3.1 de la biblioteca de Java permite especificar parámetros con mayor detalle. Para
obtener más información, consulte este artículo sobre los atributos de Java admitidos (p. 259).

Cifrados compatibles
La biblioteca de software de AWS CloudHSM para Java es compatible con las siguientes combinaciones
de algoritmos, modos y rellenos.

Algoritmo Modo Rellenado Notas

AES CBC AES/CBC/NoPadding Implementa


Cipher.ENCRYPT_MODE

256
AWS CloudHSM Guía del usuario
Mecanismos admitidos

Algoritmo Modo Rellenado Notas


AES/CBC/ y
PKCS5Padding Cipher.DECRYPT_MODE.

AES ECB AES/ECB/NoPadding Implementa


Cipher.ENCRYPT_MODE
AES/ECB/ y
PKCS5Padding Cipher.DECRYPT_MODE.
Utiliza AES de
transformación.

AES CTR AES/CTR/NoPadding Implementa


Cipher.ENCRYPT_MODE
y
Cipher.DECRYPT_MODE.

AES GCM AES/GCM/NoPadding Implementa


Cipher.ENCRYPT_MODE,
Cipher.DECRYPT_MODE,
Cipher.WRAP_MODE y
Cipher.UNWRAP_MODE.

Al realizar el cifrado
AES-GCM, el HSM
no tiene en cuenta el
vector de inicialización
(IV) de la solicitud y
utiliza un IV que él
mismo genera. Una vez
que se ha completado
la operación,
deberá llamar a
Cipher.getIV() para
obtener el IV.

AESWrap ECB AESWrap/ECB/ Implementa


ZeroPadding Cipher.WRAP_MODE y
Cipher.UNWRAP_MODE.
AESWrap/ECB/ Utiliza AES de
NoPadding transformación.

AESWrap/ECB/
PKCS5Padding

DESede (Triple DES) CBC DESede/CBC/ Implementa


NoPadding Cipher.ENCRYPT_MODE
y
DESede/CBC/ Cipher.DECRYPT_MODE.
PKCS5Padding
Las rutinas de
generación de claves
aceptan un tamaño
de 168 o 192 bits. Sin
embargo, internamente,
todas las claves
DESede son de 192
bits.

257
AWS CloudHSM Guía del usuario
Mecanismos admitidos

Algoritmo Modo Rellenado Notas

DESede (Triple DES) ECB DESede/ECB/ Implementa


NoPadding Cipher.ENCRYPT_MODE
y
DESede/ECB/ Cipher.DECRYPT_MODE.
PKCS5Padding
Las rutinas de
generación de claves
aceptan un tamaño
de 168 o 192 bits. Sin
embargo, internamente,
todas las claves
DESede son de 192
bits.

RSA ECB RSA/ECB/NoPadding Implementa


Cipher.ENCRYPT_MODE
RSA/ECB/ y
PKCS1Padding Cipher.DECRYPT_MODE.

RSA ECB RSA/ECB/ Implementa


OAEPPadding Cipher.ENCRYPT_MODE,
Cipher.DECRYPT_MODE,
RSA/ECB/ Cipher.WRAP_MODE y
OAEPWithSHA-1ANDMGF1Padding
Cipher.UNWRAP_MODE.

RSA/ECB/ OAEPPadding es OAEP


OAEPPadding con el tipo de rellenado
SHA-1.
RSA/ECB/
OAEPWithSHA-224ANDMGF1Padding

RSA/ECB/
OAEPWithSHA-256ANDMGF1Padding

RSA/ECB/
OAEPWithSHA-384ANDMGF1Padding

RSA/ECB/
OAEPWithSHA-512ANDMGF1Padding

RSAAESWrap ECB OAEPPADDING Implementa


Cipher.WRAP_Mode y
Cipher.UNWRAP_MODE.

Resúmenes compatibles
La biblioteca de software de AWS CloudHSM para Java es compatible con los siguientes resúmenes de
mensajes.

• SHA-1
• SHA-224
• SHA-256
• SHA-384
• SHA-512

258
AWS CloudHSM Guía del usuario
Atributos de Java admitidos

Note
A los datos con una longitud inferior a 16 KB se les aplica la función hash en el HSM, mientras
que a los de mayor tamaño se les aplica localmente mediante software.

Algoritmos de código de autenticación de mensajes basado en


hash (HMAC) compatibles
La biblioteca de software de AWS CloudHSM para Java es compatible con los siguientes algoritmos de
HMAC.

• HmacSHA1
• HmacSHA224
• HmacSHA256
• HmacSHA384
• HmacSHA512

Mecanismos de firma y verificación compatibles


La biblioteca de software de AWS CloudHSM para Java es compatible con los siguientes tipos de firmas y
de verificación.

Tipos de firma RSA

• NONEwithRSA
• SHA1withRSA
• SHA224withRSA
• SHA256withRSA
• SHA384withRSA
• SHA512withRSA
• SHA1withRSA/PSS
• SHA224withRSA/PSS
• SHA256withRSA/PSS
• SHA384withRSA/PSS
• SHA512withRSA/PSS

Tipos de firma ECDSA

• NONEwithECDSA
• SHA1withECDSA
• SHA224withECDSA
• SHA256withECDSA
• SHA384withECDSA
• SHA512withECDSA

Atributos de Java admitidos


En este tema, se describe cómo puede utilizar una extensión propia con la versión 3.1 de la biblioteca
de Java para establecer atributos de clave. Utilice esta extensión para establecer los atributos de clave
admitidos y sus valores durante estas operaciones:

259
AWS CloudHSM Guía del usuario
Atributos de Java admitidos

• Generación de claves
• Importación de claves
• Desencapsulamiento de claves

Note

La extensión para establecer atributos de clave personalizados es una característica opcional. Si


ya tiene un código que funciona en la versión 3.0 de la biblioteca de Java , no es necesario que lo
modifique. Las claves que cree seguirán teniendo los mismos atributos que antes.

Temas
• Descripción de los atributos (p. 260)
• Atributos admitidos (p. 260)
• Configuración de atributos para claves (p. 262)
• Resumen global (p. 264)

Descripción de los atributos


Los atributos de clave se utilizan para especificar qué acciones se permiten en objetos relacionados con
las claves, como claves públicas, privadas o secretas. Los atributos y valores de clave se definen durante
las operaciones de creación de objetos de clave.

Sin embargo, Java Cryptography Extension (JCE) no especifica cómo deben establecerse los valores de
los atributos de clave, por lo que, de forma predeterminada, se permiten la mayoría de las acciones. Por
el contrario, el estándar PKCS #11 define un completo conjunto de atributos con valores predeterminados
más restrictivos. A partir de la versión 3.1 de la biblioteca de Java, CloudHSM cuenta con una extensión
propia que permite establecer valores más restrictivos para los atributos que se usan habitualmente.

Atributos admitidos
Puede establecer valores para los atributos que aparecen en la tabla siguiente. Es recomendable que
solamente establezca valores para los atributos que desee hacer más restrictivos. Si no se especifica
ningún valor, CloudHSM utilizará el valor predeterminado que se indica en la tabla siguiente. Las celdas
vacías de la columna «Valor predeterminado» indican que no hay ningún valor predeterminado específico
asignado al atributo.

Atributo Valor predeterminado Notas

  Clave simétrica Clave pública Clave privada  


del par de claves del par de claves

CKA_TOKEN FALSE FALSE FALSE Clave permanente


que se replica en
todos los HSM del
clúster y se incluye
en las copias
de seguridad.
CKA_TOKEN =
FALSE implica el
uso de una clave
de sesión, que se
carga en un único
HSM y se borra
automáticamente

260
AWS CloudHSM Guía del usuario
Atributos de Java admitidos

Atributo Valor predeterminado Notas


cuando se
interrumpe la
conexión con ese
HSM.

CKA_LABEL     Cadena definida


por el usuario.
Permite identificar
fácilmente las
claves en el HSM.

CKA_EXTRACTABLE TRUE   TRUE True indica que


esta clave se
puede exportar
fuera del HSM.

CKA_ENCRYPT TRUE TRUE   True indica que


la clave se puede
utilizar para cifrar
cualquier búfer.

CKA_DECRYPT TRUE   TRUE True indica que


la clave se puede
utilizar para
descifrar cualquier
búfer. Por lo
general, cuando
una clave tiene
el valor True en
CKA_WRAP, se
utiliza el valor
FALSE.

CKA_WRAP TRUE TRUE   True indica


que la clave se
puede utilizar
para encapsular
otra clave. Por
lo general, se
utilizará el valor
FALSE con las
claves privadas.

CKA_UNWRAP TRUE   TRUE True indica que


la clave se puede
utilizar para
desencapsular
(importar) otra
clave.

261
AWS CloudHSM Guía del usuario
Atributos de Java admitidos

Atributo Valor predeterminado Notas

CKA_SIGN TRUE   TRUE True indica que


la clave se puede
utilizar para firmar
un resumen
del mensaje.
Normalmente,
se utiliza el valor
FALSE con las
claves públicas y
privadas que se
han archivado.

CKA_VERIFY TRUE TRUE   True indica que


la clave se puede
utilizar para
verificar una firma.
Normalmente,
se utiliza el valor
FALSE con las
claves privadas.

CKA_PRIVATE TRUE TRUE TRUE True indica que


es posible que
los usuarios no
tengan acceso a
la clave hasta que
se autentiquen. Es
decir, los usuarios
no pueden acceder
a ninguna clave de
CloudHSM hasta
que se autentican,
incluso aunque
este atributo esté
establecido en
FALSE.

Note

La compatibilidad con los atributos de la biblioteca PKCS #11 es más amplia. Para obtener más
información, consulte Atributos de PKCS #11 admitidos (p. 236).

Configuración de atributos para claves


CloudHsmKeyAttributesMap es un objeto similar a Java Map, que puede usar para establecer valores
de atributo en los objetos de clave. Los métodos de la función CloudHsmKeyAttributesMap son iguales
que los métodos que se utilizan para manipular mapas de Java.

Si desea establecer valores personalizados en los atributos, tiene dos opciones:

• Utilizar los métodos que se indican en la tabla siguiente


• Utilizar los modelos de Builder que se ilustran más adelante en este documento

Los objetos de mapa de atributos admiten los siguientes métodos para establecer atributos:

262
AWS CloudHSM Guía del usuario
Atributos de Java admitidos

Operation Valor de retorno Método


CloudHSMKeyAttributesMap

Obtener el valor de un atributo de Objeto (que contiene el valor) o get(keyAttribute)


clave para una clave existente null

Rellenar el valor de un atributo Valor anterior asociado con el put(keyAttribute, valor)


de clave atributo de clave o null si no
había ninguna asignación de un
atributo de clave

Rellenar valores en varios N/A putAll(keyAttributesMap)


atributos de clave

Eliminar un par clave-valor del Valor anterior asociado con el remove(keyAttribute)


mapa de atributos atributo de clave o null si no
había ninguna asignación de un
atributo de clave

Note
Los atributos que no se especifican explícitamente se establecen en los valores predeterminados
que se indican en la tabla anterior de the section called “Atributos admitidos” (p. 260).

Ejemplo de modelo de Builder


Por lo general, a los desarrolladores les resultará más cómodo utilizar las clases a través del modelo
Builder. Por ejemplo:

import com.amazonaws.cloudhsm.CloudHsmKeyAttributes;
import com.amazonaws.cloudhsm.CloudHsmKeyAttributesMap;
import com.amazonaws.cloudhsm.CloudHsmKeyPairAttributesMap;

CloudHsmKeyAttributesMap keyAttributesSessionDecryptionKey =
new CloudHsmKeyAttributesMap.Builder()
.put(CloudHsmKeyAttributes.CKA_LABEL, "ExtractableSessionKeyEncryptDecrypt")
.put(CloudHsmKeyAttributes.CKA_WRAP, false)
.put(CloudHsmKeyAttributes.CKA_UNWRAP, false)
.put(CloudHsmKeyAttributes.CKA_SIGN, false)
.put(CloudHsmKeyAttributes.CKA_VERIFY, false)
.build();

CloudHsmKeyAttributesMap keyAttributesTokenWrappingKey =
new CloudHsmKeyAttributesMap.Builder()
.put(CloudHsmKeyAttributes.CKA_LABEL, "TokenWrappingKey")
.put(CloudHsmKeyAttributes.CKA_TOKEN, true)
.put(CloudHsmKeyAttributes.CKA_ENCRYPT, false)
.put(CloudHsmKeyAttributes.CKA_DECRYPT, false)
.put(CloudHsmKeyAttributes.CKA_SIGN, false)
.put(CloudHsmKeyAttributes.CKA_VERIFY, false)
.build();

Es posible que los desarrolladores utilicen también conjunto de atributos para aplicar con mayor
comodidad las prácticas recomendadas para las plantillas de claves. Por ejemplo:

//best practice template for wrapping keys

CloudHsmKeyAttributesMap commonKeyAttrs = new CloudHsmKeyAttributesMap.Builder()


.put(CloudHsmKeyAttributes.CKA_EXTRACTABLE, false)
.put(CloudHsmKeyAttributes.CKA_DECRYPT, false)

263
AWS CloudHSM Guía del usuario
Atributos de Java admitidos

.build();

// initialize a new instance of CloudHsmKeyAttributesMap by copying commonKeyAttrs


// but with an appropriate label

CloudHsmKeyAttributesMap firstKeyAttrs = new CloudHsmKeyAttributesMap(commonKeyAttrs);


firstKeyAttrs.put(CloudHsmKeyAttributes.CKA_LABEL, "key label");

// alternatively, putAll() will overwrite existing values to enforce conformance

CloudHsmKeyAttributesMap secondKeyAttrs = new CloudHsmKeyAttributesMap();


secondKeyAttrs.put(CloudHsmKeyAttributes.CKA_DECRYPT, true);
secondKeyAttrs.put(CloudHsmKeyAttributes.CKA_ENCRYPT, true);
secondKeyAttrs.put(CloudHsmKeyAttributes.CKA_LABEL, “safe wrapping key”);
secondKeyAttrs.putAll(commonKeyAttrs); // will overwrite CKA_DECRYPT to be FALSE

Configuración de atributos para un par de claves


Utilice la clase CloudHsmKeyPairAttributesMap de Java para administrar los atributos
de clave de un par de claves. CloudHsmKeyPairAttributesMap encapsula dos objetos
CloudHsmKeyAttributesMap: uno para una clave pública y otro para una clave privada.

Para establecer por separado atributos específicos en la clave pública y en la clave privada, puede utilizar
el método put() en el objeto de mapa CloudHsmKeyAttributes que corresponda a esa clave. Utilice
el método getPublic() para recuperar el mapa de atributos de la clave pública y utilice getPrivate()
para recuperar el mapa de atributos de la clave privada. Puede rellenar el valor de varios atributos de clave
a la vez tanto de pares de claves públicas como de pares de claves privadas utilizando putAll() con un
mapa de atributos de pares de claves como argumento.

Ejemplo de modelo de Builder


Por lo general, a los desarrolladores les resultará más cómodo establecer los atributos de clave a través
del modelo Builder. Por ejemplo:

import com.amazonaws.cloudhsm.CloudHsmKeyAttributes;
import com.amazonaws.cloudhsm.CloudHsmKeyAttributesMap;
import com.amazonaws.cloudhsm.CloudHsmKeyPairAttributesMap;

//specify attributes up-front


CloudHsmKeyAttributesMap keyAttributes =
new CloudHsmKeyAttributesMap.Builder()
.put(CloudHsmKeyAttributes.CKA_SIGN, false)
.put(CloudHsmKeyAttributes.CKA_LABEL, "PublicCertSerial12345")
.build();

CloudHsmKeyPairAttributesMap keyPairAttributes =
new CloudHsmKeyPairAttributesMap.Builder()
.withPublic(keyAttributes)
.withPrivate(
new CloudHsmKeyAttributesMap.Builder() //or specify them inline
.put(CloudHsmKeyAttributes.CKA_LABEL, "PrivateCertSerial12345")
.put (CloudHSMKeyAttributes.CKA_WRAP, FALSE)
.build()
)
.build();

Resumen global
Para especificar atributos de clave con operaciones de claves, siga estos pasos:

1. Crear una instancia de CloudHsmKeyAttributesMap para las claves simétricas o de


CloudHsmKeyPairAttributesMap para los pares de claves.

264
AWS CloudHSM Guía del usuario
Atributos de Java admitidos

2. Defina el objeto attributes en el paso 1 con los atributos de clave y los valores que corresponda.
3. Cree una instancia de la clase Cavium*ParameterSpec que corresponda al tipo de clave específico
y pase este objeto de atributos configurado a su constructor.
4. Pase este objeto Cavium*ParameterSpec a la clase o el método criptográfico que corresponda.

Si necesita más información, la tabla siguiente contiene las clases y métodos de


Cavium*ParameterSpec que admiten atributos de clave personalizados.

Tipo de clave Clase de especificación de Constructores de ejemplo


parámetros

Clase base CaviumKeyGenAlgorithmParameterSpec


CaviumKeyGenAlgorithmParameterSpec(C
keyAttributesMap)

DES CaviumDESKeyGenParameterSpec
CaviumDESKeyGenParameterSpec(int
keySize, byte[] iv,
CloudHsmKeyAttributesMap
keyAttributesMap)

RSA CaviumRSAKeyGenParameterSpec
CaviumRSAKeyGenParameterSpec(int
keysize, BigInteger
publicExponent,
CloudHsmKeyPairAttributesMap
keyPairAttributesMap)

secreta CaviumGenericSecretKeyGenParameterSpec
CaviumGenericSecretKeyGenParameterSp
size,
CloudHsmKeyAttributesMap
keyAttributesMap)

AES CaviumAESKeyGenParameterSpec
CaviumAESKeyGenParameterSpec(int
keySize, byte[] iv,
CloudHsmKeyAttributesMap
keyAttributesMap)

EC CaviumECGenParameterSpec CaviumECGenParameterSpec(String
stdName,
CloudHsmKeyPairAttributesMap
keyPairAttributesMap)

Código de muestra: generar y encapsular una clave


En estos breves ejemplos de código, se muestran los pasos de dos operaciones diferentes: generación de
claves y encapsulamiento de claves:

// Set up the desired key attributes

KeyGenerator keyGen = KeyGenerator.getInstance("AES", "Cavium");


CaviumAESKeyGenParameterSpec keyAttributes = new CaviumAESKeyGenParameterSpec(
256,
new CloudHsmKeyAttributesMap.Builder()
.put(CloudHsmKeyAttributes.CKA_LABEL, "MyPersistentAESKey")
.put(CloudHsmKeyAttributes.CKA_EXTRACTABLE, true)
.put(CloudHsmKeyAttributes.CKA_TOKEN, true)
.build()
);

265
AWS CloudHSM Guía del usuario
Muestras de Java

// Assume we already have a handle to the myWrappingKey


// Assume we already have the wrappedBytes to unwrap

// Unwrap a key using Custom Key Attributes

CaviumUnwrapParameterSpec unwrapSpec = new


CaviumUnwrapParameterSpec(myInitializationVector, keyAttributes);

Cipher unwrapCipher = Cipher.getInstance("AESWrap", "Cavium");


unwrapCipher.init(Cipher.UNWRAP_MODE, myWrappingKey, unwrapSpec);
Key unwrappedKey = unwrapCipher.unwrap(wrappedBytes, "AES", Cipher.SECRET_KEY);

Muestras de código de la biblioteca de software de


AWS CloudHSM para Java
Requisitos previos para el código de muestra
Antes de ejecutar los ejemplos, siga estos pasos para configurar el entorno:

• Instale y configure la biblioteca de software de AWS CloudHSM para Java (p. 251) y el paquete de
cliente de AWS CloudHSM (p. 35).
• Configure un nombre de usuario y contraseña de HSM (p. 54) válidos. Los permisos del usuario
criptográfico (CU) son suficientes para estas tareas. La aplicación utiliza estas credenciales para iniciar
sesión en el HSM en cada ejemplo.
• Decida cómo especificar el proveedor Cavium.

Ejemplos de código
En los siguientes ejemplos de código de Java, se muestra cómo se utiliza la biblioteca de software de
AWS CloudHSM sobre Java (p. 251) para realizar tareas básicas en AWS CloudHSM. Encontrará más
ejemplos de código en GitHub.

• Inicio de sesión en un HSM


• Administración de claves
• Generación de una clave AES
• Cifrado y descifrado de datos con AES-GCM
• Cómo encapsular y desencapsular claves con AES
• Cómo encapsular y desencapsular claves con RSA
• Enumeración del almacén de claves
• Firma de mensajes en una muestra con varios subprocesos
• Utilice JCE en lugar de OpenSSL para realizar la derivación de claves de ECDH
• Uso del almacén de claves de CloudHSM
• Cifrar y descifrar con D3DES ECB
• Cifrar y descifrar con AES_CTR
• Encapsulamiento y desencapsulamiento de claves con AES-GCM

Uso de la clase KeyStore de Java en CloudHSM


La clase KeyStore de AWS CloudHSM proporciona un almacén de claves PKCS12 para usos especiales
que permite obtener acceso a las claves de AWS CloudHSM a través de aplicaciones, como keytool y

266
AWS CloudHSM Guía del usuario
KeyStore de CloudHSM

jarsigner. Este almacén de claves puede almacenar certificados junto con datos de la clave y relacionar
estos certificados con los datos de clave que están almacenados en AWS CloudHSM.
Note
Como los certificados son información pública, para maximizar la capacidad de almacenamiento
de las claves criptográficas, AWS CloudHSM no permite almacenar certificados en los HSM.

La clase KeyStore de AWS CloudHSM implementa la interfaz de proveedor de servicios (SPI) KeyStore
de Java Cryptography Extension (JCE). Para obtener más información sobre el uso de KeyStore,
consulte Clase KeyStore.

Elegir el almacén de claves apropiado


El SDK de Java de AWS CloudHSM viene con un almacén de claves predeterminado de paso a través y
solo lectura que pasa todas las transacciones al HSM. Este almacén de claves predeterminado es distinto
del almacén de claves de AWS CloudHSM para usos especiales. En la mayoría de los casos, obtendrá
mejor rendimiento en tiempo de ejecución con el valor predeterminado. Solo debe utilizar el almacén
de claves de AWS CloudHSM con las aplicaciones en las que es necesario tener compatibilidad con
certificados y operaciones basadas en certificados, además de descargar operaciones de claves en el
HSM.

Aunque los dos almacenes de claves utilizan el proveedor Cavium JCE para las operaciones, son
entidades independientes y no intercambian información entre sí.

Cargue el almacén de claves predeterminado para la aplicación Java de la siguiente manera:

KeyStore ks = KeyStore.getInstance("Cavium");

Cargue el almacén de claves de CloudHSM para usos especiales de la siguiente manera:

KeyStore ks = KeyStore.getInstance("CloudHSM")

Inicialización del almacén de claves de AWS CloudHSM


Inicie sesión en el almacén de claves de AWS CloudHSM de la misma manera que inicia sesión en el
proveedor de JCE para AWS CloudHSM. Puede utilizar variables de entorno o el archivo de propiedades
del sistema, aunque debe iniciar sesión antes de empezar a usar el almacén de claves de CloudHSM. Para
ver un ejemplo de inicio de sesión en un HSM con JCE, consulte Iniciar sesión en un HSM.

Si lo desea, puede especificar una contraseña para cifrar el archivo PKCS12 local que contiene los
datos del almacén de claves. Cuando se crea el almacén de claves de AWS CloudHSM, se establece la
contraseña, que se proporciona cuando se utilizan los métodos load, set y get.

Para crear instancias de un nuevo objeto KeyStore de CloudHSM, haga lo siguiente:

ks.load(null, null);

Para escribir los datos del almacén de claves en un archivo, utilice el método store. A partir de ese
momento, puede cargar el almacén de claves existente utilizando el método load con el archivo de origen
y la contraseña de la siguiente manera:

ks.load(inputStream, password);

Uso del objeto KeyStore de CloudHSM


El objeto KeyStore de CloudHSM se utiliza generalmente a través de una aplicación de terceros, como
jarsigner o keytool. También puede obtener acceso al objeto directamente a través del código.

267
AWS CloudHSM Guía del usuario
KeyStore de CloudHSM

El objeto KeyStore de AWS CloudHSM se ajusta a la especificación de la clase KeyStore de JCE y


proporciona las siguientes funciones.

• load

Carga el almacén de claves a partir de la secuencia de entrada especificada. Si se estableció una


contraseña al guardar el almacén de claves, debe proporcionarse esta misma contraseña para que la
carga se realice correctamente. Establezca los dos parámetros en null para inicializar un nuevo almacén
de claves vacío.

KeyStore ks = KeyStore.getInstance("CloudHSM");
ks.load(inputStream, password);

• aliases

Devuelve una enumeración de los nombres de alias de todas las entradas de la instancia especificada
del almacén de claves. Los resultados incluyen objetos almacenados localmente en el archivo PKCS12 y
objetos residentes en el HSM.

Código de muestra:

KeyStore ks = KeyStore.getInstance("CloudHSM");
for(Enumeration<String> entry = ks.aliases(); entry.hasMoreElements();)
{
String label = entry.nextElement();
System.out.println(label);
}

• ContainsAlias

Devuelve true si el almacén de claves tiene acceso al menos a un objeto con el alias especificado. El
almacén de claves comprueba los objetos almacenados localmente en el archivo PKCS12 y los objetos
residentes en el HSM.
• DeleteEntry

Elimina una entrada de certificado del archivo PKCS12 local. No se pueden eliminar datos de claves
almacenados en un HSM utilizando el objeto KeyStore de AWS CloudHSM. Puede eliminar las claves
con la herramienta key_mgmt_util de CloudHSM.
• GetCertificate

Devuelve el certificado asociado a un alias, si está disponible. Si el alias no existe o hace referencia a un
objeto que no es un certificado, la función devuelve NULL.

KeyStore ks = KeyStore.getInstance("CloudHSM");
Certificate cert = ks.getCertificate(alias)

• GetCertificateAlias

Devuelve el nombre (alias) de la primera entrada del almacén de claves cuyos datos coinciden con el
certificado especificado.

KeyStore ks = KeyStore.getInstance("CloudHSM");
String alias = ks.getCertificateAlias(cert)

• GetCertificateChain

Devuelve la cadena de certificados asociada con el alias especificado. Si el alias no existe o hace
referencia a un objeto que no es un certificado, la función devuelve NULL.
• GetCreationDate

268
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

Devuelve la fecha de creación de la entrada identificada por el alias especificado. Si no hay disponible
ninguna fecha de creación, la función devuelve la fecha en la que el certificado pasó a ser válido.
• GetKey

GetKey se pasa al HSM y devuelve un objeto de clave que se corresponde con la etiqueta especificada.
Como getKey consulta directamente el HSM, puede utilizarse con cualquier clave del HSM,
independientemente de si la generó KeyStore.

Key key = ks.getKey(keyLabel, null);

• IsCertificateEntry

Comprueba si la entrada con el alias especificado representa una entrada de certificado.


• IsKeyEntry

Comprueba si la entrada con el alias especificado representa una entrada de clave. La acción busca el
alias tanto en el archivo PKCS12 como en el HSM.
• SetCertificateEntry

Asigna el certificado especificado al alias proporcionado. Si el alias proporcionado ya se utiliza para


identificar una clave o un certificado, se inicia una excepción KeyStoreException. Puede utilizar el
código de JCE para obtener el objeto de clave y después utilizar el método SetKeyEntry del almacén
de claves para asociar el certificado a la clave.
• SetKeyEntry con una clave byte[]

Asigna la clave de matriz de bytes especificada al alias proporcionado almacenándola dentro de HSM
como una clave genérica con el alias proporcionado.
• SetKeyEntry con un objeto Key

Asigna la clave especificada al alias proporcionado y la almacena dentro del HSM. Si el objeto Key no es
de tipo CaviumKey, la clave se importa en el HSM como clave de sesión extraíble.

Si el objeto Key es de tipo PrivateKey, debe ir acompañado de la cadena de certificados


correspondiente.

Si el alias ya existe, la llamada a SetKeyEntry inicia una excepción KeyStoreException y evita que
la clave se sobrescriba. Si es necesario sobrescribir la clave, utilice KMU o JCE para ese propósito.
• EngineSize

Devuelve el número de entradas del almacén de claves.


• Store

Guarda el almacén de claves en el flujo de salida especificado como un archivo PKCS12 y lo protege
con la contraseña proporcionada. Además, conserva todas las claves cargadas (que se establecen
mediante llamadas a setKey).

Uso del almacén de claves de AWS CloudHSM con


herramientas de terceros
El almacena de claves de AWS CloudHSM es un almacén de claves de JCE para usos especiales que
utiliza certificados asociados con claves del HSM a través de herramientas de terceros, como keytool
y jarsigner. AWS CloudHSM no almacena los certificados del HSM, ya que los certificados no son
datos confidenciales, sino públicos. El almacén de claves de AWS CloudHSM guarda los certificados en un
archivo local y los asigna a las claves correspondientes del HSM.

269
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

Cuando utiliza el almacén de claves de AWS CloudHSM para generar nuevas claves, no se generan
entradas en el archivo del almacén de claves local, sino que las claves se crean en el HSM. Del mismo
modo, cuando utiliza el almacén de claves de AWS CloudHSM para buscar claves, la búsqueda se
transfiere al HSM. Cuando almacena certificados en el almacén de claves de AWS CloudHSM, el
proveedor comprueba que existe un par de claves con el alias correspondiente en el HSM y asocia el
certificado proporcionado con el par de claves correspondiente.

Temas
• Requisitos previos (p. 270)
• Uso del almacén de claves de AWS CloudHSM con Keytool (p. 271)
• Uso del almacén de claves de AWS CloudHSM con Jarsigner (p. 274)
• Problemas conocidos (p. 275)
• Registro de claves preexistentes con el almacén de claves de AWS CloudHSM (p. 275)

Requisitos previos
Para usar el almacén de claves de AWS CloudHSM, primero debe inicializar y configurar el SDK de JCE
para AWS CloudHSM.

Paso 1: Instalar JCE


Si desea instalar JCE, incluidos los requisitos previos del cliente de AWS CloudHSM, siga los mismos
pasos que para instalar la biblioteca de Java (p. 251).

Paso 2: Agregar credenciales de inicio de sesión de HSM a variables de entorno


Configure las variables de entorno para que contengan las credenciales de inicio de sesión de HSM.

export HSM_PARTITION=PARTITION_1
export HSM_USER=<HSM user name>
export HSM_PASSWORD=<HSM password>

Note

La JCE de CloudHSM dispone de varias opciones de inicio de sesión. Para usar el almacén de
claves de AWS CloudHSM con aplicaciones de terceros, debe utilizar el inicio de sesión implícito
con las variables de entorno. Si desea usar el inicio de sesión explícito a través del código de la
aplicación, debe crear su propia aplicación usando el almacén de claves de AWS CloudHSM.
Para obtener más información, consulte el artículo sobre el uso del almacén de claves de AWS
CloudHSM (p. 266).

Paso 3: Registrar el proveedor de JCE


Para registrar el proveedor de JCE, en la configuración de Java CloudProvider:

1. Abra el archivo de configuración java.security de la instalación de Java para editarlo.


2. En el archivo de configuración java.security, agregue com.cavium.provider.CaviumProvider
como último proveedor. Por ejemplo, si hay nueve proveedores en el archivo java.security, agregue el
siguiente proveedor como último proveedor de la sección. Si el proveedor de Cavium se agregara con
una prioridad mayor, el rendimiento del sistema podría verse negativamente afectado.

security.provider.10=com.cavium.provider.CaviumProvider

270
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

Note

Es posible que los usuarios avanzados estén acostumbrados a especificar las opciones -
providerpath, -providerName y -providerclass de la línea de comandos cuando
utilizan keytool en lugar de actualizar el archivo de configuración de seguridad. Si intenta
especificar las opciones de línea de comandos al generar claves con el almacén de claves de
AWS CloudHSM, se producirán errores.

Uso del almacén de claves de AWS CloudHSM con Keytool


Keytool es una conocida utilidad de línea de comandos para tareas comunes de claves y certificados en
los sistemas Linux. La documentación de AWS CloudHSM no pretende ser un tutorial completo sobre
keytool. En este artículo, se explican los parámetros específicos que debe utilizar con diferentes funciones
de keytool al utilizar AWS CloudHSM como raíz de confianza a través del almacén de claves de AWS
CloudHSM.

Cuando utilice keytool con el almacén de claves de AWS CloudHSM, especifique los siguientes
argumentos en cualquier comando de keytool:

-storetype CLOUDHSM \
-J-classpath '-J/opt/cloudhsm/java/*' \
-J-Djava.library.path=/opt/cloudhsm/lib

Si desea crear un nuevo archivo para guardar las claves utilizando el almacén de claves de AWS
CloudHSM, consulte Uso del almacén de claves de AWS CloudHSM. Si desea utilizar un almacén de
claves existente, especifique el nombre (incluida la ruta) con el argumento —keystore en keytool. Si
especifica un archivo de almacén de claves que no existe en un comando de keytool, el almacén de claves
de AWS CloudHSM creará un nuevo archivo.

Crear nuevas claves con keytool


Puede usar keytool para generar cualquier tipo de clave admitida por el SDK para JCE de AWS
CloudHSM. Vea la lista completa de claves junto con su longitud en el artículo de claves admitidas de la
biblioteca de Java.
Important

En el software se genera una clave a través de keytool y se importa en AWS CloudHSM como
una clave extraíble y persistente.

Puede ver las instrucciones para crear claves no extraíbles directamente en el HSM y utilizarlas luego con
keytool o Jarsigner en el ejemplo de código de Registrar claves preexistentes con el almacén de claves
de AWS CloudHSM (p. 275). Le recomendamos encarecidamente que genere las claves no exportables
fuera de keytool y que después importe los certificados correspondientes en el almacén de claves. Si utiliza
claves RSA o EC extraíbles a través de keytool y jarsigner, los proveedores exportarán las claves de AWS
CloudHSM y las utilizarán localmente en las operaciones de firma.

Si tiene varias instancias de cliente conectadas al clúster de CloudHSM, tenga en cuenta que, aunque
se importe un certificado en el almacén de claves de una instancia del cliente, los certificados no estarán
disponibles automáticamente en otras instancias del cliente. Para registrar la clave y los certificados
asociados en cada instancia del cliente, debe ejecutar una aplicación Java, tal y como se describe en
Generar una CSR usando Keytool (p. 272). Si lo desea, también puede realizar los cambios necesarios
en un cliente y copiar el archivo de almacén de claves resultante en las demás instancias del cliente.

Ejemplo 1: generar una clave AES-256 simétrica con la etiqueta «my_secret» y guardarla en un archivo de
almacén de claves llamado «my_keystore.store» en el directorio de trabajo.

271
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

keytool -genseckey -alias my_secret -keyalg aes \


-keysize 256 -keystore my_keystore.store \
-storetype CloudHSM -J-classpath '-J/opt/cloudhsm/java/*' \
-J-Djava.library.path=/opt/cloudhsm/lib/

Ejemplo 2: generar un par de claves RSA 2048 con la etiqueta «my_rsa_key_pair» y guardarlo en un
archivo de almacén de claves llamado «my_keystore.store» del directorio de trabajo.

keytool -genkeypair -alias my_rsa_key_pair \


-keyalg rsa -keysize 2048 \
-sigalg sha512withrsa \
-keystore my_keystore.store \
-storetype CLOUDHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*’ \
-J-Djava.library.path=/opt/cloudhsm/lib/

Ejemplo 3: generar una clave p256 ED con la etiqueta «my_ec_key_pair» y guardarla en un archivo de
almacén de claves llamado «my_keystore.store» del directorio de trabajo.

keytool -genkeypair -alias my_ec_key_pair \


-keyalg ec -keysize 256 \
-sigalg SHA512withECDSA \
-keystore my_keystore.store \
-storetype CLOUDHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*’ \
-J-Djava.library.path=/opt/cloudhsm/lib/

Encontrará una lista de los algoritmos de firma compatibles en la biblioteca de Java.

Eliminar una clave con keytool


El almacén de AWS CloudHSM claves no permite eliminar claves. Para eliminar una clave, debe utilizar la
función deleteKey de la herramienta de línea de comandos de AWS CloudHSM: deleteKey (p. 137).

Generar una CSR con keytool


Para tener la máxima flexibilidad al generar una solicitud de firma de certificado (CSR), utilice Motor
dinámico de AWS CloudHSM para OpenSSL (p. 248). El comando siguiente utiliza keytool para generar
una CSR de un par de claves con el alias my-key-pair.

keytool -certreq -alias my_key_pair \


-file my_csr.csr \
-keystore my_keystore.store \
-storetype CLOUDHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*’ \
-J-Djava.library.path=/opt/cloudhsm/lib/

Note

Para poder utilizar un par de claves de keytool, ese par de claves debe tener una entrada en el
archivo de almacén de claves especificado. Si desea utilizar un par de claves generado fuera de
keytool, debe importar los metadatos de las claves y los certificados en el almacén de claves.
Para obtener instrucciones acerca de cómo importar los datos del almacén de claves, consulte
Importación de certificados raíz y certificados intermedios en el almacén de claves de AWS
CloudHSM con Keytool (p. 273).

272
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

Uso de Keytool para importar certificados raíz e intermedios en el almacén de


claves de AWS CloudHSM
Para importar un certificado de CA, debe habilitar la verificación de una cadena de certificados completa en
un certificado recién importado. A continuación, se muestra un ejemplo del comando:

keytool -import -trustcacerts -alias rootCAcert \


-file rootCAcert.cert -keystore my_keystore.store \
-storetype CLOUDHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*’ \
-J-Djava.library.path=/opt/cloudhsm/lib/

Si conecta varias instancias de cliente con el clúster de AWS CloudHSM, aunque importe un certificado en
el almacén de claves de una instancia del cliente, el certificado no estará disponible automáticamente en
las demás instancias del cliente. Es necesario importar el certificado en cada instancia del cliente.

Uso de Keytool para eliminar certificados del almacén de claves de AWS


CloudHSM
En el comando siguiente, se muestra un ejemplo de cómo se elimina un certificado de un almacén de
claves de keytool para Java.

keytool -delete -alias mydomain -keystore \


-keystore my_keystore.store \
-storetype CLOUDHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*’ \
-J-Djava.library.path=/opt/cloudhsm/lib/

Si conecta varias instancias del cliente con el clúster de AWS CloudHSM, aunque elimine un certificado
del almacén de claves de una instancia del cliente, este certificado no se eliminará automáticamente de las
demás instancias del cliente. Es necesario eliminar el certificado en cada instancia de cliente.

Importación de un certificado de trabajo en el almacén de claves de AWS


CloudHSM con keytool
Cuando se firma una solicitud de firma de certificado (CSR), es posible importarla en el almacén de claves
de AWS CloudHSM y asociarla con el par de claves apropiado. Puede ver un ejemplo en el siguiente
comando:

keytool -importcert -noprompt -alias my_key_pair \


-file my_certificate.crt \
-keystore my_keystore.store
-storetype CLOUDHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*’ \
-J-Djava.library.path=/opt/cloudhsm/lib/

El alias debe ser un par de claves con un certificado asociado del almacén de claves. Si la clave se genera
fuera de keytool o en otra instancia del cliente, primero debe importar los metadatos de la clave y el
certificado en el almacén de claves. Para obtener instrucciones acerca de cómo importar los metadatos del
certificado, consulte el ejemplo de código deRegistrar claves preexistentes con el almacén de claves de
AWS CloudHSM (p. 275).

Es necesario que la cadena de certificados se pueda verificar. Si no puede verificar el certificado, es


posible que deba importar el certificado de firma (entidad emisora de certificados) en el almacén de claves
para verificar la cadena.

273
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

Exportar un certificado mediante keytool


En el ejemplo siguiente, se genera un certificado en formato X.509 binario. Para exportar un certificado en
un formato legible, añada -rfc en el comando -exportcert.

keytool -exportcert -alias my_key_pair \


-file my_exported_certificate.crt \
-keystore my_keystore.store \
-storetype CLOUDHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*’ \
-J-Djava.library.path=/opt/cloudhsm/lib/

Uso del almacén de claves de AWS CloudHSM con Jarsigner


Jarsigner es una conocida utilidad de línea de comandos que permite firmar archivos JAR con una clave
almacenada de forma segura en un HSM. La documentación de AWS CloudHSM no pretende ser un
tutorial completo sobre Jarsigner. En esta sección, se explican los parámetros de Jarsigner que deben
utilizarse para firmar y verificar firmas con AWS CloudHSM como raíz de confianza a través del almacén
de claves de AWS CloudHSM.

Configuración de claves y certificados


Para poder firmar archivos JAR con Jarsigner, no olvide configurar o completar los siguientes pasos:

1. Siga las instrucciones de los requisitos previos del almacén de claves de AWS CloudHSM (p. 270).
2. Configure las claves de firma y los certificados asociados, así como la cadena de certificados, que
debería estar en el almacén de claves de AWS CloudHSM de la instancia actual del servidor o
cliente. Cree las claves en el AWS CloudHSM e importe los metadatos asociados en el almacén
de claves de AWS CloudHSM. Utilice el ejemplo de código de Registrar claves preexistentes con el
almacén de claves de AWS CloudHSM (p. 275) para importar metadatos en el almacén de claves.
Si desea utilizar keytool para configurar las claves y los certificados, consulte Crear nuevas claves con
keytool (p. 271). Si utiliza varias instancias de cliente para firmar los JAR, cree la clave e importe
la cadena de certificados. A continuación, copie el archivo de almacén de claves resultante en cada
instancia del cliente. Si genera nuevas claves con frecuencia, es posible que le resulte más fácil
importar uno por uno los certificados en cada instancia del cliente.
3. Toda la cadena de certificados debe ser verificable. Para que la cadena de certificados sea verificable,
es posible que deba agregar el certificado de CA y los certificados intermedios al almacén de claves
de AWS CloudHSM. Vea el fragmento de código de Firmar un archivo JAR con AWS CloudHSM y
Jarsigner (p. 274) para obtener instrucciones acerca de cómo utilizar código Java para verificar
la cadena de certificados. Si lo prefiere, puede utilizar keytool para importar los certificados. Para
obtener instrucciones sobre el uso de keytool, consulte Uso de keytool para importar certificados raíz e
intermedios en el almacén de claves de AWS CloudHSM (p. 273).

Firmar un archivo JAR con AWS CloudHSM y Jarsigner


Utilice el siguiente comando para firmar un archivo JAR:

jarsigner -keystore my_keystore.store \


-signedjar signthisclass_signed.jar \
-sigalg sha512withrsa \
-storetype CloudHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*:/usr/lib/jvm/java-1.8.0/lib/tools.jar' \
-J-Djava.library.path=/opt/cloudhsm/lib \
signthisclass.jar my_key_pair

Utilice el siguiente comando para verificar un JAR firmado:

274
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

jarsigner -verify \
-keystore my_keystore.store \
-sigalg sha512withrsa \
-storetype CloudHSM \
-J-classpath ‘-J/opt/cloudhsm/java/*:/usr/lib/jvm/java-1.8.0/lib/tools.jar' \
-J-Djava.library.path=/opt/cloudhsm/lib \
signthisclass_signed.jar my_key_pair

Problemas conocidos
En la siguiente lista encontrará los problemas conocidos actuales.

• Cuando se generan claves con keytool, el primer proveedor de la configuración del proveedor no puede
ser CaviumProvider.
• Cuando se generan claves con keytool, el primer proveedor (compatible) del archivo de configuración
de seguridad se utiliza para generar la clave. Normalmente, es un proveedor de software. A la clave
generada se le asigna después un alias y se importa en el HSM de AWS CloudHSM como una clave
persistente (token) durante el proceso de adición de claves.
• Si utiliza keytool con el almacén de claves de AWS CloudHSM, no especifique las opciones -
providerName, -providerclass o -providerpath en la línea de comandos. Especifique estas
opciones en el archivo del proveedor de seguridad tal y como se describe en los requisitos previos del
almacén de claves (p. 270).
• Cuando se usan claves de EC no extraíbles a través de keytool y Jarsigner, es necesario eliminar o
deshabilitar el proveedor SunEC de la lista de proveedores del archivo java.security. Si utiliza claves de
EC extraíbles a través de keytool y Jarsigner, los proveedores exportan bits de la clave del HSM de AWS
CloudHSM y usan la clave localmente en las operaciones de firma. No se recomienda utilizar claves
exportables con keytool o Jarsigner.

Registro de claves preexistentes con el almacén de claves de


AWS CloudHSM
Para tener la máxima seguridad y flexibilidad con los atributos y el etiquetado, le recomendamos que
genere sus claves de firma con key_mgmt_util (p. 57). También puede usar una aplicación de Java para
generar la clave en AWS CloudHSM.

La siguiente sección contiene un ejemplo de código en el que se muestra cómo se genera un nuevo par
de claves del HSM y se registra utilizando las claves existentes importadas en el almacén de claves de
AWS CloudHSM. Las claves importadas están disponibles para que puedan utilizarse en herramientas de
terceros como keytool y Jarsigner.

Si desea utilizar una clave preexistente, modifique el ejemplo de código para buscar una clave por su
etiqueta en lugar de generar una clave nueva. El código de muestra para buscar una clave por etiqueta
está disponible en el ejemplo KeyUtilitiesRunner.java de GitHub.
Important

Cuando una clave almacenada en AWS CloudHSM se registra con un almacén de claves local,
no se exporta la clave. Cuando se registra la clave, el almacén de claves registra el alias (o la
etiqueta) de la clave y relaciona localmente los objetos del certificado del almacén con un par de
claves de AWS CloudHSM. Si el par de claves se crea como no exportable, los bits de la clave no
saldrán del HSM.

275
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

//
// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify,
// merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//

package com.amazonaws.cloudhsm.examples;

import com.cavium.key.CaviumKey;
import com.cavium.key.parameter.CaviumAESKeyGenParameterSpec;
import com.cavium.key.parameter.CaviumRSAKeyGenParameterSpec;
import com.cavium.asn1.Encoder;
import com.cavium.cfm2.Util;

import javax.crypto.KeyGenerator;

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;

import java.math.BigInteger;

import java.security.*;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.KeyStore.PasswordProtection;
import java.security.KeyStore.PrivateKeyEntry;
import java.security.KeyStore.Entry;

import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;

//
// KeyStoreExampleRunner demonstrates how to load a keystore, and associate a certificate
with a
// key in that keystore.
//
// This example relies on implicit credentials, so you must setup your environment
correctly.
//
// https://docs.aws.amazon.com/cloudhsm/latest/userguide/java-library-install.html#java-
library-credentials
//

public class KeyStoreExampleRunner {

private static byte[] COMMON_NAME_OID = new byte[] { (byte) 0x55, (byte) 0x04, (byte)
0x03 };

276
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

private static byte[] COUNTRY_NAME_OID = new byte[] { (byte) 0x55, (byte) 0x04, (byte)
0x06 };
private static byte[] LOCALITY_NAME_OID = new byte[] { (byte) 0x55, (byte) 0x04,
(byte) 0x07 };
private static byte[] STATE_OR_PROVINCE_NAME_OID = new byte[] { (byte) 0x55, (byte)
0x04, (byte) 0x08 };
private static byte[] ORGANIZATION_NAME_OID = new byte[] { (byte) 0x55, (byte) 0x04,
(byte) 0x0A };
private static byte[] ORGANIZATION_UNIT_OID = new byte[] { (byte) 0x55, (byte) 0x04,
(byte) 0x0B };

private static String helpString = "KeyStoreExampleRunner%n" +


"This sample demonstrates how to load and store keys using a keystore.%n%n" +
"Options%n" +
"\t--help\t\t\tDisplay this message.%n" +
"\t--store <filename>\t\tPath of the keystore.%n" +
"\t--password <password>\t\tPassword for the keystore (not your CU password).
%n" +
"\t--label <label>\t\t\tLabel to store the key and certificate under.%n" +
"\t--list\t\t\tList all the keys in the keystore.%n%n";

public static void main(String[] args) throws Exception {


Security.addProvider(new com.cavium.provider.CaviumProvider());
KeyStore keyStore = KeyStore.getInstance("CloudHSM");

String keystoreFile = null;


String password = null;
String label = null;
boolean list = false;
for (int i = 0; i < args.length; i++) {
String arg = args[i];
switch (args[i]) {
case "--store":
keystoreFile = args[++i];
break;
case "--password":
password = args[++i];
break;
case "--label":
label = args[++i];
break;
case "--list":
list = true;
break;
case "--help":
help();
return;
}
}

if (null == keystoreFile || null == password) {


help();
return;
}

if (list) {
listKeys(keystoreFile, password);
return;
}

if (null == label) {
label = "Keystore Example Keypair";
}

//
// This call to keyStore.load() will open the pkcs12 keystore with the supplied

277
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

// password and connect to the HSM. The CU credentials must be specified using
// standard CloudHSM login methods.
//
try {
FileInputStream instream = new FileInputStream(keystoreFile);
keyStore.load(instream, password.toCharArray());
} catch (FileNotFoundException ex) {
System.err.println("Keystore not found, loading an empty store");
keyStore.load(null, null);
}

PasswordProtection passwd = new PasswordProtection(password.toCharArray());


System.out.println("Searching for example key and certificate...");

PrivateKeyEntry keyEntry = (PrivateKeyEntry) keyStore.getEntry(label, passwd);


if (null == keyEntry) {
//
// No entry was found, so we need to create a key pair and associate a
certificate.
// The private key will get the label passed on the command line. The keystore
alias
// needs to be the same as the private key label. The public key will have
":public"
// appended to it. The alias used in the keystore will We associate the
certificate
// with the private key.
//
System.out.println("No entry found, creating...");
KeyPair kp = generateRSAKeyPair(2048, label + ":public", label);
System.out.printf("Created a key pair with the handles %d/%d%n", ((CaviumKey)
kp.getPrivate()).getHandle(), ((CaviumKey) kp.getPublic()).getHandle());

//
// Generate a certificate and associate the chain with the private key.
//
Certificate self_signed_cert = generateCert(kp);
Certificate[] chain = new Certificate[1];
chain[0] = self_signed_cert;
PrivateKeyEntry entry = new PrivateKeyEntry(kp.getPrivate(), chain);

//
// Set the entry using the label as the alias and save the store.
// The alias must match the private key label.
//
keyStore.setEntry(label, entry, passwd);

FileOutputStream outstream = new FileOutputStream(keystoreFile);


keyStore.store(outstream, password.toCharArray());
outstream.close();

keyEntry = (PrivateKeyEntry) keyStore.getEntry(label, passwd);


}

long handle = ((CaviumKey) keyEntry.getPrivateKey()).getHandle();


String name = keyEntry.getCertificate().toString();
System.out.printf("Found private key %d with certificate %s%n", handle, name);
}

private static void help() {


System.out.println(helpString);
}

//
// Generate a non-extractable / non-persistent RSA keypair.
// This method allows us to specify the public and private labels, which
// will make KeyStore alises easier to understand.

278
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

//
public static KeyPair generateRSAKeyPair(int keySizeInBits, String publicLabel, String
privateLabel)
throws InvalidAlgorithmParameterException, NoSuchAlgorithmException,
NoSuchProviderException {

boolean isExtractable = false;


boolean isPersistent = false;
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("rsa", "Cavium");
CaviumRSAKeyGenParameterSpec spec = new CaviumRSAKeyGenParameterSpec(keySizeInBits,
new BigInteger("65537"), publicLabel, privateLabel, isExtractable, isPersistent);

keyPairGen.initialize(spec);

return keyPairGen.generateKeyPair();
}

//
// Generate a certificate signed by a given keypair.
//
private static Certificate generateCert(KeyPair kp) throws CertificateException {
CertificateFactory cf = CertificateFactory.getInstance("X509");
PublicKey publicKey = kp.getPublic();
PrivateKey privateKey = kp.getPrivate();
byte[] version = Encoder.encodeConstructed((byte) 0,
Encoder.encodePositiveBigInteger(new BigInteger("2"))); // version 1
byte[] serialNo = Encoder.encodePositiveBigInteger(new BigInteger(1,
Util.computeKCV(publicKey.getEncoded())));

// Use the SHA512 OID and algorithm.


byte[] signatureOid = new byte[] {
(byte) 0x2A, (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xF7, (byte) 0x0D,
(byte) 0x01, (byte) 0x01, (byte) 0x0D };
String sigAlgoName = "SHA512WithRSA";

byte[] signatureId = Encoder.encodeSequence(


Encoder.encodeOid(signatureOid),
Encoder.encodeNull());

byte[] issuer = Encoder.encodeSequence(


encodeName(COUNTRY_NAME_OID, "<Country>"),
encodeName(STATE_OR_PROVINCE_NAME_OID, "<State>"),
encodeName(LOCALITY_NAME_OID, "<City>"),
encodeName(ORGANIZATION_NAME_OID, "<Organization>"),
encodeName(ORGANIZATION_UNIT_OID, "<Unit>"),
encodeName(COMMON_NAME_OID, "<CN>")
);

Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR, -1);
Date notBefore = c.getTime();
c.add(Calendar.YEAR, 1);
Date notAfter = c.getTime();
byte[] validity = Encoder.encodeSequence(
Encoder.encodeUTCTime(notBefore),
Encoder.encodeUTCTime(notAfter)
);
byte[] key = publicKey.getEncoded();

byte[] certificate = Encoder.encodeSequence(


version,
serialNo,
signatureId,
issuer,
validity,
issuer,

279
AWS CloudHSM Guía del usuario
Uso del almacén de claves de
AWS CloudHSM con herramientas

key);
Signature sig;
byte[] signature = null;
try {
sig = Signature.getInstance(sigAlgoName, "Cavium");
sig.initSign(privateKey);
sig.update(certificate);
signature = Encoder.encodeBitstring(sig.sign());

} catch (Exception e) {
System.err.println(e.getMessage());
return null;
}

byte [] x509 = Encoder.encodeSequence(


certificate,
signatureId,
signature
);
return cf.generateCertificate(new ByteArrayInputStream(x509));
}

//
// Simple OID encoder.
// Encode a value with OID in ASN.1 format
//
private static byte[] encodeName(byte[] nameOid, String value) {
byte[] name = null;
name = Encoder.encodeSet(
Encoder.encodeSequence(
Encoder.encodeOid(nameOid),
Encoder.encodePrintableString(value)
)
);
return name;
}

//
// List all the keys in the keystore.
//
private static void listKeys(String keystoreFile, String password) throws Exception {
KeyStore keyStore = KeyStore.getInstance("CloudHSM");

try {
FileInputStream instream = new FileInputStream(keystoreFile);
keyStore.load(instream, password.toCharArray());
} catch (FileNotFoundException ex) {
System.err.println("Keystore not found, loading an empty store");
keyStore.load(null, null);
}

for(Enumeration<String> entry = keyStore.aliases(); entry.hasMoreElements();) {


System.out.println(entry.nextElement());
}
}

280
AWS CloudHSM Guía del usuario
Proveedores de KSP y CNG

Proveedores de KSP y CNG para Windows


API de criptografía: nueva generación (CNG) es una API criptográfica específica del sistema operativo
Microsoft Windows. CNG permite a los desarrolladores utilizar técnicas criptográficas para proteger las
aplicaciones basadas en Windows. En líneas generales, CNG proporciona las siguientes funcionalidades:

• Primitivas criptográficas: le permiten realizar operaciones criptográficas fundamentales.


• Importación y exportación de claves: le permite importar y exportar claves simétricas y asimétricas.
• API de protección de datos (CNG DPAPI): le permite cifrar y descifrar datos fácilmente.
• Almacenamiento y recuperación de claves: le permite almacenar y aislar de forma segura la clave
privada de un par de claves asimétricas.

Los proveedores de almacenamiento de claves (KSP) permiten el almacenamiento y la recuperación de


claves. Por ejemplo, si agrega el rol Servicios de certificados de Microsoft Active Directory (AD CS) a su
servidor de Windows y elige crear una nueva clave privada de su entidad de certificación (CA), puede
elegir el KSP que administrará el almacenamiento de claves. El cliente de CloudHSM para Windows
contiene KSP creados específicamente por Cavium para AWS CloudHSM. Al configurar el rol AD CS,
puede elegir un KSP de Cavium. Para obtener más información, consulte Crear entidad de certificación
de Windows Server (p. 322). El cliente CloudHSM de Windows también instala un proveedor CNG de
Cavium.

Temas
• Instalación de los proveedores de KSP y CNG para Windows (p. 281)
• Requisitos previos de AWS CloudHSM para Windows (p. 283)
• Asociar una clave de AWS CloudHSM con un certificado (p. 284)
• Muestra de código para proveedor CNG de Cavium (p. 285)

Instalación de los proveedores de KSP y CNG para


Windows
Los proveedores de KSP y CNG de Cavium se instalan con el cliente de AWS CloudHSM para Windows.
Puede instalar el cliente siguiendo los pasos que se indican en Instalación del cliente de (Windows) (p. 37).
Puede elegir el KSP de Cavium al agregar el rol AD CS rol a Windows Server. Consulte Crear entidad de
certificación de Windows Server (p. 322).

Configuración y ejecución del cliente de AWS CloudHSM para


Windows
Para iniciar el cliente de CloudHSM para Windows, debe cumplir los Requisitos previos (p. 283).
Posteriormente, debe actualizar los archivos de configuración que utilizan los proveedores e iniciar el
cliente siguiendo los pasos que se indican a continuación. Tiene que realizar estos pasos la primera vez
que utilice los proveedores de KSP y CNG y después de añadir o quitar HSM del clúster. Esto permite a
AWS CloudHSM sincronizar los datos y mantener la coherencia entre todos los HSM del clúster.

Paso 1: Detener el cliente de AWS CloudHSM


Antes de actualizar los archivos de configuración que utilizan los proveedores, detenga el cliente de AWS
CloudHSM. Si el cliente ya se ha detenido, la ejecución del comando stop no tiene ningún efecto.

• Para clientes 1.1.2+ de Windows:

281
AWS CloudHSM Guía del usuario
Instalación de los proveedores

C:\Program Files\Amazon\CloudHSM>net.exe stop AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

Use Ctrl+C en la ventana de comandos desde donde inició el cliente de AWS CloudHSM.

Paso 2: Actualizar los archivos de configuración de AWS CloudHSM


En este paso se utiliza el parámetro -a de la herramienta de configuración (p. 218) para añadir la dirección
IP de la interfaz de red elástica (ENI) de uno de los HSM del clúster al archivo de configuración.

c:\Program Files\Amazon\CloudHSM>configure.exe -a <HSM ENI IP>

Para obtener la dirección IP de la ENI de un HSM del clúster, vaya a la consola de AWS CloudHSM,
elija clusters (clústeres) y seleccione el clúster que desee. También puede utilizar la operación
DescribeClusters, el comando describe-clusters o el cmdlet Get-HSM2Cluster de PowerShell. Escriba una
sola dirección IP de ENI. No importa qué dirección IP de ENI use.

Paso 3: Iniciar el cliente de AWS CloudHSM


A continuación, inicie o reinicie el cliente de AWS CloudHSM. Cuando el cliente de AWS CloudHSM se
inicia, utiliza la dirección IP de ENI del archivo de configuración para realizar consultas en el clúster. A
continuación, añade las direcciones IP de ENI de todos los HSM en el clúster al archivo de información del
clúster.

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:


\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg

Comprobación de los proveedores de KSP y CNG


Puede utilizar cualquiera de los siguientes comandos para determinar qué proveedores están instalados en
su sistema. Los comandos enumeran los proveedores de KSP y CNG registrados. No es necesario que el
cliente de AWS CloudHSM esté en ejecución.

C:\Program Files\Amazon\CloudHSM>ksp_config.exe -enum

C:\Program Files\Amazon\CloudHSM>cng_config.exe -enum

Verifique que los proveedores de KSP y CNG de Cavium estén instalados en su instancia EC2 de
Windows Server. Si falta el proveedor de CNG, ejecute el siguiente comando.

C:\Program Files\Amazon\CloudHSM>cng_config.exe -register

Si falta el proveedor de KSP de Cavium, ejecute el siguiente comando.

C:\Program Files\Amazon\CloudHSM>ksp_config.exe -register

282
AWS CloudHSM Guía del usuario
Requisitos previos

Requisitos previos de AWS CloudHSM para Windows


Antes de iniciar el cliente de AWS CloudHSM de Windows y utilizar los proveedores de KSP y CNG, debe
configurar las credenciales de inicio de sesión para el HSM del sistema. Puede establecer las credenciales
a través del Administrador de credenciales de Windows o de una variable de entorno del sistema. Le
recomendamos que utilice el Administrador de credenciales de Windows para almacenar las credenciales.
Esta opción está disponible con la versión 2.0.4 y posteriores del cliente de AWS CloudHSM. La variable
de entorno es más fácil de configurar, pero es menos segura que el Administrador de credenciales de
Windows.

Administrador de credenciales de Windows


Puede emplear la utilidad set_cloudhsm_credentials o la interfaz del Administrador de credenciales
de Windows.

• Con la utilidad set_cloudhsm_credentials:

La utilidad set_cloudhsm_credentials está incluida en el instalador de Windows. Puede emplear


esta utilidad para transferir cómodamente las credenciales de inicio de sesión de HSM al Administrador
de credenciales de Windows. Si desea compilar esta utilidad a partir del código fuente, puede utilizar el
código Python que se incluye en el instalador.
1. Vaya a la carpeta C:\Program Files\Amazon\CloudHSM\tools\.
2. Ejecute el archivo set_cloudhsm_credentials.exe con los parámetros de nombre de usuario y
contraseña del CU.

set_cloudhsm_credentials.exe --username <cu-user> --password <cu-pwd>

• Con la interfaz del Administrador de credenciales:

Puede utilizar la interfaz del Administrador de credenciales para administrar manualmente las
credenciales.
1. Para abrir el Administrador de credenciales, escriba credential manager en el cuadro de
búsqueda de la barra de tareas y seleccione Credential Manager (Administrador de credenciales).
2. Seleccione Windows Credentials (Credenciales de Windows) para administrar las credenciales de
Windows.
3. Seleccione Add a generic credential (Agregar una credencial genérica) y rellene los detalles del modo
siguiente:
• En Internet o Network Address (Dirección de red o Internet), escriba el nombre de destino como
cloudhsm_client.
• En Username (Nombre de usuario) y Password (Contraseña), escriba las credenciales del CU.
• Haga clic en OK (Aceptar).

Variables de entorno del sistema.


Puede configurar unas variables de entorno del sistema que identifiquen un HSM y un usuario de
criptografía (p. 11) (CU) para su aplicación de Windows. Puede usar el comando setx para establecer
variables de entorno del sistema, o bien establecer variables de entorno del sistema permanentes
mediante programación o en la pestaña Opciones avanzadas del panel de control Propiedades del sistema
de Windows.
Warning
Si establece las credenciales utilizando variables de entorno del sistema, la contraseña estará
disponible como texto no cifrado en el sistema de los usuarios. Para solucionar este problema,
utilice el Administrador de credenciales de Windows.

283
AWS CloudHSM Guía del usuario
Asociar una clave con un certificado

Configure las siguientes variables de entorno del sistema:

n3fips_password=CU-username:CU-password

Identifica un usuario de criptografía (p. 11) (CU) en el HSM y proporciona toda la información de
inicio de sesión necesaria. Su aplicación se autentica y ejecuta como este CU. La aplicación tiene los
permisos de este CU y puede ver y administrar solo las claves que el CU posee y comparte. Este CU
debe estar disponible en el HSM especificado por la variable de entorno n3fips_partition. Para
crear un nuevo CU, use createUser (p. 94). Para encontrar los CU existentes, use listUsers (p. 114).

Por ejemplo:

setx /m n3fips_password test_user:password123

Asociar una clave de AWS CloudHSM con un


certificado
Para poder utilizar claves de AWS CloudHSM con herramientas de terceros, como SignTool de Microsoft,
debe importar los metadatos de la clave en el almacén de certificados local y asociar los metadatos con un
certificado. Para importar los metadatos de la clave, emplee la utilidad import_key.exe que se incluye en
CloudHSM 3.0 y versiones posteriores. En los pasos siguientes, encontrará más información y un ejemplo
de la salida.

Paso 1: Importar el certificado


En Windows, debería poder hacer doble clic en el certificado para importarlo en el almacén de certificados
local.

Sin embargo, si el doble clic no funciona, utilice la herramienta Microsoft Certreq para importar el
certificado en el administrador de certificados. Por ejemplo:

certreq -accept certificatename

Si esta acción no se realiza correctamente y aparece el error Key not found, continúe en el paso 2.
Si el certificado aparece en el almacén de claves, la tarea se habrá completado correctamente y no será
necesario realizar más acciones.

Paso 2: Recopilar información de identificación del certificado


Si el paso anterior no se realizó correctamente, deberá asociar la clave privada con un certificado.
Sin embargo, antes de poder establecer esta asociación deberá buscar primero el nombre único del
contenedor y el número de serie del certificado. Utilice una utilidad, como certutil, para mostrar la
información necesaria del certificado. En el siguiente ejemplo de la salida de certutil, se muestra el nombre
del contenedor y el número de serie.

================ Certificate 1 ================ Serial Number:


72000000047f7f7a9d41851b4e000000000004Issuer: CN=Enterprise-CANotBefore: 10/8/2019 11:50
AM NotAfter: 11/8/2020 12:00 PMSubject: CN=www.example.com, OU=Certificate Management,
O=Information Technology, L=Seattle, S=Washington, C=USNon-root CertificateCert
Hash(sha1): 7f d8 5c 00 27 bf 37 74 3d 71 5b 54 4e c0 94 20 45 75 bc 65No key provider
information Simple container name: CertReq-39c04db0-6aa9-4310-93db-db0d9669f42c Unique
container name: CertReq-39c04db0-6aa9-4310-93db-db0d9669f42c

284
AWS CloudHSM Guía del usuario
Muestra de código

Paso 3: Asociar la clave privada de AWS CloudHSM con el


certificado
Para asociar la clave con el certificado, no olvide primero iniciar el demonio del cliente de AWS
CloudHSM (p. 129). A continuación, utilice import_key.exe (que se incluye en CloudHSM 3.0 y versiones
posteriores) para asociar la clave privada con el certificado. Cuando especifique el certificado, utilice el
nombre simple de contenedor. En el ejemplo siguiente, se muestra el comando y la respuesta. Esta acción
solo copia los metadatos de la clave; la clave permanece en el HSM.

$> import_key.exe –RSA CertReq-39c04db0-6aa9-4310-93db-db0d9669f42c

Successfully opened Microsoft Software Key Storage Provider : 0NCryptOpenKey failed :


80090016

Paso 4: Actualizar el almacén de certificados


Asegúrese de que el demonio del cliente de AWS CloudHSM sigue en ejecución. A continuación, utilice el
verbo -repairstore de certutil para actualizar el número de serie del certificado. En el siguiente ejemplo, se
muestra el comando y la salida. Consulte la documentación de Microsoft para obtener información sobre el
verbo -repairstore.

C:\Program Files\Amazon\CloudHSM>certutil -f -csp "Cavium Key Storage Provider"-repairstore


my "72000000047f7f7a9d41851b4e000000000004"my "Personal"

================ Certificate 1 ================Serial Number:


72000000047f7f7a9d41851b4e000000000004
Issuer: CN=Enterprise-CA
NotBefore: 10/8/2019 11:50 AM
NotAfter: 11/8/2020 12:00 PM
Subject: CN=www.example.com, OU=Certificate Management, O=Information Technology,
L=Seattle, S=Washington, C=US
Non-root CertificateCert Hash(sha1): 7f d8 5c 00 27 bf 37 74 3d 71 5b 54 4e c0 94 20 45 75
bc 65
SDK Version: 3.0
Key Container = CertReq-39c04db0-6aa9-4310-93db-db0d9669f42c
Provider = Cavium Key Storage ProviderPrivate key is NOT exportableEncryption test
passedCertUtil: -repairstore command completed successfully.

Una vez que el número de serie del certificado está actualizado, puede utilizar este certificado y la clave
privada de AWS CloudHSM correspondiente con cualquier herramienta de firma de terceros de Windows.

Muestra de código para proveedor CNG de Cavium

** Código exclusivamente de ejemplo: no se debe utilizar con fines de producción **

Esta página incluye código de ejemplo que no se ha sometido a pruebas completas. Está diseñado para
entornos de prueba. No ejecute este código en un entorno de producción.

En la siguiente muestra se presenta cómo enumerar los proveedores de servicios criptográficos registrados
en su sistema para encontrar el proveedor CNG de Cavium. En la muestra también se presenta cómo
crear un par de claves asimétricas y cómo utilizar el par de claves para firmar datos.

285
AWS CloudHSM Guía del usuario
Muestra de código

Important
Antes de ejecutar este ejemplo, debe configurar las credenciales del HSM, tal y como se explica
en los requisitos previos. Para obtener más información, consulte Requisitos previos de AWS
CloudHSM para Windows (p. 283).

// CloudHsmCngExampleConsole.cpp : Console application that demonstrates CNG capabilities.


// This example contains the following functions.
//
// VerifyProvider() - Enumerate the registered providers and retrieve Cavium KSP
and CNG providers.
// GenerateKeyPair() - Create an RSA key pair.
// SignData() - Sign and verify data.
//

#include "stdafx.h"
#include <Windows.h>

#ifndef NT_SUCCESS
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#endif

#define CAVIUM_CNG_PROVIDER L"Cavium CNG Provider"


#define CAVIUM_KEYSTORE_PROVIDER L"Cavium Key Storage Provider"

// Enumerate the registered providers and determine whether the Cavium CNG provider
// and the Cavium KSP provider exist.
//
bool VerifyProvider()
{
NTSTATUS status;
ULONG cbBuffer = 0;
PCRYPT_PROVIDERS pBuffer = NULL;
bool foundCng = false;
bool foundKeystore = false;

// Retrieve information about the registered providers.


// cbBuffer - the size, in bytes, of the buffer pointed to by pBuffer.
// pBuffer - pointer to a buffer that contains a CRYPT_PROVIDERS structure.
status = BCryptEnumRegisteredProviders(&cbBuffer, &pBuffer);

// If registered providers exist, enumerate them and determine whether the


// Cavium CNG provider and Cavium KSP provider have been registered.
if (NT_SUCCESS(status))
{
if (pBuffer != NULL)
{
for (ULONG i = 0; i < pBuffer->cProviders; i++)
{
// Determine whether the Cavium CNG provider exists.
if (wcscmp(CAVIUM_CNG_PROVIDER, pBuffer->rgpszProviders[i]) == 0)
{
printf("Found %S\n", CAVIUM_CNG_PROVIDER);
foundCng = true;
}

// Determine whether the Cavium KSP provider exists.


else if (wcscmp(CAVIUM_KEYSTORE_PROVIDER, pBuffer->rgpszProviders[i]) == 0)
{
printf("Found %S\n", CAVIUM_KEYSTORE_PROVIDER);
foundKeystore = true;
}
}

286
AWS CloudHSM Guía del usuario
Muestra de código

}
}
else
{
printf("BCryptEnumRegisteredProviders failed with error code 0x%08x\n", status);
}

// Free memory allocated for the CRYPT_PROVIDERS structure.


if (NULL != pBuffer)
{
BCryptFreeBuffer(pBuffer);
}

return foundCng == foundKeystore == true;


}

// Generate an asymmetric key pair. As used here, this example generates an RSA key pair
// and returns a handle. The handle is used in subsequent operations that use the key
pair.
// The key material is not available.
//
// The key pair is used in the SignData function.
//
NTSTATUS GenerateKeyPair(BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *hKey)
{
NTSTATUS status;

// Generate the key pair.


status = BCryptGenerateKeyPair(hAlgorithm, hKey, 2048, 0);
if (!NT_SUCCESS(status))
{
printf("BCryptGenerateKeyPair failed with code 0x%08x\n", status);
return status;
}

// Finalize the key pair. The public/private key pair cannot be used until this
// function is called.
status = BCryptFinalizeKeyPair(*hKey, 0);
if (!NT_SUCCESS(status))
{
printf("BCryptFinalizeKeyPair failed with code 0x%08x\n", status);
return status;
}

return status;
}

// Sign and verify data using the RSA key pair. The data in this function is hardcoded
// and is for example purposes only.
//
NTSTATUS SignData(BCRYPT_KEY_HANDLE hKey)
{
NTSTATUS status;
PBYTE sig;
ULONG sigLen;
ULONG resLen;
BCRYPT_PKCS1_PADDING_INFO pInfo;

// Hardcode the data to be signed (for demonstration purposes only).


PBYTE message = (PBYTE)"d83e7716bed8a20343d8dc6845e57447";
ULONG messageLen = strlen((char*)message);

// Retrieve the size of the buffer needed for the signature.


status = BCryptSignHash(hKey, NULL, message, messageLen, NULL, 0, &sigLen, 0);
if (!NT_SUCCESS(status))
{

287
AWS CloudHSM Guía del usuario
Muestra de código

printf("BCryptSignHash failed with code 0x%08x\n", status);


return status;
}

// Allocate a buffer for the signature.


sig = (PBYTE)HeapAlloc(GetProcessHeap(), 0, sigLen);
if (sig == NULL)
{
return -1;
}

// Use the SHA256 algorithm to create padding information.


pInfo.pszAlgId = BCRYPT_SHA256_ALGORITHM;

// Create a signature.
status = BCryptSignHash(hKey, &pInfo, message, messageLen, sig, sigLen, &resLen,
BCRYPT_PAD_PKCS1);
if (!NT_SUCCESS(status))
{
printf("BCryptSignHash failed with code 0x%08x\n", status);
return status;
}

// Verify the signature.


status = BCryptVerifySignature(hKey, &pInfo, message, messageLen, sig, sigLen,
BCRYPT_PAD_PKCS1);
if (!NT_SUCCESS(status))
{
printf("BCryptVerifySignature failed with code 0x%08x\n", status);
return status;
}

// Free the memory allocated for the signature.


if (sig != NULL)
{
HeapFree(GetProcessHeap(), 0, sig);
sig = NULL;
}

return 0;
}

// Main function.
//
int main()
{
NTSTATUS status;
BCRYPT_ALG_HANDLE hRsaAlg;
BCRYPT_KEY_HANDLE hKey = NULL;

// Enumerate the registered providers.


printf("Searching for Cavium providers...\n");
if (VerifyProvider() == false) {
printf("Could not find the CNG and Keystore providers\n");
return 1;
}

// Get the RSA algorithm provider from the Cavium CNG provider.
printf("Opening RSA algorithm\n");
status = BCryptOpenAlgorithmProvider(&hRsaAlg, BCRYPT_RSA_ALGORITHM, CAVIUM_CNG_PROVIDER,
0);
if (!NT_SUCCESS(status))
{
printf("BCryptOpenAlgorithmProvider RSA failed with code 0x%08x\n", status);
return status;
}

288
AWS CloudHSM Guía del usuario
Muestra de código

// Generate an asymmetric key pair using the RSA algorithm.


printf("Generating RSA Keypair\n");
GenerateKeyPair(hRsaAlg, &hKey);
if (hKey == NULL)
{
printf("Invalid key handle returned\n");
return 0;
}
printf("Done!\n");

// Sign and verify [hardcoded] data using the RSA key pair.
printf("Sign/Verify data with key\n");
SignData(hKey);
printf("Done!\n");

// Remove the key handle from memory.


status = BCryptDestroyKey(hKey);
if (!NT_SUCCESS(status))
{
printf("BCryptDestroyKey failed with code 0x%08x\n", status);
return status;
}

// Close the RSA algorithm provider.


status = BCryptCloseAlgorithmProvider(hRsaAlg, NULL);
if (!NT_SUCCESS(status))
{
printf("BCryptCloseAlgorithmProvider RSA failed with code 0x%08x\n", status);
return status;
}

return 0;
}

289
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS

Integración de las aplicaciones de


terceros con AWS CloudHSM
En algunos casos de uso (p. 1) de AWS CloudHSM, es preciso integrar aplicaciones de software de
terceros con los HSM del clúster de AWS CloudHSM. La integración de software de terceros con AWS
CloudHSM le permite conseguir una serie de objetivos relacionados con la seguridad. En los temas
siguientes se describe cómo conseguir algunos de dichos objetivos.

Temas
• Mejore la seguridad de su servidor web con la descarga de SSL/TLS en AWS CloudHSM (p. 290)
• Configuración de Windows Server como entidad de certificación (CA) con AWS CloudHSM (p. 321)
• Cifrado de datos transparente (TDE) de Oracle Database con AWS CloudHSM (p. 325)
• Uso de Microsoft SignTool con AWS CloudHSM para firmar archivos (p. 329)
• Otras integraciones de proveedores externos (p. 333)

Mejore la seguridad de su servidor web con la


descarga de SSL/TLS en AWS CloudHSM
Los servidores web y sus clientes (navegadores web) pueden usar la capa de conexión segura (SSL) o
Transport Layer Security (TLS). Estos protocolos confirman la identidad del servidor web y establecen una
conexión segura para enviar y recibir páginas web u otros datos a través de Internet. Esto se denomina
comúnmente HTTPS. El servidor web utiliza un par de claves pública-privada y un certificado de clave
pública SSL/TLS para establecer una sesión HTTPS con cada cliente. Este proceso conlleva un gran
volumen de cómputo para el servidor web, pero puede descargar parte de este cómputo a los HSM de
su clúster de AWS CloudHSM. Esto a veces recibe el nombre de aceleración SSL. La descarga reduce
la carga informática del servidor web y proporciona seguridad adicional al almacenar la clave privada del
servidor en el HSMs.

Los temas siguientes contienen información general acerca de cómo funciona la descarga SSL/TLS con
AWS CloudHSM y explican cómo se configura la descarga SSL/TLS con AWS CloudHSM en las siguientes
plataformas:

• Linux: mediante el software de servidor web NGINX o Apache HTTP Server


• Windows: mediante el software de servidor web Internet Information Services (IIS) para Windows Server

Temas
• Cómo funciona la descarga de SSL/TLS con AWS CloudHSM (p. 290)
• Tutorial: Uso de la descarga de SSL/TLS con AWS CloudHSM en Linux (p. 291)
• Tutorial: Uso de la descarga de SSL/TLS con AWS CloudHSM en Windows (p. 308)

Cómo funciona la descarga de SSL/TLS con AWS


CloudHSM
Para establecer una conexión HTTPS, el servidor web realiza un proceso de protocolo de enlace con los
clientes. Como parte de este proceso, el servidor descarga parte del procesamiento criptográfico en los
HSM, tal y como se muestra en la siguiente figura. Cada paso del proceso se explica debajo de la figura.

290
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

Note

En la imagen y el proceso siguientes se presupone que se utiliza RSA para la verificación del
servidor y el intercambio de claves. El proceso es algo diferente cuando se utiliza Diffie–Hellman
en lugar de RSA.

1. El cliente envía un mensaje de saludo al servidor.


2. El servidor responde con un mensaje de saludo y envía el certificado del servidor.
3. El cliente realiza las siguientes acciones:
a. Verifica que el certificado del servidor SSL/TLS esté firmado por uno de los certificados raíz en los
que confía el cliente.
b. Extrae la clave pública del certificado del servidor.
c. Genera un número secreto principal preliminar y lo cifra con la clave pública del servidor.
d. Envía el número secreto principal preliminar cifrado al servidor.
4. Para descifrar el número secreto principal preliminar del cliente, el servidor lo envía al HSM. El HSM
utiliza la clave privada del HSM para descifrar el número secreto principal preliminar y, a continuación,
lo envía al servidor. Independientemente, el cliente y el servidor utilizan cada uno el número secreto
principal preliminar e información de los mensajes de saludo para calcular un secreto maestro.
5. El proceso de protocolo de enlace finaliza. Durante el resto de la sesión, todos los mensajes enviados
entre el cliente y el servidor se cifran con derivados del secreto maestro.

Para obtener información acerca de cómo configurar la descarga SSL/TLS con AWS CloudHSM, consulte
uno de los temas siguientes:

• Tutorial: Uso de la descarga de SSL/TLS con AWS CloudHSM en Linux (p. 291)
• Tutorial: Uso de la descarga de SSL/TLS con AWS CloudHSM en Windows (p. 308)

Tutorial: Uso de la descarga de SSL/TLS con AWS


CloudHSM en Linux
En este tutorial, se proporcionan instrucciones paso a paso para configurar la descarga de SSL/TLS con
AWS CloudHSM en un servidor web de Linux.

291
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

Temas
• Información general (p. 292)
• Paso 1: Configurar los requisitos previos (p. 292)
• Paso 2: Generar o importar una clave privada y un certificado SSL/TLS (p. 293)
• Paso 3: Configurar el servidor web (p. 296)
• Paso 4: Habilitar el tráfico HTTPS y verificar el certificado (p. 301)
• (Opcional) Paso 5: Añadir un balanceador de carga con Elastic Load Balancing (p. 303)

Información general
En Linux, las aplicaciones de servidor web NGINX y Apache HTTP Server se integran con OpenSSL para
admitir HTTPS. El motor dinámico de AWS CloudHSM para OpenSSL (p. 248) proporciona una interfaz
que permite al software del servidor web utilizar los HSM de un clúster para las descargas criptográficas
y el almacenamiento de claves. El motor de OpenSSL es el puente que conecta el servidor web con su
clúster de AWS CloudHSM.

Para completar este tutorial, primero debe decidir si va a utilizar el software de servidor web NGINX o
Apache en Linux. A continuación, el tutorial le enseña a realizar las tareas siguientes:

• Instale el software del servidor web en una instancia de Amazon EC2.


• Configure el software del servidor web para que admita HTTPS con una clave privada almacenada en su
clúster de AWS CloudHSM.
• (Opcional) Utilice Amazon EC2 para crear una segunda instancia de servidor web y Elastic Load
Balancing para crear un balanceador de carga. El uso de un balanceador de carga puede mejorar el
desempeño al distribuir la carga entre varios servidores. También puede proporcionar redundancia y una
mayor disponibilidad si uno o más servidores funcionan mal.

Cuando esté listo para empezar, vaya al Paso 1: Configurar los requisitos previos (p. 292).

Paso 1: Configurar los requisitos previos


Si desea configurar un servidor web para la descarga SSL/TLS con AWS CloudHSM, necesita lo siguiente:

• Un clúster de AWS CloudHSM activo que tenga como mínimo un HSM.


• Una instancia Amazon EC2 que ejecute el sistema operativo Linux y tenga el siguiente software
instalado:
• El cliente y las herramientas de línea de comandos de AWS CloudHSM.
• La aplicación del servidor web NGINX o Apache.
• El motor dinámico de AWS CloudHSM para OpenSSL.
• Un usuario de criptografía (p. 11) (CU) que sea el propietario y administre la clave privada del servidor
web en el HSM.

Para configurar una instancia de servidor web de Linux y crear un CU en el HSM

1. Realice los pasos que se indican en Introducción (p. 15). Dispondrá de un clúster activo con un HSM
y una instancia de cliente de Amazon EC2. La instancia EC2 se configurará con las herramientas de
línea de comandos. Utilice esta instancia de cliente como su servidor web.
2. Conéctese a su instancia de cliente. Para obtener más información, consulte Conexión a la instancia
de Linux mediante SSH o Conexión a la instancia de Linux desde Windows mediante PuTTY en la
documentación de Amazon EC2. A continuación, proceda del modo siguiente:

292
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

a. Elija si desea instalar la aplicación del servidor web NGINX o Apache. A continuación, realice uno
de los pasos siguientes:
• Para instalar NGINX, ejecute el siguiente comando.

sudo yum install -y nginx

• Para instalar Apache, ejecute el siguiente comando.

sudo yum install -y httpd24 mod24_ssl

b. Instalar y configurar el motor de OpenSSL (p. 249).


3. (Opcional) Añada más HSM a su clúster. Para obtener más información, consulte Agregar un
HSM (p. 43).
4. Para crear un usuario de criptografía (p. 11) (CU) en su HSM, haga lo siguiente:

a. Inicie el cliente de AWS CloudHSM (p. 84).


b. Actualice el archivo de configuración cloudhsm_mgmt_util (p. 85).
c. Utilice cloudhsm_mgmt_util para crear un CU. Para obtener más información, consulte
Administración de usuarios de HSM (p. 54). Tome nota del nombre de usuario y la contraseña
del CU. Los necesitará más adelante cuando genere o importe el certificado y la clave privada de
HTTPS para el servidor web.

Después de completar estos pasos, vaya a Paso 2: Generar o importar una clave privada y un certificado
SSL/TLS (p. 293).

Paso 2: Generar o importar una clave privada y un certificado


SSL/TLS
Para habilitar HTTPS, la aplicación del servidor web (NGINX o Apache) necesita una clave privada y un
certificado SSL/TLS correspondiente. Si desea utilizar un servidor web para la descarga SSL/TLS con
AWS CloudHSM, debe almacenar la clave privada en un HSM del clúster de AWS CloudHSM. Puede
realizar esta operación de una de las siguientes formas:

• Si todavía no dispone de una clave privada y un certificado correspondiente, puede generar una clave
privada en un HSM (p. 294). A continuación, utilice la clave privada para crear una solicitud de firma de
certificado (CSR). Use la CSR para crear el certificado SSL/TLS.

 
• Si ya dispone de una clave privada y de su certificado correspondiente, puede importar la clave privada a
un HSM (p. 295).

Sea cual sea el método que elija, se exporta una clave privada PEM falsa desde el HSM y se guarda en
un archivo. Este archivo no contiene la verdadera clave privada. Contiene una referencia a la clave privada
que está almacenada en el HSM. El servidor web utiliza el archivo de la clave privada PEM falsa y el motor
dinámico de AWS CloudHSM para OpenSSL a fin de descargar el procesamiento de SSL/TLS en un HSM.

Temas (elija solo uno)


• Generación de una clave privada y un certificado (p. 294)
• Importación de una clave privada ya existente (p. 295)

293
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

Generación de una clave privada y un certificado


Si no dispone de una clave privada y de su certificado SSL/TLS correspondiente para utilizarlos con
HTTPS, puede generar una clave privada en un HSM. A continuación, utilice la clave privada para crear
una solicitud de firma de certificado (CSR). Firme la CSR para crear el certificado.

Para generar una clave privada en un HSM

1. Conéctese a su instancia de cliente.


2. Ejecute el siguiente comando para definir una variable de entorno denominada n3fips_password
que contiene el nombre de usuario y la contraseña del usuario criptográfico (CU). Reemplace
<nombre de usuario CU> por el nombre del usuario criptográfico. Reemplace <password> por la
contraseña del CU.

export n3fips_password=<CU user name>:<password>

3. Ejecute el siguiente comando si desea utilizar el motor dinámico de AWS CloudHSM para OpenSSL
a fin de generar una clave privada en un HSM. Este comando también exporta la clave privada PEM
falsa y la guarda en un archivo. Reemplace <web_server_fake_PEM.key> por el nombre del
archivo que desea usar para la clave privada PEM falsa exportada.

openssl genrsa -engine cloudhsm -out <web_server_fake_PEM.key> 2048

Para crear una CSR

Ejecute el siguiente comando si desea utilizar el motor dinámico de AWS CloudHSM para OpenSSL a fin
de crear una solicitud de firma de certificado (CSR). Reemplace <web_server_fake_PEM.key> por el
nombre del archivo que contiene la clave privada de PEM falsa. Reemplace <web_server.csr> por el
nombre del archivo que contiene la CSR.

El comando req es interactivo. Responderá a cada campo. La información del campo se copia en su
certificado SSL/TLS.

openssl req -engine cloudhsm -new -key <web_server_fake_PEM.key> -out <web_server.csr>

En un entorno de producción, normalmente se usa una entidad de certificación (CA) para crear un
certificado de una CSR. No es necesaria una CA para un entorno de prueba. Si utiliza una CA, envíe
el archivo de la CSR (<web_server.csr>) a la CA para que cree un certificado SSL/TLS firmado. Su
servidor web utiliza el certificado firmado para HTTPS.

Como alternativa al uso de una CA, puede utilizar el motor dinámico de AWS CloudHSM para OpenSSL
a fin de crear un certificado autofirmado. Los navegadores no confían en certificados autofirmados y no
deben utilizarse en entornos de producción. Se pueden usar en entornos de prueba.
Warning

Los certificados autofirmados deben utilizarse únicamente en entornos de prueba. En entornos de


producción, utilice un método más seguro como, por ejemplo, una autoridad de certificación para
crear un certificado.

Para crear un certificado autofirmado

Ejecute el comando siguiente para utilizar el motor dinámico de AWS CloudHSM para OpenSSL a fin de
firmar la CSR con la clave privada de un HSM. Esto creará un certificado autofirmado. Reemplace los
siguientes valores en el comando por sus propios valores.

• <web_server.csr>: nombre del archivo que contiene la CSR.

294
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

• <web_server_fake_PEM.key>: nombre del archivo que contiene la clave privada de PEM falsa.
• <web_server.crt>: nombre del archivo que contendrá el certificado de servidor web.

openssl x509 -engine cloudhsm -req -days 365 -in <web_server.csr> -


signkey <web_server_fake_PEM.key> -out <web_server.crt>

Después de completar estos pasos, vaya a Paso 3: Configurar el servidor web (p. 296).

Importación de una clave privada ya existente


Es posible que ya disponga de una clave privada y un certificado SSL/TLS correspondiente que utiliza para
HTTPS en su servidor web. En caso afirmativo, puede importar la clave a un HSM haciendo lo siguiente:

Para importar una clave privada existente a un HSM

1. Conéctese a la instancia de cliente de Amazon EC2. Si es necesario, copie su clave privada y el


certificado en la instancia.
2. Ejecute el siguiente comando para iniciar el cliente de AWS CloudHSM.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

3. Ejecute el siguiente comando para iniciar la herramienta de línea de comandos key_mgmt_util.

/opt/cloudhsm/bin/key_mgmt_util

4. Ejecute el siguiente comando para iniciar sesión en el HSM. Reemplace <nombre de usuario> y
<password> por el nombre de usuario y la contraseña del usuario criptográfico (CU).

295
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

loginHSM -u CU -s <user name> -p <password>

5. Ejecute los siguientes comandos para importar la clave privada a un HSM.

a. Ejecute el siguiente comando para crear una clave de encapsulación simétrica que sea válida
únicamente para la sesión actual. El comando y el resultado se muestran aquí.

genSymKey -t 31 -s 16 -sess -l wrapping_key_for_import

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

b. Ejecute el siguiente comando para importar la clave privada actual a un HSM. El comando y el
resultado se muestran aquí. Reemplace los valores siguientes por sus propios valores:

• <web_server_existing.key>: nombre del archivo que contiene su clave privada.


• <web_server_imported_key>: etiqueta de la clave privada importada.
• <wrapping_key_handle>: identificador de la clave de encapsulamiento generada por el
comando anterior. En el ejemplo anterior el identificador de clave de encapsulación es 6.

importPrivateKey -f <web_server_existing.key> -l <web_server_imported_key> -


w <wrapping_key_handle>

BER encoded key length is 1219


Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS
Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS
Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS
Private Key Unwrapped. Key Handle: 8
Cluster Error Status
Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

6. Ejecute el comando siguiente para exportar la clave privada en formato PEM falso y guardarla en un
archivo. Reemplace los valores siguientes por sus propios valores.

• <private_key_handle>: identificador de la clave privada importada. Este identificador se generó


con el segundo comando del paso anterior. En el ejemplo anterior, el identificador de la clave
privada es 8.
• <web_server_fake_PEM.key>: nombre del archivo que contiene la clave privada de PEM falsa
que se ha exportado.

getCaviumPrivKey -k <private_key_handle> -out <web_server_fake_PEM.key>

7. Ejecute el comando siguiente para detener key_mgmt_util.

exit

Después de completar estos pasos, vaya a Paso 3: Configurar el servidor web (p. 296).

Paso 3: Configurar el servidor web


Actualice la configuración de software del servidor web para utilizar el certificado HTTPS y la
correspondiente clave privada PEM falsa que ha creado en el paso anterior (p. 293). De este modo,

296
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

concluirá la configuración del software del servidor web de Linux para la descarga SSL/TLS con AWS
CloudHSM.

Para actualizar la configuración del servidor web, complete los pasos de uno de los procedimientos
siguientes. Elija el procedimiento que corresponde al software del servidor web.

• Actualizar la configuración para NGINX (p. 297)


• Actualizar la configuración para Apache HTTP Server (p. 300)

Para actualizar la configuración del servidor web para NGINX

1. Conéctese a su instancia de cliente.


2. Ejecute el siguiente comando para crear los directorios necesarios para el certificado del servidor web
y la clave privada PEM falsa.

sudo mkdir -p /etc/pki/nginx/private

3. Ejecute el siguiente comando para copiar su certificado de servidor web en la ubicación necesaria.
Sustituya <web_server.crt> por el nombre del certificado de servidor web.

sudo cp <web_server.crt> /etc/pki/nginx/server.crt

4. Ejecute el siguiente comando para copiar la clave privada PEM falsa en la ubicación necesaria.
Reemplace <web_server_fake_PEM.key> por el nombre del archivo que contiene la clave privada
de PEM falsa.

sudo cp <web_server_fake_PEM.key> /etc/pki/nginx/private/server.key

5. Ejecute el siguiente comando para cambiar la propiedad de estos archivos para que el usuario
denominado nginx pueda leerlos.

sudo chown nginx /etc/pki/nginx/server.crt /etc/pki/nginx/private/server.key

6. Ejecute el siguiente comando para realizar una copia de seguridad del archivo /etc/nginx/
nginx.conf.

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup

7. Utilice un editor de texto para editar el archivo /etc/nginx/nginx.conf. Al principio del archivo,
añada la línea siguiente:

ssl_engine cloudhsm;
env n3fips_password;
"

A continuación, anule el comentario de la sección TLS del archivo de manera que tenga el siguiente
aspecto:

# Settings for a TLS enabled server.

server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
root /usr/share/nginx/html;

297
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/private/server.key";
# It is *strongly* recommended to generate unique DH parameters
# Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048
#ssl_dhparam "/etc/pki/nginx/dhparams.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!
aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;
ssl_prefer_server_ciphers on;

# Load configuration files for the default server block.


include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;


location = /40x.html {
}

error_page 500 502 503 504 /50x.html;


location = /50x.html {
}
}

Guarde el archivo. Esto requiere permisos de raíz de Linux.


8. Haga una copia de seguridad del archivo de configuración systemd y, a continuación, establezca la
ruta de EnvironmentFile.

Amazon Linux

No hay que hacer nada.


Amazon Linux 2

1. Haga una copia de seguridad del archivo nginx.service.

$ sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/


nginx.service.backup

2. Abra el archivo /lib/systemd/system/nginx.service en un editor de texto y, a


continuación, en la sección [Service], añada la siguiente ruta:

EnvironmentFile=/etc/sysconfig/nginx

CentOS 6

No hay que hacer nada.


CentOS 7

No hay que hacer nada.


RHEL 6

No hay que hacer nada.


RHEL 7

No hay que hacer nada.

298
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

Ubuntu 16.04

1. Haga una copia de seguridad del archivo nginx.service.

$ sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/


nginx.service.backup

2. Abra el archivo /lib/systemd/system/nginx.service en un editor de texto y, a


continuación, en la sección [Service], añada la siguiente ruta:

EnvironmentFile=/etc/sysconfig/nginx

9. Compruebe si existe el archivo /etc/sysconfig/nginx y, a continuación, realice una de las


operaciones siguientes:

• Si el archivo existe, haga una copia de seguridad del mismo ejecutando el siguiente comando:

$ sudo cp /etc/sysconfig/nginx /etc/sysconfig/nginx.backup

• Si el archivo no existe, abra un editor de texto y, a continuación, cree un archivo denominado nginx
en la carpeta /etc/sysconfig/.
Tip

No es necesario hacer una copia de seguridad del archivo que se acaba de crear.
10. Abra el archivo /etc/sysconfig/nginx en un editor de texto y, a continuación, añada las
credenciales del usuario de criptografía (CU):

$ n3fips_password=<CU user name>:<password>

Sustituya <CU user name> y <password><password> por las credenciales del usuario de
criptografía.

Guarde el archivo. Esto requiere permisos de raíz de Linux.


11. Inicie el servidor web NGINX.

Amazon Linux

$ sudo service nginx start

Amazon Linux 2

$ sudo systemctl start nginx

CentOS 6

No hay que hacer nada.


CentOS 7

No hay que hacer nada.


RHEL 6

No hay que hacer nada.

299
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

RHEL 7

No hay que hacer nada.


Ubuntu 16.04

$ sudo systemctl start nginx

12. Configure el servidor para que arranque NGINX cuando se inicie el servidor si fuera necesario.

Amazon Linux

$ sudo chkconfig nginx on

Amazon Linux 2

$ sudo systemctl enable nginx

CentOS 6

No hay que hacer nada.


CentOS 7

No hay que hacer nada.


RHEL 6

No hay que hacer nada.


RHEL 7

No hay que hacer nada.


Ubuntu 16.04

$ sudo systemctl enable nginx

Después de actualizar la configuración del servidor web, vaya a Paso 4: Habilitar el tráfico HTTPS y
verificar el certificado (p. 301).

Para actualizar la configuración del servidor web para Apache

1. Conéctese a la instancia de cliente de Amazon EC2.


2. Ejecute el siguiente comando para hacer una copia de seguridad del certificado predeterminado.

sudo cp /etc/pki/tls/certs/localhost.crt /etc/pki/tls/certs/localhost.crt.backup

3. Ejecute el siguiente comando para hacer una copia de seguridad de la clave privada predeterminada.

sudo cp /etc/pki/tls/private/localhost.key /etc/pki/tls/private/localhost.key.backup

4. Ejecute el siguiente comando para copiar su certificado de servidor web en la ubicación necesaria.
Sustituya <web_server.crt> por el nombre del certificado de servidor web.

sudo cp <web_server.crt> /etc/pki/tls/certs/localhost.crt

300
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

5. Ejecute el siguiente comando para copiar la clave privada PEM falsa en la ubicación necesaria.
Reemplace <web_server_fake_PEM.key> por el nombre del archivo que contiene la clave privada
de PEM falsa.

sudo cp <web_server_fake_PEM.key> /etc/pki/tls/private/localhost.key

6. Ejecute el siguiente comando para cambiar la propiedad de estos archivos para que el usuario
denominado apache pueda leerlos.

sudo chown apache /etc/pki/tls/certs/localhost.crt /etc/pki/tls/private/localhost.key

7. Ejecute el siguiente comando para hacer una copia de seguridad del archivo /etc/httpd/conf.d/
ssl.conf.

sudo cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.backup

8. Utilice un editor de texto para editar el archivo denominado /etc/httpd/conf.d/ssl.conf.


Sustituya la línea que comienza con SSLCryptoDevice de manera que tenga el siguiente aspecto:

SSLCryptoDevice cloudhsm

Guarde el archivo. Esto requiere permisos de raíz de Linux.


9. Ejecute el siguiente comando para hacer una copia de seguridad del archivo /etc/apache2/
envvars.

sudo cp /etc/apache2/envvars /etc/apache2/envvars.backup

10. Utilice un editor de texto para editar el archivo /etc/apache2/envvars. Añada la siguiente línea,
especificando el nombre de usuario y la contraseña del usuario de criptografía (CU). Sustituya <CU
user name> por el nombre del usuario de criptografía. Sustituya <password> por la contraseña del
CU.

export n3fips_password=<CU user name>:<password>

Guarde el archivo. Esto requiere permisos de raíz de Linux.


11. Ejecute el siguiente comando para iniciar Apache HTTP Server.

sudo service httpd start

12. Ejecute el siguiente comando para configurar su servidor para iniciar Apache cuando se inicia el
servidor.

sudo chkconfig httpd on

Después de actualizar la configuración del servidor web, vaya a Paso 4: Habilitar el tráfico HTTPS y
verificar el certificado (p. 301).

Paso 4: Habilitar el tráfico HTTPS y verificar el certificado


Después de configurar el servidor web para la descarga de SSL/TLS con AWS CloudHSM, añada la
instancia de servidor web a un grupo de seguridad que permita el tráfico HTTPS entrante. Esto permite
a los clientes, como los exploradores web, establecer una conexión HTTPS con su servidor web. A
continuación, establezca una conexión HTTPS con su servidor web y compruebe que usa el certificado que
ha configurado para la descarga de SSL/TLS con AWS CloudHSM.

301
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

Temas
• Habilitar las conexiones HTTPS entrantes (p. 302)
• Verificar que HTTPS utiliza el certificado que se ha configurado (p. 302)

Habilitar las conexiones HTTPS entrantes


Para conectarse a su servidor web desde un cliente (como, por ejemplo, un navegador web), cree un grupo
de seguridad que permita conexiones HTTPS entrantes. En concreto, debería permitir conexiones TCP
entrantes en el puerto 443. Asigne este grupo de seguridad a su servidor web.

Para crear un grupo de seguridad para HTTPS y asignarlo a su servidor web

1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.


2. Elija Security Groups en el panel de navegación.
3. Elija Create Security Group.
4. En Create Security Group (Crear grupo de seguridad), haga lo siguiente:

a. Para Security group name (Nombre del grupo de seguridad), escriba un nombre para el grupo de
seguridad que está creando.
b. De manera opcional, escriba una descripción del grupo de seguridad que está creando.
c. Para VPC, seleccione la VPC que contiene la instancia Amazon EC2 de su servidor web.
d. Seleccione Add Rule (Añadir regla).
e. En Type (Tipo), seleccione HTTPS.
5. Seleccione Create.
6. En el panel de navegación, seleccione Instances (Instancias).
7. Seleccione la casilla de verificación junto a la instancia del servidor web. A continuación, seleccione
Actions (Acciones), Networking (Redes) y Change Security Groups (Cambiar grupos de seguridad).
8. Seleccione la casilla de verificación situada junto al grupo de seguridad que creó para HTTPS. A
continuación, seleccione Assign Security Groups (Asignar grupos de seguridad).

Verificar que HTTPS utiliza el certificado que se ha configurado


Después de añadir el servidor web a un grupo de seguridad, puede verificar que la descarga de SSL/TLS
con AWS CloudHSM está funcionando. Puede hacerlo mediante un navegador web o con una herramienta
como OpenSSL s_client.

Para verificar la descarga de SSL/TLS con un navegador web

1. Utilice un navegador web para conectarse a su servidor web mediante el nombre de DNS público o la
dirección IP del servidor. Asegúrese de que la dirección URL en la barra de direcciones comienza con
https://. Por ejemplo, https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/.
Tip
Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53 para dirigir el nombre
de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web.
Para obtener más información, consulte Routing Traffic to an Amazon EC2 Instance
(Direccionamiento del tráfico a una instancia) en Guía para desarrolladores de Amazon
Route 53 o en la documentación para su servicio DNS.
2. Utilice el navegador web para ver el certificado del servidor web. Para obtener más información,
consulte los siguientes temas:

• Para Mozilla Firefox, consulte View a Certificate (Ver un certificado) en el sitio web de Soporte de
Mozilla.

302
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

• Para Google Chrome, consulte Conocer los problemas de seguridad en el sitio web de herramientas
de Google para desarrolladores web.

Otros navegadores web pueden tener características similares que puede utilizar para ver el
certificado del servidor web.
3. Asegúrese de que el certificado SSL/TLS es el que ha configurado para que utilice el servidor web.

Para verificar la descarga de SSL/TLS con OpenSSL s_client

1. Ejecute el siguiente comando OpenSSL para conectarse a su servidor web a través de HTTPS.
Sustituya <server name> por el nombre de DNS público o la dirección IP de su servidor web.

openssl s_client -connect <server name>:443

Tip

Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53 para dirigir el nombre
de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web.
Para obtener más información, consulte Routing Traffic to an Amazon EC2 Instance
(Direccionamiento del tráfico a una instancia) en Guía para desarrolladores de Amazon
Route 53 o en la documentación para su servicio DNS.
2. Asegúrese de que el certificado SSL/TLS es el que ha configurado para que utilice el servidor web.

Ahora tiene un sitio web que se protege con HTTPS. La clave privada del servidor web está almacenada
en un HSM en su clúster de AWS CloudHSM. Sin embargo, dispone de solo un servidor web. Para
configurar un segundo servidor web y un balanceador de carga para incrementar la disponibilidad, vaya a
(Opcional) Paso 5: Añadir un balanceador de carga con Elastic Load Balancing (p. 303).

(Opcional) Paso 5: Añadir un balanceador de carga con Elastic


Load Balancing
Después de configurar la descarga de SSL/TLS con un servidor web, tiene la opción de crear más
servidores web y un balanceador de carga de Elastic Load Balancing que dirige el tráfico de HTTPS a
los servidores web. Un balanceador de carga puede reducir la carga de sus servidores web individuales
equilibrando el tráfico entre dos o más servidores web. También puede aumentar la disponibilidad de su
sitio web, ya que el balanceador de carga monitorea el estado de los servidores web y solo dirige tráfico
a servidores en buen estado. Si se produce un error en un servidor web, el balanceador de carga deja
automáticamente de dirigir tráfico hacia el servidor.

Temas
• Crear una subred para el segundo servidor web (p. 303)
• Crear el segundo servidor web (p. 304)
• Crear el balanceador de carga (p. 306)

Crear una subred para el segundo servidor web


Antes de crear otro servidor web, tendrá que crear una nueva subred en la misma VPC que contenga el
servidor web existente y el clúster de AWS CloudHSM.

303
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

Para crear una nueva subred

1. Abra la sección Subnets (Subredes) en la consola de Amazon VPC en https://


console.aws.amazon.com/vpc/home#subnets: .
2. Seleccione Create Subnet (Crear Subred).
3. En el cuadro de diálogo Create Subnet (Crear Subred), haga lo siguiente:

a. En Name tag (Etiqueta de nombre), escriba un nombre para la subred.


b. Para VPC, seleccione la VPC de AWS CloudHSM que contiene su servidor web existente y el
clúster de AWS CloudHSM.
c. Para Availability Zone (Zona de disponibilidad), seleccione una zona de disponibilidad diferente a
la que contiene su servidor web existente.
d. En IPv4 CIDR block (Bloque de CIDR IPv4), escriba el bloque de CIDR que se usará para la
subred. Por ejemplo, escriba 10.0.10.0/24.
e. Elija Yes, Create (Sí, crear).
4. Seleccione la casilla de verificación situada junto a la subred pública que contiene su servidor web
existente. Se trata de una subred diferente de la subred pública creada en el paso anterior.
5. En el panel de contenido, seleccione la pestaña Route Table (Tabla de ruteo). A continuación, elija el
enlace de la tabla de ruteo.

6. Seleccione la casilla de verificación que hay junto a la tabla de ruteo.


7. Seleccione la pestaña Subnet Associations (Asociaciones de subredes). A continuación, seleccione
Edit (Editar).
8. Seleccione la casilla de verificación situada junto a la subred pública que ha creado anteriormente en
este procedimiento. A continuación, seleccione Save (Guardar).

Crear el segundo servidor web


Complete los siguientes pasos para crear un segundo servidor web con la misma configuración que su
servidor web existente.

Para crear un segundo servidor web

1. Abra la sección Instances (Instancias) en la consola Amazon EC2 en https://console.aws.amazon.com/


ec2/v2/home#Instances:.
2. Seleccione la casilla de verificación junto a la instancia de servidor web existente.
3. Seleccione Actions (Acciones), Image (Imagen) y, a continuación, Create Image (Crear imagen).

304
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

4. En el cuadro de diálogo Create Image (Crear imagen), haga lo siguiente:

a. En Image name (Nombre de la imagen), escriba un nombre para la imagen.


b. En Image description (Descripción de la imagen), escriba una descripción para la imagen.
c. Elija Create Image (Crear imagen). Esta acción reinicia su servidor web existente.
d. Seleccione el enlace View pending image ami-ID de AMI> (Ver imagen pendiente ami-
ID de AMI>).

En la columna Status (Estado), observe el estado de la imagen. Cuando el estado de la imagen


sea available (disponible) (esto podría tardar varios minutos), vaya al siguiente paso.
5. En el panel de navegación, seleccione Instances (Instancias).
6. Seleccione la casilla de verificación junto al servidor web existente.
7. Seleccione Actions (Acciones) y después Launch More Like This (Lanzar más así).
8. Seleccione Edit AMI (Editar AMI).

9. En el panel de navegación izquierdo, seleccione My AMIs (Mis AMI). A continuación, borre el texto en
el campo de búsqueda.
10. Junto a la imagen del servidor web, seleccione Select (Seleccionar).
11. Seleccione Yes, I want to continue with this AMI (Sí, deseo continuar con esta AMI) (<imagine
name> (<nombre imagen>) - ami-<AMI ID> (<ID de AMI>)).
12. Seleccione Siguiente.
13. Seleccione un tipo de instancia y a continuación, seleccione Next: Configure Instance Details.
14. En Step 3: Configure Instance Details (Paso 3: Configure los detalles de la instancia), haga lo
siguiente:

a. Para Network (Red), seleccione la VPC que contiene su servidor web existente.
b. Para Subnet (Subred), seleccione la subred pública que creó para el segundo servidor web.
c. En Auto-assign Public IP (Autoasignar IP pública), elija Enable (Habilitar).
d. Cambie los detalles restantes de la instancia como desee. A continuación, seleccione Next: Add
Storage (Siguiente: Añadir almacenamiento).
15. Cambie la configuración de almacenamiento como desee. A continuación, elija Next: Add Tags
(Siguiente: Agregar etiquetas).
16. Añada o edite las etiquetas que desee. A continuación, seleccione Next: Configure Security Group
(Configurar grupo de seguridad).
17. En Step 6: Configure Security Group (Paso 6: Configurar grupo de seguridad), haga lo siguiente:

a. En Assign a security group (Asignar un grupo de seguridad), seleccione Select an existing security
group (Seleccionar un grupo de seguridad existente).

305
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

b. Select the check box next to the security group named cloudhsm-<cluster ID>-sg.. AWS
CloudHSM ha creado este grupo de seguridad en su nombre cuando usted creó el clúster (p. 18).
Debe elegir este grupo de seguridad para permitir que la instancia del servidor web se conecte a
los HSM del clúster.
c. Seleccione la casilla de verificación situada junto al grupo de seguridad que permite tráfico
HTTPS entrante. You created this security group previously (p. 302).
d. (Opcional) Seleccione la casilla de verificación situada junto a un grupo de seguridad que permite
el tráfico SSH (para Linux) o RDP (para Windows) entrante desde la red. Es decir, el grupo de
seguridad debe permitir el tráfico TCP entrante en el puerto 22 (para SSH en Linux) o en el puerto
3389 (para RDP en Windows). De lo contrario, no podrá conectarse a su instancia de cliente. Si
no dispone de un grupo de seguridad de este tipo, debe crearlo y, a continuación, asignarlo a la
instancia de cliente.

Elija Review and Launch (Revisar y lanzar).


18. Revise los detalles de la instancia y a continuación, seleccione Launch (Lanzar).
19. Elija si desea lanzar la instancia con un par de claves existente, crear un nuevo par de claves o lanzar
la instancia sin un par de claves.

• Para utilizar un par de claves existente, haga lo siguiente:


1. Elija Choose an existing key pair.
2. En Select a key pair, seleccione el par de claves que desea usar.
3. Seleccione la casilla de verificación situada junto a I acknowledge that I have access to the
selected private key file (Confirmo que tengo acceso al archivo seleccionado de llave privada)
(private key file name>.pem (nombre de archivo de clave privada>.pem)), y
que sin este archivo no podré iniciar sesión en mi instancia.
• Para crear un nuevo par de claves, haga lo siguiente:
1. Seleccione Create a new key pair (Crear un nuevo par de claves).
2. En Key pair name (Nombre del par de claves), escriba un nombre para el par de claves.
3. Seleccione Download Key Pair (Descargar par de claves) y guarde el archivo de clave privada en
una ubicación segura y accesible.
Warning

No puede volver a descargar el archivo de clave privada después de este punto. Si no


descarga ahora el archivo de clave privada, no podrá obtener acceso a la instancia de
cliente.
• Para lanzar la instancia sin un par de claves, haga lo siguiente:
1. Seleccione Proceed without a key pair (Continuar sin un par de claves).
2. Seleccione la casilla de verificación junto a I acknowledge that I will not be able to connect to
this instance unless I already know the password built into this AMI. (Confirmo que no podré
conectarme a esta instancia salvo que ya sepa la contraseña integrada en esta AMI).

SeleccioneLaunch Instances (Lanzar instancias).

Crear el balanceador de carga


Complete los siguientes pasos para crear un balanceador de carga de Elastic Load Balancing que dirige el
tráfico HTTPS a los servidores web.

306
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Linux

Para crear un balanceador de carga

1. Abra la sección Load Balancers (Balanceadores de carga) en la consola de Amazon EC2 en https://
console.aws.amazon.com/ec2/v2/home#LoadBalancers.
2. Elija Create Load Balancer.
3. En la sección Network Load Balancer (Balanceador de carga de red), seleccione Create (Crear).
4. En Step 1: Configure Load Balancer (Paso 1: Configurar el balanceador de carga), haga lo siguiente:

a. Para Name (Nombre), escriba un nombre para el balanceador de carga que está creando.
b. En la sección Listeners (Agentes de escucha), para Load Balancer Port (Puerto de balanceador
de carga), cambie el valor a 443.
c. En la sección Availability Zones (Zonas de disponibilidad), para VPC, seleccione la VPC que
contiene sus servidores web.
d. En la sección Availability Zones (Zonas de disponibilidad), seleccione las subredes que contienen
sus servidores web.
e. Elija Next: Configure Routing (Siguiente: Configuración del enrutamiento).
5. En Step 2: Configure Routing (Paso 2: Configurar direccionamiento), haga lo siguiente:

a. Para Name (Nombre), escriba un nombre para el grupo de destino que está creando.
b. Para Port (Puerto), cambie el valor a 443.
c. Elija Next: Register Targets (Siguiente: Registrar destinos).
6. Para Step 3: Register Targets (Paso 3: Registrar destinos), haga lo siguiente:

a. En la sección Instances (Instancias), seleccione las casillas de verificación junto a las instancias
de servidor web. A continuación, seleccione Add to registered (Añadir a registrados).
b. Elija Next: Review (Siguiente: Revisar).
7. Revise los detalles del balanceador de carga y, a continuación, seleccione Create (Crear).
8. Cuando se haya creado correctamente el balanceador de carga, seleccione Close (Cerrar).

Una vez que haya finalizado los pasos anteriores, la consola de Amazon EC2 muestra su balanceador de
carga de Elastic Load Balancing.

Cuando el estado del balanceador de carga sea activo, puede verificar que el balanceador de carga
está en ejecución. Es decir, puede verificar que está enviando tráfico HTTPS a sus servidores web con
descarga de SSL/TLS con AWS CloudHSM. Puede hacerlo mediante un navegador web o una herramienta
como OpenSSL s_client.

Para verificar que el balanceador de carga se está ejecutando con un navegador web

1. En la consola de Amazon EC2, encuentre el nombre de DNS para el balanceador de carga que acaba
de crear. A continuación, seleccione el nombre de DNS y cópielo.
2. Utilice un navegador web como Mozilla Firefox o Google Chrome para conectarse a su balanceador
de carga con el nombre de DNS del balanceador de carga. Asegúrese de que la dirección URL en la
barra de direcciones comienza con https://.
Tip

Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53 para dirigir el nombre
de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web.
Para obtener más información, consulte Routing Traffic to an Amazon EC2 Instance
(Direccionamiento del tráfico a una instancia) en Guía para desarrolladores de Amazon
Route 53 o en la documentación para su servicio DNS.
3. Utilice el navegador web para ver el certificado del servidor web. Para obtener más información,
consulte los siguientes temas:

307
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

• Para Mozilla Firefox, consulte View a Certificate (Ver un certificado) en el sitio web de Soporte de
Mozilla.
• Para Google Chrome, consulte Conocer los problemas de seguridad en el sitio web de herramientas
de Google para desarrolladores web.

Otros navegadores web pueden tener características similares que puede utilizar para ver el
certificado del servidor web.
4. Asegúrese de que el certificado es el que ha configurado para que lo utilice el servidor web.

Para verificar que el balanceador de carga se está ejecutando con OpenSSL s_client

1. Utilice el siguiente comando OpenSSL para conectarse a su balanceador de carga a través de


HTTPS. Sustituya <DNS name> (<Nombre de DNS>) por el nombre de DNS de su balanceador de
carga.

openssl s_client -connect <DNS name>:443

Tip

Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53 para dirigir el nombre
de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web.
Para obtener más información, consulte Routing Traffic to an Amazon EC2 Instance
(Direccionamiento del tráfico a una instancia) en Guía para desarrolladores de Amazon
Route 53 o en la documentación para su servicio DNS.
2. Asegúrese de que el certificado es el que ha configurado para que lo utilice el servidor web.

Ahora tiene un sitio web que se protege con HTTPS, con la clave privada del servidor web almacenada en
un HSM en su clúster de AWS CloudHSM. Su página web tiene dos servidores web y un balanceador de
carga para ayudar a mejorar la eficiencia y la disponibilidad.

Tutorial: Uso de la descarga de SSL/TLS con AWS


CloudHSM en Windows
En este tutorial, se proporcionan instrucciones paso a paso para configurar la descarga de SSL/TLS con
AWS CloudHSM en un servidor web de Windows.

Temas
• Información general (p. 308)
• Paso 1: Configurar los requisitos previos (p. 309)
• Paso 2: Crear una solicitud de firma de certificado (CSR) y un certificado (p. 310)
• Paso 3: Configurar el servidor web (p. 313)
• Paso 4: Habilitar el tráfico HTTPS y verificar el certificado (p. 314)
• (Opcional) Paso 5: Añadir un balanceador de carga con Elastic Load Balancing (p. 316)

Información general
En Windows, la aplicación del servidor web Internet Information Services (IIS) para Windows Server admite
HTTPS de forma nativa. El proveedor de almacenamiento de claves (KSP) de AWS CloudHSM para la API
de criptografía de nueva generación (CNG) de Microsoft (p. 281) proporciona la interfaz que permite a IIS

308
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

utilizar los HSM del clúster para la descarga criptográfica y el almacenamiento de claves. El KSP de AWS
CloudHSM es el puente que conecta IIS con el clúster de AWS CloudHSM.

Este tutorial le enseña a realizar las siguientes tareas:

• Instale el software del servidor web en una instancia de Amazon EC2.


• Configure el software del servidor web para que admita HTTPS con una clave privada almacenada en su
clúster de AWS CloudHSM.
• (Opcional) Utilice Amazon EC2 para crear una segunda instancia de servidor web y Elastic Load
Balancing para crear un balanceador de carga. El uso de un balanceador de carga puede mejorar el
desempeño al distribuir la carga entre varios servidores. También puede proporcionar redundancia y una
mayor disponibilidad si uno o más servidores funcionan mal.

Cuando esté listo para empezar, vaya al Paso 1: Configurar los requisitos previos (p. 309).

Paso 1: Configurar los requisitos previos


Si desea configurar un servidor web para la descarga SSL/TLS con AWS CloudHSM, necesita lo siguiente:

• Un clúster de AWS CloudHSM activo que tenga como mínimo un HSM.


• Una instancia Amazon EC2 en la que se ejecute un sistema operativo Windows y que tenga instalado el
siguiente software:
• El software de cliente de AWS CloudHSM para Windows.
• Internet Information Services (IIS) para Windows Server.
• Un usuario de criptografía (p. 11) (CU) que sea el propietario y administre la clave privada del servidor
web en el HSM.

Note

Este tutorial usa Microsoft Windows Server 2016. También es posible utilizar Microsoft Windows
Server 2012, pero no Microsoft Windows Server 2012 R2.

Para configurar una instancia de Windows Server y crear un CU en el HSM

1. Realice los pasos que se indican en Introducción (p. 15). Cuando lance el cliente de Amazon EC2,
seleccione una AMI de Windows Server 2016 o Windows Server 2012. Cuando haya completado
estos pasos, dispondrá de un clúster activo con al menos un HSM. También tendrá una instancia de
cliente de Amazon EC2 que ejecuta Windows Server con el software de cliente de AWS CloudHSM
para Windows instalado.
2. (Opcional) Añada más HSM a su clúster. Para obtener más información, consulte Agregar un
HSM (p. 43).
3. Conéctese al servidor de Windows. Para obtener más información, consulte Conexión con la instancia
en la Guía del usuario de Amazon EC2 para instancias de Windows.
4. Para crear un usuario criptográfico (CU) en su HSM, haga lo siguiente:

a. Inicie el cliente de AWS CloudHSM (p. 84).


b. Actualice el archivo de configuración cloudhsm_mgmt_util (p. 85).
c. Iniciar cloudhsm_mgmt_util (p. 86).
d. Habilite el cifrado integral (p. 87).
e. Inicie sesión en los HSM (p. 87) con el nombre de usuario y la contraseña de un responsable de
criptografía (CO).
f. Cree un usuario de criptografía (CU) (p. 54). Realice un seguimiento del nombre de usuario y la
contraseña del CU. Los necesitará para completar el paso siguiente.

309
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

5. Establezca las credenciales de inicio de sesión del HSM (p. 283), utilizando el nombre de usuario y la
contraseña del CU que creó en el paso anterior.
6. En el paso 5, si utilizó el Administrador de credenciales de Windows para configurar las credenciales
de HSM, descargue psexec.exe de SysInternals para ejecutar el siguiente comando como NT
Authority\SYSTEM:

psexec.exe -s "C:\Program Files\Amazon\CloudHsm\tools\set_cloudhsm_credentials.exe" --


username <username> --password <password>

Sustituya <username> (<nombre de usuario>) y <password> (<contraseña>) por las


credenciales de HSM.

Para instalar IIS en Windows Server

1. Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte
Conexión con la instancia en la Guía del usuario de Amazon EC2 para instancias de Windows.
2. En su servidor de Windows, inicie Administrador del servidor.
3. En el panel Administrador del servidor, elija Agregar roles y características.
4. Lea la información de Antes de comenzar y, a continuación, elija Siguiente.
5. En Installation Type, elija Instalación basada en características o en roles. A continuación, elija Next.
6. En Selección de servidor, elija Seleccionar un servidor del grupo de servidores. A continuación, elija
Next.
7. En Roles de servidor, haga lo siguiente:

a. Seleccione Servidor web (IIS).


b. En Agregar características necesarias para Servidor web (IIS), elija Agregar características.
c. Elija Siguiente para finalizar la selección de roles de servidor.
8. En Features (Características), acepte los valores predeterminados. A continuación, elija Next.
9. Lea la información sobre el Rol de servidor web (IIS). A continuación, elija Next.
10. En Seleccionar servicios de rol, acepte los valores predeterminados o cambie la configuración como
desee. A continuación, elija Next.
11. En Confirmation (Confirmación), lea la información de confirmación. Después, seleccione Install
(Instalar).
12. Cuando finalice la instalación, elija Cerrar.

Después de completar estos pasos, vaya a Paso 2: Crear una solicitud de firma de certificado (CSR) y un
certificado (p. 310).

Paso 2: Crear una solicitud de firma de certificado (CSR) y un


certificado
Para habilitar HTTPS, el servidor web necesita un certificado SSL/TLS y la clave privada correspondiente.
Para utilizar la descarga SSL/TLS con AWS CloudHSM, debe almacenar la clave privada en el HSM del
clúster de AWS CloudHSM. Para ello, utilice el proveedor de almacenamiento de claves (KSP) de AWS
CloudHSM para la API de criptografía de nueva generación (CNG) de Microsoft (p. 281) si desea crear
una solicitud de firma de certificado (CSR). A continuación, debe proporcionar la CSR a una entidad de
certificación (CA), para que firme la CSR y genere un certificado.

Temas
• Creación de una CSR (p. 311)

310
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

• Obtención e importación de un certificado firmado (p. 311)

Creación de una CSR


Utilice el KSP de AWS CloudHSM en Windows Server para crear una CSR.

Para crear una CSR

1. Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte
Conexión con la instancia en la Guía del usuario de Amazon EC2 para instancias de Windows.
2. Inicie el cliente de AWS CloudHSM (p. 84).
3. En Windows Server, utilice un editor de texto para crear un archivo de solicitud de certificado
denominado IISCertRequest.inf. A continuación, se muestra el contenido de un archivo
IISCertRequest.inf de ejemplo. Para obtener más información sobre las secciones, las claves y
los valores que puede especificar en el archivo, consulte la documentación de Microsoft. No cambie el
valor de ProviderName.

[Version]
Signature = "$Windows NT$"
[NewRequest]
Subject = "CN=example.com,C=US,ST=Washington,L=Seattle,O=ExampleOrg,OU=WebServer"
HashAlgorithm = SHA256
KeyAlgorithm = RSA
KeyLength = 2048
ProviderName = "Cavium Key Storage Provider"
KeyUsage = 0xf0
MachineKeySet = True
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1

4. Utilice el comando certreq de Windows para crear una CSR a partir del archivo
IISCertRequest.inf que creó en el paso anterior. En el siguiente ejemplo, se guarda la CSR en
un archivo denominado IISCertRequest.csr. Si utilizó otro nombre para el archivo de solicitud de
certificado, sustituya IISCertRequest.inf por el nombre del archivo. Si lo desea, puede sustituir
IISCertRequest.csr por otro nombre de archivo para el archivo de la CSR.

C:\>certreq -new IISCertRequest.inf IISCertRequest.csr


SDK Version: 2.03

CertReq: Request Created

El archivo IISCertRequest.csr contiene la CSR. Necesita esta CSR para obtener un certificado
firmado.

Obtención e importación de un certificado firmado


En un entorno de producción, normalmente se usa una entidad de certificación (CA) para crear un
certificado de una CSR. No es necesaria una CA para un entorno de prueba. Si utiliza una CA, envíe el
archivo de la CSR (IISCertRequest.csr) a la CA para que cree un certificado SSL/TLS firmado.

Como alternativa al uso de una CA, puede utilizar una herramienta como OpenSSL para crear un
certificado autofirmado.
Warning

Los navegadores no confían en certificados autofirmados y no deben utilizarse en entornos de


producción. Se pueden usar en entornos de prueba.

311
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

Los siguientes procedimientos muestran cómo crear un certificado autofirmado y cómo utilizarlo para firmar
la CSR del servidor web.

Para crear un certificado autofirmado

1. Utilice el siguiente comando de OpenSSL para crear una clave privada. Si lo desea, puede sustituir
SelfSignedCA.key por el nombre del archivo en que se va a guardar la clave privada.

openssl genrsa -aes256 -out SelfSignedCA.key 2048


Generating RSA private key, 2048 bit long modulus
......................................................................+++
.........................................+++
e is 65537 (0x10001)
Enter pass phrase for SelfSignedCA.key:
Verifying - Enter pass phrase for SelfSignedCA.key:

2. Utilice el siguiente comando de OpenSSL para crear un certificado autofirmado con la clave privada
que ha creado en el paso anterior. Este es un comando interactivo. Lea las instrucciones que
aparecen en pantalla y siga las indicaciones. Sustituya SelfSignedCA.key por el nombre del
archivo que contiene la clave privada (si es distinto). Si lo desea, puede sustituir SelfSignedCA.crt
por el nombre del archivo en que se va a guardar el certificado autofirmado.

openssl req -new -x509 -days 365 -key SelfSignedCA.key -out SelfSignedCA.crt
Enter pass phrase for SelfSignedCA.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Para utilizar el certificado autofirmado para firmar la CSR del servidor web

• Utilice el siguiente comando de OpenSSL para utilizar la clave privada y el certificado autofirmado
para firmar la CSR. Sustituya los nombres de los archivos siguientes por los que contienen los datos
correspondientes (si son distintos).

• IISCertRequest.csr: nombre del archivo que contiene la CSR del servidor web
• SelfSignedCA.crt: nombre del archivo que contiene el certificado autofirmado
• SelfSignedCA.key: nombre del archivo que contiene la clave privada
• IISCert.crt: nombre del archivo en que se va a guardar el certificado firmado del servidor web

openssl x509 -req -days 365 -in IISCertRequest.csr \


-CA SelfSignedCA.crt \
-CAkey SelfSignedCA.key \
-CAcreateserial \
-out IISCert.crt
Signature ok
subject=/ST=IIS-HSM/L=IIS-HSM/OU=IIS-HSM/O=IIS-HSM/CN=IIS-HSM/C=IIS-HSM
Getting CA Private Key

312
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

Enter pass phrase for SelfSignedCA.key:

Una vez que haya completado el paso anterior, tendrá un certificado firmado para el servidor web
(IISCert.crt) y un certificado autofirmado (SelfSignedCA.crt). Cuando tenga estos archivos, vaya al
Paso 3: Configurar el servidor web (p. 313).

Paso 3: Configurar el servidor web


Actualice la configuración del sitio web de IIS para que utilice el certificado HTTPS que creó al final
del paso anterior (p. 310). De este modo, concluirá la configuración del software del servidor web de
Windows (IIS) para la descarga de SSL/TLS con AWS CloudHSM.

Si utilizó un certificado autofirmado para firmar la CSR, primero debe importar el certificado autofirmado en
las entidades de certificación raíz de confianza de Windows.

Para importar el certificado autofirmado en las entidades de certificación raíz de confianza de


Windows

1. Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte
Conexión con la instancia en la Guía del usuario de Amazon EC2 para instancias de Windows.
2. Copie el certificado autofirmado en el servidor de Windows.
3. En Windows Server, abra el Panel de control.
4. En Buscar en el Panel de control, escriba certificates. A continuación, elija Administrar
certificados de equipo.
5. En la ventana Certificados (equipo local), haga doble clic en Entidades de certificación raíz de
confianza.
6. Haga clic con el botón derecho en Certificados y, a continuación, elija Todas las tareas, Importar.
7. En el Asistente para importar certificados, elija Siguiente.
8. Elija Examinar y, a continuación, busque y seleccione el certificado autofirmado. Si creó el certificado
autofirmado siguiendo las instrucciones del paso anterior de este tutorial (p. 310), el certificado
autofirmado se llama SelfSignedCA.crt. Elija Open.
9. Seleccione Next (Siguiente).
10. En Almacén de certificados, elija Colocar todos los certificados en el siguiente almacén. A
continuación, asegúrese de que está seleccionada la opción Entidades de certificación raíz de
confianza para Almacén de certificados.
11. Elija Next y, a continuación, elija Finish.

Para actualizar la configuración del sitio web de IIS

1. Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte
Conexión con la instancia en la Guía del usuario de Amazon EC2 para instancias de Windows.
2. Inicie el cliente de AWS CloudHSM (p. 84).
3. Copie el certificado firmado del servidor web, el que creó al final del paso anterior de este
tutorial (p. 310), en el servidor de Windows.
4. En Windows Server, utilice el comando certreq de Windows para aceptar el certificado firmado, tal
y como se muestra en el siguiente ejemplo. Sustituya IISCert.crt por el nombre del archivo que
contiene el certificado firmado del servidor web.

C:\>certreq -accept IISCert.crt


SDK Version: 2.03

5. En su servidor de Windows, inicie Administrador del servidor.

313
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

6. En el panel Administrador del servidor, en la esquina superior derecha, elija Herramientas,


Administrador de Internet Information Services (IIS).
7. En la ventana Administrador de Internet Information Services (IIS), haga doble clic en el nombre del
servidor. A continuación, haga doble clic en Sitios. Seleccione el sitio web.
8. Seleccione Configuración de SSL. A continuación, en el lado derecho de la ventana, elija Enlaces.
9. En la ventana Enlaces de sitios, elija Agregar.
10. En Tipo, elija https. En Certificado SSL, elija el certificado HTTPS que creó al final del paso anterior de
este tutorial (p. 310).
Note
Si se produce un error durante la vinculación de este certificado, reinicie el servidor y vuelva a
intentar este paso.
11. Seleccione OK.

Después de actualizar la configuración del sitio web, vaya al Paso 4: Habilitar el tráfico HTTPS y verificar el
certificado (p. 314).

Paso 4: Habilitar el tráfico HTTPS y verificar el certificado


Después de configurar el servidor web para la descarga de SSL/TLS con AWS CloudHSM, añada la
instancia de servidor web a un grupo de seguridad que permita el tráfico HTTPS entrante. Esto permite
a los clientes, como los exploradores web, establecer una conexión HTTPS con su servidor web. A
continuación, establezca una conexión HTTPS con su servidor web y compruebe que usa el certificado que
ha configurado para la descarga de SSL/TLS con AWS CloudHSM.

Temas
• Habilitar las conexiones HTTPS entrantes (p. 314)
• Verificar que HTTPS utiliza el certificado que se ha configurado (p. 315)

Habilitar las conexiones HTTPS entrantes


Para conectarse a su servidor web desde un cliente (como, por ejemplo, un navegador web), cree un grupo
de seguridad que permita conexiones HTTPS entrantes. En concreto, debería permitir conexiones TCP
entrantes en el puerto 443. Asigne este grupo de seguridad a su servidor web.

Para crear un grupo de seguridad para HTTPS y asignarlo a su servidor web

1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.


2. Elija Security Groups en el panel de navegación.
3. Elija Create Security Group.
4. En Create Security Group (Crear grupo de seguridad), haga lo siguiente:

a. Para Security group name (Nombre del grupo de seguridad), escriba un nombre para el grupo de
seguridad que está creando.
b. De manera opcional, escriba una descripción del grupo de seguridad que está creando.
c. Para VPC, seleccione la VPC que contiene la instancia Amazon EC2 de su servidor web.
d. Seleccione Add Rule (Añadir regla).
e. En Type (Tipo), seleccione HTTPS.
5. Seleccione Create.
6. En el panel de navegación, seleccione Instances (Instancias).
7. Seleccione la casilla de verificación junto a la instancia del servidor web. A continuación, seleccione
Actions (Acciones), Networking (Redes) y Change Security Groups (Cambiar grupos de seguridad).

314
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

8. Seleccione la casilla de verificación situada junto al grupo de seguridad que creó para HTTPS. A
continuación, seleccione Assign Security Groups (Asignar grupos de seguridad).

Verificar que HTTPS utiliza el certificado que se ha configurado


Después de añadir el servidor web a un grupo de seguridad, puede verificar que la descarga de SSL/TLS
con AWS CloudHSM está funcionando. Puede hacerlo mediante un navegador web o con una herramienta
como OpenSSL s_client.

Para verificar la descarga de SSL/TLS con un navegador web

1. Utilice un navegador web para conectarse a su servidor web mediante el nombre de DNS público o la
dirección IP del servidor. Asegúrese de que la dirección URL en la barra de direcciones comienza con
https://. Por ejemplo, https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/.
Tip

Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53 para dirigir el nombre
de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web.
Para obtener más información, consulte Routing Traffic to an Amazon EC2 Instance
(Direccionamiento del tráfico a una instancia) en Guía para desarrolladores de Amazon
Route 53 o en la documentación para su servicio DNS.
2. Utilice el navegador web para ver el certificado del servidor web. Para obtener más información,
consulte los siguientes temas:

• Para Mozilla Firefox, consulte View a Certificate (Ver un certificado) en el sitio web de Soporte de
Mozilla.
• Para Google Chrome, consulte Conocer los problemas de seguridad en el sitio web de herramientas
de Google para desarrolladores web.

Otros navegadores web pueden tener características similares que puede utilizar para ver el
certificado del servidor web.
3. Asegúrese de que el certificado SSL/TLS es el que ha configurado para que utilice el servidor web.

Para verificar la descarga de SSL/TLS con OpenSSL s_client

1. Ejecute el siguiente comando OpenSSL para conectarse a su servidor web a través de HTTPS.
Sustituya <server name> por el nombre de DNS público o la dirección IP de su servidor web.

openssl s_client -connect <server name>:443

Tip

Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53 para dirigir el nombre
de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web.
Para obtener más información, consulte Routing Traffic to an Amazon EC2 Instance
(Direccionamiento del tráfico a una instancia) en Guía para desarrolladores de Amazon
Route 53 o en la documentación para su servicio DNS.
2. Asegúrese de que el certificado SSL/TLS es el que ha configurado para que utilice el servidor web.

Ahora tiene un sitio web que se protege con HTTPS. La clave privada del servidor web está almacenada
en un HSM en su clúster de AWS CloudHSM. Sin embargo, dispone de solo un servidor web. Para
configurar un segundo servidor web y un balanceador de carga para incrementar la disponibilidad, vaya a
(Opcional) Paso 5: Añadir un balanceador de carga con Elastic Load Balancing (p. 316).

315
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

(Opcional) Paso 5: Añadir un balanceador de carga con Elastic


Load Balancing
Después de configurar la descarga de SSL/TLS con un servidor web, tiene la opción de crear más
servidores web y un balanceador de carga de Elastic Load Balancing que dirige el tráfico de HTTPS a
los servidores web. Un balanceador de carga puede reducir la carga de sus servidores web individuales
equilibrando el tráfico entre dos o más servidores web. También puede aumentar la disponibilidad de su
sitio web, ya que el balanceador de carga monitorea el estado de los servidores web y solo dirige tráfico
a servidores en buen estado. Si se produce un error en un servidor web, el balanceador de carga deja
automáticamente de dirigir tráfico hacia el servidor.

Temas
• Crear una subred para el segundo servidor web (p. 316)
• Crear el segundo servidor web (p. 317)
• Crear el balanceador de carga (p. 319)

Crear una subred para el segundo servidor web


Antes de crear otro servidor web, tendrá que crear una nueva subred en la misma VPC que contenga el
servidor web existente y el clúster de AWS CloudHSM.

Para crear una nueva subred

1. Abra la sección Subnets (Subredes) en la consola de Amazon VPC en https://


console.aws.amazon.com/vpc/home#subnets: .
2. Seleccione Create Subnet (Crear Subred).
3. En el cuadro de diálogo Create Subnet (Crear Subred), haga lo siguiente:

a. En Name tag (Etiqueta de nombre), escriba un nombre para la subred.


b. Para VPC, seleccione la VPC de AWS CloudHSM que contiene su servidor web existente y el
clúster de AWS CloudHSM.
c. Para Availability Zone (Zona de disponibilidad), seleccione una zona de disponibilidad diferente a
la que contiene su servidor web existente.
d. En IPv4 CIDR block (Bloque de CIDR IPv4), escriba el bloque de CIDR que se usará para la
subred. Por ejemplo, escriba 10.0.10.0/24.
e. Elija Yes, Create (Sí, crear).
4. Seleccione la casilla de verificación situada junto a la subred pública que contiene su servidor web
existente. Se trata de una subred diferente de la subred pública creada en el paso anterior.
5. En el panel de contenido, seleccione la pestaña Route Table (Tabla de ruteo). A continuación, elija el
enlace de la tabla de ruteo.

316
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

6. Seleccione la casilla de verificación que hay junto a la tabla de ruteo.


7. Seleccione la pestaña Subnet Associations (Asociaciones de subredes). A continuación, seleccione
Edit (Editar).
8. Seleccione la casilla de verificación situada junto a la subred pública que ha creado anteriormente en
este procedimiento. A continuación, seleccione Save (Guardar).

Crear el segundo servidor web


Complete los siguientes pasos para crear un segundo servidor web con la misma configuración que su
servidor web existente.

Para crear un segundo servidor web

1. Abra la sección Instances (Instancias) en la consola Amazon EC2 en https://console.aws.amazon.com/


ec2/v2/home#Instances:.
2. Seleccione la casilla de verificación junto a la instancia de servidor web existente.
3. Seleccione Actions (Acciones), Image (Imagen) y, a continuación, Create Image (Crear imagen).
4. En el cuadro de diálogo Create Image (Crear imagen), haga lo siguiente:

a. En Image name (Nombre de la imagen), escriba un nombre para la imagen.


b. En Image description (Descripción de la imagen), escriba una descripción para la imagen.
c. Elija Create Image (Crear imagen). Esta acción reinicia su servidor web existente.
d. Seleccione el enlace View pending image ami-ID de AMI> (Ver imagen pendiente ami-
ID de AMI>).

En la columna Status (Estado), observe el estado de la imagen. Cuando el estado de la imagen


sea available (disponible) (esto podría tardar varios minutos), vaya al siguiente paso.
5. En el panel de navegación, seleccione Instances (Instancias).
6. Seleccione la casilla de verificación junto al servidor web existente.

317
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

7. Seleccione Actions (Acciones) y después Launch More Like This (Lanzar más así).
8. Seleccione Edit AMI (Editar AMI).

9. En el panel de navegación izquierdo, seleccione My AMIs (Mis AMI). A continuación, borre el texto en
el campo de búsqueda.
10. Junto a la imagen del servidor web, seleccione Select (Seleccionar).
11. Seleccione Yes, I want to continue with this AMI (Sí, deseo continuar con esta AMI) (<imagine
name> (<nombre imagen>) - ami-<AMI ID> (<ID de AMI>)).
12. Seleccione Siguiente.
13. Seleccione un tipo de instancia y a continuación, seleccione Next: Configure Instance Details.
14. En Step 3: Configure Instance Details (Paso 3: Configure los detalles de la instancia), haga lo
siguiente:

a. Para Network (Red), seleccione la VPC que contiene su servidor web existente.
b. Para Subnet (Subred), seleccione la subred pública que creó para el segundo servidor web.
c. En Auto-assign Public IP (Autoasignar IP pública), elija Enable (Habilitar).
d. Cambie los detalles restantes de la instancia como desee. A continuación, seleccione Next: Add
Storage (Siguiente: Añadir almacenamiento).
15. Cambie la configuración de almacenamiento como desee. A continuación, elija Next: Add Tags
(Siguiente: Agregar etiquetas).
16. Añada o edite las etiquetas que desee. A continuación, seleccione Next: Configure Security Group
(Configurar grupo de seguridad).
17. En Step 6: Configure Security Group (Paso 6: Configurar grupo de seguridad), haga lo siguiente:

a. En Assign a security group (Asignar un grupo de seguridad), seleccione Select an existing security
group (Seleccionar un grupo de seguridad existente).
b. Select the check box next to the security group named cloudhsm-<cluster ID>-sg.. AWS
CloudHSM ha creado este grupo de seguridad en su nombre cuando usted creó el clúster (p. 18).
Debe elegir este grupo de seguridad para permitir que la instancia del servidor web se conecte a
los HSM del clúster.
c. Seleccione la casilla de verificación situada junto al grupo de seguridad que permite tráfico
HTTPS entrante. You created this security group previously (p. 314).
d. (Opcional) Seleccione la casilla de verificación situada junto a un grupo de seguridad que permite
el tráfico SSH (para Linux) o RDP (para Windows) entrante desde la red. Es decir, el grupo de
seguridad debe permitir el tráfico TCP entrante en el puerto 22 (para SSH en Linux) o en el puerto
3389 (para RDP en Windows). De lo contrario, no podrá conectarse a su instancia de cliente. Si
no dispone de un grupo de seguridad de este tipo, debe crearlo y, a continuación, asignarlo a la
instancia de cliente.

Elija Review and Launch (Revisar y lanzar).


18. Revise los detalles de la instancia y a continuación, seleccione Launch (Lanzar).
19. Elija si desea lanzar la instancia con un par de claves existente, crear un nuevo par de claves o lanzar
la instancia sin un par de claves.

• Para utilizar un par de claves existente, haga lo siguiente:

318
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

1. Elija Choose an existing key pair.


2. En Select a key pair, seleccione el par de claves que desea usar.
3. Seleccione la casilla de verificación situada junto a I acknowledge that I have access to the
selected private key file (Confirmo que tengo acceso al archivo seleccionado de llave privada)
(private key file name>.pem (nombre de archivo de clave privada>.pem)), y
que sin este archivo no podré iniciar sesión en mi instancia.
• Para crear un nuevo par de claves, haga lo siguiente:
1. Seleccione Create a new key pair (Crear un nuevo par de claves).
2. En Key pair name (Nombre del par de claves), escriba un nombre para el par de claves.
3. Seleccione Download Key Pair (Descargar par de claves) y guarde el archivo de clave privada en
una ubicación segura y accesible.
Warning
No puede volver a descargar el archivo de clave privada después de este punto. Si no
descarga ahora el archivo de clave privada, no podrá obtener acceso a la instancia de
cliente.
• Para lanzar la instancia sin un par de claves, haga lo siguiente:
1. Seleccione Proceed without a key pair (Continuar sin un par de claves).
2. Seleccione la casilla de verificación junto a I acknowledge that I will not be able to connect to
this instance unless I already know the password built into this AMI. (Confirmo que no podré
conectarme a esta instancia salvo que ya sepa la contraseña integrada en esta AMI).

SeleccioneLaunch Instances (Lanzar instancias).

Crear el balanceador de carga


Complete los siguientes pasos para crear un balanceador de carga de Elastic Load Balancing que dirige el
tráfico HTTPS a los servidores web.

Para crear un balanceador de carga

1. Abra la sección Load Balancers (Balanceadores de carga) en la consola de Amazon EC2 en https://
console.aws.amazon.com/ec2/v2/home#LoadBalancers.
2. Elija Create Load Balancer.
3. En la sección Network Load Balancer (Balanceador de carga de red), seleccione Create (Crear).
4. En Step 1: Configure Load Balancer (Paso 1: Configurar el balanceador de carga), haga lo siguiente:

a. Para Name (Nombre), escriba un nombre para el balanceador de carga que está creando.
b. En la sección Listeners (Agentes de escucha), para Load Balancer Port (Puerto de balanceador
de carga), cambie el valor a 443.
c. En la sección Availability Zones (Zonas de disponibilidad), para VPC, seleccione la VPC que
contiene sus servidores web.
d. En la sección Availability Zones (Zonas de disponibilidad), seleccione las subredes que contienen
sus servidores web.
e. Elija Next: Configure Routing (Siguiente: Configuración del enrutamiento).
5. En Step 2: Configure Routing (Paso 2: Configurar direccionamiento), haga lo siguiente:

a. Para Name (Nombre), escriba un nombre para el grupo de destino que está creando.
b. Para Port (Puerto), cambie el valor a 443.
c. Elija Next: Register Targets (Siguiente: Registrar destinos).
6. Para Step 3: Register Targets (Paso 3: Registrar destinos), haga lo siguiente:

319
AWS CloudHSM Guía del usuario
Descarga de SSL/TLS en Windows

a. En la sección Instances (Instancias), seleccione las casillas de verificación junto a las instancias
de servidor web. A continuación, seleccione Add to registered (Añadir a registrados).
b. Elija Next: Review (Siguiente: Revisar).
7. Revise los detalles del balanceador de carga y, a continuación, seleccione Create (Crear).
8. Cuando se haya creado correctamente el balanceador de carga, seleccione Close (Cerrar).

Una vez que haya finalizado los pasos anteriores, la consola de Amazon EC2 muestra su balanceador de
carga de Elastic Load Balancing.

Cuando el estado del balanceador de carga sea activo, puede verificar que el balanceador de carga
está en ejecución. Es decir, puede verificar que está enviando tráfico HTTPS a sus servidores web con
descarga de SSL/TLS con AWS CloudHSM. Puede hacerlo mediante un navegador web o una herramienta
como OpenSSL s_client.

Para verificar que el balanceador de carga se está ejecutando con un navegador web

1. En la consola de Amazon EC2, encuentre el nombre de DNS para el balanceador de carga que acaba
de crear. A continuación, seleccione el nombre de DNS y cópielo.
2. Utilice un navegador web como Mozilla Firefox o Google Chrome para conectarse a su balanceador
de carga con el nombre de DNS del balanceador de carga. Asegúrese de que la dirección URL en la
barra de direcciones comienza con https://.
Tip

Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53 para dirigir el nombre
de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web.
Para obtener más información, consulte Routing Traffic to an Amazon EC2 Instance
(Direccionamiento del tráfico a una instancia) en Guía para desarrolladores de Amazon
Route 53 o en la documentación para su servicio DNS.
3. Utilice el navegador web para ver el certificado del servidor web. Para obtener más información,
consulte los siguientes temas:

• Para Mozilla Firefox, consulte View a Certificate (Ver un certificado) en el sitio web de Soporte de
Mozilla.
• Para Google Chrome, consulte Conocer los problemas de seguridad en el sitio web de herramientas
de Google para desarrolladores web.

Otros navegadores web pueden tener características similares que puede utilizar para ver el
certificado del servidor web.
4. Asegúrese de que el certificado es el que ha configurado para que lo utilice el servidor web.

Para verificar que el balanceador de carga se está ejecutando con OpenSSL s_client

1. Utilice el siguiente comando OpenSSL para conectarse a su balanceador de carga a través de


HTTPS. Sustituya <DNS name> (<Nombre de DNS>) por el nombre de DNS de su balanceador de
carga.

openssl s_client -connect <DNS name>:443

Tip

Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53 para dirigir el nombre
de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web.

320
AWS CloudHSM Guía del usuario
Entidad de certificación de Windows Server

Para obtener más información, consulte Routing Traffic to an Amazon EC2 Instance
(Direccionamiento del tráfico a una instancia) en Guía para desarrolladores de Amazon
Route 53 o en la documentación para su servicio DNS.
2. Asegúrese de que el certificado es el que ha configurado para que lo utilice el servidor web.

Ahora tiene un sitio web que se protege con HTTPS, con la clave privada del servidor web almacenada en
un HSM en su clúster de AWS CloudHSM. Su página web tiene dos servidores web y un balanceador de
carga para ayudar a mejorar la eficiencia y la disponibilidad.

Configuración de Windows Server como entidad de


certificación (CA) con AWS CloudHSM
En una infraestructura de clave pública (PKI), una entidad de certificación (CA) es una entidad de
confianza que emite certificados digitales. Estos certificados digitales vinculan una clave pública a una
identidad (una persona u organización) mediante criptografía de clave pública y firmas digitales. Para
operar una CA, debe mantener la confianza protegiendo la clave privada que firma los certificados emitidos
por la CA. Puede almacenar esta clave privada en el HSM del clúster de AWS CloudHSM y usarlo para
realizar las operaciones de firma criptográfica.

En este tutorial, va a usar Windows Server y AWS CloudHSM para configurar una entidad de certificación.
Tiene que instalar el software de cliente de AWS CloudHSM para Windows en el servidor de Windows y
agregar después la función Servicios de certificados de Active Directory (AD CS) a Windows Server. Al
configurar esta función, utiliza un proveedor de almacenamiento de claves (KSP) de AWS CloudHSM para
crear y almacenar la clave privada de la entidad de certificación en su clúster de AWS CloudHSM. El KSP
es el puente que conecta el servidor de Windows con el clúster de AWS CloudHSM. En el último paso,
usted firma una solicitud de firma de certificado (CSR) con su entidad de certificación de Windows Server.

Para obtener más información, consulte los siguientes temas:

Temas
• Paso 1 de la entidad de certificación de Windows Server: Configurar los requisitos previos (p. 321)
• Paso 2 de la entidad de certificación de Windows Server: Crear una entidad de certificación de
Windows Server con AWS CloudHSM (p. 322)
• Paso 3 de la entidad de certificación de Windows Server: Firmar una solicitud de firma de certificado
(CSR) utilizando la entidad de certificación de Windows Server con AWS CloudHSM (p. 324)

Paso 1 de la entidad de certificación de Windows


Server: Configurar los requisitos previos
Para configurar Windows Server como entidad de certificación (CA) con AWS CloudHSM, necesita lo
siguiente:

• Un clúster de AWS CloudHSM activo que tenga como mínimo un HSM.


• Una instancia Amazon EC2 que ejecute un sistema operativo Windows Server y que tenga instalado el
software de cliente de AWS CloudHSM para Windows. Este tutorial usa Microsoft Windows Server 2016.
• Un usuario criptográfico (CU) que sea el propietario y administre la clave privada de la entidad de
certificación en el HSM.

321
AWS CloudHSM Guía del usuario
Crear entidad de certificación de Windows Server

Para configurar los requisitos previos de una entidad de certificación de Windows Server con AWS
CloudHSM

1. Realice los pasos que se indican en Introducción (p. 15). Cuando lance el cliente de Amazon EC2,
elija una AMI de Windows Server. Este tutorial usa Microsoft Windows Server 2016. Cuando haya
completado estos pasos, dispondrá de un clúster activo con al menos un HSM. También tendrá una
instancia de cliente de Amazon EC2 que ejecuta Windows Server con el software de cliente de AWS
CloudHSM para Windows instalado.
2. (Opcional) Añada más HSM a su clúster. Para obtener más información, consulte Agregar un
HSM (p. 43).
3. Conéctese a su instancia de cliente. Para obtener más información, consulte Conexión con la instancia
en la Guía del usuario de Amazon EC2 para instancias de Windows.
4. Para crear un usuario criptográfico (CU) en su HSM, haga lo siguiente:

a. Inicie el cliente de AWS CloudHSM (p. 84).


b. Actualice el archivo de configuración cloudhsm_mgmt_util (p. 85).
c. Iniciar cloudhsm_mgmt_util (p. 86).
d. Habilite el cifrado integral (p. 87).
e. Inicie sesión en los HSM (p. 87) con el nombre de usuario y la contraseña de un responsable de
criptografía (CO).
f. Cree un usuario de criptografía (CU) (p. 54). Realice un seguimiento del nombre de usuario y la
contraseña del CU. Los necesitará para completar el paso siguiente.
5. Establezca las credenciales de inicio de sesión del HSM (p. 283), utilizando el nombre de usuario y la
contraseña del CU que creó en el paso anterior.
6. En el paso 5, si utilizó el Administrador de credenciales de Windows para configurar las credenciales
de HSM, descargue psexec.exe de SysInternals para ejecutar el siguiente comando como NT
Authority\SYSTEM:

psexec.exe -s "C:\Program Files\Amazon\CloudHsm\tools\set_cloudhsm_credentials.exe" --


username <username> --password <password>

Sustituya <username> (<nombre de usuario>) y <password> (<contraseña>) por las


credenciales de HSM.

Para crear una entidad de certificación de Windows Server con AWS CloudHSM, vaya a Crear entidad de
certificación de Windows Server (p. 322).

Paso 2 de la entidad de certificación de Windows


Server: Crear una entidad de certificación de Windows
Server con AWS CloudHSM
Para crear una entidad de certificación de Windows Server, usted agrega el rol Servicios de certificados
de Active Directory (AD CS) a Windows Server. Al configurar esta función, utiliza un proveedor de
almacenamiento de claves (KSP) de AWS CloudHSM para crear y almacenar la clave privada de la entidad
de certificación en el clúster de AWS CloudHSM.
Note

Al crear tu entidad de certificación de Windows Server, puedes optar por crear una entidad de
certificación o una entidad de certificación subordinada. Normalmente, usted toma esta decisión
en función del diseño de su infraestructura de clave pública y las políticas de seguridad de

322
AWS CloudHSM Guía del usuario
Crear entidad de certificación de Windows Server

su organización. En este tutorial se explica cómo crear una entidad de certificación raíz para
simplificar.

Para agregar el rol AD CS a Windows Server y crear la clave privada de la entidad de certificación

1. Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte
Conexión con la instancia en la Guía del usuario de Amazon EC2 para instancias de Windows.
2. En su servidor de Windows, inicie Administrador del servidor.
3. En el panel Administrador del servidor, elija Agregar roles y características.
4. Lea la información de Antes de comenzar y, a continuación, elija Siguiente.
5. En Installation Type, elija Instalación basada en características o en roles. A continuación, elija Next.
6. En Selección de servidor, elija Seleccionar un servidor del grupo de servidores. A continuación, elija
Next.
7. En Roles de servidor, haga lo siguiente:

a. Seleccione Servicios de certificados de Active Directory.


b. En Agregar características necesarias para Servicios de certificados de Active Directory, elija
Agregar características.
c. Elija Next para finalizar la selección de roles de servidor.
8. En Características, acepte los valores predeterminados y, a continuación, elija Siguiente.
9. En AD CS, haga lo siguiente:

a. Seleccione Next (Siguiente).


b. Seleccione Entidad de certificación y, a continuación, elija Siguiente.
10. En Confirmación, lea la información de confirmación y, a continuación, elija Instalar. No cierre la
ventana.
11. Elija el enlace Configurar Servicios de certificados de Active Directory en el servidor de destino
resaltado.
12. En Credenciales, compruebe o cambie las credenciales mostradas. A continuación, elija Next.
13. En Servicios de rol, seleccione Entidad de certificación. A continuación, elija Next.
14. En Tipo de instalación, seleccione CA independiente. A continuación, elija Next.
15. En Tipo de CA, seleccione CA raíz. A continuación, elija Next.
Note

Puede optar por crear una entidad de certificación raíz o una entidad de certificación
subordinada en función del diseño de su infraestructura de clave pública y las políticas
de seguridad de su organización. En este tutorial se explica cómo crear una entidad de
certificación raíz para simplificar.
16. En Clave privada, seleccione Crear una nueva clave privada. A continuación, elija Next.
17. En Criptografía, haga lo siguiente:

a. En Seleccionar un proveedor de servicios criptográficos, seleccione una de las opciones del


proveedor de almacenamiento de claves de Cavium en el menú. Estos son los proveedores
de almacenamiento de claves de AWS CloudHSM. Por ejemplo, puede elegir el proveedor de
almacenamiento de claves de RSA#Cavium.
b. En Longitud de la clave, elija una de las opciones de la longitud de la clave.
c. En Seleccione el algoritmo de hash para firmar los certificados emitidos por esta CA, elija una de
las opciones del algoritmo de hash.

Seleccione Next (Siguiente).


18. En Nombre de CA, haga lo siguiente:

323
AWS CloudHSM Guía del usuario
Firmar una CSR

a. (Opcional) Edite el nombre común.


b. (Opcional) Escriba un sufijo de nombre distinguido.

Seleccione Next (Siguiente).


19. En Periodo de validez, especifique un periodo en años, meses, semanas o días. A continuación, elija
Next.
20. En Base de datos de certificados, puede aceptar los valores predeterminados o, de forma opcional,
cambiar la ubicación y el registro de la base de datos. A continuación, elija Next.
21. En Confirmación, consulte la información acerca de su entidad de certificación; a continuación, elija
Configurar.
22. Elija Cerrar y, a continuación, seleccione Cerrar de nuevo.

Ahora tiene una entidad de certificación de Windows con AWS CloudHSM. Para aprender a firmar una
solicitud de firma de certificado (CSR) con su entidad de certificación, vaya a Firmar una CSR (p. 324).

Paso 3 de la entidad de certificación de Windows


Server: Firmar una solicitud de firma de certificado
(CSR) utilizando la entidad de certificación de
Windows Server con AWS CloudHSM
Puede usar la entidad de certificación de Windows Server con AWS CloudHSM para firmar una solicitud de
firma de certificado (CSR). Para completar estos pasos, necesita una CSR válida. Puede crear una CSR
de varias formas, incluidas las siguientes:

• Mediante OpenSSL
• Mediante el Administrador de Internet Information Services (IIS) de Windows Server
• Mediante el complemento de certificados en la consola de administración de Microsoft
• Mediante la utilidad de la línea de comandos certreq en Windows

Los pasos para crear una CSR quedan fuera del alcance de este tutorial. Al tener una CSR, puede firmarla
con su entidad de certificación de Windows Server.

Para firmar una CSR con su entidad de certificación de Windows Server

1. Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte
Conexión con la instancia en la Guía del usuario de Amazon EC2 para instancias de Windows.
2. En su servidor de Windows, inicie Administrador del servidor.
3. En el panel Administrador del servidor, en la esquina superior derecha, elija Herramientas, Entidad de
certificación.
4. En la ventana Entidad de certificación, elija el nombre de su equipo.
5. En el menú Acción, elija Todas las tareas, Enviar nueva solicitud.
6. Seleccione el archivo de la CSR y, a continuación, elija Abrir.
7. En la ventana Entidad de certificación, haga doble clic en Solicitudes pendientes.
8. Seleccione la solicitud pendiente. A continuación, en el menú Acción, elija Todas las tareas, Emitir.
9. En la ventana entidad de certificación, haga doble clic en Solicitudes emitidas para ver el certificado
firmado.
10. (Opcional) Para exportar el certificado firmado a un archivo, complete los pasos siguientes:

324
AWS CloudHSM Guía del usuario
Cifrado de Oracle Database

a. En la ventana Entidad de certificación, haga doble clic en el certificado.


b. Elija la pestaña Detalles y, a continuación, elija Copiar en archivo.
c. Siga las instrucciones en el Asistente para exportar certificados.

Ahora tiene una entidad de certificación de Windows Server con AWS CloudHSM y un certificado válido
firmado por la entidad de certificación de Windows Server.

Cifrado de datos transparente (TDE) de Oracle


Database con AWS CloudHSM
Algunas versiones del software de base de datos de Oracle ofrecen una característica denominada cifrado
de datos transparente (TDE). Con TDE, el software de base de datos cifra los datos antes de almacenarlos
en el disco. Los datos de las columnas de tabla o de los espacios de tabla de la base de datos se cifran
con una clave de tabla o de espacio de tabla. Estas claves se cifran con la clave de cifrado maestra de
TDE. Puede almacenar la clave de cifrado maestra del TDE en los HSM del clúster de AWS CloudHSM,
que proporciona seguridad adicional.

En esta solución, Oracle Database está instalado en una instancia Amazon EC2. Oracle Database se
integra con la biblioteca de software de AWS CloudHSM para PKCS # 11 (p. 224) para almacenar la clave
maestra de TDE en los HSM de su clúster.

325
AWS CloudHSM Guía del usuario
Configuración de requisitos previos

Important

No puede utilizar una instancia de Oracle en Amazon Relational Database Service (Amazon RDS)
para realizar la integración con AWS CloudHSM. Debe instalar Oracle Database en una instancia
Amazon EC2.

Siga los pasos que se describen a continuación para realizar la integración del cifrado TDE de Oracle en
AWS CloudHSM.

Para configurar la integración del cifrado TDE de Oracle con AWS CloudHSM

1. Siga los pasos que se detallan en Configuración de requisitos previos (p. 326) para preparar el
entorno.
2. Siga los pasos indicados en Configuración de la base de datos (p. 327) para configurar Oracle
Database para que se integre en el clúster de AWS CloudHSM.

Cifrado TDE de Oracle con AWS CloudHSM:


configuración de los requisitos previos
Para llevar a cabo la integración del cifrado TDE de Oracle con AWS CloudHSM, necesita lo siguiente:

• Un clúster de AWS CloudHSM activo que tenga como mínimo un HSM.


• Una instancia Amazon EC2 que ejecute el sistema operativo Amazon Linux y tenga el siguiente software
instalado:
• El cliente y las herramientas de línea de comandos de AWS CloudHSM.
• La biblioteca de software de AWS CloudHSM para PKCS #11.
• Oracle Database. AWS CloudHSM es compatible con la integración del TDE de Oracle con las
versiones 11 y 12 de Oracle Database.
• Un usuario criptográfico (CU) que sea el propietario de la clave de cifrado maestra del cifrado TDE y la
administre en los HSM de su clúster.

Complete los siguientes pasos para configurar todos los requisitos previos.

Para configurar los requisitos previos necesarios para integrar el cifrado TDE de Oracle con AWS
CloudHSM

1. Realice los pasos que se indican en Introducción (p. 15). A continuación, tendrá un clúster activo con
un HSM. También tendrá una instancia Amazon EC2 que se ejecuta en el sistema operativo Amazon
Linux. También se instalarán y configurarán las herramientas de línea de comandos y el cliente de
AWS CloudHSM.
2. (Opcional) Añada más HSM a su clúster. Para obtener más información, consulte Agregar un
HSM (p. 43).
3. Conéctese a la instancia de cliente de Amazon EC2 y haga lo siguiente:

a. Instale la biblioteca de software de AWS CloudHSM para PKCS #11 (p. 224).
b. Instale Oracle Database. Para obtener más información, consulte la documentación de Oracle
Database. AWS CloudHSM admite la integración del TDE de Oracle con las versiones 11 y 12 de
Oracle Database.
c. Inicie el cliente de AWS CloudHSM (p. 84).
d. Actualice el archivo de configuración de la herramienta de línea de comandos
cloudhsm_mgmt_util (p. 85).

326
AWS CloudHSM Guía del usuario
Configuración de la base de datos

e. Utilice la herramienta de línea de comandos cloudhsm_mgmt_util para crear un usuario


criptográfico (CU) en su clúster. Para obtener más información, consulte Administración de
usuarios de HSM (p. 54).

Una vez que haya completado estos pasos, podrá Configuración de la base de datos (p. 327).

Oracle TDE con AWS CloudHSM: configuración de


la base de datos y generación de la clave de cifrado
maestra
Para integrar Oracle TDE con el clúster de AWS CloudHSM, consulte los siguientes temas:

1. Actualizar la configuración de Oracle Database (p. 327) para utilizar los HSM en su clúster como el
módulo de seguridad externa. Para obtener información acerca de módulos de seguridad externos,
consulte Introduction to Transparent Data Encryption en la Oracle Database Advanced Security Guide.
2. Generar la clave de cifrado maestra de TDE de Oracle (p. 328) en los HSM en su clúster.

Temas
• Actualizar la configuración de Oracle Database (p. 327)
• Generar la clave de cifrado maestra de TDE de Oracle (p. 328)

Actualizar la configuración de Oracle Database


Para actualizar la configuración de Oracle Database para utilizar un HSM en su clúster como el módulo
de seguridad externo, complete los siguientes pasos. Para obtener información acerca de módulos de
seguridad externos, consulte Introduction to Transparent Data Encryption en la Oracle Database Advanced
Security Guide.

Para actualizar la configuración de Oracle

1. Conéctese a la instancia de cliente de Amazon EC2. Se trata de la instancia donde instaló Oracle
Database.
2. Realice una copia de backup del archivo denominado sqlnet.ora. Para la ubicación de este archivo,
consulte la documentación de Oracle.
3. Utilice un editor de texto para editar el archivo denominado sqlnet.ora. Añada la siguiente línea. Si
una línea existente en el archivo comienza con encryption_wallet_location, sustituya la línea
existente por la siguiente.

encryption_wallet_location=(source=(method=hsm))

Guarde el archivo.
4. Ejecute el siguiente comando para crear el directorio donde Oracle Database espera encontrar el
archivo de la biblioteca de software de AWS CloudHSM para PKCS # 11.

sudo mkdir -p /opt/oracle/extapi/64/hsm

5. Ejecute el comando siguiente si desea copiar el archivo de la biblioteca de software de AWS


CloudHSM para PKCS #11 en el directorio que creó en el paso anterior.

sudo cp /opt/cloudhsm/lib/libcloudhsm_pkcs11.so /opt/oracle/extapi/64/hsm/

327
AWS CloudHSM Guía del usuario
Configuración de la base de datos

Note

El directorio /opt/oracle/extapi/64/hsm solo debe contener un archivo de biblioteca.


Elimine cualquier otro archivo que exista en ese directorio.
6. Ejecute el siguiente comando para cambiar la propiedad del directorio /opt/oracle y todo lo que
hay dentro de él.

sudo chown -R oracle:dba /opt/oracle

7. Inicie Oracle Database.

Generar la clave de cifrado maestra de TDE de Oracle


Para generar la clave maestra de TDE de Oracle en los HSM en su clúster, complete los pasos que se
indican en el siguiente procedimiento.

Para generar la clave maestra

1. Utilice el siguiente comando para abrir Oracle SQL*Plus y establecer la variable de entorno
CLOUDHSM_IGNORE_CKA_MODIFIABLE_FALSE. Cuando se le solicite, escriba la contraseña del
sistema que configuró cuando instaló Oracle Database.

CLOUDHSM_IGNORE_CKA_MODIFIABLE_FALSE=true sqlplus / as sysdba

Note

Debe establecer la variable de entorno CLOUDHSM_IGNORE_CKA_MODIFIABLE_FALSE


cada vez que genere una clave maestra. Esta variable solo es necesaria para generar claves
maestras. Para obtener más información, consulte "Problemas: Oracle establece el atributo
CKA_MODIFIABLE de PCKS #11 durante la generación de claves maestras, pero HSM no
admite esto" en Problemas conocidos para integrar aplicaciones de terceros (p. 371).
2. Ejecute la instrucción SQL que crea la clave de cifrado maestra tal y como se muestra en los
siguientes ejemplos. Utilice la declaración que se corresponde con la versión de Oracle Database.
Reemplace <nombre de usuario CU> por el nombre del usuario criptográfico (CU). Reemplace
<password> por la contraseña del CU.
Important

Ejecute el siguiente comando solo una vez. Cada vez que se ejecuta el comando, se crea
una nueva clave de cifrado maestra.
• Para Oracle Database versión 11, ejecute la siguiente instrucción SQL.

SQL> alter system set encryption key identified by "<CU user name>:<password>";

• Para Oracle Database versión 12, ejecute la siguiente instrucción SQL.

SQL> administer key management set key identified by "<CU user name>:<password>";

Si la respuesta es System altered o keystore altered, entonces ha generado correctamente y


establecido la clave maestra para Oracle TDE.
3. (Opcional) Ejecute el siguiente comando para comprobar el estado del wallet de Oracle.

SQL> select * from v$encryption_wallet;

328
AWS CloudHSM Guía del usuario
Microsoft SignTool

Si el wallet no está abierto, utilice uno de los siguientes comandos para abrirlo. Reemplace <nombre
de usuario CU> por el nombre del usuario criptográfico (CU). Reemplace <password> por la
contraseña del CU.
• Para Oracle 11, ejecute el siguiente comando para abrir el wallet.

SQL> alter system set encryption wallet open identified by "<CU user
name>:<password>";

Para cerrar manualmente el wallet, ejecute el siguiente comando.

SQL> alter system set encryption wallet close identified by "<CU user
name>:<password>";

• Para Oracle 12, ejecute el siguiente comando para abrir el wallet.

SQL> administer key management set keystore open identified by "<CU user
name>:<password>";

Para cerrar manualmente el wallet, ejecute el siguiente comando.

SQL> administer key management set keystore close identified by "<CU user
name>:<password>";

Uso de Microsoft SignTool con AWS CloudHSM


para firmar archivos
En criptografía y en la infraestructura de claves públicas (PKI), se utilizan firmas digitales para confirmar
que los datos los ha enviado una entidad de confianza. Las firmas también indican que los datos no se
han manipulado durante su transmisión. Una firma es un hash cifrado que se genera con la clave privada
del remitente. El receptor puede verificar la integridad de los datos descifrando su firma de hash con la
clave pública del remitente. A su vez, el remitente tiene la responsabilidad de mantener un certificado
digital. El certificado digital demuestra que el remitente es el propietario de la clave privada y proporciona
al destinatario la clave pública necesaria para realizar el descifrado. Siempre que la clave privada sea
propiedad del remitente, se puede confiar en la firma. AWS CloudHSM le proporciona hardware seguro
que cuenta con la validación FIPS 140-2 de nivel 3 para que proteja estas claves con acceso exclusivo de
un solo propietario.

Muchas organizaciones utilizan Microsoft SignTool, una herramienta de línea de comandos que firma,
verifica y aplica marcas de tiempo a los archivos para simplificar el proceso de firma de código. Puede
utilizar AWS CloudHSM para almacenar de forma segura sus pares de claves hasta que SignTool los
necesite, con lo que se crea un flujo de trabajo para firmar datos que puede automatizarse fácilmente.

Los temas siguientes proporcionan información general sobre cómo utilizar SignTool con AWS CloudHSM:

Temas
• Microsoft SignTool con AWS CloudHSM Paso 1: Configurar los requisitos previos (p. 330)
• Microsoft SignTool con AWS CloudHSM Paso 2: Crear un certificado de firma (p. 330)
• Microsoft SignTool con AWS CloudHSM Paso 3: Firmar un archivo (p. 332)

329
AWS CloudHSM Guía del usuario
Microsoft SignTool con AWS CloudHSM
Paso 1: Configurar los requisitos previos

Microsoft SignTool con AWS CloudHSM Paso 1:


Configurar los requisitos previos
Para utilizar Microsoft SignTool con AWS CloudHSM, necesita lo siguiente:

• Una instancia de cliente de Amazon EC2 con el sistema operativo Windows.


• Una autoridad de certificación (CA) cuyo mantenimiento se realiza internamente o a través de un
proveedor externo.
• Un clúster de AWS CloudHSM activo en la misma nube virtual privada (VPC) que la instancia EC2. El
clúster debe contener al menos un HSM.
• Un usuario de criptografía (CU) que será el propietario y administrará las claves del clúster de AWS
CloudHSM.
• Un archivo o un archivo ejecutable sin firma.
• El kit de desarrollo de software (SDK) de Microsoft Windows.

Para configurar los requisitos previos para utilizar AWS CloudHSM con Windows SignTool

1. Siga las instrucciones de la sección Introducción (p. 15) de esta guía para lanzar una instancia EC2 de
Windows y un clúster de AWS CloudHSM.
2. Si desea alojar su propia CA de Windows Server, siga los pasos 1 y 2 de Configuración de Windows
Server como entidad de certificación con AWS CloudHSM (p. 321). De lo contrario, siga utilizando su
CA de terceros de confianza pública.
3. Descargue e instale una de las siguientes versiones de SDK de Microsoft Windows en la instancia
EC2 de Windows:

• Microsoft Windows SDK 10


• Microsoft Windows SDK 8.1
• Microsoft Windows SDK 7

El archivo ejecutable de SignTool forma parte de la característica de instalación Windows SDK


Signing Tools for Desktop Apps. Puede omitir la instalación de las demás funciones si no las necesita.
La ubicación de instalación predeterminada es:

C:\Program Files (x86)\Windows Kits\<SDK version>\bin\<version number>\<CPU


architecture>\signtool.exe

A partir de ahora, puede utilizar el SDK de Microsoft Windows, el clúster de AWS CloudHSM y la CA para
Crear un certificado de firma (p. 330).

Microsoft SignTool con AWS CloudHSM Paso 2: Crear


un certificado de firma
Ahora que ha descargado el SDK de Windows en la instancia EC2, puede utilizarlo para generar una
solicitud de firma de certificado (CSR). La CSR es un certificado sin firma que se puede pasar a la CA
para que lo firme. En este ejemplo, se utiliza el archivo ejecutable certreq que se incluye con el SDK de
Windows para generar la CSR.

330
AWS CloudHSM Guía del usuario
Microsoft SignTool con AWS CloudHSM
Paso 2: Crear un certificado de firma

Para generar una CSR mediante el archivo ejecutable certreq

1. Si todavía no lo ha hecho, conéctese a la instancia EC2 de Windows. Para obtener más información,
consulte Conexión con la instancia en la Guía del usuario de Amazon EC2 para instancias de
Windows.
2. Cree un archivo denominado request.inf que contenga las líneas siguientes. Sustituya la
información de Subject por la de su organización. Para ver una explicación de cada uno de los
parámetros, consulte la documentación de Microsoft.

[Version]
Signature= $Windows NT$
[NewRequest]
Subject = "C=<Country>,CN=<www.website.com>,\
O=<Organization>,OU=<Organizational-Unit>,\
L=<City>,S=<State>"
RequestType=PKCS10
HashAlgorithm = SHA256
KeyAlgorithm = RSA
KeyLength = 2048
ProviderName = Cavium Key Storage Provider
KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE"
MachineKeySet = True
Exportable = False

3. Ejecute certreq.exe. En este ejemplo, se guarda la CSR como request.csr.

certreq.exe -new request.inf request.csr

Internamente, se genera un par de claves nuevo en el clúster de AWS CloudHSM y se utiliza la clave
privada del par para crear la CSR.
4. Envíe la CSR a la CA. Si utiliza una CA de Windows Server, siga estos pasos:

a. Escriba el siguiente comando para abrir la herramienta de CA:

certsrv.msc

b. En la ventana nueva, haga clic con el botón derecho del ratón en el nombre del servidor de la CA.
Elija Todas las tareas y, a continuación, elija Enviar solicitud nueva.
c. Vaya a la ubicación de request.csry elija Abrir.
d. Expanda el menú CA del servidor para ir a la carpeta Solicitudes pendientes. Haga clic con el
botón derecho del ratón en la solicitud que acaba de crear y, en Todas las tareas, elija Emitir.
e. Ahora vaya a la carpeta Certificados emitidos (situada encima de la carpeta Solicitudes
pendientes).
f. Elija Abrir para ver el certificado y, a continuación, elija la pestaña Detalles.
g. Elija Copiar en archivo para iniciar el Asistente para exportación de certificados. Guarde en un
lugar seguro el archivo X.509 con codificación DER como signedCertificate.cer.
h. Salga de la herramienta de CA y utilice el siguiente comando para mover el archivo de certificado
al almacén de certificados personales de Windows. Esto permite que puedan utilizarlo otras
aplicaciones.

certreq.exe -accept signedCertificate.cer

A partir de ahora, puede utilizar el certificado importado para Firmar un archivo (p. 332).

331
AWS CloudHSM Guía del usuario
Microsoft SignTool con AWS
CloudHSM Paso 3: Firmar un archivo

Microsoft SignTool con AWS CloudHSM Paso 3:


Firmar un archivo
Ahora está listo para utilizar SignTool y el certificado importado para firmar el archivo de ejemplo. Para
ello, debe conocer el hash SHA-1 o huella digital del certificado. La huella digital se utiliza para garantizar
que SignTool solo utiliza los certificados verificados por AWS CloudHSM. En este ejemplo, se utiliza
PowerShell para obtener el hash del certificado. También puede utilizar la GUI de la CA o el archivo
ejecutable certutil del SDK de Windows.

Para obtener la huella digital de un certificado y utilizarla para firmar un archivo

1. Abra PowerShell como administrador y ejecute el siguiente comando:

Get-ChildItem -path cert:\LocalMachine\My

Copie la huella digital que se visualiza debajo de Thumbprint.

2. Vaya al directorio dentro de PowerShell que contiene SignTool.exe. La ubicación predeterminada


es C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64.
3. Por último, firme el archivo ejecutando el comando siguiente. Si el comando se ejecuta correctamente,
PowerShell devuelve un mensaje de confirmación.

signtool.exe sign /v /fd sha256 /sha1 <thumbprint> /sm /as C:\Users\Administrator


\Desktop\<test>.ps1

4. (Opcional) Para verificar la firma del archivo, utilice el comando siguiente:

signtool.exe verify /v /pa C:\Users\Administrator\Desktop\<test>.ps1

332
AWS CloudHSM Guía del usuario
Otras integraciones de proveedores externos

Otras integraciones de proveedores externos


Varios proveedores externos admiten AWS CloudHSM como raíz de confianza. Esto significa que puede
utilizar la solución de software de su elección al crear y almacenar las claves subyacentes en el clúster
de CloudHSM. Como resultado, la carga de trabajo en AWS puede confiar en la latencia, disponibilidad,
fiabilidad y elasticidad de CloudHSM. La siguiente lista incluye los proveedores externos compatibles con
CloudHSM.
Note

AWS no respalda ni garantiza ningún proveedor externo.

• Vault de Hashicorpes una herramienta de administración de secretos diseñada para habilitar la


colaboración y la gobernanza entre organizaciones. Admite AWS Key Management Service y AWS
CloudHSM como raíces de confianza para protección adicional.
• Thycotic Secrets Server ayuda a los clientes a administrar credenciales confidenciales en cuentras
privilegiadas. Admite AWS CloudHSM como raíz de confianza.
• El adaptador de KMIP de P6R le permite utilizar sus instancias de AWS CloudHSM a través de un
interfaz de KMIP estándar.
• EJBCA de PrimeKey es una solución popular de código abierto para PKI. Le permite crear y almacenar
pares de claves de forma segura con AWS CloudHSM.
• KeySafe de Box proporciona administración de claves cifradas para contenido en la nube a muchas
organizaciones con estrictos requisitos de de seguridad, privacidad y cumplimiento normativo. Los
clientes pueden realzar la seguridad de las claves KeySafe directamente en AWS Key Management
Service o indirectamente en AWS CloudHSM mediante un almacén de claves personalizado de AWS
KMS.
• KeySecure de Gemalto es una plataforma de administración de claves centralizada y admite AWS
CloudHSM como raíz de confianza.
• La plataforma de seguridad de datos de Vormetric permite el cifrado, la tokenización y la administración
de claves y admite AWS CloudHSM como raíz de confianza.
• El software Insyde admiteAWS CloudHSM como raíz de confianza para la firma de firmware.
• BIG-IP LTM de F5 admite AWS CloudHSM como raíz de confianza.
• Cloudera Navigator Key HSM le permite utilizar su clúster de CloudHSM para crear y almacenar claves
para Cloudera Navigator Key Trustee Server.

333
AWS CloudHSM Guía del usuario
Obtención de los registros del cliente

Monitoreo de los registros de AWS


CloudHSM
AWS CloudHSM está integrado con los siguientes servicios de AWS para proporcionar distintos tipos de
registros.

AWS CloudTrail para registros de API

AWS CloudHSM está integrado con AWS CloudTrail, un servicio que registra todas las llamadas a la
API de AWS CloudHSM que se producen en la cuenta de AWS. CloudTrail registra estas llamadas en
archivos de registro que se entregan a un bucket Amazon Simple Storage Service (Amazon S3) de su
elección. Por ejemplo, al crear y eliminar clústeres de AWS CloudHSM, crear y eliminar módulos HSM
en un clúster, etiquetar los recursos de AWS CloudHSM, etc., las llamadas a las API correspondientes
se registran en archivos de registro de CloudTrail.
Amazon CloudWatch Logs para registros de auditoría de HSM

AWS CloudHSM envía los registros de auditoría capturados en las instancias de HSM a Amazon
CloudWatch Logs, un servicio que almacena, organiza y muestra los datos de registro de diferentes
orígenes. Por ejemplo, al crear y eliminar usuarios de HSM, cambiar las contraseñas de los usuarios,
crear y eliminar claves, etc., estos eventos se recopilan y se almacenan en CloudWatch Logs.

Para obtener más información, consulte los siguientes temas.

Temas
• Obtención de los registros del cliente de AWS CloudHSM (p. 334)
• Registro de llamadas a la API de AWS CloudHSM con AWS CloudTrail (p. 335)
• Monitorización de registros de auditoría de AWS CloudHSM en Amazon CloudWatch Logs (p. 337)

Obtención de los registros del cliente de AWS


CloudHSM
Puede recuperar los registros generados por el cliente de AWS CloudHSM. Estos registros contienen
información detallada del daemon del cliente de AWS CloudHSM. La ubicación de los registros depende
del sistema operativo de la instancia de cliente de Amazon EC2 en la que se ejecuta el cliente de AWS
CloudHSM.

Amazon Linux

En Amazon Linux, the AWS CloudHSM client logs are written to the file named /opt/cloudhsm/
run/cloudhsm_client.log. You can use logrotate or a similar tool to rotate and manage these
logs.
Amazon Linux 2

En Amazon Linux 2, the AWS CloudHSM Client logs are collected and stored in the journal. You can
use journalctl to view and manage these logs. For example, use the following command to view the
AWS CloudHSM Client logs.

journalctl -f -u cloudhsm-client

334
AWS CloudHSM Guía del usuario
Registro de llamadas a la API de
AWS CloudHSM con AWS CloudTrail

CentOS 6

En CentOS 6, the AWS CloudHSM client logs are written to the file named /opt/cloudhsm/run/
cloudhsm_client.log. You can use logrotate or a similar tool to rotate and manage these logs.
CentOS 7

En CentOS 7, the AWS CloudHSM Client logs are collected and stored in the journal. You can use
journalctl to view and manage these logs. For example, use the following command to view the AWS
CloudHSM Client logs.

journalctl -f -u cloudhsm-client

RHEL 6

En Red Hat Enterprise Linux 6, the AWS CloudHSM client logs are written to the file named /opt/
cloudhsm/run/cloudhsm_client.log. You can use logrotate or a similar tool to rotate and
manage these logs.
RHEL 7

En Red Hat Enterprise Linux 7, the AWS CloudHSM Client logs are collected and stored in the journal.
You can use journalctl to view and manage these logs. For example, use the following command to
view the AWS CloudHSM Client logs.

journalctl -f -u cloudhsm-client

Ubuntu 16.04

En Ubuntu, the AWS CloudHSM Client logs are collected and stored in the journal. You can use
journalctl to view and manage these logs. For example, use the following command to view the AWS
CloudHSM Client logs.

journalctl -f -u cloudhsm-client

Windows

• Para la versión 1.1.2 y posteriores del cliente de Windows:

Los registros de cliente de AWS CloudHSM se escriben en un archivo cloudhsm.log en la carpeta


de archivos de programa de AWS CloudHSM (C:\Program Files\Amazon\CloudHSM\). El
nombre de cada archivo de registro lleva un sufijo con una marca de tiempo que indica cuándo se
inició el cliente de AWS CloudHSM.
• Para la versión 1.1.1 y anteriores del cliente de Windows:

El registros de cliente no se escriben en un archivo. Los registros se muestran en el símbolo del


sistema o en la ventana de PowerShell desde donde se inició el cliente de AWS CloudHSM.

Registro de llamadas a la API de AWS CloudHSM


con AWS CloudTrail
AWS CloudHSM está integrado con AWS CloudTrail, un servicio que proporciona un registro de las
acciones realizadas por un usuario, una función o un servicio de AWS en AWS CloudHSM. CloudTrail
captura todas las llamadas a la API de AWS CloudHSM como eventos. Las llamadas capturadas incluyen
las llamadas realizadas desde la consola de AWS CloudHSM y las llamadas de código a las operaciones
de la API de AWS CloudHSM. Si crea un registro de seguimiento, puede habilitar la entrega continua

335
AWS CloudHSM Guía del usuario
Información de AWS CloudHSM en CloudTrail

de eventos de CloudTrail a un bucket de Amazon S3, incluidos los eventos de AWS CloudHSM. Si no
configura un registro de seguimiento, puede ver los eventos más recientes en la consola de CloudTrail
en el Event history (Historial de eventos). Gracias a la información recopilada por CloudTrail, se puede
determinar qué solicitud se envió a AWS CloudHSM, desde qué dirección IP se realizó, quién lo hizo,
cuándo y otros detalles.

Para obtener más información sobre CloudTrail, consulte la AWS CloudTrail User Guide. Para ver una lista
completa de las operaciones de API de AWS CloudHSM, consulte Acciones en la Referencia de la API de
AWS CloudHSM.

Información de AWS CloudHSM en CloudTrail


CloudTrail se habilita en una cuenta de AWS al crearla. Cuando se produce una actividad en AWS
CloudHSM, dicha actividad se registra en un evento de CloudTrail junto con los eventos de los demás
servicios de AWS en el Event history (Historial de eventos). Puede ver, buscar y descargar los últimos
eventos de la cuenta de AWS. Para obtener más información, consulte Visualización de eventos con el
historial de eventos de CloudTrail.

Para mantener un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos de AWS
CloudHSM, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar
archivos de registro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro
de seguimiento en la consola, este se aplica a todas las regiones de AWS. El registro de seguimiento
registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket
de Amazon S3 especificado. También puede configurar otros servicios de AWS para analizar y actuar en
función de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más información,
consulte los siguientes temas:

• Introducción a la creación de registros de seguimiento


• Servicios e integraciones compatibles con CloudTrail
• Configuración de notificaciones de Amazon SNS para CloudTrail
• Recibir archivos de registro de CloudTrail de varias regiones y Recepción de archivos de registro de
CloudTrail de varias cuentas

CloudTrail registra todas las operaciones de AWS CloudHSM, incluidas las de solo lectura (como
DescribeClusters y ListTags), y las de administración (como InitializeCluster, CreatHsm y
DeleteBackup).

Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La información
de identidad del usuario le ayuda a determinar lo siguiente:

• Si la solicitud se realizó con credenciales de usuario raíz o de AWS Identity and Access Management
(IAM).
• Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
• Si la solicitud la realizó otro servicio de AWS.

Para obtener más información, consulte el elemento userIdentity de CloudTrail.

Descripción de las entradas de los archivos de registro


de AWS CloudHSM
Un registro de seguimiento es una configuración que permite la entrega de eventos como archivos de
registro al bucket de Amazon S3 que se especifique. Los archivos de registro de CloudTrail contienen
una o varias entradas de registro. Un evento representa una única solicitud de cualquier origen e incluye
información sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud,

336
AWS CloudHSM Guía del usuario
Monitorización de registros de auditoría

etcétera. Los archivos de registro de CloudTrail no son un registro de seguimiento de la pila ordenada de
las llamadas a la API públicas, por lo que no aparecen en ningún orden específico.

En el ejemplo siguiente, se muestra una entrada de registro de CloudTrail que ilustra la acción CreateHsm
de AWS CloudHSM.

{
"eventVersion": "1.05",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAJZVM5NEGZSTCITAMM:ExampleSession",
"arn": "arn:aws:sts::111122223333:assumed-role/AdminRole/ExampleSession",
"accountId": "111122223333",
"accessKeyId": "ASIAIY22AX6VRYNBGJSA",
"sessionContext": {
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2017-07-11T03:48:44Z"
},
"sessionIssuer": {
"type": "Role",
"principalId": "AROAJZVM5NEGZSTCITAMM",
"arn": "arn:aws:iam::111122223333:role/AdminRole",
"accountId": "111122223333",
"userName": "AdminRole"
}
}
},
"eventTime": "2017-07-11T03:50:45Z",
"eventSource": "cloudhsm.amazonaws.com",
"eventName": "CreateHsm",
"awsRegion": "us-west-2",
"sourceIPAddress": "205.251.233.179",
"userAgent": "aws-internal/3",
"requestParameters": {
"availabilityZone": "us-west-2b",
"clusterId": "cluster-fw7mh6mayb5"
},
"responseElements": {
"hsm": {
"eniId": "eni-65338b5a",
"clusterId": "cluster-fw7mh6mayb5",
"state": "CREATE_IN_PROGRESS",
"eniIp": "10.0.2.7",
"hsmId": "hsm-6lz2hfmnzbx",
"subnetId": "subnet-02c28c4b",
"availabilityZone": "us-west-2b"
}
},
"requestID": "1dae0370-65ec-11e7-a770-6578d63de907",
"eventID": "b73a5617-8508-4c3d-900d-aa8ac9b31d08",
"eventType": "AwsApiCall",
"recipientAccountId": "111122223333"
}

Monitorización de registros de auditoría de AWS


CloudHSM en Amazon CloudWatch Logs
Cuando un HSM de su cuenta recibe un comando desde las herramientas de línea de comandos de
AWS CloudHSM (p. 81) o las bibliotecas de software (p. 224), la ejecución del comando se registra en

337
AWS CloudHSM Guía del usuario
Cómo funciona el proceso de registro de auditoría

forma de un registro de auditoría. Los registros de auditoría del HSM contienen todos los comandos de
administración (p. 351) iniciados por el cliente, incluidos los que crean y eliminan el HSM, los que inician
y cierran sesión en el HSM y los que administran usuarios y claves. Estos registros conforman un registro
de confianza de las acciones que han cambiado el estado del HSM.

AWS CloudHSM recopila los registros de auditoría del HSM y los envía a Amazon CloudWatch Logs en su
nombre. Puede utilizar las características de CloudWatch Logs para administrar los registros de auditoría
de AWS CloudHSM, como la búsqueda y el filtrado de los registros y la exportación de datos de registro a
Amazon S3. Puede trabajar con los registros de auditoría de HSM en la consola de Amazon CloudWatch o
utilizar los comandos de CloudWatch Logs en la AWS CLI y los SDK de CloudWatch Logs.

Temas
• Cómo funciona el proceso de registro de auditoría (p. 338)
• Visualización de registros de auditoría en CloudWatch Logs (p. 338)
• Interpretación de los registros de auditoría de HSM (p. 341)
• Referencia del registro de auditoría (p. 351)

Cómo funciona el proceso de registro de auditoría


El registro de auditoría se habilita automáticamente en todos los clústeres de AWS CloudHSM. No puede
deshabilitarse ni apagarse y ninguna configuración puede evitar que AWS CloudHSM exporte los registros
a CloudWatch Logs. Cada evento de registro tiene una marca temporal y un número de secuencia que
indican el orden de los eventos y le ayudan a detectar cualquier intento de manipulación del registro.

Cada instancia de HSM genera su propio registro. Los registros de auditoría de los distintos HSM, incluidos
aquellos que están en el mismo clúster, pueden ser diferentes. Por ejemplo, solo el primer HSM de cada
clúster registra la inicialización del HSM. Los eventos de inicialización no aparecen en los registros de
los HSM que se clonan de las copias de seguridad. Del mismo modo, cuando se crea una clave, el HSM
que la genera registra un evento de generación de clave. Los demás HSM del clúster registran un evento
cuando reciben la clave a través de una sincronización.

AWS CloudHSM recopila los registros y los publica en las entradas de CloudWatch Logs de la cuenta.
Para comunicarse con el servicio CloudWatch Logs en su nombre, AWS CloudHSM utiliza una función
vinculada a un servicio (p. 360). La política de IAM que está asociada a la función permite que AWS
CloudHSM efectúe únicamente las tareas necesarias para enviar los registros de auditoría a CloudWatch
Logs.
Important

Si creó un clúster antes del 20 de enero de 2018 pero no ha creado ninguna función vinculada al
servicio asociada, debe crear una manualmente. Esto es necesario para que CloudWatch pueda
recibir los registros de auditoría del clúster de AWS CloudHSM. Para obtener más información
acerca de la creación de funciones vinculadas a servicios, consulte Descripción de las funciones
vinculadas a servicios (p. 360) y Crear una función vinculada a un servicio en la Guía del
usuario de IAM.

Visualización de registros de auditoría en CloudWatch


Logs
Amazon CloudWatch Logs organiza los registros de auditoría en grupos de registros y, dentro de un grupo
de registros, en secuencias de registros. Cada entrada del registro es un evento. AWS CloudHSM crea un
grupo de registros para cada clúster y una secuencia de registros para cada HSM del clúster. No tiene que
cambiar ningún componente de CloudWatch Logs ni ningún ajuste.

338
AWS CloudHSM Guía del usuario
Visualización de registros de auditoría en CloudWatch Logs

• El nombre del grupo de registros es /aws/cloudhsm/<cluster ID>; por ejemplo, /aws/cloudhsm/


cluster-likphkxygsn. Si utiliza el nombre del grupo de registros en un comando de AWS CLI o de
PowerShell, no olvide ponerlo entre comillas dobles.
• El nombre de la secuencia de registros es el ID de HSM; por ejemplo, hsm-nwbbiqbj4jk.

Por lo general, suele haber una secuencia de registros en cada HSM. Sin embargo, cualquier acción
que cambie el ID de HSM, como cuando se produce un error en un HSM y se sustituye, crea una nueva
secuencia de registros.

Para obtener más información acerca de los conceptos de CloudWatch Logs, consulteConceptos en la
Amazon CloudWatch Logs User Guide.

Puede ver los registros de auditoría de un HSM en la página CloudWatch Logs de Consola de
administración de AWS, los comandos de CloudWatch Logs de la AWS CLI, los cmdlets de PowerShell
para CloudWatch Logs o los SDK de CloudWatch Logs. Para obtener instrucciones, consulte Ver datos de
registro en la Amazon CloudWatch Logs User Guide.

Por ejemplo, en la siguiente imagen se muestra el grupo de registros del clúster cluster-likphkxygsn
de la Consola de administración de AWS.

Cuando seleccione el nombre del grupo de registros del clúster, puede ver la secuencia de registros de
cada uno de los HSM del clúster. En la imagen siguiente, se muestran las secuencias de registros de los
HSM del clúster cluster-likphkxygsn.

339
AWS CloudHSM Guía del usuario
Visualización de registros de auditoría en CloudWatch Logs

Cuando elige el nombre de una secuencia de registros de HSM, puede ver los eventos del registro de
auditoría. Por ejemplo, este evento, cuyo número de secuencia es 0x0 y donde el valor de Opcode es
CN_INIT_TOKEN, suele ser el primer evento del primer HSM de cada clúster. Este evento registra la
inicialización del HSM del clúster.

Puede utilizar las numerosas características de CloudWatch Logs para administrar los registros de
auditoría. Por ejemplo, puede utilizar la características Filter events (Filtrar eventos) para buscar un texto
específico de un evento,como el Opcode CN_CREATE_USER.

Para buscar todos los eventos que no incluyen el texto especificado, añada un signo menos (-) delante del
texto. Por ejemplo, para buscar eventos que no incluyen CN_CREATE_USER, escriba -CN_CREATE_USER.

340
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

Interpretación de los registros de auditoría de HSM


Los eventos de los registros de auditoría del HSM tienen campos estándar. Algunos tipos de eventos
contienen otros campos que capturan información útil sobre el evento. Por ejemplo, los eventos de inicio
de sesión y administración de usuarios contienen el nombre del usuario y el tipo de usuario. Los comandos
de administración de claves contienen el identificador de la clave.

Algunos de los campos proporcionan información importante. Opcode identifica el comando de


administración que se está registrando. Sequence No identifica un evento de la secuencia de registros e
indica el orden en que se registró.

Por ejemplo, el siguiente evento de ejemplo es el segundo evento (Sequence No: 0x1) de la secuencia
de registros de un HSM. Muestra el HSM que generó una clave de cifrado de contraseña, lo que forma
parte de la rutina de inicio.

Time: 12/19/17 21:01:17.140812, usecs:1513717277140812


Sequence No : 0x1
Reboot counter : 0xe8
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_GEN_PSWD_ENC_KEY (0x1d)
Session Handle : 0x1004001
Response : 0:HSM Return: SUCCESS
Log type : MINIMAL_LOG_ENTRY (0)

Los siguientes campos son comunes a todos los eventos de AWS CloudHSM en el registro de auditoría.

341
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

Time (Hora)

Hora a la que tuvo lugar el evento en la zona horaria UTC. La hora se muestra en lenguaje natural y
en formato Unix en microsegundos.
Reboot counter (Contador de reinicios)

Contador ordinal persistente de 32 bits que aumenta cuando el hardware del HSM se reinicia.

Todos los eventos de una secuencia de registros tienen el mismo valor de contador de reinicios. Sin
embargo, el contador de reinicios podría no ser el único en una secuencia de registros, ya que podría
haber otros en las distintas instancias del HSM del mismo clúster.
Sequence No (Número de secuencia)

Contador ordinal de 64 bits que aumenta con cada evento del registro. El primer evento de cada
secuencia de registros tiene el número de secuencia 0x0. No debe haber espacios en los valores de
Sequence No. El número de secuencia solamente es único dentro de una secuencia de registros.
Command type (Tipo de comando)

Valor hexadecimal que representa la categoría del comando. Los comandos de las secuencias de
registros de AWS CloudHSM tienen el tipo de comandos CN_MGMT_CMD (0x0) o CN_CERT_AUTH_CMD
(0x9).
Opcode

Identifica el comando de administración ejecutado. Para ver una lista con los valores de Opcode en los
registros de auditoría de AWS CloudHSM, consulte Referencia del registro de auditoría (p. 351).
Session handle (Identificador de sesión)

Identifica la sesión en la que se ejecutó el comando y se registró el evento.


Respuesta

Registra la respuesta del comando de administración. El campo Response, tendrá los valores
SUCCESS y ERROR.
Log type (Tipo de registro)

Indica el tipo de registro de AWS CloudHSM que escribió el comando.


• MINIMAL_LOG_ENTRY (0)
• MGMT_KEY_DETAILS_LOG (1)
• MGMT_USER_DETAILS_LOG (2)
• GENERIC_LOG

Ejemplos de eventos de registro de auditoría


Los eventos de una secuencia de registros recopilan el historial del HSM, desde su creación hasta su
eliminación. Puede utilizar el registro para revisar el ciclo de vida de los HSM y obtener información
detallada acerca de su funcionamiento. Cuando interprete los eventos, tenga en cuenta el valor de
Opcode, que indica la acción o el comando de administración, y el valor de Sequence No, que indica el
orden de los eventos.

Temas
• Ejemplo: Inicialización del primer HSM de un clúster (p. 343)
• Eventos de inicio y cierre de sesión (p. 344)
• Ejemplo: Creación y eliminación de usuarios (p. 343)
• Ejemplo: Creación y eliminación de un par de claves (p. 346)
• Ejemplo: Creación y sincronización de una clave (p. 348)

342
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

• Ejemplo: Exportación de una clave (p. 349)


• Ejemplo: Importación de una clave (p. 350)
• Ejemplo: Compartir y dejar de compartir una clave (p. 351)

Ejemplo: Inicialización del primer HSM de un clúster


La secuencia de registros del primer HSM de cada clúster es muy diferente de la de los demás HMS del
clúster. El registro de auditoría del primer HSM de cada clúster recopila su creación e inicialización. Los
registros de otros HSM del clúster generados a partir de copias de seguridad comienzan con un evento de
inicio de sesión.
Important

Las siguientes entradas de inicialización no aparecerán en los registros de CloudWatch de


los clústeres inicializados antes de la versión del 30 de agosto de 2018 de la característica
de registro de auditoría de CloudHSM. Para obtener más información, consulte el Historial de
revisión (p. 405).

Los siguientes eventos de ejemplo aparecen en la secuencia de registros del primer HSM de un clúster.
El primer evento del registro —el que tiene el valor de Sequence No 0x0— representa el comando para
inicializar el HSM (CN_INIT_TOKEN). La respuesta indica que el comando se ha realizado correctamente
(Response : 0: HSM Return: SUCCESS).

Time: 12/19/17 21:01:16.962174, usecs:1513717276962174


Sequence No : 0x0
Reboot counter : 0xe8
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_INIT_TOKEN (0x1)
Session Handle : 0x1004001
Response : 0:HSM Return: SUCCESS
Log type : MINIMAL_LOG_ENTRY (0)

El segundo evento de esta secuencia de registros de ejemplo (Sequence No 0x1) registra el comando
para crear la clave de cifrado de contraseñas que el HSM utiliza (CN_GEN_PSWD_ENC_KEY).

Esta secuencia de inicio es habitual entre los primeros HSM de cada clúster. Como los siguientes HSM del
mismo clúster son clones del primero, utilizan la misma clave de cifrado de contraseñas.

Time: 12/19/17 21:01:17.140812, usecs:1513717277140812


Sequence No : 0x1
Reboot counter : 0xe8
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_GEN_PSWD_ENC_KEY (0x1d)
Session Handle : 0x1004001
Response : 0:HSM Return: SUCCESS
Log type : MINIMAL_LOG_ENTRY (0)

El tercer evento de esta secuencia de registros de ejemplo (Sequence No 0x2) es la creación del usuario
de dispositivos (AU) (p. 11), que es el servicio AWS CloudHSM. Los eventos que implican a usuarios de
HSM contienen campos adicionales para el nombre de usuario y el tipo de usuario.

Time: 12/19/17 21:01:17.174902, usecs:1513717277174902


Sequence No : 0x2
Reboot counter : 0xe8
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_CREATE_APPLIANCE_USER (0xfc)
Session Handle : 0x1004001
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)

343
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

User Name : app_user


User Type : CN_APPLIANCE_USER (5)

El cuarto evento de esta secuencia de registros de ejemplo (Sequence No 0x3) registra el evento
CN_INIT_DONE, que completa la inicialización del HSM.

Time: 12/19/17 21:01:17.298914, usecs:1513717277298914


Sequence No : 0x3
Reboot counter : 0xe8
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_INIT_DONE (0x95)
Session Handle : 0x1004001
Response : 0:HSM Return: SUCCESS
Log type : MINIMAL_LOG_ENTRY (0)

Puede seguir el resto de eventos en la secuencia de inicio. Estos eventos podrían incluir varios eventos
de inicio y cierre de sesión y la generación de la clave de cifrado de claves (KEK). El siguiente evento
registra el comando que cambia la contraseña del responsable de criptografía previa (PRECO) (p. 11).
Este comando activa el clúster.

Time: 12/13/17 23:04:33.846554, usecs:1513206273846554


Sequence No: 0x1d
Reboot counter: 0xe8
Command Type(hex): CN_MGMT_CMD (0x0)
Opcode: CN_CHANGE_PSWD (0x9)
Session Handle: 0x2010003
Response: 0:HSM Return: SUCCESS
Log type: MGMT_USER_DETAILS_LOG (2)
User Name: admin
User Type: CN_CRYPTO_PRE_OFFICER (6)

Eventos de inicio y cierre de sesión


Cuando interprete el registro de auditoría, tenga en cuenta los eventos que registran inicios y cierres de
sesión de los usuarios en HSM. Estos eventos le ayudan a determinar qué usuario es responsable de los
comandos de administración de usuario que aparecen en orden entre los comandos de inicio y cierre de
sesión.

Por ejemplo, esta entrada del registro recopila un inicio de sesión de un responsable de criptografía
llamado admin. El número de secuencia, 0x0, indica que este es el primer evento de esta secuencia de
registros.

Cuando un usuario inicia sesión en un HSM, los demás HSM del clúster también registran un evento de
inicio de sesión para el usuario. Puede buscar los eventos de inicio de sesión correspondientes en las
secuencias de registros de otros HSM del clúster poco después del evento de inicio de sesión inicial.

Time: 01/16/18 01:48:49.824999, usecs:1516067329824999


Sequence No : 0x0
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_LOGIN (0xd)
Session Handle : 0x7014006
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : admin
User Type : CN_CRYPTO_OFFICER (2)

El siguiente evento de ejemplo recopila el cierre de sesión del responsable de criptografía admin. El
número de secuencia, 0x2, indica que este es el tercer evento de esta secuencia de registros.

344
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

Si el usuario conectado cierra la sesión sin desconectarse, la secuencia de registros contendrá un evento
CN_APP_FINALIZE o de cierre de sesión (CN_SESSION_CLOSE) en lugar de un evento CN_LOGOUT.
A diferencia del evento de inicio de sesión, este cierre de sesión solo suele registrarse en el HSM que
ejecuta el comando.

Time: 01/16/18 01:49:55.993404, usecs:1516067395993404


Sequence No : 0x2
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_LOGOUT (0xe)
Session Handle : 0x7014000
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : admin
User Type : CN_CRYPTO_OFFICER (2)

Si se produce un error al intentar iniciar sesión porque el nombre de usuario no es válido, el HSM registra
un evento CN_LOGIN con el nombre y el tipo de usuario proporcionados en el comando de inicio de sesión.
La respuesta mostrará el mensaje de error 157, que indica que el nombre de usuario no existe.

Time: 01/24/18 17:41:39.037255, usecs:1516815699037255


Sequence No : 0x4
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_LOGIN (0xd)
Session Handle : 0xc008002
Response : 157:HSM Error: user isn't initialized or user with this name doesn't exist
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : ExampleUser
User Type : CN_CRYPTO_USER (1)

Si se produce un error al intentar iniciar sesión porque la contraseña no es válida, el HSM registra un
evento CN_LOGIN con el nombre y el tipo de usuario proporcionados en el comando de inicio de sesión. La
respuesta muestra el mensaje de error con el código RET_USER_LOGIN_FAILURE.

Time: 01/24/18 17:44:25.013218, usecs:1516815865013218


Sequence No : 0x5
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_LOGIN (0xd)
Session Handle : 0xc008002
Response : 163:HSM Error: RET_USER_LOGIN_FAILURE
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : testuser
User Type : CN_CRYPTO_USER (1)

Ejemplo: Creación y eliminación de usuarios


En este ejemplo, se muestran los eventos de registro que se escriben cuando un responsable de
criptografía (CO) crea y elimina usuarios.

El primer evento registra un CO, admin, que inicia sesión en el HSM. El número de secuencia, 0x0, indica
que se trata del primer evento de la secuencia de registros. El nombre y el tipo de usuario que ha iniciado
sesión se incluyen en el evento.

Time: 01/16/18 01:48:49.824999, usecs:1516067329824999


Sequence No : 0x0
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)

345
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

Opcode : CN_LOGIN (0xd)


Session Handle : 0x7014006
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : admin
User Type : CN_CRYPTO_OFFICER (2)

El siguiente evento de la secuencia de registros (con el número 0x1) registra el CO que crea un nuevo
usuario de criptografía (CU). El nombre y el tipo del nuevo usuario se incluyen en el evento.

Time: 01/16/18 01:49:39.437708, usecs:1516067379437708


Sequence No : 0x1
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_CREATE_USER (0x3)
Session Handle : 0x7014006
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : bob
User Type : CN_CRYPTO_USER (1)

A continuación, el CO crea otro responsable de criptografía, alice. El número de secuencia indica que
esta acción va detrás de la anterior sin que haya ninguna acción en medio.

Time: 01/16/18 01:49:55.993404, usecs:1516067395993404


Sequence No : 0x2
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_CREATE_CO (0x4)
Session Handle : 0x7014007
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : alice
User Type : CN_CRYPTO_OFFICER (2)

Después, el CO admin inicia sesión y elimina al responsable de criptografía llamado alice. El HSM
registra un evento CN_DELETE_USER. El nombre y el tipo del usuario eliminado se incluyen en el evento.

Time: 01/23/18 19:58:23.451420, usecs:1516737503451420


Sequence No : 0xb
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_DELETE_USER (0xa1)
Session Handle : 0x7014007
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : alice
User Type : CN_CRYPTO_OFFICER (2)

Ejemplo: Creación y eliminación de un par de claves


En este ejemplo, se muestran los eventos que se registran en un registro de auditoría de HSM al crear y
eliminar un par de claves.

El siguiente evento registra el usuario de criptografía (CU) crypto_user, que inicia sesión en la HSM.

Time: 12/13/17 23:09:04.648952, usecs:1513206544648952


Sequence No: 0x28
Reboot counter: 0xe8
Command Type(hex): CN_MGMT_CMD (0x0)

346
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

Opcode: CN_LOGIN (0xd)


Session Handle: 0x2014005
Response: 0:HSM Return: SUCCESS
Log type: MGMT_USER_DETAILS_LOG (2)
User Name: crypto_user
User Type: CN_CRYPTO_USER (1)

A continuación, el CU genera un par de claves (CN_GENERATE_KEY_PAIR). La clave privada tiene el


identificador de clave 131079. La clave pública tiene el identificador de clave 131078.

Time: 12/13/17 23:09:04.761594, usecs:1513206544761594


Sequence No: 0x29
Reboot counter: 0xe8
Command Type(hex): CN_MGMT_CMD (0x0)
Opcode: CN_GENERATE_KEY_PAIR (0x19)
Session Handle: 0x2014004
Response: 0:HSM Return: SUCCESS
Log type: MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle: 131079
Public Key Handle: 131078

El CU elimina inmediatamente el par de claves. Un evento CN_DESTROY_OBJECT registra la eliminación


de la clave pública (131078).

Time: 12/13/17 23:09:04.813977, usecs:1513206544813977


Sequence No: 0x2a
Reboot counter: 0xe8
Command Type(hex): CN_MGMT_CMD (0x0)
Opcode: CN_DESTROY_OBJECT (0x11)
Session Handle: 0x2014004
Response: 0:HSM Return: SUCCESS
Log type: MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle: 131078
Public Key Handle: 0

Después, un segundo evento CN_DESTROY_OBJECT registra la eliminación de la clave privada (131079).

Time: 12/13/17 23:09:04.815530, usecs:1513206544815530


Sequence No: 0x2b
Reboot counter: 0xe8
Command Type(hex): CN_MGMT_CMD (0x0)
Opcode: CN_DESTROY_OBJECT (0x11)
Session Handle: 0x2014004
Response: 0:HSM Return: SUCCESS
Log type: MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle: 131079
Public Key Handle: 0

Por último, el CU cierra la sesión.

Time: 12/13/17 23:09:04.817222, usecs:1513206544817222


Sequence No: 0x2c
Reboot counter: 0xe8
Command Type(hex): CN_MGMT_CMD (0x0)
Opcode: CN_LOGOUT (0xe)
Session Handle: 0x2014004
Response: 0:HSM Return: SUCCESS
Log type: MGMT_USER_DETAILS_LOG (2)
User Name: crypto_user
User Type: CN_CRYPTO_USER (1)

347
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

Ejemplo: Creación y sincronización de una clave


En este ejemplo se muestra el efecto de crear una clave en un clúster con varias HSM. La clave se genera
en un HSM, se extrae del HSM como un objeto enmascarado y se inserta así en los demás HSM.
Note

Las herramientas de cliente podrían dar error al sincronizar la clave. O bien el comando
podría incluir el parámetro min_srv, que sincroniza la clave únicamente en el número de HSM
especificado. En cualquier caso, el servicio AWS CloudHSM sincroniza la clave con los demás
HSM del clúster. Como los HSM solamente registran los comandos de administración del cliente
en sus registros, la sincronización del servidor no se escribe en el registro de HSM.

En primer lugar, observe la secuencia de registros del HSM que recibe y ejecuta los comandos. La
secuencia de registro tiene como nombre el ID del HSM, hsm-abcde123456, pero este ID no aparece en
los eventos de registro.

Primero, el usuario de criptografía (CU) testuser inicia sesión en el HSM hsm-abcde123456.

Time: 01/24/18 00:39:23.172777, usecs:1516754363172777


Sequence No : 0x0
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_LOGIN (0xd)
Session Handle : 0xc008002
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : testuser
User Type : CN_CRYPTO_USER (1)

El CU ejecuta un comando exSymKey (p. 167) para generar una clave simétrica. El HSM hsm-
abcde123456 genera una clave simétrica con el identificador de clave 262152. El HSM registra un evento
CN_GENERATE_KEY en su registro.

Time: 01/24/18 00:39:30.328334, usecs:1516754370328334


Sequence No : 0x1
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_GENERATE_KEY (0x17)
Session Handle : 0xc008004
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 262152
Public Key Handle : 0

El siguiente evento de la secuencia de registros de hsm-abcde123456 registra el primer paso del proceso
de sincronización. La nueva clave (identificador de clave 262152) se extrae del HSM como un objeto
enmascarado.

Time: 01/24/18 00:39:30.330956, usecs:1516754370330956


Sequence No : 0x2
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_EXTRACT_MASKED_OBJECT_USER (0xf0)
Session Handle : 0xc008004
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 262152
Public Key Handle : 0

348
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

Ahora, observe la secuencia de registros del HSM hsm-zyxwv987654, otro HSM del mismo clúster. Esta
secuencia de registros también contiene un evento de inicio de sesión del CU testuser. El valor de la
hora indica que tuvo lugar poco después de que el usuario iniciara sesión en el HSM hsm-abcde123456.

Time: 01/24/18 00:39:23.199740, usecs:1516754363199740


Sequence No : 0xd
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_LOGIN (0xd)
Session Handle : 0x7004004
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : testuser
User Type : CN_CRYPTO_USER (1)

La secuencia de registros de este HSM no tiene ningún evento CN_GENERATE_KEY. Sin


embargo, tiene un evento que registra la sincronización de la clave con este HSM. El evento
CN_INSERT_MASKED_OBJECT_USER registra la recepción de la clave 262152 como un objeto
enmascarado. Ahora, la clave 262152 existe en los dos HSM del clúster.

Time: 01/24/18 00:39:30.408950, usecs:1516754370408950


Sequence No : 0xe
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_INSERT_MASKED_OBJECT_USER (0xf1)
Session Handle : 0x7004003
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 262152
Public Key Handle : 0

Cuando el usuario CU cierra sesión, este evento CN_LOGOUT solamente aparece en la secuencia de
registros del HSM que recibió los comandos.

Ejemplo: Exportación de una clave


En este ejemplo, se muestran los eventos de registro de auditoría que se registran cuando un usuario de
criptografía (CU) exporta las claves de un clúster con varios HSM.

El evento siguiente registra el CU, testuser, que inicia sesión en key_mgmt_util (p. 129).

Time: 01/24/18 19:42:22.695884, usecs:1516822942695884


Sequence No : 0x26
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_LOGIN (0xd)
Session Handle : 0x7004004
Response : 0:HSM Return: SUCCESS
Log type : MGMT_USER_DETAILS_LOG (2)
User Name : testuser
User Type : CN_CRYPTO_USER (1)

El CU ejecuta un comando exSymKey (p. 143) para exportar la clave 7, una clave AES de 256 bits. El
comando utiliza la clave 6, que es una clave AES de 256 bits de los HSM, como clave de encapsulamiento.

El HSM que recibe el comando registra un evento CN_WRAP_KEY de la clave 7, la clave que se va a
exportar.

Time: 01/24/18 19:51:12.860123, usecs:1516823472860123


Sequence No : 0x27

349
AWS CloudHSM Guía del usuario
Interpretación de los registros de auditoría de HSM

Reboot counter : 0x107


Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_WRAP_KEY (0x1a)
Session Handle : 0x7004003
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 7
Public Key Handle : 0

A continuación, el HSM registra un evento CN_NIST_AES_WRAP para la clave de encapsulamiento, la


clave 6. La clave se encapsula y de inmediato se desencapsula de nuevo, pero el HSM solamente registra
un evento.

Time: 01/24/18 19:51:12.905257, usecs:1516823472905257


Sequence No : 0x28
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_NIST_AES_WRAP (0x1e)
Session Handle : 0x7004003
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 6
Public Key Handle : 0

El comando exSymKey escribe la clave exportada en un archivo, pero no cambia la clave del HSM. Por
tanto, no habrá eventos correspondientes en los registros de otros HSM del clúster.

Ejemplo: Importación de una clave


En este ejemplo, se muestran los eventos de registro de auditoría que se escriben cuando se importan
claves en los HSM de un clúster. En este ejemplo, el usuario de criptografía (CU) utiliza el comando
imSymKey (p. 187) para importar una clave AES en los HSM. El comando utiliza la clave 6 como clave de
encapsulamiento.

El HSM que recibe el comando primero registra un evento CN_NIST_AES_WRAP para la clave 6, la clave
de encapsulamiento.

Time: 01/24/18 19:58:23.170518, usecs:1516823903170518


Sequence No : 0x29
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_NIST_AES_WRAP (0x1e)
Session Handle : 0x7004003
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 6
Public Key Handle : 0

A continuación, el HSM registra un evento CN_UNWRAP_KEY, que representa la operación de importación.


A la clave importada se le asigna el identificador de clave 11.

Time: 01/24/18 19:58:23.200711, usecs:1516823903200711


Sequence No : 0x2a
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_UNWRAP_KEY (0x1b)
Session Handle : 0x7004003
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 11

350
AWS CloudHSM Guía del usuario
Referencia del registro de auditoría

Public Key Handle : 0

Cuando se genera o importa una nueva clave, las herramientas del cliente intentan sincronizar
automáticamente la nueva clave con otros HSM del clúster. En este caso, el HSM registra un evento
CN_EXTRACT_MASKED_OBJECT_USER cuando la clave 11 se extrae del HSM como un objeto
enmascarado.

Time: 01/24/18 19:58:23.203350, usecs:1516823903203350


Sequence No : 0x2b
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_EXTRACT_MASKED_OBJECT_USER (0xf0)
Session Handle : 0x7004003
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 11
Public Key Handle : 0

La secuencia de registros de otros HSM del clúster refleja la llegada de la nueva clave importada.

Por ejemplo, este evento se registró en la secuencia de registros de otro HSM del mismo clúster. Este
evento CN_INSERT_MASKED_OBJECT_USER registra la llegada de un objeto enmascarado que representa
la clave 11.

Time: 01/24/18 19:58:23.286793, usecs:1516823903286793


Sequence No : 0xb
Reboot counter : 0x107
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_INSERT_MASKED_OBJECT_USER (0xf1)
Session Handle : 0xc008004
Response : 0:HSM Return: SUCCESS
Log type : MGMT_KEY_DETAILS_LOG (1)
Priv/Secret Key Handle : 11
Public Key Handle : 0

Ejemplo: Compartir y dejar de compartir una clave


En este ejemplo, se muestra el evento del registro de auditoría que se genera cuando un usuario
de criptografía (CU) comparte o deja de compartir una clave privada de ECC con otros usuarios de
criptografía. El CU utiliza el comando shareKey (p. 123) y proporciona el identificador de clave, el ID de
usuario y el valor 1 para compartir la clave o el valor 0 para dejar de compartirla.

En el siguiente ejemplo, el HSM que recibe el comando registra un evento CM_SHARE_OBJECT que
representa la operación de compartición.

Time: 02/08/19 19:35:39.480168, usecs:1549654539480168


Sequence No : 0x3f
Reboot counter : 0x38
Command Type(hex) : CN_MGMT_CMD (0x0)
Opcode : CN_SHARE_OBJECT (0x12)
Session Handle : 0x3014007
Response : 0:HSM Return: SUCCESS
Log type : UNKNOWN_LOG_TYPE (5)

Referencia del registro de auditoría


AWS CloudHSM registra los comandos de administración del HSM en eventos de registro de auditoría.
Cada evento tiene un valor de código de operación (Opcode) que identifica la acción que se ha producido
y su respuesta. Puede utilizar los valores de Opcode para buscar, clasificar y filtrar los registros.

351
AWS CloudHSM Guía del usuario
Referencia del registro de auditoría

En la siguiente tabla, se definen los valores de Opcode de un registro de auditoría de AWS CloudHSM.

Código de operación (Opcode) Descripción

Inicio de sesión del usuario: estos eventos incluyen el nombre y el tipo de usuario.

CN_LOGIN (0xd) Inicio de sesión del usuario (p. 116) (sin incluir al
usuario de dispositivos [AU]).

CN_LOGOUT (0xe) Cierre de sesión del usuario (p. 116) (sin incluir al
usuario de dispositivos [AU]).

CN_APP_FINALIZE Finalización de la aplicación (solo se registra


cuando el usuario no se ha desconectado
explícitamente)

CN_CLOSE_SESSION Sesión cerrada (solo se registra cuando el usuario


no se ha desconectado explícitamente)

Administración del usuario: estos eventos incluyen el nombre y el tipo de usuario.

CN_CREATE_USER (0x3) Creación de un usuario de criptografía (CU) (p. 94).

CN_CREATE_CO Creación de responsable de criptografía (p. 94).

CN_CREATE_APPLIANCE_USER Creación de un usuario de dispositivos


(AU) (p. 94).

CN_DELETE_USER Eliminar un usuario (p. 97)

CN_CHANGE_PSWD Cambio de la contraseña de un usuario (p. 90).

CN_SET_M_VALUE Establecimiento de la autenticación de cuórum (M


de N) para una acción del usuario.

CN_APPROVE_TOKEN Aprobación de un token autenticación de cuórum


(M de N) para una acción del usuario.

Administración de claves: estos eventos contienen el identificador de la clave.

CN_GENERATE_KEY Generación de una clave simétrica (p. 167).

CN_GENERATE_KEY_PAIR (0x19) Generación de un par de claves (DSA (p. 153),


ECC (p. 158) o RSA (p. 162))

CN_CREATE_OBJECT Importación de una clave pública (sin


encapsulamiento)

CN_MODIFY_OBJECT Establecimiento de un atributo de


clave en key_mgmt_util (p. 200) o
cloudhsm_mgmt_util (p. 119).

CN_DESTROY_OBJECT (0x11) Eliminación de una clave (p. 137)

CN_TOMBSTONE_OBJECT La clave se marca para su eliminación, pero no se


quita.

CN_SHARE_OBJECT Compartir o dejar de compartir una clave (p. 123).

CN_WRAP_KEY Exportar una copia cifrada de una clave


(wrapKey (p. 211)).

352
AWS CloudHSM Guía del usuario
Referencia del registro de auditoría

Código de operación (Opcode) Descripción

CN_UNWRAP_KEY Importar una copia cifrada de una clave


(unwrapKey (p. 204)).

CN_NIST_AES_WRAP Cifrar o descifrar un archivo


(aesWrapUnwrap (p. 134)).

CN_INSERT_MASKED_OBJECT_USER Se recibe una clave (como un objeto


enmascarado) de otro HSM del clúster; este
evento se registra cuando una acción del cliente
sincroniza la clave

CN_EXTRACT_MASKED_OBJECT_USER Se envía una clave (como un objeto enmascarado)


a otro HSM del clúster; este evento se registra
cuando una acción del cliente sincroniza la clave

Clone HSMs

CN_CLONE_SOURCE_INIT Inicio de origen de clonación.

CN_CLONE_SOURCE_STAGE1 Fin de origen de clonación.

CN_CLONE_TARGET_INIT Inicio de destino de clonación.

CN_CLONE_TARGET_STAGE1 Fin de destino de clonación.

Certificate-Based Authentication

CN_CERT_AUTH_STORE_CERT Almacenamiento de un certificado.

CN_CERT_AUTH_VALIDATE_PEER_CERTS Validación de un certificado.

CN_CERT_AUTH_SOURCE_KEY_EXCHANGE Intercambio de clave de origen.

CN_CERT_AUTH_TARGET_KEY_EXCHANGE Intercambio de clave de destino.

HSM Instance Commands

CN_INIT_TOKEN (0x1) Inicialización del HSM: Inicio.

CN_INIT_DONE Inicialización del HSM: Finalización.

CN_GEN_KEY_ENC_KEY Generación de una clave de cifrado de claves


(KEK).

CN_GEN_PSWD_ENC_KEY (0x1d) Generación de una clave de cifrado de


contraseñas (PEK).

CN_CLOSE_PARTITION_SESSIONS Cierre de una sesión del HSM.

CN_STORE_KBK_SHARE Almacenamiento de la clave de copia de seguridad


de claves (KBK).

CN_SET_NODEID Establecimiento del ID de nodo del HSM del


clúster.

CN_ZEROIZE Puesta a cero del HSM.

353
AWS CloudHSM Guía del usuario
Obtención de las métricas de CloudWatch

Obtención de las métricas


Puede recuperar las métricas del entorno de AWS CloudHSM obteniendo las métricas de CloudWatch
(p. 354).

Temas
• Obtención de las métricas de CloudWatch (p. 354)

Obtención de las métricas de CloudWatch


AWS CloudHSM publica métricas sobre sus instancias de HSM en el panel de CloudWatch. Las métricas
se pueden agrupar por región, por ID de clúster y por ID de HSM. Sin embargo, tenga en cuenta que el
ID de HSM cambiará si AWS CloudHSM reemplaza un HSM con error. Por lo tanto, recomendamos que
establezca la alarma y mida en el nivel de ID de clúster o regional en lugar de en el ID de HSM. Están
disponibles las siguientes métricas:

• HsmUnhealthy: la instancia de HSM no funciona correctamente. AWS CloudHSM reemplaza


automáticamente las instancias que no están en buen estado. Puede optar a ampliar de forma proactiva
el tamaño del clúster para reducir el impacto en el rendimiento mientras se sustituye el HSM.
• HsmTemperature: temperatura del empalme del procesador de hardware. El sistema se apaga si la
temperatura alcanza 110 grados centígrados.
• HsmKeysSessionOccupied: cantidad de claves de sesión que está utilizando la instancia de HSM.
• HsmKeysTokenOccupied: cantidad de claves de token que están utilizando la instancia de HSM y el
clúster.
• HsmSslCtxsOccupied: cantidad de canales cifrados de extremo a extremo establecidos actualmente
para la instancia de HSM. Se permiten hasta 2048 canales.
• HsmSessionCount: cantidad de conexiones abiertas a la instancia de HSM. Se permiten hasta 2048.
De forma predeterminada, el demonio de cliente está configurado para abrir dos sesiones con cada
instancia de HSM en un canal cifrado de extremo a extremo.
• HsmUsersAvailable: cantidad de usuarios adicionales que se pueden crear. Esto equivale a la cantidad
máxima de usuarios, HsmUsersMax, menos los usuarios creados hasta el momento.
• HsmUsersMax: máximo número de usuarios que se pueden crear en la instancia de HSM. El valor actual
es 1024.
• InterfaceEth2OctetsInput: suma acumulativa de tráfico al HSM hasta la fecha. Le recomendamos que
examine también las métricas de la instancia Amazon EC2.
• InterfaceEth2OctetsOutput: consulte la métrica anterior, InterfaceEth2OctetsInput.

354
AWS CloudHSM Guía del usuario
Protección de los datos

Seguridad en AWS CloudHSM


La seguridad en la nube de AWS es la mayor prioridad. Como cliente de AWS, se beneficiará de una
arquitectura de red y un centro de datos diseñados para satisfacer los requisitos de seguridad de las
organizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y usted. El modelo de responsabilidad


compartida la describe como seguridad de la nube y seguridad en la nube:

• Seguridad de la nube – AWS es responsable de proteger la infraestructura que ejecuta servicios de


AWS en la nube de AWS. AWS también proporciona servicios que puede utilizar de forma segura.
Los auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad como
parte de los Programas de conformidad de AWS . Para obtener información sobre los programas de
conformidad que se aplican a AWS CloudHSM, consulte Servicios de AWS en el ámbito del programa de
conformidad.
• Seguridad en la nube – su responsabilidad viene determinada por el servicio de AWS que utilice.
También es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la
empresa y la legislación y los reglamentos aplicables.

Esta documentación le ayuda a comprender cómo puede aplicar el modelo de responsabilidad compartida
cuando se utiliza AWS CloudHSM. En los siguientes temas, aprenderá a configurar AWS CloudHSM para
satisfacer sus objetivos de seguridad y conformidad. También aprenderá a utilizar otros servicios de AWS
que le ayudarán a monitorear y proteger sus recursos de AWS CloudHSM.

Contenido
• Protección de datos en AWS CloudHSM (p. 355)
• Identity and Access Management para AWS CloudHSM (p. 356)
• Validación FIPS (p. 362)
• Resiliencia en AWS CloudHSM (p. 362)
• Seguridad de la infraestructura en AWS CloudHSM (p. 363)
• Administración de actualizaciones en AWS CloudHSM (p. 363)

Protección de datos en AWS CloudHSM


AWS CloudHSM cumple los requisitos del modelo de responsabilidad compartida de AWS, que incluye
reglamentos y directrices para la protección de datos. AWS es responsable de proteger la infraestructura
global que ejecuta todos los servicios de AWS. AWSmantiene el control de los datos alojados en esta
infraestructura, incluidos los controles de configuración de la seguridad para el tratamiento del contenido
y los datos personales de los clientes. Los clientes de AWS y los socios de APN, que actúan como
controladores o procesadores de datos, son responsables de todos los datos personales que colocan en la
nube de AWS.

Para fines de protección de datos, le recomendamos proteger las credenciales de la cuenta de AWS y
configurar cuentas de usuario individuales con AWS Identity and Access Management (IAM), de modo que
a cada usuario se le concedan únicamente los permisos necesarios para llevar a cabo su trabajo. También
le recomendamos proteger sus datos de las siguientes formas:

• Utilice la autenticación multifactor (MFA) con cada cuenta.

355
AWS CloudHSM Guía del usuario
Cifrado en reposo

• Utilice SSL/TLS para comunicarse con los recursos de AWS.


• Configure la API y el registro de actividad del usuario con AWS CloudTrail.
• Utilice las soluciones de cifrado de AWS, junto con todos los controles de seguridad predeterminados
dentro de los servicios de AWS.
• Utilice los servicios de seguridad administrados avanzados como, por ejemplo, Amazon Macie, que
ayudan a detectar y proteger los datos personales almacenados en Amazon S3.

Le recomendamos encarecidamente que nunca introduzca información de identificación confidencial,


como, por ejemplo, números de cuenta de sus clientes, en los campos de formato libre, como el campo
Name (Nombre). No debe especificar esta información cuando trabaje con AWS CloudHSM u otros
servicios de AWS a través de la consola, la API, la AWS CLI o los SDK de AWS. Cualquier dato que
escriba en AWS CloudHSM o en otros servicios se puede incluir en los registros de diagnóstico. Cuando
proporcione una URL a un servidor externo, no incluya información de credenciales en la URL para validar
la solicitud para ese servidor.

Para obtener más información sobre la protección de datos, consulte la entrada de blog relativa al modelo
de responsabilidad compartida de AWS y GDPR en el blog de seguridad de AWS.

Cifrado en reposo
Cuando AWS CloudHSM hace una copia de seguridad de un HSM, el HSM cifra todos sus datos antes
de enviarlos a AWS CloudHSM. Los datos se cifran mediante una clave de cifrado única y efímera. Para
obtener más información, consulte Seguridad de los backups (p. 7).

Cifrado en tránsito
La comunicación entre el cliente de AWS CloudHSM y los HSM del clúster se realiza con cifrado integral.
Esta comunicación solo la puede descifrar su cliente y sus HSM.

Identity and Access Management para AWS


CloudHSM
AWS utiliza credenciales de seguridad para identificarle y concederle acceso a sus recursos de AWS.
Puede utilizar las funciones de AWS Identity and Access Management (IAM) para permitir que otros
usuarios, servicios y aplicaciones utilicen los recursos de AWS, total o parcialmente. Puede hacerlo sin
compartir sus credenciales de seguridad.

De forma predeterminada, los usuarios de IAM no tienen permiso para crear, ver ni modificar recursos
de AWS. Para permitir que un usuario de IAM obtenga acceso a los recursos, como, por ejemplo, un
balanceador de carga, y realizar tareas, debe:

1. Crear una política de IAM que conceda permiso al usuario de IAM para utilizar los recursos específicos y
las acciones de la API que necesita.
2. Asocie la política al usuario de IAM o al grupo al que pertenece el usuario de IAM.

Cuando se asocia una política a un usuario o grupo de usuarios, les otorga o deniega el permiso para
realizar las tareas especificadas en los recursos indicados.

Por ejemplo, puede utilizar IAM para crear usuarios y grupos en su cuenta de AWS. Un usuario de IAM
puede ser una persona, un sistema o una aplicación. A continuación, puede conceder permisos a los

356
AWS CloudHSM Guía del usuario
Concesión de permisos mediante políticas de IAM

usuarios y grupos de tal forma que puedan llevar a cabo acciones concretas en determinados recursos
especificados mediante una política de IAM.

Concesión de permisos mediante políticas de IAM


Cuando asocia una política a un usuario o grupo de usuarios, les concede o deniega el permiso para
realizar las tareas especificadas en los recursos indicados.

Una política de IAM es un documento JSON que contiene una o varias instrucciones. Cada instrucción se
estructura, tal y como se muestra en el siguiente ejemplo.

{
"Version": "2012-10-17",
"Statement":[{
"Effect": "effect",
"Action": "action",
"Resource": "resource-arn",
"Condition": {
"condition": {
"key":"value"
}
}
}]
}

• Effect (Efecto) — El valor de effect (efecto) puede ser Allow o Deny. De forma predeterminada, los
usuarios de IAM no tienen permiso para utilizar los recursos y las acciones de la API, por lo que se
deniegan todas las solicitudes. Si se concede un permiso explícito se anula el valor predeterminado. Una
denegación explícita invalida cualquier permiso concedido.
• Action (Acción) — El valor de action (acción) es la acción de la API para la que concede o deniega
permisos. Para obtener más información sobre cómo especificar action, consulte Acciones de la API
para AWS CloudHSM (p. 357).
• Resource (Recurso): el recurso que se ve afectado por la acción. AWS CloudHSM no admite permisos
de nivel de recursos. Debe utilizar el comodín * para especificar todos los recursos de AWS CloudHSM.
• Condition (Condición) — Si lo desea, puede utilizar condiciones para controlar cuándo está en vigor la
política. Para obtener más información, consulte Claves de condición de AWS CloudHSM (p. 358).

Para obtener más información, consulte Guía del usuario de IAM.

Acciones de la API para AWS CloudHSM


En el elemento Action (Acción) de su instrucción de política de IAM, puede especificar cualquier acción
de API que ofrezca AWS CloudHSM. El nombre de la acción debe llevar como prefijo la cadena en
minúsculas cloudhsm:, tal y como se muestra en el ejemplo siguiente.

"Action": "cloudhsm:DescribeClusters"

Para especificar varias acciones en una misma instrucción, inclúyalas entre corchetes y sepárelas por
comas, tal y como se muestra en el siguiente ejemplo.

"Action": [
"cloudhsm:DescribeClusters",
"cloudhsm:DescribeHsm"
]

357
AWS CloudHSM Guía del usuario
Claves de condición de AWS CloudHSM

También puede utilizar el carácter comodín * para especificar varias acciones. En el siguiente ejemplo se
especifican todos los nombres de acción de la API para AWS CloudHSM que comienzan por List.

"Action": "cloudhsm:List*"

Para especificar todas las acciones de la API para AWS CloudHSM, utilice el carácter comodín *, tal y
como se muestra en el siguiente ejemplo.

"Action": "cloudhsm:*"

Para obtener la lista de acciones de API para AWS CloudHSM, consulte Acciones de AWS CloudHSM.

Claves de condición de AWS CloudHSM


Al crear una política, se pueden especificar las condiciones que controlan cuándo entra en vigor. Cada
condición contiene uno o varios pares clave-valor. Existen claves de condición globales y claves de
condición específicas del servicio.

AWS CloudHSM no tiene claves de contexto específicas del servicio.

Para obtener más información sobre las claves de condición globales, consulte Claves de contexto de
condición globales de AWS en la Guía del usuario de IAM.

Políticas administradas por AWS predefinidas para


AWS CloudHSM
Las políticas administradas creadas por AWS conceden los permisos necesarios para casos de uso
comunes. Puede asociar estas políticas a sus usuarios de IAM, en función del nivel de acceso que
necesiten para AWS CloudHSM:

• AWScloudhsmFullAccess: otorga el acceso completo necesario para usar las funciones de AWS
CloudHSM.
• AWSCloudHSReadOnlyAccess: otorga el de sólo lectura a las funciones de AWS CloudHSM.

Políticas administradas por el cliente para AWS


CloudHSM
Le recomendamos que cree un grupo de administradores de IAM para AWS CloudHSM que contenga
únicamente los permisos necesarios para ejecutar AWS CloudHSM. Asocie la política con los permisos
adecuados a este grupo. Puede agregar usuarios de IAM al grupo según sea necesario. Cada usuario que
agregue hereda la política del grupo de administradores.

Además, le recomendamos que cree grupos de usuarios adicionales en función de los permisos que
necesitan los usuarios. Esto garantiza que solo los usuarios de confianza tengan acceso a acciones
críticas de la API. Por ejemplo, puede crear un grupo de usuarios que utilice para conceder acceso de
solo lectura a clústeres y HSM. Dado que este grupo no permite a un usuario eliminar clústeres o HSM,
un usuario que no sea de confianza no puede afectar a la disponibilidad de una carga de trabajo de
producción.

A medida que se agreguen nuevas características de administración de AWS CloudHSM, puede


asegurarse de que solo los usuarios de confianza reciben acceso inmediato. Si asigna permisos limitados

358
AWS CloudHSM Guía del usuario
Políticas administradas por el cliente para AWS CloudHSM

a las políticas en el momento de su creación, podrá asignarles manualmente los permisos de las nuevas
características más adelante.

A continuación, se describen políticas de ejemplo de AWS CloudHSM. Para obtener información acerca
de cómo crear una política y asociarla a un grupo de usuarios de IAM, consulte Creación de políticas en la
pestaña JSON en Guía del usuario de IAM.

Ejemplos

• Permisos de solo lectura (p. 359)


• Permisos de usuario avanzado (p. 359)
• Permisos de administrador (p. 360)

Example Ejemplo: permiso de solo lectura

Esta política permite el acceso a las acciones DescribeClusters y DescribeBackups de la API.


También incluye permisos adicionales para acciones específicas de API de Amazon EC2. No permite al
usuario eliminar clústeres ni HSM.

{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"cloudhsm:DescribeClusters",
"cloudhsm:DescribeBackups",
"cloudhsm:ListTags"
],
"Resource": "*"
}
}

Example Ejemplo: permisos de usuario avanzado

Esta política permite el acceso a un subconjunto de las acciones de la API de AWS CloudHSM. También
incluye permisos adicionales para acciones de Amazon EC2 específicas. No permite al usuario eliminar
clústeres ni HSM. Debe incluir la acción iam:CreateServiceLinkedRole para permitir a AWS
CloudHSM crear automáticamente el rol vinculado al servicio AWSServiceRoleForCloudHSM en su cuenta.
Esta función permite que AWS CloudHSM registre eventos. Para obtener más información, consulte Roles
vinculados a servicios de AWS CloudHSM (p. 360).

{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"cloudhsm:DescribeClusters",
"cloudhsm:DescribeBackups",
"cloudhsm:CreateCluster",
"cloudhsm:CreateHsm",
"cloudhsm:RestoreBackup",
"cloudhsm:CopyBackupToRegion",
"cloudhsm:InitializeCluster",
"cloudhsm:ListTags",
"cloudhsm:TagResource",
"cloudhsm:UntagResource",
"ec2:CreateNetworkInterface",
"ec2:DescribeNetworkInterfaces",

359
AWS CloudHSM Guía del usuario
Roles vinculados a servicios

"ec2:DescribeNetworkInterfaceAttribute",
"ec2:DetachNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:CreateSecurityGroup",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:RevokeSecurityGroupEgress",
"ec2:DescribeSecurityGroups",
"ec2:DeleteSecurityGroup",
"ec2:CreateTags",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"iam:CreateServiceLinkedRole"
],
"Resource": "*"
}
}

Example Ejemplo: permisos de administrador

Esta política permite el acceso a todas las acciones de la API de AWS CloudHSM, incluidas las acciones
para eliminar HSM y clústeres. También incluye permisos adicionales para acciones de Amazon EC2
específicas. Debe incluir la acción iam:CreateServiceLinkedRole para permitir a AWS CloudHSM
crear automáticamente el rol vinculado al servicio AWSServiceRoleForCloudHSM en su cuenta. Esta
función permite que AWS CloudHSM registre eventos. Para obtener más información, consulte Roles
vinculados a servicios de AWS CloudHSM (p. 360).

{
"Version":"2012-10-17",
"Statement":{
"Effect":"Allow",
"Action":[
"cloudhsm:*",
"ec2:CreateNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeNetworkInterfaceAttribute",
"ec2:DetachNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:CreateSecurityGroup",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:RevokeSecurityGroupEgress",
"ec2:DescribeSecurityGroups",
"ec2:DeleteSecurityGroup",
"ec2:CreateTags",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"iam:CreateServiceLinkedRole"
],
"Resource":"*"
}
}

Roles vinculados a servicios de AWS CloudHSM


La política de IAM que creó anteriormente para Políticas administradas por el cliente para AWS
CloudHSM (p. 358) contiene la acción iam:CreateServiceLinkedRole. AWS CloudHSM define un
rol vinculado al servicio denominado AWSServiceRoleForCloudHSM. La función está predefinido por AWS
CloudHSM e incluye los permisos que necesita AWS CloudHSM para llamar a otros servicios de AWS en
su nombre. El rol facilita la configuración del servicio, ya que no es necesario agregar manualmente los
permisos de las políticas de rol y de confianza.

360
AWS CloudHSM Guía del usuario
Roles vinculados a servicios

La política de la función permite que AWS CloudHSM cree grupos de registros de Amazon CloudWatch
Logs y secuencias de registros, además de escribir eventos de registro en su nombre. Puede verlo a
continuación y en la consola de IAM.

{
"Version": "2018-06-12",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}

La política de confianza del rol AWSServiceRoleForCloudHSM permite que AWS CloudHSM asuma el rol.

{
"Version": "2018-06-12",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "cloudhsm.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}

Creación de un rol vinculado a un servicio (automático)


AWS CloudHSM crea el rol AWSServiceRoleForCloudHSM al crear un clúster si incluye la acción
iam:CreateServiceLinkedRole en los permisos definidos al crear el grupo de administradores de
AWS CloudHSM. Consulte Políticas administradas por el cliente para AWS CloudHSM (p. 358).

Si ya tiene uno o más clústeres y solo desea agregar el rol AWSServiceRoleForCloudHSM, puede usar
la consola, el comando create-cluster o la operación CreateCluster de la API para crear un clúster. A
continuación, puede usar la consola, el comando delete-cluster o la operación DeleteCluster de la API para
eliminarlo. Al crear el nuevo clúster se crea la función vinculada al servicio y se aplica a todos los clústeres
de la cuenta. También puede crear el rol manualmente. Consulte la siguiente sección para obtener más
información.
Note
No es necesario que realice todos los pasos descritos en Introducción a AWS CloudHSM (p. 15)
para crear un clúster si solo va a crearlo para agregar el rol AWSServiceRoleForCloudHSM.

Creación de un rol vinculado a un servicio (manual)


Puede utilizar la consola de IAM, la AWS CLI o la API para crear el rol AWSServiceRoleForCloudHSM.
Para obtener más información, consulte Crear un rol vinculado a un servicio en la Guía del usuario de IAM.

361
AWS CloudHSM Guía del usuario
Validación FIPS

Edición del rol vinculado a un servicio


AWS CloudHSM no le permite editar el rol AWSServiceRoleForCloudHSM. Después de que se cree el
rol, por ejemplo, no podrá cambiar su nombre porque varias entidades pueden hacer referencia al rol
por su nombre. Además, no puede cambiar la política de rol. Sin embargo, puede usar IAM para editar
la descripción de la función. Para obtener más información, consulte Editar una función vinculada a un
servicio en la Guía del usuario de IAM.

Eliminación del rol vinculado a servicio


No puede eliminar una función vinculada a un servicio si todavía existe un clúster al que se haya aplicado.
Para eliminar el rol, primero debe eliminar cada HSM de su clúster y, a continuación, eliminar el clúster. Se
debe eliminar cada clúster de su cuenta. A continuación, puede utilizar la consola, de IAM la AWS CLI o la
API para eliminar la función. Para obtener más información acerca de la eliminación de un clúster, consulte
Eliminación de un clúster de AWS CloudHSM (p. 50). Para obtener más información, consulte Eliminar un
rol vinculado a un servicio en la Guía del usuario de IAM.

Validación FIPS
Utilizar un HSM validado mediante FIPS puede ayudarle a cumplir los requisitos de conformidad normativa,
corporativos y contractuales sobre la seguridad de datos en la nube de AWS. Puede revisar las políticas de
seguridad aprobadas por FIPS para los HSM proporcionados por AWS CloudHSM a continuación.

Validación de FIPS para el hardware utilizado por CloudHSM


• El certificado número 3254 se expidió el 2 de agosto de 2018.
• El certificado número 2850 se expidió el 27 de febrero de 2017.
• El certificado #3521 se emitió el 8 de septiembre de 2019.
Conformidad con FIPS 140-2:

La Publicación 140-2 del Federal Information Processing Standard (Estándar Federal de


Procesamiento de Información, FIPS) es un estándar de seguridad del Gobierno de EE. UU. que
especifica los requisitos de seguridad para los módulos criptográficos que protegen información
confidencial. Los HSM proporcionados por AWS CloudHSM cumplen con FIPS 140-2 nivel 3.
Conformidad con DSS de PCI

PCI DSS (siglas en inglés de estándar de seguridad de los datos del sector de tarjetas de pago) es
un estándar de seguridad de la información propio administrado por el Consejo de estándares de
seguridad del sector de tarjetas de pago. Los HSM proporcionados por AWS CloudHSM cumplen con
PCI DSS.

Resiliencia en AWS CloudHSM


La infraestructura global de AWS está conformada por regiones y zonas de disponibilidad de AWS. Las
regiones de AWS proporcionan varias zonas de disponibilidad físicamente independientes y aisladas
que se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, además
de baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos
que realizan una conmutación por error automática entre las zonas sin interrupciones. Las zonas de
disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras
tradicionales de centros de datos únicos o múltiples.

Para obtener más información sobre zonas de disponibilidad y las regiones de AWS, consulte
Infraestructura global de AWS. Para obtener más información acerca de las características de AWS
CloudHSM que admiten la resiliencia, consulte Alta disponibilidad y balanceo de carga de clúster (p. 5).

362
AWS CloudHSM Guía del usuario
Seguridad de la infraestructura

Seguridad de la infraestructura en AWS CloudHSM


Al tratarse de un servicio administrado, AWS CloudHSM está protegido por los procedimientos de
seguridad de red globales de AWS que se describen en el documento técnico Amazon Web Services:
Información general sobre procesos de seguridad.

Puede utilizar las llamadas a la API publicadas en AWS para obtener acceso a AWS CloudHSM a través
de la red. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.0 o una versión
posterior. Le recomendamos TLS 1.2 o una versión posterior. Los clientes también deben ser compatibles
con conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman
(DHE) o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos como
Java 7 y posteriores son compatibles con estos modos.

Además, las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de acceso
secreta que esté asociada a una entidad principal de IAM. También puede utilizar AWS Security Token
Service (AWS STS) para generar credenciales de seguridad temporales para firmar solicitudes.

Aislamiento de red
Una nube virtual privada (VPC) es una red virtual en su propia área, aislada lógicamente en la nube de
AWS. Puede crear un clúster en una subred privada en la VPC. Para obtener más información, consulte
Crear una subred privada (p. 17).

Cuando cree un HSM, AWS CloudHSM coloca una interfaz de red elástica (ENI) en su subred para que
pueda interactuar con sus HSM. Para obtener más información, consulte Arquitectura de clúster (p. 3).

AWS CloudHSM crea un grupo de seguridad que permite la comunicación entrante y saliente entre HSM
en el clúster. Puede utilizar este grupo de seguridad para permitir que las instancias EC2 se comuniquen
con los HSM en el clúster. Para obtener más información, consulte Conexión de una instancia Amazon
EC2 a un Cluster de AWS CloudHSM (p. 21).

Autorización de usuarios
Con AWS CloudHSM, las operaciones realizadas en HSM requieren las credenciales de un usuario de
HSM autenticado. Para obtener más información, consulte Usuarios de HSM (p. 10).

Administración de actualizaciones en AWS


CloudHSM
AWS administra el firmware. Un tercero se encarga de mantener el firmware y NIST debe evaluar la
conformidad con FIPS 140-2 de nivel 3. Solo se puede instalar el firmware que dispone de una firma
criptográfica de la clave FIPS a la que AWS no tiene acceso.

363
AWS CloudHSM Guía del usuario
Problemas conocidos

Solución de problemas de AWS


CloudHSM
Si tiene problemas con AWS CloudHSM, los siguientes temas pueden ayudarle a resolverlos.

Temas
• Problemas conocidos (p. 364)
• Conexión perdida con el clúster (p. 372)
• Mantener sincronizados los usuarios de los HSM del clúster (p. 374)
• Verificación del desempeño en el HSM (p. 374)
• Solución de errores de creación de clústeres (p. 378)
• Faltan los registros de auditoría de AWS CloudHSM en CloudWatch (p. 379)
• Recuperación de registros de configuración de los clientes (p. 379)

Problemas conocidos
Actualmente, se conocen los siguientes problemas de AWS CloudHSM.

Temas
• Problemas conocidos para todas las instancias de HSM (p. 364)
• Problemas conocidos para las instancias Amazon EC2 que ejecutan Amazon Linux 2 (p. 366)
• Problemas conocidos para el SDK de PKCS#11 (p. 366)
• Problemas conocidos para el SDK de JCE (p. 369)
• Problemas conocidos con el SDK del motor dinámico de OpenSSL (p. 370)
• Problemas conocidos para integrar aplicaciones de terceros (p. 371)

Problemas conocidos para todas las instancias de


HSM
Los siguientes problemas afectan a todos los usuarios de AWS CloudHSM, independientemente de si
utilizan la herramienta de la línea de comandos key_mgmt_util, el SDK de PKCS #11, el SDK de JCE o el
SDK de OpenSSL.

Problema: el encapsulamiento de claves con AES utiliza el relleno PKCS#5 en vez de proporcionar una
implementación compatible con los estándares de encapsulamiento de clave con cero relleno. Además, no
se admite el encapsulamiento de clave sin relleno o con cero relleno.

• Impacto: no hay impacto si encapsula y desencapsula usando este algoritmo dentro de AWS CloudHSM.
Sin embargo, las claves encapsuladas con AWS CloudHSM no pueden desencapsularse en otros
HSM o software que espera conformidad con la especificación de ausencia de relleno. Esto se
debe a que se pueden agregar ocho bytes de datos de relleno al final de los datos clave durante un
desencapsulamiento compatible con los estándares. Las claves desencapsuladas externamente no se
pueden desencapsular correctamente en una instancia de AWS CloudHSM.

364
AWS CloudHSM Guía del usuario
Problemas conocidos para todas las instancias de HSM

• Solución: para desencapsular externamente una clave encapsulada con el encapsulamiento de clave
con AES con relleno PKCS #5 en una instancia de AWS CloudHSM, quite el relleno adicional antes de
intentar utilizar la clave. Puede hacerlo si recorta los bytes adicionales en un editor de archivos o copia
solo los bytes de clave en un nuevo búfer en el código.
• Estado de la resolución: con la versión de software y cliente 3.1.0, AWS CloudHSM ofrece opciones
compatibles con los estándares para el encapsulamiento de claves con AES. Para obtener más
información, consulte este artículo sobre el encapsulamiento de claves AES (p. 64).

Problema: el demonio de cliente requiere al menos una dirección IP válida en su archivo de configuración
para conectarse correctamente al clúster.

• Impacto: si elimina cada HSM en el clúster y, a continuación, añade otro HSM, que obtiene una nueva
dirección IP, el demonio de cliente sigue buscando sus HSM en las direcciones IP originales.
• Solución: si ejecuta una carga de trabajo intermitente, le recomendamos que utilice el argumento
IpAddress en la función CreateHsm para establecer la interfaz de red elástica (ENI) en su valor
original. Tenga en cuenta que la ENI es específica de la zona de disponibilidad (AZ). La alternativa
consiste en eliminar el archivo /opt/cloudhsm/daemon/1/cluster.info y, a continuación,
restablecer la configuración del cliente a la dirección IP de su nuevo HSM. Puede utilizar el comando
client -a <IP address>. Para obtener más información, consulte Instalación y configuración del
cliente de AWS CloudHSM (Linux) (p. 35) o Instalación y configuración del cliente de AWS CloudHSM
(Windows) (p. 37).

Problema: había un límite superior de 16 KB en los datos que AWS CloudHSM podía firmar y a los que
podía aplicar la función hash.

• Estado de resolución: los datos con un tamaño inferior a 16 KB siguen siendo enviados al HSM para
aplicarles la función hash. Hemos añadido la posibilidad de aplicar la función hash localmente, mediante
software, a los datos con un tamaño entre 16 KB y 64 KB. El cliente y los SDK generarán un error de
forma explícita si el búfer de datos tiene un tamaño superior a 64 KB. Debe actualizar el cliente y los
SDK a la versión 1.1.1 o posterior para beneficiarse de la corrección.

Problema: no se podían especificar las claves importadas como no exportables.

• Estado de resolución: este problema se ha corregido. No es necesario que realice ninguna acción para
beneficiarse de la corrección.

Problema: se eliminó el mecanismo predeterminado para los comandos wrapKey y unWrapKey de


key_mgmt_util.

• Solución: cuando utilice los comandos wrapKey o unWrapKey, debe usar la opción -m para especificar el
mecanismo. Consulte los ejemplos de los artículos wrapKey (p. 211) o unWrapKey (p. 204) para obtener
más información.

Problema: si tiene un único HSM en el clúster, la conmutación por error de HSM no funciona
correctamente.

• Impacto: si la única instancia de HSM del clúster pierde la conectividad, el cliente no se volverá a
conectar con ella, incluso si la instancia de HSM se restaura posteriormente.
• Solución provisional: le recomendamos al menos dos instancias de HSM en cualquier clúster de
producción. Si utiliza esta configuración, no se verá afectado por este problema. Para los clústeres de un
solo HSM, reinicie el demonio de cliente para restaurar la conectividad.
• Estado de resolución: este problema se ha solucionado en la versión 1.1.2 del cliente de AWS
CloudHSM (p. 391). Debe actualizar a este cliente para beneficiarse de la corrección.

365
AWS CloudHSM Guía del usuario
Problemas conocidos para las instancias
Amazon EC2 que ejecutan Amazon Linux 2

Problema: si se supera la capacidad de claves de los HSM del clúster en un breve periodo de tiempo, el
cliente entra en un estado de error no gestionado.

• Impacto: cuando el cliente encuentra el estado de error no gestionado, se bloquea y debe reiniciarse.
• Solución provisional: pruebe el rendimiento para asegurarse de que no está creando claves de sesión
a una velocidad que el cliente no pueda gestionar. Puede reducir la velocidad añadiendo un HSM al
clúster o ralentizando la creación de claves de sesión.
• Estado de resolución: este problema se ha solucionado en la versión 1.1.2 del cliente de AWS
CloudHSM (p. 391). Debe actualizar a este cliente para beneficiarse de la corrección.

Problema: no se admiten operaciones de resumen con claves de HMAC de un tamaño superior a


800 bytes.

• Impacto: las claves de HMAC de más de 800 bytes se pueden generar o importar en el HSM. Sin
embargo, si utiliza esta clave más grande en una operación de resumen a través de JCE o de
key_mgmt_util, la operación no se realizará correctamente. Tenga en cuenta que si utiliza PKCS11 las
claves HMAC se limitan a un tamaño de 64 bytes.
• Solución provisional: si va a utilizar claves de HMAC para operaciones de resumen en el HSM,
asegúrese de que el tamaño es inferior a 800 bytes.
• Estado de resolución: ninguno por el momento.

Problemas conocidos para las instancias Amazon EC2


que ejecutan Amazon Linux 2
Problema: Amazon Linux 2 versión 2018.07 utiliza un paquete ncurses actualizado (la versión 6) que
actualmente no es compatible con los SDK de AWS CloudHSM. Aparecerá el siguiente mensaje de error al
ejecutar cloudhsm_mgmt_util (p. 81) o key_mgmt_util (p. 129) de AWS CloudHSM:

/opt/cloudhsm/bin/cloudhsm_mgmt_util: error while loading shared libraries:


libncurses.so.5: cannot open shared object file: No such file or directory

• Impacto: las instancias que se ejecuten en Amazon Linux 2 versión 2018.07 no podrán utilizar ninguna
de las utilidades de AWS CloudHSM.
• Solución: emita el siguiente comando en las instancias EC2 de Amazon Linux 2 para instalar el paquete
ncurses admitido (la versión 5):

sudo yum install ncurses-compat-libs

• Estado de resolución: este problema se ha solucionado en la versión 1.1.2 del cliente de AWS
CloudHSM (p. 391). Debe actualizar a este cliente para beneficiarse de la corrección.

Problemas conocidos para el SDK de PKCS#11


Problema: el SDK de PKCS #11 3.0.0 para el encapsulado de claves AES no valida el vector de
inicialización (IV) antes de su uso. Si especifica un vector de inicialización menor que 8 bytes de longitud,
se rellena con bytes impredecibles antes de su uso.
Note
Esto afecta a C_WrapKey solo con el mecanismo CKM_AES_KEY_WRAP.

• Impacto: si proporciona un vector de inicialización que es más corto que 8 bytes en el SDK de PKCS #11
3.0.0, es posible que no pueda desencapsular la clave.

366
AWS CloudHSM Guía del usuario
Problemas conocidos para el SDK de PKCS#11

• Soluciones provisionales:
• Le recomendamos encarecidamente que actualice al SDK de PKCS #11 3.0.1 o superior, que aplica
correctamente la longitud del vector de inicialización durante el encapsulado de claves AES. Modifique
su código de encapsulado para pasar un vector de inicialización NULO, o especifique el vector de
inicialización predeterminado de 0xA6A6A6A6A6A6A6A6. Para obtener más información, consulte la
Guía de resolución de problemas: vectores de inicialización personalizados con longitud no compatible
para el encapsulado de claves AES .
• Si encapsuló alguna clave con el SDK de PKCS #11 3.0.0 usando un vector de inicialización menor
que 8 bytes, llámenos para obtener soporte técnico.
• Estado de resolución: este problema se ha solucionado en el SDK de PKCS #11 3.0.1. Para ajustar
claves mediante el encapsulado de claves AES, especifique un vector de inicialización que sea NULO o
de 8 bytes de longitud.

Problema: el SDK de PKCS #11 2.0.4 y las versiones anteriores siempre usaban el vector de inicialización
predeterminado de 0xA6A6A6A6A6A6A6A6 para el encapsulado y desencapsulado de claves AES. Los
vectores de inicialización proporcionados por el usuario se han ignorado de forma silenciosa.
Note

Esto solo afecta a C_WrapKey y a C_UnWrapKey con el mecanismo CKM_AES_KEY_WRAP.

• Impacto:
• Si utilizó el SDK de PKCS #11 2.0.4 o una versión anterior y un vector de inicialización proporcionado
por el usuario, las claves se encapsulan con el vector de inicialización predeterminado de
0xA6A6A6A6A6A6A6A6.
• Si utilizó el SDK de PKCS #11 3.0.0 o posterior y un vector de inicialización proporcionado por el
usuario, las claves se encapsulan con el vector de inicialización proporcionado por el usuario.
• Soluciones provisionales:
• Para desencapsular las claves encapsuladas con el SDK de PKCS #11 2.0.4 o anterior, utilice el
vector de inicialización predeterminado de 0xA6A6A6A6A6A6A6A6.
• Para desencapsular claves encapsuladas con el SDK de PKCS #11 3.0.0 o posterior, utilice el vector
de inicialización proporcionado por el usuario.
• Estado de resolución: le recomendamos que modifique el código de encapsulado y desencapsulado
para pasar un vector de inicialización NULO o que especifique el vector de inicialización predeterminado
de 0xA6A6A6A6A6A6A6A6.

Problema: el atributo CKA_DERIVE no se admitía y no se gestionaba.

• Estado de resolución: hemos implementado correcciones para aceptar CKA_DERIVE si se ha establecido


en FALSE. No se admitirá que CKA_DERIVE se establezca en TRUE hasta que comencemos a añadir
compatibilidad con la función de derivación de claves en AWS CloudHSM. Debe actualizar el cliente y
los SDK a la versión 1.1.1 o posterior para beneficiarse de la corrección.

Problema: el atributo CKA_SENSITIVE no se admitía y no se gestionaba.

• Estado de resolución: hemos implementado correcciones para aceptar y procesar correctamente el


atributo CKA_SENSITIVE. Debe actualizar el cliente y los SDK a la versión 1.1.1 o posterior para
beneficiarse de la corrección.

Problema: la función hash multiparte y la firma no son compatibles.

• Impacto: C_DigestUpdate y C_DigestFinal no se implementan. C_SignFinal tampoco se


implementa y producirá un error con CKR_ARGUMENTS_BAD en los búferes no NULL.

367
AWS CloudHSM Guía del usuario
Problemas conocidos para el SDK de PKCS#11

• Solución: aplique la función hash a sus datos dentro de la aplicación y use AWS CloudHSM solamente
para firmar el hash.
• Estado de resolución: estamos corrigiendo el cliente y los SDK para implementar correctamente la
función hash multiparte. Las actualizaciones se anunciarán en el foro de AWS CloudHSM y en la página
de historial de versiones.

Problema: C_GenerateKeyPair no gestiona CKA_MODULUS_BITS ni CKA_PUBLIC_EXPONENT en la


plantilla privada de una forma que cumpla con los estándares.

• Impacto: C_GenerateKeyPair debe devolver CKA_TEMPLATE_INCONSISTENT cuando la plantilla


privada contiene CKA_MODULUS_BITS o CKA_PUBLIC_EXPONENT. En cambio, genera una clave
privada en la que todos los campos se establecen en FALSE. La clave no se puede usar.
• Solución: recomendamos que su aplicación compruebe los valores del campo de uso además del código
de error.
• Estado de resolución: estamos implementado soluciones para devolver el mensaje de error correcto
cuando se usa una plantilla de clave privada incorrecta. La biblioteca de PKCS #11 actualizada se
anunciará en la página de historial de versiones.

Problema: no se podía aplicar la función hash a datos con un tamaño superior a 16 KB. Para búferes
de mayor tamaño, solo se aplica la función de hash y se devuelven los primeros 16 KB. No se tenían en
cuenta los datos por encima de ese límite.

• Estado de resolución: los datos con un tamaño inferior a 16 KB siguen siendo enviados al HSM para
aplicarles la función hash. Hemos añadido la posibilidad de aplicar la función hash localmente, mediante
software, a los datos con un tamaño entre 16 KB y 64 KB. El cliente y los SDK generarán un error de
forma explícita si el búfer de datos tiene un tamaño superior a 64 KB. Debe actualizar el cliente y los
SDK a la versión 1.1.1 o posterior para beneficiarse de la corrección.

Problema: los búferes para las API de operaciones de C_Encrypt y C_Decrypt no pueden exceder
16 KB si se usa el mecanismo CKM_AES_GCM. Además, AWS CloudHSM no admite el cifrado AES-GCM
multiparte.

• Impacto: no puede usar el mecanismo CKM_AES_GCM para cifrar datos mayores de 16 KB.
• Solución: puede usar un mecanismo alternativo como CKM_AES_CBC o puede dividir los datos en partes
y cifrar cada parte individualmente. Debe administrar la división de los datos y el cifrado posterior. AWS
CloudHSM no realiza el cifrado AES-GCM multiparte por usted. Tenga en cuenta que FIPS requiere que
se genere en el HSM el vector de inicialización (IV) para AES-GCM. Por lo tanto, el IV será diferente
para cada parte de sus datos con cifrado AES-GCM.
• Estado de resolución: estamos corrigiendo los SDK para que produzcan un error de forma explícita
si el búfer de datos es demasiado grande. Se devuelve CKR_MECHANISM_INVALID para las API de
operaciones C_EncryptUpdate y C_DecryptUpdate. Estamos evaluando alternativas para admitir
búferes más grandes sin recurrir al cifrado multiparte. Las actualizaciones se anunciarán en el foro de
AWS CloudHSM y en la página de historial de versiones.

Problema: la derivación de claves Diffie-Hellman (ECDH) de curva elíptica se ejecuta parcialmente en el


HSM. Su clave privada EC permanece dentro del HSM en todo momento, pero el proceso de generación
de la clave se realiza en varios pasos. Como resultado, los resultados intermedios de cada paso están
disponibles en el cliente.

• Impacto: la clave generada mediante el mecanismo CKM_ECDH1_DERIVE está disponible primero en


el cliente y, a continuación, se importa en el HSM. Un identificador de clave se devuelve después a su
aplicación.

368
AWS CloudHSM Guía del usuario
Problemas conocidos para el SDK de JCE

• Solución: si implementa una descarga de SSL/TLS en AWS CloudHSM, es posible que esta limitación no
represente un problema. Si su aplicación requiere que su clave permanezca dentro de un límite FIPS en
todo momento, considere el uso de un protocolo alternativo que no se base en la generación de la clave
ECDH.
• Estado de resolución: desarrollamos la opción para llevar a cabo la generación de la clave ECDH en
su totalidad dentro del HSM. La implementación actualizada se anunciará en la página de historial de
versiones una vez que esté disponible.

Problema:la verificación de firmas secp256k1 produce un error en las plataformas EL6 como CentOS6 y
RHEL6. Esto se debe a que la biblioteca de PKCS #11 de CloudHSM impide que se realice una llamada de
red durante la inicialización de la operación de verificación mediante el uso de OpenSSL para verificar los
datos de la curva de EC. Como Secp256k1 no es compatible con el paquete OpenSSL en las plataformas
EL6, la inicialización produce un error.

• Impacto: la verificación de firmas Secp256k1 producirá un error en las plataformas EL6. La llamada de
verificación producirá el error CKR_HOST_MEMORY.
• Solución: le recomendamos que utilice Amazon Linux 1 o cualquier plataforma EL7 si su aplicación
PKCS # 11 necesita verificar firmas secp256k1. Otra solución consiste en actualizar a una versión del
paquete OpenSSL que admita la curva secp256k1.
• Estado de resolución: estamos implementando correcciones para revertir al HSM si la validación de
curvas locales no está disponible. La biblioteca de PKCS #11 actualizada se anunciará en la página de
historial de versiones (p. 381).

Problemas conocidos para el SDK de JCE


Problema: si trabaja con pares de claves asimétricas, verá que la capacidad para las claves está ocupada
aunque no esté creando o importando las claves explícitamente

• Impacto: este problema puede provocar que los HSM se queden sin espacio para las claves de
forma inesperada y se produce cuando la aplicación utiliza un objeto de clave JCE estándar para
las operaciones de criptografía en lugar de un objeto CaviumKey. Si utiliza un objeto de clave JCE
estándar, CaviumProvider importa implícitamente esa clave en el HSM como una clave de sesión y no
elimina esta clave hasta que se cierra la aplicación. Como resultado, las claves se acumulan mientras la
aplicación se está ejecutando y pueden hacer que los HSM se queden sin espacio libre para las claves,
lo que bloquea la aplicación.
• Solución: si utiliza la clase CaviumSignature, la clase CaviumCipher, la clase CaviumMac o la clase
CaviumKeyAgreement, debe proporcionar la clave como un objeto CaviumKey en lugar que como un
objeto de clave JCE estándar.

Puede convertir manualmente una clave normal en un objeto CaviumKey utilizando la clase ImportKey
y puede eliminar manualmente la clave una vez que se haya completado la operación.
• Estado de la resolución: estamos actualizando CaviumProvider para administrar correctamente las
importaciones implícitas. La corrección se anunciará en la página del historial de versiones una vez que
esté disponible.

Problema: no es posible especificar atributos al desencapsular claves.

• Impacto: todas las claves se desencapsulan como claves de sesión exportables.


• Solución: puede crear un script de key_mgmt_util para desencapsular las claves con personalización
limitada de los atributos o utilizar la biblioteca de PKCS #11 para desencapsular las claves con
compatibilidad completa para plantillas.

369
AWS CloudHSM Guía del usuario
Problemas conocidos con el SDK
del motor dinámico de OpenSSL

• Estado de resolución: tenemos previsto añadir la posibilidad de especificar todos los parámetros de
claves al comando unwrap del SDK de JCE en una versión futura. La actualización se anunciará en la
página del historial de versiones cuando esté disponible.

Problema: el almacén de claves de JCE es de solo lectura.

• Impacto: en la actualidad no puede almacenar un tipo de objeto que no sea compatible con HSM en el
almacén de claves de JCE. En concreto, no puede almacenar certificados en el almacén de claves. Esto
impide la interoperabilidad con herramientas como jarsigner, que espera encontrar el certificado en el
almacén de claves.
• Solución: puede rehacer el código para cargar los certificados desde archivos locales o desde una
ubicación de bucket de S3 en lugar de hacerlo desde el almacén de claves.
• Estado de resolución: estamos añadiendo compatibilidad con el almacenamiento de certificados en el
almacén de claves. La característica se anunciará en la página de historial de versiones una vez que
esté disponible.

Problema: los búferes para el cifrado AES-GCM no pueden superar los 16.000 bytes. Además, no se
admite el cifrado AES-GCM multiparte.

• Impacto: no puede usar AES-GCM para cifrar datos que superen los 16.000 bytes.
• Solución: puede usar un mecanismo alternativo como AES-CBC o puede dividir los datos en partes
y cifrar cada parte individualmente. Si divide los datos, debe administrar el texto cifrado dividido y su
descifrado. Como FIPS requiere que el vector de inicialización (IV) para AES-GCM se genere en el HSM,
el IV de cada elemento de datos con cifrado AES-GCM será diferente.
• Estado de resolución: estamos corrigiendo los SDK para que produzcan un error de forma explícita si el
búfer de datos es demasiado grande. Estamos evaluando alternativas que admitan búferes más grandes
sin recurrir al cifrado multiparte. Las actualizaciones se anunciarán en el foro de AWS CloudHSM y en la
página de historial de versiones.

Problema: la derivación de claves Diffie-Hellman (ECDH) de curva elíptica se ejecuta parcialmente en el


HSM. Su clave privada EC permanece dentro del HSM en todo momento, pero el proceso de generación
de la clave se realiza en varios pasos. Como resultado, los resultados intermedios de cada paso están
disponibles en el cliente. Encontrará una muestra de la derivación de claves de ECDH en los ejemplos de
código de Java (p. 266).

• Impacto: la versión 3.0 del software agrega la funcionalidad ECDH a JCE. Cuando se utiliza el
mecanismo CKM_ECDH1_DERIVE para derivar la clave, este está disponible primero en el cliente y se
importa en el HSM. Un identificador de clave se devuelve después a su aplicación.
• Solución: si implementa una descarga de SSL/TLS en AWS CloudHSM, es posible que esta limitación no
represente un problema. Si su aplicación requiere que su clave permanezca dentro de un límite FIPS en
todo momento, considere el uso de un protocolo alternativo que no se base en la generación de la clave
ECDH.
• Estado de resolución: desarrollamos la opción para llevar a cabo la generación de la clave ECDH en su
totalidad dentro del HSM. Cuando esté disponible, anunciaremos la implementación actualizada en la
página del historial de versiones.

Problemas conocidos con el SDK del motor dinámico


de OpenSSL
Problema: no puede instalar el motor dinámico de AWS CloudHSM para OpenSSL en RHEL6 y CentOS6

370
AWS CloudHSM Guía del usuario
Problemas conocidos para integrar aplicaciones de terceros

• Impacto: el motor dinámico de OpenSSL solo admite OpenSSL 1.0.2 [f+] (p. 397). De forma
predeterminada, RHEL 6 y CentOS 6 vienen con OpenSSL 1.0.1.
• Solución: actualice la biblioteca OpenSSL de RHEL 6 y CentOS 6 a la versión 1.0.2 [f+].

Problema: solo se admite la descarga de RSA en HSM de forma predeterminada.

• Impacto: para maximizar el desempeño, el SDK no está configurada para descargar funciones
adicionales, como la generación de números aleatorios o las operaciones EC-DH.
• Solución: contacte con nosotros a través de un caso de soporte si necesita descargar operaciones
adicionales.
• Estado de resolución: estamos agregando compatibilidad al SDK para configurar las opciones de
descarga a través de un archivo de configuración. La actualización se anunciará en la página del
historial de versiones cuando esté disponible.

Problema: no se admite el cifrado y descifrado RSA con relleno OAEP por medio de una clave en el HSM.

• Impacto: cualquier llamada a cifrado y descifrado RSA con relleno OAEP falla con un error de división
entre cero. Esto se debe a que el motor dinámico de OpenSSL llama a la operación localmente mediante
el archivo PEM falso en lugar de descargar la operación al HSM.
• Solución: puede realizar este procedimiento mediante Biblioteca de software de AWS CloudHSM para
PKCS #11 (p. 224) o Biblioteca de software de AWS CloudHSM para Java (p. 251).
• Estado de resolución: estamos añadiendo el servicio de soporte para el SDK para descargar
correctamente esta operación. La actualización se anunciará en la página del historial de versiones
cuando esté disponible.

Problema: solo se lleva a cabo en el HSM la generación de la clave privada para las claves RSA y ECC.
En todos los demás tipos de clave, no se utiliza el motor de OpenSSL de AWS CloudHSM para procesar
las llamadas. En su lugar se usa el motor de OpenSSL local. Esto genera una clave localmente mediante
software.

• Impacto: debido a que la conmutación por error es silenciosa, no hay ninguna indicación que no ha
recibido una clave generada de forma segura en el HSM. Verá un rastro de salida que contiene la
cadena "...........++++++" si la clave se ha generado localmente por OpenSSL mediante
software. Este rastro no aparece cuando la operación se lleva a cabo en el HSM. Dado que la clave no
se genera ni está almacenada en el HSM, no estará disponible para su uso futuro.
• Solución provisional: utilice el motor de OpenSSL para los tipos de claves que admite. Para todos los
demás tipos de claves, utilice PKCS #11 o JCE en las aplicaciones, o bien utilice key_mgmt_util en la
AWS CLI.

Problemas conocidos para integrar aplicaciones de


terceros
Problema: Oracle establece el atributo CKA_MODIFIABLE de PKCS #11 durante la generación de claves
maestras, pero HSM no admite esto. Para obtener más información, consulte la anotación 1 de Atributos
de PKCS #11 admitidos (p. 236).

• Impacto: se produce un error al crear claves maestras de Oracle.


• Solución: establezca la variable de entorno especial CLOUDHSM_IGNORE_CKA_MODIFIABLE_FALSE
en TRUE cuando cree una nueva clave maestra. Esta variable de entorno solo es necesaria para
generar claves maestras; no la necesita para nada más. Por ejemplo, puede usar esta variable con la
primera clave maestra que cree: Después, solo tendría que utilizarla si quisiera cambiar la edición de la

371
AWS CloudHSM Guía del usuario
Conexión perdida

clave maestra. Para obtener más información, consulte Generar la clave de cifrado maestra de TDE de
Oracle (p. 328).
• Estado de la resolución: estamos mejorando el firmware de HSM para que sea totalmente compatible
con el atributo CKA_MODIFIABLE. Las actualizaciones se anunciarán en el foro de AWS CloudHSM y
en la página del historial de versiones.

Conexión perdida con el clúster


Cuando configura el cliente de AWS CloudHSM (p. 37), tiene que facilitar la dirección IP del primer HSM
del clúster. Esta dirección IP se guarda en el archivo de configuración del cliente de AWS CloudHSM.
Cuando el cliente se inicia, intenta conectarse con esta dirección IP. Si no puede (por ejemplo, porque el
HSM tiene un error o porque se ha eliminado), es posible que aparezcan errores como los siguientes:

LIQUIDSECURITY: Daemon socket connection error

LIQUIDSECURITY: Invalid Operation

Para resolver estos errores, actualice el archivo de configuración con la dirección IP de un HSM activo y
accesible del clúster.

Para actualizar el archivo de configuración del cliente de AWS CloudHSM

1. Utilice una de las siguientes formas para buscar la dirección IP de un HSM activo de su clúster.

• Consulte la pestaña HSMs de la página de detalles del clúster en la consola de AWS CloudHSM.
• Utilice la AWS Command Line Interface (AWS CLI) para ejecutar el comando describe-clusters.

Necesita esta dirección IP en un paso posterior.


2. Utilice el siguiente comando para detener el cliente.

Amazon Linux

$ sudo stop cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client stop

CentOS 6

$ sudo stop cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client stop

RHEL 6

$ sudo stop cloudhsm-client

372
AWS CloudHSM Guía del usuario
Conexión perdida

RHEL 7

$ sudo service cloudhsm-client stop

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client stop

Windows

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe stop AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

Use Ctrl+C en la ventana de comandos desde donde inició el cliente de AWS CloudHSM.
3. Utilice el siguiente comando para actualizar el archivo de configuración del cliente, proporcionando la
dirección IP que obtuvo un paso anterior.

$ sudo /opt/cloudhsm/bin/configure -a <IP address>

4. Use el siguiente comando para iniciar el cliente.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

373
AWS CloudHSM Guía del usuario
Mantener sincronizados los usuarios de HSM

Windows

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:


\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg

Mantener sincronizados los usuarios de los HSM


del clúster
Para administrar los usuarios de los HSM (p. 54), utilice la herramienta de línea de comandos de AWS
CloudHSM denominada cloudhsm_mgmt_util. Solo se comunica con los HSM que están en el archivo de
configuración de la herramienta. No tiene en cuenta otros HSM del clúster que no estén en el archivo de
configuración.

AWS CloudHSM sincroniza las claves de los HSM con todos los demás HSM del clúster, pero no
sincroniza los usuarios ni las políticas del HSM. Al utilizar cloudhsm_mgmt_util para administrar usuarios
de HSM (p. 54), estos cambios de usuarios podrían afectar únicamente a algunos de los HSM del clúster,
es decir, los que están en el archivo de configuración de cloudhsm_mgmt_util. Esto puede provocar
problemas cuando AWS CloudHSM sincroniza las claves en varios HSM del clúster, ya que es posible que
los usuarios que poseen las claves no existan en todos los HSM del clúster.

Para evitar estos problemas, edite el archivo de configuración de cloudhsm_mgmt_util antes de administrar
los usuarios. Para obtener más información, consulte Paso 4: Actualizar el archivo de configuración de
cloudhsm_mgmt_util (p. 85).

Verificación del desempeño en el HSM


Para comprobar el desempeño de los HSM del clúster de AWS CloudHSM, puede utilizar la herramienta
pkpspeed (Linux) o pkpspeed_blocking (Windows), que se incluye con el software cliente de AWS
CloudHSM. Para obtener más información acerca de la instalación del cliente en una instancia de Linux
EC2, consulte Instalación y configuración del cliente de AWS CloudHSM (Linux) (p. 35). Para obtener
más información acerca de la instalación del cliente en una instancia de Windows, consulte Instalación y
configuración del cliente de AWS CloudHSM (Windows) (p. 37).

Después de instalar y configurar el cliente de AWS CloudHSM, ejecute el siguiente comando para iniciarlo.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

374
AWS CloudHSM Guía del usuario
Verificación del desempeño

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

Windows

• Para clientes 1.1.2+ de Windows:

C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient

• Para clientes 1.1.1 de Windows y anteriores:

C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:


\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg

Si ya ha instalado el software de cliente, es posible que deba descargar e instalar la última versión para
obtener pkpspeed. Puede encontrar la herramienta pkpspeed /opt/cloudhsm/bin/pkpspeed en Linux
o en C:\Program Files\Amazon\CloudHSM\ en Windows.

Para utilizar pkpspeed, ejecute el comando pkpspeed o pkpspeed_blocking.exe especificando el nombre


de usuario y la contraseña de un usuario de criptografía (CU) del HSM. A continuación, defina las opciones
que se utilizarán mientras tiene en cuenta las siguientes recomendaciones.
Recomendaciones

• Para probar el desempeño de las operaciones de firma y comprobación de RSA y verificar


las operaciones, elija el cifrado RSA_CRT en Linux o la opción B en Windows. No elija RSA
(opción A en Windows). La cifrados son equivalentes, pero RSA_CRT está optimizado para el
desempeño.
• Comience por un número reducido de subprocesos. Para probar el desempeño de AES suele
bastar con un subproceso para mostrar el máximo desempeño. Para probar el desempeño de
RSA (RSA_CRT), normalmente es suficiente con tres o cuatro subprocesos.

En los ejemplos siguientes se muestran las opciones que puede elegir con pkpspeed (Linux) o
pkpspeed_blocking (Windows) para probar el desempeño de HSM para las operaciones de RSA y AES.

Example – Uso de pkpspeed para probar el desempeño de RSA

Puede ejecutar este ejemplo en Windows, Linux y sistemas operativos compatibles.

Linux

Utilice estas instrucciones para Linux y sistemas operativos compatibles.

375
AWS CloudHSM Guía del usuario
Verificación del desempeño

/opt/cloudhsm/bin/pkpspeed -s CU user name -p password

SDK Version: 2.03

Available Ciphers:
AES_128
AES_256
3DES
RSA (non-CRT. modulus size can be 2048/3072)
RSA_CRT (same as RSA)
For RSA, Exponent will be 65537

Current FIPS mode is: 00002


Enter the number of thread [1-10]: 3
Enter the cipher: RSA_CRT
Enter modulus length: 2048
Enter time duration in Secs: 60
Starting non-blocking speed test using data length of 245 bytes...
[Test duration is 60 seconds]

Do you want to use static key[y/n] (Make sure that KEK is available)?n

Windows

c:\Program Files\Amazon\CloudHSM>pkpspeed_blocking.exe -s CU user name -p password

Please select the test you want to run

RSA non-CRT------------------->A
RSA CRT----------------------->B
Basic 3DES CBC---------------->C
Basic AES--------------------->D
FIPS Random------------------->H
Random------------------------>I
AES GCM ---------------------->K

eXit------------------------>X
B

Running 4 threads for 25 sec

Enter mod size(2048/3072):2048


Do you want to use Token key[y/n]n
Do you want to use static key[y/n] (Make sure that KEK is available)? n
OPERATIONS/second 821/1
OPERATIONS/second 833/1
OPERATIONS/second 845/1
OPERATIONS/second 835/1
OPERATIONS/second 837/1
OPERATIONS/second 836/1
OPERATIONS/second 837/1
OPERATIONS/second 849/1
OPERATIONS/second 841/1
OPERATIONS/second 856/1
OPERATIONS/second 841/1
OPERATIONS/second 847/1
OPERATIONS/second 838/1
OPERATIONS/second 843/1
OPERATIONS/second 852/1
OPERATIONS/second 837/

376
AWS CloudHSM Guía del usuario
Verificación del desempeño

Example – Uso de pkpspeed para probar el desempeño de AES

Linux

Utilice estas instrucciones para Linux y sistemas operativos compatibles.

/opt/cloudhsm/bin/pkpspeed -s <CU user name> -p <password>

SDK Version: 2.03

Available Ciphers:
AES_128
AES_256
3DES
RSA (non-CRT. modulus size can be 2048/3072)
RSA_CRT (same as RSA)
For RSA, Exponent will be 65537

Current FIPS mode is: 00000002


Enter the number of thread [1-10]: 1
Enter the cipher: AES_256
Enter the data size [1-16200]: 8192
Enter time duration in Secs: 60
Starting non-blocking speed test using data length of 8192 bytes...

Windows

c:\Program Files\Amazon\CloudHSM>pkpspeed_blocking.exe -s CU user name -p password


login as USER
Initializing Cfm2 library
SDK Version: 2.03

Current FIPS mode is: 00000002


Please enter the number of threads [MAX=400] : 1
Please enter the time in seconds to run the test [MAX=600]: 20

Please select the test you want to run

RSA non-CRT------------------->A
RSA CRT----------------------->B
Basic 3DES CBC---------------->C
Basic AES--------------------->D
FIPS Random------------------->H
Random------------------------>I
AES GCM ---------------------->K

eXit------------------------>X
D

Running 1 threads for 20 sec

Enter the key size(128/192/256):256


Enter the size of the packet in bytes[1-16200]:8192
OPERATIONS/second 9/1
OPERATIONS/second 10/1
OPERATIONS/second 11/1
OPERATIONS/second 10/1
OPERATIONS/second 10/1
OPERATIONS/second 10/...

377
AWS CloudHSM Guía del usuario
Solución de errores de creación de clústeres

Solución de errores de creación de clústeres


Cuando crea un clúster y la función aún no existe, AWS CloudHSM crea la función vinculada al servicio
AWSServiceRoleForCloudHSM. Si AWS CloudHSM no puede crear la función vinculada al servicio, su
intento de crear un clúster puede dar un error.

En este tema se explica cómo resolver los problemas más habituales para que pueda crear un clúster
correctamente. Tiene que crear este rol una única vez. Una vez que el rol vinculado al servicio se cree
en su cuenta, podrá utilizar cualquiera de los métodos admitidos para crear y administrar clústeres
adicionales.

En las secciones siguientes se ofrecen sugerencias para solucionar errores de creación de clústeres
relacionados con el rol vinculado al servicio. Si prueba estas sugerencias pero sigue sin poder crear
un clúster, póngase en contacto con AWS Support. Para obtener más información acerca del rol
vinculado al servicio AWSServiceRoleForCloudHSM, consulte Roles vinculados a servicios de AWS
CloudHSM (p. 360).

Temas
• Agregar el permiso que falta (p. 378)
• Crear el rol vinculado a un servicio manualmente (p. 378)
• Uso de un usuario no federado (p. 378)

Agregar el permiso que falta


Para crear un rol vinculado a un servicio, el usuario ha de tener el permiso
iam:CreateServiceLinkedRole. Si el usuario de IAM que crea el clúster no tiene este permiso, el
proceso de creación del clúster generará un error cuando intente crear la función vinculada al servicio en
su cuenta de AWS.

Cuando el error se produce porque falta un permiso, el mensaje de error contiene el texto siguiente.

This operation requires that the caller have permission to call iam:CreateServiceLinkedRole
to create the CloudHSM Service Linked Role.

Para solucionar este error, dé al usuario de IAM que crea el clúster el permiso AdministratorAccess
o añada el permiso iam:CreateServiceLinkedRole a la política de IAM del usuario. Para leer las
instrucciones, consulte Agregar permisos a un usuario nuevo o existente.

A continuación, intente volver a crear el clúster (p. 18).

Crear el rol vinculado a un servicio manualmente


Puede utilizar la consola de IAM, la CLI o la API para crear la función vinculada al servicio
AWSServiceRoleForCloudHSM. Para obtener más información, consulte Creación de una función
vinculada a un servicio en la Guía del usuario de IAM.

Uso de un usuario no federado


Los usuarios federados, cuyas credenciales proceden de fuera de AWS, pueden realizar la mayoría de las
tareas de un usuario no federado. No obstante, AWS no permite a los usuarios realizar llamadas a la API
para crear un rol vinculado al servicio desde un punto de enlace federado.

Para solucionar este problema, cree un usuario no federado (p. 15) con el permiso
iam:CreateServiceLinkedRole o conceda a un usuario no federado ya existente el permiso

378
AWS CloudHSM Guía del usuario
Faltan los registros de auditoría de
AWS CloudHSM en CloudWatch

iam:CreateServiceLinkedRole. A continuación, haga que ese usuario cree un clúster (p. 18) desde la
AWS CLI. Esto creará el rol vinculado al servicio en su cuenta.

Una vez que haya creado el rol vinculado al servicio, podrá eliminar el clúster que el usuario no federado
creó. La eliminación del clúster no afecta al rol. A partir de ese momento, todo usuario que tenga los
permisos necesarios, incluidos los usuarios federados, podrá crear clústeres de AWS CloudHSM en su
cuenta.

Para comprobar que se ha creado la función, abra la consola de IAM en https://console.aws.amazon.com/


iam/ y seleccione Roles (Funciones). También puede ejecutar el comando get-role de IAM en la AWS CLI.

$ aws iam get-role --role-name AWSServiceRoleForCloudHSM


{
"Role": {
"Description": "Role for CloudHSM service operations",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "cloudhsm.amazonaws.com"
}
}
]
},
"RoleId": "AROAJ4I6WN5QVGG5G7CBY",
"CreateDate": "2017-12-19T20:53:12Z",
"RoleName": "AWSServiceRoleForCloudHSM",
"Path": "/aws-service-role/cloudhsm.amazonaws.com/",
"Arn": "arn:aws:iam::111122223333:role/aws-service-role/cloudhsm.amazonaws.com/
AWSServiceRoleForCloudHSM"
}
}

Faltan los registros de auditoría de AWS CloudHSM


en CloudWatch
Si creó un clúster antes del 20 de enero de 2018, tendrá que configurar manualmente una función
vinculada al servicio (p. 360) para poder habilitar la entrega de los registros de auditoría de ese clúster.
Para obtener instrucciones acerca de cómo habilitar una función vinculada al servicio en un clúster de
HSM, consulte Descripción de las funciones vinculadas a servicios (p. 360) y Creación de una función
vinculada a un servicio en la Guía del usuario de IAM.

Recuperación de registros de configuración de los


clientes
El script de registro del cliente recopila información importante sobre el entorno del sistema operativo, el
clúster de AWS CloudHSM, los HSM activos o inactivos, y los archivos de configuración locales. Cuando
abre un caso para solicitar asistencia con la aplicación, esta información permite a AWS comprender la
configuración y el problema, y sirve de ayuda para solucionarlo de forma más rápida.

El script extrae la siguiente información:

379
AWS CloudHSM Guía del usuario
Ejecución del script de registro del cliente

• El sistema operativo y la versión actual


• La información de configuración del cliente de los archivos cloudhsm_client.cfg,
cloudhsm_mgmt_util.cfg y application.cfg
• Los registros del cliente de la ubicación específica de la plataforma
• Información sobre el clúster y el HSM mediante cloudhsm_mgmt_util
• Información de OpenSSL
• El cliente y la versión de compilación actuales
• La versión del instalador

Ejecución del script de registro del cliente


El script crea un archivo de salida con toda la información recopilada. Puede especificar la ruta del
directorio en el que desea agregar el archivo de salida como parámetro de salida del comando. La ruta del
directorio debe disponer del acceso de escritura apropiado. Si lo desea, también puede ejecutar el script
sin especificar la ruta del directorio. En tal caso, el script creará el archivo de salida dentro del directorio
temp.

Linux: /opt/cloudhsm/bin/client_info -output

Windows: C:\Program Files\Amazon\CloudHSM\client_info -output

Reemplace el parámetro output por la ruta del directorio en la que desea crear el archivo de salida.

380
AWS CloudHSM Guía del usuario
Historial de versiones

Información de cliente y de software


de AWS CloudHSM
Para administrar y utilizar los HSM de su clúster, utilice el cliente de AWS CloudHSM (p. 9) y las bibliotecas
de software relacionadas. Si instaló el cliente de AWS CloudHSM para Linux (p. 35) o Windows (p. 37) y
algunas de las bibliotecas de software (p. 224) requeridas, tiene todo el software necesario para utilizar
AWS CloudHSM.

Esta sección contiene información sobre las plataformas compatibles, un historial de versiones completo e
instrucciones para actualizar el cliente y las bibliotecas.

Temas
• Historial de versiones de software y del cliente de AWS CloudHSM (p. 381)
• Plataformas compatibles (p. 397)
• Actualización del cliente y las bibliotecas de Linux (p. 398)

Historial de versiones de software y del cliente de


AWS CloudHSM
Esta página proporciona notas de la versión para cada versión del cliente de AWS CloudHSM (p. 9) y las
bibliotecas de software relacionadas. Incluimos enlaces de descarga para las versiones más recientes. Le
recomendamos que utilice la versión más reciente siempre que sea posible.

Para poder actualizar, debe utilizar un comando por lotes que actualice el cliente y todas las bibliotecas
al mismo tiempo. Para obtener más información, consulte este artículo sobre la actualización del
cliente (p. 398).

Para comprobar la versión del cliente

• En un sistema Linux, utilice el siguiente comando:

rpm -qa | grep ^cloudhsm

• En un sistema Windows, utilice el siguiente comando:

wmic product get name,version

Notas de la versión
• Versión 3.1.1 (p. 381)
• Versión 3.1.0 (p. 383)
• Versiones de software y cliente obsoletas (p. 386)

Versión 3.1.1
Para descargar el software, elija la pestaña correspondiente al sistema operativo que prefiera y, a
continuación, elija el enlace a cada paquete de software.

381
AWS CloudHSM Guía del usuario
Versión 3.1.1

Amazon Linux

Descargue la versión 3.1.1 del software para Amazon Linux:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

Amazon Linux 2

Descargue la versión 3.1.1 del software para Amazon Linux 2:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

CentOS 6

Descargue la versión 3.1.1 del software para CentOS 6:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

CentOS 7

Descargue la versión 3.1.1 del software para CentOS 7:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

RHEL 6

Descargue la versión 3.1.1 del software para RedHat Enterprise Linux 6:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

RHEL 7

Descargue la versión 3.1.1 del software para RedHat Enterprise Linux 7:

• Cliente de AWS CloudHSM

382
AWS CloudHSM Guía del usuario
Versión 3.1.0

• Biblioteca de PKCS #11


• Motor dinámico de OpenSSL
• Biblioteca de Java

Ubuntu 16.04 LTS

Descargue la versión 3.1.1 del software para Ubuntu 16.04 LTS:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

Windows Server

AWS CloudHSM admite las versiones de 64 bits de Windows Server 2012, Windows Server 2012 R2
y Windows Server 2016. El software de cliente de AWS CloudHSM 3.1.1 para Windows Server incluye
los proveedores de CNG y KSP obligatorios. Para obtener más información, consulte Instalación y
configuración del cliente de AWS CloudHSM (Windows) (p. 37). Descargue la versión más reciente
(3.1.1) del software para Windows Server:

• AWS CloudHSM para Windows Server

Software de cliente de AWS CloudHSM

• Versión actualizada por coherencia.

Biblioteca de PKCS #11

• Versión actualizada por coherencia.

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

• Correcciones de errores y mejoras de rendimiento.

Windows (CNG, KSP)

• Versión actualizada por coherencia.

Versión 3.1.0
Para descargar el software, elija la pestaña correspondiente al sistema operativo que prefiera y, a
continuación, elija el enlace a cada paquete de software.

Amazon Linux

Descargue la versión 3.1.0 del software para Amazon Linux:

383
AWS CloudHSM Guía del usuario
Versión 3.1.0

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

Amazon Linux 2

Descargue la versión 3.1.0 del software para Amazon Linux 2:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

CentOS 6

Descargue la versión 3.1.0 del software para CentOS 6:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

CentOS 7

Descargue la versión 3.1.0 del software para CentOS 7:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

RHEL 6

Descargue la versión 3.1.0 del software para RedHat Enterprise Linux 6:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

RHEL 7

Descargue la versión 3.1.0 del software para RedHat Enterprise Linux 7:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL

384
AWS CloudHSM Guía del usuario
Versión 3.1.0

• Biblioteca de Java

Ubuntu 16.04 LTS

Descargue la versión 3.1.0 del software para Ubuntu 16.04 LTS:

• Cliente de AWS CloudHSM


• Biblioteca de PKCS #11
• Motor dinámico de OpenSSL
• Biblioteca de Java

Windows Server

AWS CloudHSM admite las versiones de 64 bits de Windows Server 2012, Windows Server 2012
R2 y Windows Server 2016. El software de cliente de AWS CloudHSM 3.1.0 para Windows Server
incluye los proveedores CNG y KSP necesarios. Para obtener más información, consulte Instalación
y configuración del cliente de AWS CloudHSM (Windows) (p. 37). Descargue la versión más reciente
(3.1.0) del software para Windows Server:

• AWS CloudHSM para Windows Server

La versión 3.1.0 añade mecanismos de encapsulamiento de claves AES que cumplen los
estándares (p. 64).

Software de cliente de AWS CloudHSM

• Nuevo requisito para la actualización: la versión del cliente debe coincidir con la versión de cualquier
biblioteca de software que esté utilizando. Para poder actualizar, debe utilizar un comando por lotes que
actualice el cliente y todas las bibliotecas al mismo tiempo. Para obtener más información, consulte este
artículo sobre la actualización del cliente (p. 398).
• Key_mgmt_util (KMU) incluye las siguientes actualizaciones:
• Se han agregado dos nuevos métodos de encapsulamiento de claves AES con y sin relleno de ceros
a la izquierda que cumplen los estándares. Para obtener más información, consulte wrapKey (p. 211) y
unwrapKey (p. 204).
• Se ha deshabilitado la funcionalidad que permitía especificar un IV personalizado al encapsular una
clave con AES_KEY_WRAP_PAD_PKCS5. Para obtener más información, consulte este artículo sobre
el encapsulamiento de claves AES (p. 64).

Biblioteca de PKCS #11

• Se han agregado dos nuevos métodos de encapsulamiento de claves AES con y sin relleno de ceros a
la izquierda que cumplen los estándares. Para obtener más información, consulte este artículo sobre el
encapsulamiento de claves AES (p. 64).
• Puede configurar la longitud de sal en las firmas RSA-PSS. Para obtener información sobre el uso de
esta característica, consulte Configurable salt length for RSA-PSS signatures en GitHub.

Motor dinámico de OpenSSL

• CAMBIO IMPORTANTE: los conjuntos de cifrado TLS 1.0 y 1.2 con SHA1 no están disponibles en la
versión 3.1.0 del motor de OpenSSL. Este problema se resolverá en breve.
• Si desea instalar la biblioteca del motor dinámico de OpenSSL en RHEL 6 o CentOS 6, infórmese sobre
un problema conocido (p. 370) relacionado con la versión predeterminada de OpenSSL instalada en
esos sistemas operativos.

385
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

• Mejoras de estabilidad y correcciones de errores

Biblioteca de Java

• CAMBIO IMPORTANTE: para solucionar los problemas de conformidad de Java Cryptography Extension
(JCE), ahora, en el encapsulamiento y desencapsulamiento de AES, se utiliza correctamente el
algoritmo de AESWrap en lugar del algoritmo de AES. Esto significa que Cipher.WRAP_MODE y
Cipher.UNWRAP_MODE ya no tienen éxito para los mecanismos AES/ECB y AES/CBC.

Para actualizar a la versión de cliente 3.1.0, debe actualizar el código. Si tiene claves encapsuladas
existentes, debe prestar especial atención al mecanismo que usa para desencapsular y a cómo han
cambiado los valores predeterminados del IV. Si encapsuló claves con la versión de cliente 3.0.0 o
anterior, entonces en 3.1.1 debe usar AESWrap/ECB/PKCS5Padding para desencapsular sus claves
existentes. Para obtener más información, consulte este artículo sobre el encapsulamiento de claves
AES (p. 64).
• Puede mostrar varias claves con la misma etiqueta desde la biblioteca de Java. Para aprender a iterar a
través de todas las claves disponibles, consulte Find all keys en GitHub.
• Al crear las claves, puede establecer valores más restrictivos en los atributos; por ejemplo, especificar
etiquetas diferentes para claves públicas y privadas. Para obtener más información, consulte este
artículo sobre los atributos de Java admitidos (p. 259).

Windows (CNG, KSP)

• Mejoras de estabilidad y correcciones de errores.

Versiones de software y cliente obsoletas


Las siguientes versiones de cliente y software han quedado obsoletas y ya no están disponibles para su
descarga. Las notas de la versión se han mantenido con fines de registro.

Versión: 3.0.1
La versión 3.0.1 es una actualización muy recomendable. Proporciona una corrección de errores críticos
para los usuarios de PKCS #11.

Software de cliente de AWS CloudHSM

• Versión actualizada por coherencia.

Biblioteca de PKCS #11

• Para evitar errores de usuario que dan como resultado claves que no se pueden desencapsular, esta
versión requiere que el vector de inicialización de C_WrapKey con el mecanismo CKM_AES_KEY_WRAP
sea de exactamente 8 bytes. Para obtener más información, consulte Problemas conocidos para el SDK
de PKCS#11 (p. 366).
• Para realizar la actualización, consulte Instalar la biblioteca de PKCS #11 (p. 224).

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

386
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

• Versión actualizada por coherencia.

Windows (CNG, KSP)

• Versión actualizada por coherencia.

Versión: 3.0.0
La versión 3.0 contiene mejoras importantes en el rendimiento y la estabilidad de funcionamiento. Esta es
una actualización recomendada, ya que incluye varias correcciones de errores.

Software de cliente de AWS CloudHSM

• Key_mgmt_util incluye las siguientes actualizaciones:


• Se eliminó el mecanismo predeterminado de wrapKey y unwrapKey. Debe proporcionar explícitamente
un mecanismo cuando utilice estas funciones.
• Ahora se permite usar el encapsulamiento y desencapsulamiento de claves con AES-GCM. Para
utilizar este mecanismo de encapsulamiento, especifique -m 10 con wrapKey y unwrapKey. Para
obtener más información, consulte wrapKey (p. 211) o unwrapKey (p. 204).
• El nombre del encapsulamiento de claves de AES se modificó de CLOUDHSM_AES_KEY_WRAP a
AES_KEY_WRAP_PAD_PKCS5 con el mecanismo 4 para reflejar que AWS CloudHSM utiliza el relleno
PKCS5 para encapsular las claves. Para obtener más información, consulte la lista de Problemas
conocidos (p. 364).
• findKey se ha mejorado para poder devolver las claves propias del CU que ha iniciado sesión o las
claves que este comparte. Para obtener más información, consulte el artículo sobre findKey (p. 149).

Cloudhsm_mgmt_util contiene las siguientes actualizaciones:


• Los CO pueden establecer el atributo OBJ_ATTR_TRUSTED de cualquier clave (valor 134) del HSM
utilizando setAttribute para marcar una clave como clave de confianza.
Note

OBJ_ATTR_TRUSTED es el único atributo que puede establecerse a través de un CO. Para


obtener más información, consulte el comando setAttribute (p. 200).
• findAllKeys muestra las claves que son propiedad de un CU y las claves que ese CU comparte.
Obtenga más información en findAllKeys (p. 100).

Biblioteca de PKCS #11

• PKCS #11 ya no necesita Redis para disfrutar de un alto rendimiento. Redis ya no se incluye en los
paquetes de instalación. Si utilizaba Redis en instalaciones anteriores, actualice los scripts de inicio e
instalación para eliminar los comandos de Redis.
• Ahora, se puede usar D3DES ECB y AES_CTR para el cifrado y el descifrado. La lista completa de
funciones y mecanismos compatibles de PKCS#11 está disponible en el artículo Mecanismos de PKCS
#11 admitidos (p. 231) .

En GitHub encontrará ejemplos de código sobre des_ecb.c y aes_ctr.c.


• Ahora, las claves pueden derivarse con HMAC KDF (SP 800-108), lo que permite utilizar el mecanismo
CKM_SP800_108_COUNTER_KDF con la función C_DERIveKey. Para obtener más información,
consulte el ejemplo de código hmac-kdf.c.
• Ahora, las claves pueden encapsularse y desencapsularse con AES-GCM a través del mecanismo
CKM_CLOUDHSM_AES_GCM. Para obtener más información, consulte el ejemplo aes_gcm_wrapping
en GitHub.

387
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

• Ahora, pueden utilizarse los siguientes atributos: CKA_NEVER_EXTRACTABLE,


CKA_DERIVE, CKA_ALWAYS_SENSITIVE, CKA_WRAP_WITH_TRUSTED, CKA_TRUSTED,
CKA_WRAP_TEMPLATE, CKA_UNWRAP_TEMPLATE y CKA_DESTROYABLE.

Puede consultar la lista completa de atributos admitidos en el artículo Atributos de PKCS #11
admitidos (p. 236). Para obtener más información sobre el uso de claves de confianza para encapsular
y desencapsular de forma controlada, consulte el artículo sobre el uso de claves de confianza para
controlar el desencapsulamiento de claves (p. 62). Para ver los ejemplos disponibles que funcionan con
los atributos que acaban de admitirse, consulte los ejemplos de AWS CloudHSM en GitHub,
• Se agregó el mecanismo CKM_CLOUDSHM_AES_GCM, que es una implementación segura en
memoria de AES-GCM. Este mecanismo patentado es una alternativa más segura que el estándar
CKM_AES_GCM. CKM_CLOUDSHM_AES_GCM antepone el IV generado por el HSM al texto cifrado en
lugar de volver a escribirlo en la estructura CK_GCM_PARAMS proporcionada durante la inicialización
del cifrado. Puede utilizar CKM_CLOUDSHM_AES_GCM con las funciones C_Encrypt o C_WrapKey. Si
utiliza este mecanismo, la variable pIV de la estructura CK_GCM_PARAMS debe establecerse en NULL.
Consulte la entrada CKM_CLOUDHSM_AES_GCM en la tabla del artículo Mecanismos de PCKS #11
admitidos (p. 231).

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

• Se agregó el almacén de claves CloudHSM, que es compatible con los certificados, lo que permite
la interoperabilidad con herramientas de terceros como keytool y jarsigner. Para obtener información
sobre el uso de este almacén de claves, consulte el artículo acerca del almacén de claves de
CloudHSM (p. 266) o el ejemplo de CloudHSMKeyStoreExampleRunner de GitHub. Para utilizar el
almacén de claves con KeyTool y Jarsigner, consulte la guía de integración de KeyStore de CloudHSM.
• Ahora, se puede usar D3DES ECB y AES_CTR para el cifrado y el descifrado. Puede consultar la lista
completa de funciones admitidas en JDE en el artículo Mecanismos admitidos (p. 256). Encontrará
código de muestra sobre DESedeECMEncryptDecryptRunner y AESCTREncryptDecryptRunner en
GitHub.
• Ahora se permite usar el encapsulamiento y desencapsulamiento de claves con AES-GCM. Consulte el
ejemplo de AESGCMWrappingRunner en GitHub.
• Ahora, ECDH es compatible. La derivación se ejecuta parcialmente en el HSM. Para obtener más
información, consulte la lista de problemas conocidos del SDK de JCE (p. 364) antes de usar ECDH
con CloudHSM. Para aprender a usar ECDH con JCE, consulte el ejemplo ECDHOperationsRunner en
GitHub.
• El encapsulamiento de claves de confianza y la derivación de claves aún no están disponibles a través
de JCE.

Windows (CNG, KSP)

• Versión actualizada por coherencia.


• Se agregó import_key.exe para asociar claves de CloudHSM preexistentes con los certificados
correspondientes.

Versión: 2.0.4
Para descargar el software, elija la pestaña correspondiente al sistema operativo que prefiera y, a
continuación, elija el enlace a cada paquete de software.

388
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

La versión 2.0.4 contiene mejoras importantes en lo que respecta al rendimiento y la estabilidad operativa.
Esta es una actualización recomendada, ya que incluye varias correcciones de errores.

Software de cliente de AWS CloudHSM

• Mejoras de estabilidad y correcciones de errores.

Biblioteca de PKCS #11

• Versión actualizada por coherencia.

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

• Mejoras de estabilidad y correcciones de errores.

Windows (CNG, KSP)

• Mejoras de estabilidad y correcciones de errores.


• Ahora puede almacenar las credenciales de HSM y obtener acceso a ellas de forma segura a través del
Administrador de credenciales de Windows (p. 283).

Versión: 2.0.3
La versión 2.0.3 proporciona mejoras importantes en cuanto a rendimiento y estabilidad de funcionamiento.
Esta es una actualización recomendada, ya que incluye varias correcciones de errores.

Software de cliente de AWS CloudHSM

• Mejoras de estabilidad y correcciones de errores.

Biblioteca de PKCS #11

• Mejoras de estabilidad y correcciones de errores.

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

• Mejoras de estabilidad y correcciones de errores.

Windows (CNG, KSP)

• Mejoras de estabilidad y correcciones de errores.

389
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

Versión: 2.0.1
La versión 2.0.1 es una actualización muy recomendable, ya que proporciona varias mejoras de seguridad
y correcciones de errores. Los cambios más significativos de esta versión son los siguientes:

Software de cliente de AWS CloudHSM

• Mejoras de seguridad y correcciones de errores.

Biblioteca de PKCS #11

• Mejoras de seguridad y correcciones de errores.

Motor dinámico de OpenSSL

• Mejoras de seguridad y correcciones de errores.

Biblioteca de Java

• Mejoras de seguridad y correcciones de errores.

Windows (CNG, KSP)

• Mejoras de seguridad y correcciones de errores.

Versión: 2.0.0
La versión 2.0.0 proporciona mejoras importantes en cuanto a rendimiento y estabilidad de funcionamiento.
También permite el intercambio seguro de claves entre distintos HSM. Los cambios más significativos de
esta versión son los siguientes:

Software de cliente de AWS CloudHSM

• Mejoras de rendimiento y correcciones de errores.

Biblioteca de PKCS #11

• Se han añadido los mecanismos de encapsulamiento de claves RSA OAEP y RSA AES.
• Se ha añadido compatibilidad con el cifrado AES-ECB.
• Se ha añadido compatibilidad con la curva secp256k1.

Para obtener más información acerca de los mecanismos de encapsulamiento de claves actualizados,
consulte Biblioteca de software de AWS CloudHSM para PKCS # 11 (p. 224).

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

• Rendimiento mejorado para el cifrado y descifrado AES-GCM.

390
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

• Se han añadido los mecanismos de encapsulamiento de claves RSA OAEP y RSA AES. Tenga en
cuenta que no puede especificar atributos clave al desencapsular con la biblioteca de Java. Para obtener
más información, consulte Problemas conocidos para el SDK de JCE (p. 369).
• Se ha añadido compatibilidad con el cifrado AES-ECB.
• Se ha añadido compatibilidad con la curva secp256k1.

Para obtener más información acerca de los mecanismos de encapsulamiento de claves actualizados,
consulte Biblioteca de software de AWS CloudHSM para Java (p. 251).

Windows (CNG, KSP)

• Versión actualizada por coherencia.

Versión: 1.1.2
Se recomienda encarecidamente la versión 1.1.2, ya que contiene un cambio que ejecuta el software
de cliente de AWS CloudHSM para Windows como un servicio, así como mejoras de rendimiento y
correcciones de errores. Los cambios más significativos de esta versión son los siguientes:

Software de cliente de AWS CloudHSM

• El software de cliente de AWS CloudHSM para Windows ahora se ejecuta como un servicio de Windows.

Biblioteca de PKCS #11

• Las claves públicas de EC con formato DER ahora se importan correctamente.


Note

Por el momento, AWS CloudHSM sigue teniendo la posibilidad de importar claves de EC sin
formatear. La posibilidad de utilizar este formato puede que desaparezca en el futuro, ya que no
es compatible con las especificaciones de PKCS#11.
• Mejoras de rendimiento y correcciones de errores.

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

• Versión actualizada por coherencia.

Windows (CNG, KSP)

• El cliente de AWS CloudHSM ahora se ejecuta como servicio. Para obtener las instrucciones de uso
actualizadas, consulte Instalación y configuración del cliente de AWS CloudHSM (Windows) (p. 37)

Versión: 1.1.1
A continuación, se enumeran los cambios significativos de esta versión:

Software de cliente de AWS CloudHSM

• Mejoras de estabilidad y correcciones de errores.

391
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

• En cloud_hsm_mgmt_util, ahora se establece enable_e2e de forma predeterminada.


• CORRECCIÓN DE SEGURIDAD: en key_mgmt_util, se ha solucionado un problema relacionado con el
análisis incorrecto de firmas de PKCS#1v1.5. Esto elimina posibles errores al validar firmas con claves
RSA importadas que utilizan un exponente público de 3. CloudHSM no permite generar claves RSA con
exponentes menores que 65537 para satisfacer los requisitos de FIPS 140-2.

Biblioteca de PKCS #11

• Mejoras de estabilidad y correcciones de errores.


• CORRECCIÓN DE SEGURIDAD: se ha solucionado un problema relacionado con el análisis incorrecto
de firmas de PKCS#1v1.5. Esto elimina posibles errores al validar firmas con claves RSA importadas
que utilizan un exponente público de 3. CloudHSM no permite generar claves RSA con exponentes
menores que 65537 para satisfacer los requisitos de FIPS 140-2.
• CAMBIO IMPORTANTE: para evitar que los usuarios cometan errores, la inicialización de AES-GCM
ahora requiere la puesto a cero del búfer de IV proporcionado por el usuario. NIST requiere que el IV
de AES-GCM se genere en el HSM y se pase a la aplicación cuando finalice el cifrado, tal y como se
describe aquí (p. 231). El IV siempre tiene un tamaño de 12 bytes.
• Se ha añadido compatibilidad con el mecanismo CKM_RSA_PKCS_KEY_PAIR_GEN.
• Se ha añadido la aplicación de la función hash mediante software para los búferes de más de 16 KB
en operaciones de resumen, firma y verificación. La aplicación de la función hash para los búferes de
menos de 16 KB se sigue descargando en el HSM como anteriormente.
• CAMBIO IMPORTANTE: Se ha fortalecido la conformidad con PKCS#11, incluida la generación explícita
de errores cuando se utilizan atributos incoherentes o no admitidos. Si su aplicación no era totalmente
conforme con PKCS#11 anteriormente, es posible que se presenten errores después de actualizar a
esta versión. En concreto:
• Si una aplicación ya ha iniciado sesión, al iniciar sesión ahora se generará el error
CKR_USER_ALREADY_LOGGED_IN.
• CKA_KEY_GEN_MECHANISM provocará un error si se incluye en una llamada a C_CreateObject.
• CKA_ALWAYS_SENSITIVE, CKA_LOCAL y CKA_NEVER_EXTRACTABLE provocarán errores si se
incluyen en una plantilla de generación o importación de claves.
• CKA_VALUE_LEN ahora se valida.
• De forma predeterminada, las claves nuevas se consideran claves de sesión en lugar de claves de
token, para cumplir con PKCS#11.

Motor dinámico de OpenSSL

• Mejoras de estabilidad y correcciones de errores.


• CORRECCIÓN DE SEGURIDAD: se ha solucionado un problema relacionado con el análisis incorrecto
de firmas de PKCS#1v1.5. Esto elimina posibles errores al validar firmas con claves RSA importadas
que utilizan un exponente público de 3. CloudHSM no permite generar claves RSA con exponentes
menores que 65537 para satisfacer los requisitos de FIPS 140-2.

Biblioteca de Java

• Mejoras de estabilidad y correcciones de errores.


• Se ha añadido la aplicación de la función hash mediante software para los búferes de más de 16 KB
en operaciones de resumen, firma y verificación. La aplicación de la función hash para los búferes de
menos de 16 KB se sigue descargando en el HSM como anteriormente.
• Para las claves no exportables, getFormat y getEncoded ahora devuelven NULL sin producir una
excepción.

392
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

Windows (CNG, KSP)

• CORRECCIÓN DE SEGURIDAD: se ha solucionado un problema relacionado con el análisis incorrecto


de firmas de PKCS#1v1.5. Esto elimina posibles errores al validar firmas con claves RSA importadas
que utilizan un exponente público de 3. CloudHSM no permite generar claves RSA con exponentes
menores que 65537 para satisfacer los requisitos de FIPS 140-2.

Versión: 1.1.0
Esta versión incluye los siguientes cambios significativos:

Software de cliente de AWS CloudHSM

• Se agregaron nuevas plataformas de Linux.


• Amazon Linux 2
• Ubuntu 16.04 LTS
• RedHat Enterprise Linux 6 (RHEL 6)
• RedHat Enterprise Linux 7 (RHEL 7)
• CentOS 6
• CentOS 7

Proveedores de CNG/KSP para Windows Server

El software de cliente de AWS CloudHSM para Windows Server incluye los proveedores de CNG y KSP
necesarios.

• Versión actualizada por coherencia.

Biblioteca de PKCS #11

• Se agregó compatibilidad con las plataformas Linux.

Motor dinámico de OpenSSL

• Se agregó compatibilidad con las plataformas Linux.

Biblioteca de Java

• Si descargó este paquete antes del 23 de mayo a las 5 p. m. PDT, deberá volver a compilar su
aplicación para que funcione con esta versión de JCE, ya que el método loadNative() había
cambiado temporalmente de no estático a estático. También puede descargar el paquete otra vez e
instalar JCE. Ahora hemos restaurado el método loadNative() a estático.
• Se eliminó el cambio brusco en la versión 1.0.18. El método público LoginManager.getInstance()
acepta los argumentos username y password.
• Se agregó compatibilidad con las plataformas Linux.

Versión: 1.0.18
Esta versión incluye los siguientes cambios significativos:

Software de cliente de AWS CloudHSM

393
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

Se agregó un cliente de AWS CloudHSM para Windows Server. Actualmente se admiten los siguientes
sistemas operativos de Windows Server:

• Microsoft Windows Server 2012 (64 bits)


• Microsoft Windows Server 2012 R2 (64 bits)
• Microsoft Windows Server 2016 (64 bits)

Proveedores de CNG/KSP para Windows Server

• Se implementó PKCS7Padding para C_DecryptUpdate y C_EncryptUpdate.


• CKA_ID ya no es necesario para la generación de clave privada RSA.
• Se mejoró el desempeño del subprocesamiento.
• Varios errores corregidos.

Biblioteca de PKCS #11

• Se ha agregado compatibilidad con PKCS7Padding.


• Se han reforzado los controles en las plantillas clave.
• Varios errores corregidos.

Motor dinámico de OpenSSL

• Se agregó compatibilidad con getCaviumPrivKey para las claves basadas en ECC.


• Se ha mejorado la estabilidad cuando se pierde la conectividad con el demonio de cliente.
• Varios errores corregidos.

Biblioteca de Java

• [Cambio importante] El método público LoginManager.getInstance() no acepta los argumentos


username y password directamente.
• Se ha agregado compatibilidad con PKCS7Padding.
• Se han añadido métodos de encapsulación y desencapsulación.
• Se ha mejorado la estabilidad cuando se pierde la conectividad con el demonio de cliente.
• Varios errores corregidos.

Versión: 1.0.14
Esta versión incluye los siguientes cambios significativos:

Software de cliente de AWS CloudHSM

• Se mejoró el comportamiento de la conmutación por error.


• Muestra metadatos de la versión.
• Varios errores corregidos.

Biblioteca de PKCS #11

• Se implementó PKCS7Padding para C_DecryptUpdate y C_EncryptUpdate.


• CKA_ID ya no es necesario para la generación de clave privada RSA.
• Se mejoró el desempeño del subprocesamiento.

394
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

• Varios errores corregidos.

Motor dinámico de OpenSSL

• Se ha añadido compatibilidad para CSR para claves ECC.


• Se mejoró la estabilidad y la gestión de errores.

Biblioteca de Java

Sin cambios. Número de versión actualizado por coherencia.

Versión: 1.0.11
Esta versión incluye los siguientes cambios significativos:

Software de cliente de AWS CloudHSM

• Se mejoró el balanceo de carga.


• Se mejoró el desempeño.
• Se mejoró la gestión de las conexiones del servidor perdidas.

Biblioteca de PKCS #11

• Se ha añadido compatibilidad con el mecanismo de firma/verificación CKM_RSA_PKCS_PSS.

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

• Se mejoró el desempeño de varios algoritmos.


• Se ha añadido la característica de importación de claves Triple DES (3DES).
• Correcciones de varios errores.

Versión: 1.0.10
Esta versión incluye los siguientes cambios significativos:

Software de cliente de AWS CloudHSM

• Se actualizó la herramienta de la línea de comandos key_mgmt_util para habilitar la importación de


claves encapsuladas de AES.
• Se mejoró el desempeño.
• Varios errores corregidos.

Biblioteca de PKCS #11

• Versión actualizada por coherencia.

Motor dinámico de OpenSSL

395
AWS CloudHSM Guía del usuario
Versiones de software y cliente obsoletas

• Versión actualizada por coherencia.

Biblioteca de Java

• Se ha añadido compatibilidad para algoritmos adicionales.


• Se mejoró el desempeño.

Versión: 1.0.8
Esta versión incluye los siguientes cambios significativos:

Software de cliente de AWS CloudHSM

• Se mejoró la experiencia de configuración.


• Se ha añadido la regeneración al servicio de cliente upstart.
• Varios errores corregidos.

Biblioteca de PKCS #11

• Se han corregido errores para abordar rutas relativas en la configuración de Redis.

Motor dinámico de OpenSSL

• Se mejoró el desempeño.

Biblioteca de Java

• Versión actualizada por coherencia.

Versión: 1.0.7
Esta versión incluye los siguientes cambios significativos:

Software de cliente de AWS CloudHSM

• Se agregó la herramienta de pruebas de desempeño pkpspeed (p. 374).


• Se han corregido errores para mejorar la estabilidad y el desempeño.

Biblioteca de PKCS #11

• Se ha añadido una versión acelerada de la biblioteca que utiliza una caché local de Redis para mejorar
el desempeño.
• Se han corregido errores relacionados con la gestión de atributos.
• Se ha añadido la capacidad de generar claves ECDSA.

Motor dinámico de OpenSSL

• Versión actualizada por coherencia.

Biblioteca de Java

396
AWS CloudHSM Guía del usuario
Plataformas compatibles

• Se ha añadido compatibilidad para algoritmos adicionales.


• Se han firmado los archivos JAR para la compatibilidad con el proveedor de Sun JCE.

Versión: 1.0.0
Esta es la versión inicial.

Plataformas compatibles
El cliente de AWS CloudHSM (p. 9) y las bibliotecas de software (p. 224) relacionadas admiten las
versiones de 64 bits de los siguientes sistemas operativos.

Biblioteca Sistema operativo

Cliente de AWS CloudHSM Amazon Linux

Amazon Linux 2

Red Hat Enterprise Linux (RHEL) 6.7+

Red Hat Enterprise Linux (RHEL) 7.3+

CentOS 6.7+

CentOS 7.3+

Ubuntu 16.04 LTS

Microsoft Windows Server 2012

Microsoft Windows Server 2012 R2

Microsoft Windows Server 2016

Proveedores de CNG/KSP Microsoft Windows Server 2012

Microsoft Windows Server 2012 R2

Microsoft Windows Server 2016

PKCS #11 Amazon Linux

Amazon Linux 2

Red Hat Enterprise Linux (RHEL) 6.7+

Red Hat Enterprise Linux (RHEL) 7.3+

CentOS 6.7+

CentOS 7.3+

Ubuntu 16.04 LTS

Motor dinámico de OpenSSL Amazon Linux

(Compatible con OpenSSL 1.0.2[f+])

Amazon Linux 2

397
AWS CloudHSM Guía del usuario
Actualización del cliente

Biblioteca Sistema operativo

Red Hat Enterprise Linux (RHEL) 6.7+

Red Hat Enterprise Linux (RHEL) 7.3+

CentOS 6.7+

CentOS 7.3+

Ubuntu 16.04 LTS

Proveedor de JCE Amazon Linux

(Admitido en OpenJDK 1.8)

Amazon Linux 2

Red Hat Enterprise Linux (RHEL) 6.7

Red Hat Enterprise Linux (RHEL) 7.3+

CentOS 6.7+

CentOS 7.3+

Ubuntu 16.04 LTS

Note

En este tema, se proporciona información sobre plataformas compatibles con la versión más
reciente del cliente de AWS CloudHSM y otro software relacionado. Las versiones anteriores del
cliente y las bibliotecas de software no son compatibles con todos los sistemas operativos que se
indican. Para obtener información sobre la compatibilidad de cada versión, consulte Historial de
versiones de software y del cliente de AWS CloudHSM (p. 381).
Si ejecuta el cliente de CloudHSM versión 1.1.1 o anterior en una instancia EC2 con Amazon
Linux 2, consulte Problemas conocidos para las instancias Amazon EC2 que ejecutan Amazon
Linux 2 (p. 366).
Si desea instalar la biblioteca del motor dinámico de OpenSSL en RHEL 6 o CentOS 6, infórmese
sobre un problema conocido (p. 370) relacionado con la versión predeterminada de OpenSSL
instalada en esos sistemas operativos.

Actualización del cliente y las bibliotecas de Linux


En la versión 3.1 y posteriores del cliente de AWS CloudHSM, la versión del cliente y de las bibliotecas
deben ser la misma para poder actualizar. En todos los sistemas basados en Linux, debe utilizar un
solo comando para instalar por lotes el cliente y todas las bibliotecas que esté utilizando, incluidas las
bibliotecas de PKCS #11, de Java y del motor dinámico de OpenSSL. Este requisito no es aplicable a los
sistemas basados en Windows, ya que los binarios de la biblioteca de proveedores de KSP y CNG ya
están incluidos en el cliente.

Temas
• Requisitos previos (p. 399)
• Paso 1: Detenga el cliente (p. 402)
• Paso 2: Actualice el cliente y las bibliotecas (p. 402)
• Paso 3: Inicie el cliente (p. 403)

398
AWS CloudHSM Guía del usuario
Requisitos previos

Requisitos previos
Descargue la última versión del cliente de AWS CloudHSM y elija las bibliotecas.
Note

No es necesario instalar todas las bibliotecas. Deberá actualizar cada una de las bibliotecas que
tenga instaladas para que coincida con la versión del cliente.

Cliente de Linux más reciente


Amazon Linux

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
latest.el6.x86_64.rpm

Amazon Linux 2

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
latest.el7.x86_64.rpm

CentOS 6

sudo yum install wget

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
latest.el6.x86_64.rpm

CentOS 7

sudo yum install wget

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
latest.el7.x86_64.rpm

RHEL 6

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
latest.el6.x86_64.rpm

RHEL 7

sudo yum install wget

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
latest.el7.x86_64.rpm

Ubuntu 16.04 LTS

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-
client_latest_amd64.deb

399
AWS CloudHSM Guía del usuario
Requisitos previos

Biblioteca PKCS #11 más reciente


Amazon Linux

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
pkcs11-latest.el6.x86_64.rpm

Amazon Linux 2

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
pkcs11-latest.el7.x86_64.rpm

CentOS 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
pkcs11-latest.el6.x86_64.rpm

CentOS 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
pkcs11-latest.el7.x86_64.rpm

RHEL 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
pkcs11-latest.el6.x86_64.rpm

RHEL 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
pkcs11-latest.el7.x86_64.rpm

Ubuntu 16.04 LTS

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-
client-pkcs11_latest_amd64.deb

Motor dinámico de OpenSSL más reciente


Amazon Linux

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
dyn-latest.el6.x86_64.rpm

Amazon Linux 2

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
dyn-latest.el7.x86_64.rpm

CentOS 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
dyn-latest.el6.x86_64.rpm

400
AWS CloudHSM Guía del usuario
Requisitos previos

CentOS 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
dyn-latest.el7.x86_64.rpm

RHEL 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
dyn-latest.el6.x86_64.rpm

RHEL 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
dyn-latest.el7.x86_64.rpm

Ubuntu 16.04 LTS

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-
client-dyn_latest_amd64.deb

Biblioteca Java más reciente


Amazon Linux

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
jce-latest.el6.x86_64.rpm

Amazon Linux 2

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
jce-latest.el7.x86_64.rpm

CentOS 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
jce-latest.el6.x86_64.rpm

CentOS 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
jce-latest.el7.x86_64.rpm

RHEL 6

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-
jce-latest.el6.x86_64.rpm

RHEL 7

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-
jce-latest.el7.x86_64.rpm

401
AWS CloudHSM Guía del usuario
Paso 1: Detenga el cliente

Ubuntu 16.04 LTS

$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-
client-jce_latest_amd64.deb

Paso 1: Detenga el cliente


Utilice el siguiente comando para detener el cliente.

Amazon Linux

$ sudo stop cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client stop

CentOS 6

$ sudo stop cloudhsm-client

CentOS 7

$ sudo service cloudhsm-client stop

RHEL 6

$ sudo stop cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client stop

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client stop

Paso 2: Actualice el cliente y las bibliotecas


El siguiente comando muestra la sintaxis necesaria para actualizar el cliente y las bibliotecas. Antes de
ejecutar el comando, quite las bibliotecas que no quiera actualizar.

Amazon Linux

$ sudo yum install -y ./cloudhsm-client-latest.el6.x86_64.rpm \


<./cloudhsm-client-pkcs11-latest.el6.x86_64.rpm> \
<./cloudhsm-client-dyn-latest.el6.x86_64.rpm> \
<./cloudhsm-client-jce-latest.el6.x86_64.rpm>

Amazon Linux 2

$ sudo yum install -y ./cloudhsm-client-latest.el7.x86_64.rpm \

402
AWS CloudHSM Guía del usuario
Paso 3: Inicie el cliente

<./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm> \
<./cloudhsm-client-dyn-latest.el7.x86_64.rpm> \
<./cloudhsm-client-jce-latest.el7.x86_64.rpm>

CentOS 6

$ sudo yum install -y ./cloudhsm-client-latest.el6.x86_64.rpm \


<./cloudhsm-client-pkcs11-latest.el6.x86_64.rpm> \
<./cloudhsm-client-dyn-latest.el6.x86_64.rpm> \
<./cloudhsm-client-jce-latest.el6.x86_64.rpm>

CentOS 7

$ sudo yum install -y ./cloudhsm-client-latest.el7.x86_64.rpm \


<./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm> \
<./cloudhsm-client-dyn-latest.el7.x86_64.rpm> \
<./cloudhsm-client-jce-latest.el7.x86_64.rpm>

RHEL 6

$ sudo yum install -y ./cloudhsm-client-latest.el6.x86_64.rpm \


<./cloudhsm-client-pkcs11-latest.el6.x86_64.rpm> \
<./cloudhsm-client-dyn-latest.el6.x86_64.rpm> \
<./cloudhsm-client-jce-latest.el6.x86_64.rpm>

RHEL 7

$ sudo yum install -y ./cloudhsm-client-latest.el7.x86_64.rpm \


<./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm> \
<./cloudhsm-client-dyn-latest.el7.x86_64.rpm> \
<./cloudhsm-client-jce-latest.el7.x86_64.rpm>

Ubuntu 16.04 LTS

$ sudo dpkg -i cloudhsm-client_latest_amd64.deb \


<cloudhsm-client-pkcs11_latest_amd64.deb> \
<cloudhsm-client-dyn_latest_amd64.deb> \
<cloudhsm-client-jce_latest_amd64.deb>

Paso 3: Inicie el cliente


Use el siguiente comando para iniciar el cliente.

Amazon Linux

$ sudo start cloudhsm-client

Amazon Linux 2

$ sudo service cloudhsm-client start

CentOS 6

$ sudo start cloudhsm-client

403
AWS CloudHSM Guía del usuario
Paso 3: Inicie el cliente

CentOS 7

$ sudo service cloudhsm-client start

RHEL 6

$ sudo start cloudhsm-client

RHEL 7

$ sudo service cloudhsm-client start

Ubuntu 16.04 LTS

$ sudo service cloudhsm-client start

404
AWS CloudHSM Guía del usuario
Actualizaciones recientes

Historial de revisión
En este tema se describen actualizaciones importantes en la Guía del usuario de AWS CloudHSM.

Temas
• Actualizaciones recientes (p. 405)
• Actualizaciones anteriores (p. 407)

Actualizaciones recientes
En la siguiente tabla se describen cambios importantes en esta documentación desde abril de
2018. Además de los cambios importantes que se indican a continuación, también actualizamos la
documentación con frecuencia para mejorar las descripciones y los ejemplos y para dar cuenta de los
comentarios que nos envía. Si desea recibir notificaciones sobre cambios importante, utilice el enlace de la
esquina superior derecha para suscribirse a la fuente RSS.

Actualización de la documentación más reciente: 21 de mayo de 2020

update-history-change update-history-description update-history-date

Se añadió contenido Se publicó la versión 3.1 del May 21, 2020


nuevo (p. 405) cliente de AWS CloudHSM
para todas las plataformas.
Para obtener más información,
consulte Historial de versiones
de software y del cliente de AWS
CloudHSM.

Se añadió contenido Se publicó la versión 3.0.1 del April 20, 2020


nuevo (p. 405) cliente de AWS CloudHSM
para todas las plataformas.
Para obtener más información,
consulte Historial de versiones
de software y del cliente de AWS
CloudHSM.

Se añadió contenido Lanzamiento de la versión 3.0.0 October 30, 2019


nuevo (p. 405) del cliente de AWS CloudHSM
para la plataforma Windows
Server. Para obtener más
información, consulte Historial
de versiones de software y del
cliente de AWS CloudHSM.

Se añadió contenido Lanzamiento de la versión 3.0.0 October 22, 2019


nuevo (p. 405) del cliente de AWS CloudHSM
para todas las plataformas,
excepto Windows. Para obtener
más información, consulte
Historial de versiones de software
y del cliente de AWS CloudHSM.

405
AWS CloudHSM Guía del usuario
Actualizaciones recientes

Se añadió contenido Se publicó la versión 2.0.4 del August 26, 2019


nuevo (p. 405) cliente de AWS CloudHSM
para todas las plataformas.
Para obtener más información,
consulte Historial de versiones
de software y del cliente de AWS
CloudHSM.

Se añadió contenido Se publicó la versión 2.0.3 del May 13, 2019


nuevo (p. 405) cliente de AWS CloudHSM
para todas las plataformas.
Para obtener más información,
consulte Historial de versiones
de software y del cliente de AWS
CloudHSM.

Se añadió contenido Se publicó la versión 2.0.1 del March 21, 2019


nuevo (p. 405) cliente de AWS CloudHSM
para todas las plataformas.
Para obtener más información,
consulte Historial de versiones
de software y del cliente de AWS
CloudHSM.

Se añadió contenido Se publicó la versión 2.0.0 del February 6, 2019


nuevo (p. 405) cliente de AWS CloudHSM
para todas las plataformas.
Para obtener más información,
consulte Historial de versiones
de software y del cliente de AWS
CloudHSM.

Se añadió compatibilidad con Se añadió compatibilidad December 19, 2018


regiones (p. 405) con AWS CloudHSM a las
regiones UE (Estocolmo) y AWS
GovCloud (EE.UU. Este).

Se añadió contenido Se publicó la versión 1.1.2 para November 20, 2018


nuevo (p. 405) Windows del cliente de AWS
CloudHSM. Para obtener más
información, consulte Historial
de versiones de software y del
cliente de AWS CloudHSM.

Se añadió contenido Se publicó la versión 1.1.2 November 8, 2018


nuevo (p. 405) para las plataformas Linux del
cliente de AWS CloudHSM.
Para obtener más información,
consulte Historial de versiones
de software y del cliente de AWS
CloudHSM.

Se actualizaron los problemas Se añadió contenido nuevo a la November 8, 2018


conocidos (p. 405) sección problemas conocidos de
la guía de solución de problemas.

406
AWS CloudHSM Guía del usuario
Actualizaciones anteriores

Se añadió compatibilidad con Se añadió compatibilidad con October 24, 2018


regiones (p. 405) las regiones de UE (París) y
Asia Pacífico (Seúl) en AWS
CloudHSM.

Se añadió contenido Se añadió la posibilidad de September 10, 2018


nuevo (p. 405) eliminar y restaurar copias de
seguridad de AWS CloudHSM.
Para obtener más información,
consulte Eliminación y
restauración de una copia de
seguridad del clúster de AWS
CloudHSM.

Se añadió contenido Se añadió la entrega automática August 13, 2018


nuevo (p. 405) de registros de auditoría a
Amazon CloudWatch Logs.
Para obtener más información,
consulte Monitorización de
registros de auditoría de
AWS CloudHSM en Amazon
CloudWatch Logs.

Se añadió contenido Se añadió la capacidad de clonar July 30, 2018


nuevo (p. 405) una copia de seguridad de un
clúster de AWS CloudHSM entre
regiones. Para obtener más
información, consulte Clonar
una copia de seguridad entre
regiones.

Se añadió compatibilidad con Se añadió compatibilidad con June 13, 2018


regiones (p. 405) la región UE (Londres) en AWS
CloudHSM.

Se añadió contenido Se agregó la compatibilidad May 10, 2018


nuevo (p. 405) de cliente y biblioteca de AWS
CloudHSM para Amazon Linux
2, Red Hat Enterprise Linux
(RHEL) 6, Red Hat Enterprise
Linux (RHEL) 7, CentOS 6,
CentOS 7 y Ubuntu 16.04 LTS.
Para obtener más información,
consulte Instalar y configurar
el cliente de AWS CloudHSM
(Linux).

Se añadió contenido Se agregó un cliente de AWS April 30, 2018


nuevo (p. 405) CloudHSM para Windows.
Para obtener más información,
consulte Proveedores KSP y
CNG para Windows.

Actualizaciones anteriores
En la siguiente tabla se describen cambios importantes en la AWS CloudHSM antes de 2018.

407
AWS CloudHSM Guía del usuario
Actualizaciones anteriores

Cambio Descripción Fecha

Nuevo contenido Se agregó la autenticación de 9 de noviembre de 2017


cuórum (control de acceso M
de N) para los responsables de
criptografía (CO). Para obtener
más información, consulte
Aplicación de la autenticación de
cuórum (control de acceso M de
N) (p. 67).

Actualización Se agregó documentación 9 de noviembre de 2017


acerca del uso de la herramienta
de línea de comandos
key_mgmt_util. Para obtener
más información, consulte
Referencia de comandos de
key_mgmt_util (p. 132).

Nuevo contenido Se agregó el cifrado de datos 25 de octubre de 2017


transparente de Oracle. Para
obtener más información,
consulte Cifrado de Oracle
Database (p. 325).

Nuevo contenido Se agregó la descarga de SSL. 12 de octubre de 2017


Para obtener más información,
consulte Descarga de SSL/
TLS (p. 290).

Nueva guía Esta versión incorpora AWS 14 de agosto de 2017


CloudHSM.

408

También podría gustarte