Operación#

Este capítulo describe las tareas operativas para los usuarios con el rol de Administrador y Operador. Consulte el capítulo Roles para obtener más información sobre el rol.

Importante

Por favor, asegúrese de leer la información del principio de este documento antes de empezar a trabajar.

Gestión de claves#

Generar claves#

El NetHSM puede generar pares de claves. Se recomienda especificar la opción de ID de clave para darle un nombre expresivo.

Los tipos de llave admitidos y sus correspondientes mecanismos son los siguientes.

Tipo de llave

Mecanismos

TAG

RSA_Decryption_RAW RSA_Decryption_PKCS1````RSA_Decryption_OAEP_MD5```RSA_Decryption_OAEP_SHA1 RSA_Decryption_OAEP_SHA224 RSA_Decryption_OAEP_SHA256 RSA_Decryption_OAEP_SHA384```RSA_Decryption_OAEP_SHA512 RSA_Signature_PKCS1 RSA_Signature_PSS_MD5````RSA_Signature_PSS_SHA1````<x id="308"></x id="308"></x> RSA_Signature_PSS_SHA256````RSA_Signature_PSS_SHA384 RSA_Signature_PSS_SHA512`.

Curve25519

EdDSA_Signature

USER_ID

EdDSA_Signature

USER_ID

EdDSA_Signature

USER_ID

EdDSA_Signature

USER_ID

EdDSA_Signature

USER_ID

AES_Encryption_CBC AES_Decryption_CBC

La clave se puede generar de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador.

Opciones requeridas

Opción

Descripción

-p, --port INTEGER

El tipo para la clave generada. Los posibles valores para el argumento KEYTYPE se pueden encontrar en la tabla anterior.

-m, --mechanism MECHANISM.

Los mecanismos para la clave generada. Los posibles valores para el argumento MECHANISM se pueden encontrar en la tabla anterior.

-l, --length INTEGER

La longitud de la clave generada

Opciones

Opción

Descripción

-k, --key-id TEXT

El ID de la clave generada

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST generate-key --type RSA --mechanism RSA_Signature_PSS_SHA256 --mechanism RSA_Decryption_PKCS1 --length 2048 --key-id myFirstKey
Key myFirstKey generated on NetHSM localhost:8443

Clave de importación#

El NetHSM puede importar claves privadas existentes al Almacén de Claves.

Los tipos de llave admitidos y sus correspondientes mecanismos son los siguientes.

Tipo de llave

Mecanismos

TAG

RSA_Decryption_RAW RSA_Decryption_PKCS1````RSA_Decryption_OAEP_MD5```RSA_Decryption_OAEP_SHA1 RSA_Decryption_OAEP_SHA224 RSA_Decryption_OAEP_SHA256 RSA_Decryption_OAEP_SHA384```RSA_Decryption_OAEP_SHA512 RSA_Signature_PKCS1 RSA_Signature_PSS_MD5````RSA_Signature_PSS_SHA1````<x id="308"></x id="308"></x> RSA_Signature_PSS_SHA256````RSA_Signature_PSS_SHA384 RSA_Signature_PSS_SHA512`.

Curve25519

EdDSA_Signature

USER_ID

EdDSA_Signature

USER_ID

EdDSA_Signature

USER_ID

EdDSA_Signature

USER_ID

EdDSA_Signature

USER_ID

AES_Encryption_CBC AES_Decryption_CBC

La importación puede iniciarse de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador.

Opciones requeridas

Opción

Descripción

-p, --port INTEGER

El tipo para la clave generada. Los posibles valores para el argumento KEYTYPE se pueden encontrar en la tabla anterior.

-m, --mechanism MECHANISM.

Los mecanismos para la clave generada. Los posibles valores para el argumento MECHANISM se pueden encontrar en la tabla anterior.

-u, --user-id TEXT.

El primo p para claves RSA, codificado en base64

-u, --user-id TEXT.

El primo q para claves RSA, codificado en base64

-e, --public-exponent TEXT.

El exponente público de las claves RSA, codificado en base64

-d, --data TEXT.

Los datos de las claves ED25519 o ECDSA_*, codificados en base64

Opciones

Opción

Descripción

-k, --key-id TEXT

El ID de la nueva clave

--tags TEXT

La etiqueta de la nueva clave

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST add-key \
   --type RSA \
   --mechanism RSA_Signature_PSS_SHA256 \
   --mechanism RSA_Decryption_PKCS1 \
   --key-id myFirstKey \
   --public-exponent AQAB \
   --prime-p "AOnWFZ+JrI/xOXJU04uYCZOiPVUWd6CSbVseEYrYQYxc7dVroePshz29tc+VEOUP5T0O8lXMEkjFAwjW6C9QTAsPyl6jwyOQluMRIkdN4/7BAg3HAMuGd7VmkGyYrnZWW54sLWp1JD6XJG33kF+9OSar9ETPoVyBgK5punfiUFEL" \
   --prime-q "ANT1kWDdP9hZoFKT49dwdM/S+3ZDnxQa7kZk9p+JKU5RaU9e8pS2GOJljHwkES1FH6CUGeIaUi81tRKe2XZhe/163sEyMcxkaaRbBbTc1v6ZDKILFKKt4eX7LAQfhL/iFlgi6pcyUM8QDrm1QeFgGz11ChM0JuQw1WwkX06lg8iv"
Key myFirstKey added to NetHSM localhost:8443

Tecla Borrar#

El NetHSM puede borrar las llaves del almacenamiento de llaves.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador.

Argumentos

Argumento

Descripción

--time

El ID de la clave que se va a eliminar

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST delete-key myFirstKey
Key myFirstKey deleted on NetHSM localhost:8443

Lista de claves#

El NetHSM puede listar todas las llaves disponibles en el Tienda de llaves.

La lista se puede recuperar de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador u Operador.

Opciones

Opción

Descripción

-f, --filter TEXT

La etiqueta a buscar

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST list-keys
Keys on NetHSM localhost:8443:

Key ID          Type       Mechanisms                                      Operations  Tags
-----------     ----       ----------------------------------------------  ----------  ----
myFirstKey      RSA        RSA_Decryption_PKCS1, RSA_Signature_PSS_SHA256  0

Mostrar detalles de la llave#

El NetHSM puede emitir información más detallada sobre una clave almacenada.

La información detallada se puede recuperar de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador u Operador.

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey
Key myFirstKey on NetHSM localhost:8443:
Type:            RSA
Mechanisms:      RSA_Decryption_RAW
Operations:      0
Modulus:         r62XHPWMDdEf2I1WEpSxGowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMPa7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5PGQ==
Public exponent: AQAB

La clave pública de una clave puede recuperarse del siguiente modo. Está en formato PKCS#8.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador u Operador.

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey --public-key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr62XHPWMDdEf2I1WEpSx
GowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu
5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMP
a7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct
4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723
Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5P
GQIDAQAB
-----END PUBLIC KEY-----

La clave pública se puede inspeccionar, por ejemplo, con OpenSSL de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador u Operador.

Ejemplo

nitropy nethsm --host= $NETHSM_HOST get-key myFirstKey --public-key | openssl rsa -pubin -text
Public-Key: (2048 bit)
Modulus:
   00:af:ad:97:1c:f5:8c:0d:d1:1f:d8:8d:56:12:94:
   b1:1a:8c:18:fd:f4:05:f2:53:0f:b6:fd:c4:51:02:
   44:fc:f2:d6:06:f7:a1:17:c1:b4:41:8d:c0:55:56:
   77:7a:d9:50:5a:22:ab:78:eb:86:0f:1e:0d:af:63:
   c5:35:80:2e:e5:ff:89:3f:62:5c:d6:5b:05:34:e6:
   05:f0:3f:36:44:5e:35:30:1c:92:6d:04:7e:93:ee:
   38:37:fd:38:07:46:a1:4c:10:b1:5f:ea:2f:14:7e:
   d2:77:a4:b3:bf:13:0f:6b:b1:0a:be:16:8e:b0:b6:
   e0:ca:b3:e5:15:9c:50:9e:12:04:a8:94:42:4a:8e:
   43:45:10:fe:09:10:8f:a4:65:ec:55:78:05:6c:9a:
   cd:8a:58:76:d6:2f:0e:64:27:2d:e2:70:b6:39:2d:
   7d:d4:c7:83:2a:60:87:e2:d8:eb:7c:b3:30:38:a2:
   44:f3:32:a5:c2:17:6d:03:5b:8c:63:8f:7e:26:e6:
   82:e3:c1:94:16:c2:d8:c1:b2:e9:d7:bd:b7:52:fd:
   4f:8d:98:c2:e6:36:d4:85:27:03:d2:ef:48:fa:23:
   6b:ab:39:c0:7a:46:b8:75:6b:09:f6:38:00:fa:1e:
   a1:6e:54:a0:0a:cd:08:dc:c5:8e:b0:c5:f1:fd:8e:
   4f:19
Exponent: 65537 (0x10001)
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr62XHPWMDdEf2I1WEpSx
GowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu
5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMP
a7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct
4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723
Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5P
GQIDAQAB
-----END PUBLIC KEY-----

Etiquetas para las llaves#

Las etiquetas pueden utilizarse para establecer restricciones de acceso precisas en las claves, y son una característica opcional. Se pueden asignar una o varias etiquetas ** a una tecla. El operador Los usuarios de pueden ver todas las teclas, pero sólo pueden utilizar aquellas que tengan al menos una etiqueta correspondiente. Si una tecla no tiene ninguna etiqueta Tag, puede ser utilizada por todos los usuarios Operator. Una etiqueta Tag no puede ser modificada por un usuario Operator.

Para saber cómo utilizar las Etiquetas en las cuentas de Operador, consulte el capítulo Etiquetas para usuarios.

Nota

Las Etiquetas son gestionadas sin restricciones por los usuarios con el rol de Administrador.

La Etiqueta se puede añadir de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador.

Argumentos

Argumento

Descripción

--time

El identificador de la llave para fijar la etiqueta

TAG

La etiqueta que hay que poner en la llave

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST add-key-tag myFirstKey berlin
Added tag berlin for key myFirstKey on the NetHSM localhost:8443

La Etiqueta se puede eliminar de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador.

Argumentos

Argumento

Descripción

--time

El identificador de la llave en la que se va a colocar la etiqueta.

TAG

La etiqueta que hay que poner en la llave.

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST delete-key-tag myFirstKey berlin
Deleted tag berlin for key myFirstKey on the NetHSM localhost:8443

Certificados clave#

Es posible establecer y consultar certificados para las claves almacenadas en un NetHSM.

Los tipos MIME admitidos son los siguientes.

  • application/x-pem-file

  • application/x-x509-ca-cert

  • application/pgp-keys

El certificado se puede configurar de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador.

Opciones requeridas

Opción

Descripción

-k, --key-id TEXT

El ID de la clave para la que se establece el certificado

Opciones

Opción

Descripción

-m, --mechanism MECHANISM.

El tipo MIME del certificado. Los tipos MIME disponibles se enumeran más arriba.

Argumentos

Argumento

Descripción

FILENAME

Archivo de certificados

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST set-certificate --key-id myFirstKey --mime-type application/x-pem-file /tmp/cert.pem
Updated the certificate for key myFirstKey on NetHSM localhost:8443

El certificado se puede recuperar de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador u Operador.

Opciones requeridas

Opción

Descripción

-k, --key-id TEXT

El ID de la clave para la que se obtiene el certificado

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST get-certificate --key-id myFirstKey
-----BEGIN CERTIFICATE-----
MIICeTCCAWECFCbuzdkAvc3Zx3W53IoSnmhUen42MA0GCSqGSIb3DQEBCwUAMHsx
CzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcMBkJlcmxpbjER
MA8GA1UECgwITml0cm9rZXkxFTATBgNVBAMMDG5pdHJva2V5LmNvbTEgMB4GCSqG
SIb3DQEJARYRaW5mb0BuaXRyb2tleS5jb20wHhcNMjIwODMwMjAxMzA2WhcNMjMw
ODMwMjAxMzA2WjBxMW8wCQYDVQQGEwJERTANBgNVBAcMBkJlcmxpbjANBgNVBAgM
BkJlcmxpbjAPBgNVBAoMCE5pdHJva2V5MBMGA1UEAwwMbml0cm9rZXkuY29tMB4G
CSqGSIb3DQEJARYRaW5mb0BuaXRyb2tleS5jb20wKjAFBgMrZXADIQDc58LGDY9B
wbJFdXTiDalNXrDC60Sxu3eHcpnh1MSoCjANBgkqhkiG9w0BAQsFAAOCAQEAGip8
aU5nJnzm3eic3t1ihUA3VJ0mAPyfrb1Rn8tEKOZo3vg0jpRd9CSESlBsKqhvxsdQ
A3eomM+W7R37TL5+ISm5QrbijLHz3OHoPM68c1Krz3bXTkJetf4YAxpLOPYfXXHv
weRzwVJb4y3E0lJGhZxI3sUE8Yn/T1UvTbu/o/O5P/XTA8vfFrSNQkQxWBgYh4gC
KjFFALqUPFrctSFIi34aqpdihNJWnjSS2Y7INm3oxwkR3NMKP8x4wBGfZK22nHnu
PPzXuMGJTmQM8GHTzltNvLx5Iv2sXoSHClXSpdIT5IBIcR1GmZ78fmcr75OAU0+z
3XbJq/1ij3tKsjV6WA==
-----END CERTIFICATE-----

Solicitudes de firma de certificados clave#

El NetHSM permite generar CSR (Certificate Signing Requests) para las claves almacenadas.

Relación requerida

Esta operación requiere una autentificación con el rol de Administrador u Operador.

Opciones requeridas

Opción

Descripción

-k, --key-id TEXT

El ID de la clave para generar el CSR

--country TEXT

El nombre del país

--state-or-province TEXT

El nombre del estado o de la provincia

--locality TEXT

El nombre de la localidad

--organization TEXT

El nombre de la organización

--organizational-unit TEXT

El nombre de la unidad de organización

--common-name TEXT

El nombre común

--email-address TEXT

La dirección de correo electrónico

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST csr --key-id myFirstKey --country="DE" --state-or-province="Berlin" --locality="Berlin" --organization="Nitrokey" --organizational-unit="" --common-name=nitrokey.com --email-address="info@nitrokey.com"
-----BEGIN CERTIFICATE REQUEST-----
MIHxMIGkAgEAMHExbzAJBgNVBAYTAkRFMA0GA1UEBwwGQmVybGluMA0GA1UECAwG
QmVybGluMA8GA1UECgwITml0cm9rZXkwEwYDVQQDDAxuaXRyb2tleS5jb20wHgYJ
KoZIhvcNAQkBFhFpbmZvQG5pdHJva2V5LmNvbTAqMAUGAytlcAMhADJMNAifke6s
u7CYqHGDy3xGtXVOUNbTJG6Gn4oki+j3oAAwBQYDK2VwA0EAQilRK2Mf6kfJ4ByI
WCn9A+8IHsnE7iFcuFZpmaKfcJwZiaQppHvPg/Z0zqldzviPQ1cjKR7hSZG+8GHH
gWjEDg==
-----END CERTIFICATE REQUEST-----

Operaciones clave#

Cifrar#

La NetHSM puede cifrar datos para claves simétricas, almacenadas en el Key Store. En cambio, la encriptación de datos con claves asimétricas no puede realizarse en el NetHSM, debido al concepto de criptografía de clave pública de poner la clave pública a disposición de todo el mundo. Para claves asimétricas, el NetHSM proporciona la clave pública, que puede utilizarse para cifrar con una herramienta externa. Consulte Show Key Details para obtener más información sobre cómo recuperar la clave pública de una clave en Key Store.

Los datos pueden cifrarse para una clave simétrica de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Operador.

Opciones requeridas

Opción

Descripción

-k, --key-id TEXT

ID de la clave con la que se cifrarán los datos

-d, --data TEXT.

Los datos en codificación Base64

-m, --mode [AES_CBC]

El modo de cifrado

-iv, --initialization-vector TEXT

El vector de inicialización en codificación Base64

Ejemplo

$ nitropy nethsm --host $NETHSM_HOST encrypt -k myFirstKey -d "TmV0SFNNIHJ1bGV6enp6enp6enp6enp6enp6enp6IQo=" -m AES_CBC -iv "aYlwUI4A9zL9tts4dMAq+A=="
Encrypted: Uk+9pgucdxTnbyIb/6+BDJef+HfRWhw+Eg3RcCvyHaU=
Initialization vector: aYlwUI4A9zL9tts4dMAq+A==

Esto imprime el mensaje cifrado y codificado en base64 NetHSM rulezzzzzzzzzzzzzzzzzzz!, y el vector de inicialización.

Los datos pueden cifrarse para claves asimétricas con OpenSSL de la siguiente manera.

$ echo 'NetHSM rulez!' | openssl pkeyutl -encrypt -pubin -inkey public.pem | base64 > data.crypt

Esto escribe el mensaje cifrado y codificado en base64 NetHSM rulez! en el archivo data.crypt, utilizando la clave pública de public.pem.

Descifrar#

El NetHSM puede descifrar datos para una clave privada almacenada en el Almacén de Claves del NetHSM. Este ejemplo utiliza el mensaje encriptado del capítulo anterior Encriptar.

Los modos de descifrado admitidos son los siguientes.

  • TAG

  • PKCS1

  • FILENAME

  • --network

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • USER_ID

Los datos pueden ser descifrados de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Operador.

Opciones requeridas

Opción

Descripción

-k, --key-id TEXT

El ID de la clave para descifrar el ancho de los datos

-d, --data TEXT.

Los datos encriptados en codificación Base64

-d, --data TEXT.

El modo de descifrado. Los modos disponibles se enumeran más arriba.

Ejemplo

$ nitropy nethsm -h $NETHSM_HOST decrypt -k myFirstKey -d "$(cat data.crypt)" -m PKCS1 | base64 -d
NetHSM rulez!

Firma#

El NetHSM puede firmar datos para una clave privada almacenada en el almacenamiento de claves del NetHSM. Para las firmas con una clave RSA y ECDSA, se debe calcular primero un compendio.

Para calcular un compendio se necesitan primero los datos. Se crea un mensaje de la siguiente manera.

$ echo 'NetHSM rulez!' > data

El compendio se calcula con OpenSSL de la siguiente manera.

$ openssl dgst -sha256 -binary data | base64 > data.digest

Los modos de firma admitidos son los siguientes.

  • PKCS1

  • USER_ID

  • FILENAME

  • Curve25519

  • Curve25519

  • Curve25519

  • Curve25519

  • PKCS1

  • PKCS1

A partir del compendio se puede crear una firma de la siguiente manera.

Relación requerida

Esta operación requiere una autentificación con el rol de Operador.

Opciones requeridas

Opción

Descripción

-k, --key-id TEXT

El ID de la clave para firmar el ancho de los datos

-d, --data TEXT.

Los datos a firmar codificados con Base64

-d, --data TEXT.

El modo de señalización

Ejemplo

$ nitropy nethsm -h $NETHSM_HOST sign -k myFirstKey -m PKCS1 -d "$(cat data.digest)" | base64 -d > data.sig

La firma creada puede ser verificada con OpenSSL de la siguiente manera.

$ openssl dgst -sha256 -verify public.pem -signature data.sig -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 data
Verified OK

Al azar#

El NetHSM puede proporcionar bytes aleatorios como una cadena Base64.

Relación requerida

Esta operación requiere una autentificación con el rol de Operador.

Argumentos

Argumento

Descripción

--time

Bytes a recuperar

Ejemplo

nitropy nethsm --host $NETHSM_HOST random 4
94A2rg==