Uso de la autenticación de cuórum para responsables de criptografía - AWS CloudHSM

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

Uso de la autenticación de cuórum para responsables de criptografía

Un responsable de criptografía (CO) 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. AWS does NOT synchronize these changes automatically 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 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:

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 Configuración por primera vez.

Cómo 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. Utilice el siguiente comando para iniciar la herramienta de línea de comandos cloudhsm_mgmt_util.

    $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
  2. Utilice el comando loginHSM para iniciar sesión en los HSM como CO. Para obtener más información, consulte Administrar usuarios de HSM con la Utilidad de administración CloudHSM (CMU).

  3. 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.

ejemplo : 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: el 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: el nombre del archivo que se debe 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 Cómo establecer el valor mínimo de cuórum en el HSM.

aws-cloudhsm>getToken 3 officer1 officer1.token getToken success on server 0(10.0.2.14) Token: Id:1 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

Cómo 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.

ejemplo : 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: el nombre del archivo que contiene la clave de firma del CO.

  • officer1.token.sig1 y officer1.token.sig2: el nombre del archivo que se debe utilizar para almacenar la firma. Asegúrese de guardar cada firma en un archivo diferente.

  • officer1.token: el 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:

Aprobación del 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. Utilice el siguiente comando para iniciar la herramienta de línea de comandos cloudhsm_mgmt_util.

    $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
  3. Utilice el comando loginHSM para iniciar sesión en los HSM como CO. Para obtener más información, consulte Administrar usuarios de HSM con la Utilidad de administración CloudHSM (CMU).

  4. 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.

ejemplo : creación de 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) ===================== -------- 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

Utilización del 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

  • 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.

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.

nota

El token M de N solo será válido mientras se mantenga la sesión iniciada actual. Si cierra sesión en la cloudhsm_mgmt_util o si la red se desconecta, el token perderá su validez. Del mismo modo, un token autorizado solo se puede usar en cloudhsm_mgmt_util y no se puede usar para autenticarse en otra aplicación.

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. AWS does NOT synchronize these changes automatically 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 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) 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