Operação#

Este capítulo descreve as tarefas operacionais para os utilizadores com o papel de Administrador e Operador. Consulte o capítulo Roles para saber mais sobre o papel.

Importante

Certifique-se por favor de ler a informação no início de ` este documento <index.html>`__ antes de começar a trabalhar.

Gestão de chaves#

Gerar chave#

O NetHSM pode gerar pares de chaves. Recomenda-se especificar a opção de identificação da chave para lhe dar um nome expressivo.

Os tipos de chave suportados e os seus mecanismos correspondentes são os seguintes.

Tipo de chave

Mecanismos

TAG``

RSA_Decryption_RAW` `x id="25"></x>>>x id="45"></x> RSA_Decryption_OAEP_MD5>>x id="73"></x> `x id="78"></x>` `x id="107"></x>` `x id="138"></x>```x id="167"></x>``x id="169"></x>` `x id="200"></x>>```x id="229"></x>``x id="231"></x>>>x id="250"></x>``x id="253"></x>`x id="255"></x>```x id="279"></x>``x id="281"></x>>>x id="303"></x>``x id="306"></x>``x id="308"></x>```x id="335"></x>``x id="337"></x>>x id="361"></x>``x id="364"></x>``x id="366"></x>` `x id="395"></x>>>x id="419"></x>

Curve25519``

EdDSA_Signature``

USER_ID`

EdDSA_Signature``

USER_ID`

EdDSA_Signature``

USER_ID`

EdDSA_Signature``

USER_ID`

EdDSA_Signature``

USER_ID`

AES_Encryption_CBC` `x id="25"></x>`

A chave pode ser gerada da seguinte forma.

Papel requerido*

Esta operação requer uma autenticação com o papel de Administrador.

Opções requeridas*

Opção

Descrição

-p`, `x id="10"></x>` >`x id=»21»></x>``

O tipo para a chave gerada. Valores possíveis para o argumento KEYTYPE` podem ser encontrados na tabela acima.

-m`, `x id="10"></x>` >`x id=»26»></x>>>x id=»35»></x>`

Os mecanismos para a chave gerada. Os valores possíveis para o MECHANISM argumento podem ser encontrados na tabela acima.

-l`, `x id="10"></x>` x id="23"></x>``

O comprimento da chave gerada

Opções opcionais*

Opção

Descrição

-k`, `x id="10"></x>` x id="23"></x>`

A identificação da chave gerada

Exemplo*

$ 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

Chave de importação#

A NetHSM pode importar chaves privadas existentes para a Key Store.

Os tipos de chave suportados e os seus mecanismos correspondentes são os seguintes.

Tipo de chave

Mecanismos

TAG``

RSA_Decryption_RAW` `x id="25"></x>>>x id="45"></x> RSA_Decryption_OAEP_MD5>>x id="73"></x> `x id="78"></x>` `x id="107"></x>` `x id="138"></x>```x id="167"></x>``x id="169"></x>` `x id="200"></x>>```x id="229"></x>``x id="231"></x>>>x id="250"></x>``x id="253"></x>`x id="255"></x>```x id="279"></x>``x id="281"></x>>>x id="303"></x>``x id="306"></x>``x id="308"></x>```x id="335"></x>``x id="337"></x>>x id="361"></x>``x id="364"></x>``x id="366"></x>` `x id="395"></x>>>x id="419"></x>

Curve25519``

EdDSA_Signature``

USER_ID`

EdDSA_Signature``

USER_ID`

EdDSA_Signature``

USER_ID`

EdDSA_Signature``

USER_ID`

EdDSA_Signature``

USER_ID`

AES_Encryption_CBC` `x id="25"></x>`

A importação pode ser iniciada da seguinte forma.

Papel requerido*

Esta operação requer uma autenticação com o papel de Administrador.

Opções requeridas*

Opção

Descrição

-p`, `x id="10"></x>` >`x id=»21»></x>``

O tipo para a chave gerada. Valores possíveis para o argumento KEYTYPE` podem ser encontrados na tabela acima.

-m`, `x id="10"></x>` >`x id=»26»></x>>>x id=»35»></x>`

Os mecanismos para a chave gerada. Os valores possíveis para o MECHANISM argumento podem ser encontrados na tabela acima.

-u`, `x id="10"></x> `x id="24"></x>`

The prime p for RSA keys, base64-encoded

-u`, `x id="10"></x> `x id="24"></x>`

The prime q for RSA keys, base64-encoded

-e`, `x id="10"></x>` x id="32"></x>`

The public exponent for RSA keys, base64 encoded

-d`, `x id="10"></x>` >`x id=»21»></x>``

The key data for ED25519 or ECDSA_* keys, base64-encoded

Opções opcionais*

Opção

Descrição

-k`, `x id="10"></x>` x id="23"></x>`

A identificação da nova chave

--tags TEXT

The Tag for the new key

Exemplo*

$ 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

Apagar chave#

O NetHSM pode apagar as chaves da Key Store.

Papel requerido*

Esta operação requer uma autenticação com o papel de Administrador.

Argumentos*

Argumento

Descrição

--time`

A chave de identificação da chave a apagar

Exemplo*

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

Chaves de Lista#

A NetHSM pode listar todas as chaves disponíveis na Key Store.

A lista pode ser recuperada da seguinte forma.

Papel requerido*

Esta operação requer uma autenticação com o papel Administrador ou Operador.

Opções opcionais*

Opção

Descrição

-f, --filter TEXT

The Tag to search for

Exemplo*

$ 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 detalhes chave#

O NetHSM pode produzir informação mais detalhada sobre uma chave armazenada.

A informação detalhada pode ser recuperada da seguinte forma.

Papel requerido*

Esta operação requer uma autenticação com o papel Administrador ou Operador.

Exemplo*

$ 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

The public key of a key can be retrieved as follows. It’s in PKCS#8 format.

Papel requerido*

Esta operação requer uma autenticação com o papel Administrador ou Operador.

Exemplo*

$ 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-----

A chave pública pode ser inspeccionada, por exemplo, com OpenSSL, como se segue.

Papel requerido*

Esta operação requer uma autenticação com o papel Administrador ou Operador.

Exemplo*

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 Chaves#

Tags can be used to set fine-grained access restrictions on keys, and are an optional feature. One or more Tags can be assigned to a key. The Operator users can see all keys, but only use those with at least one corresponding Tag. If a key has no Tag it can be used by all Operator users. A Tag can not be modified by an Operator user.

Para saber como usar Tags nas contas Operador, consulte o capítulo `Tags for Users <administration.html#tags-for-users>>x id=»133»></x>__.

Nota

As bolsas são geridas sem restrições por utilizadores com o papel de Administrador.

A Tag pode ser acrescentada como se segue.

Papel requerido*

Esta operação requer uma autenticação com o papel de Administrador.

Argumentos*

Argumento

Descrição

--time`

A chave de identificação para colocar a etiqueta

TAG``

A etiqueta a colocar na chave

Exemplo*

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

A Tag pode ser apagada da seguinte forma.

Papel requerido*

Esta operação requer uma autenticação com o papel de Administrador.

Argumentos*

Argumento

Descrição

--time`

A chave de identificação para colocar a etiqueta.

TAG``

A etiqueta a colocar na chave.

Exemplo*

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

Principais Certificados#

É possível definir e consultar certificados para as chaves armazenadas num NetHSM.

Os tipos MIME suportados são os seguintes.

  • application/x-pem-file``

  • application/x-x509-ca-cert``

  • application/pgp-keys``

O certificado pode ser definido da seguinte forma.

Papel requerido*

Esta operação requer uma autenticação com o papel de Administrador.

Opções requeridas*

Opção

Descrição

-k`, `x id="10"></x>` x id="23"></x>`

A identificação da chave para definir o certificado para

Opções opcionais*

Opção

Descrição

-m`, `x id="10"></x>` >`x id=»26»></x>>>x id=»35»></x>`

O tipo MIME do certificado. Os tipos MIME disponíveis estão listados acima.

Argumentos*

Argumento

Descrição

FILENAME``

Ficheiro do certificado

Exemplo*

$ 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

O certificado pode ser recuperado da seguinte forma.

Papel requerido*

Esta operação requer uma autenticação com o papel Administrador ou Operador.

Opções requeridas*

Opção

Descrição

-k`, `x id="10"></x>` x id="23"></x>`

A identificação da chave para obter o certificado para

Exemplo*

$ 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-----

Pedidos de Assinatura de Certificados Chave#

A NetHSM apoia a geração de CSR (Certificate Signing Signing Requests) para as chaves armazenadas.

Papel requerido*

Esta operação requer uma autenticação com o papel Administrador ou Operador.

Opções requeridas*

Opção

Descrição

-k`, `x id="10"></x>` x id="23"></x>`

A identificação da chave para gerar a RSE para

--country` `x id="16"></x>`

O nome do país

--state-or-province` `x id="26"></x>`

O nome do estado ou província

--locality` `x id="17"></x>`

O nome da localidade

--organization` `x id="21"></x>`

O nome da organização

--organizational-unit` `x id="28"></x>`

O nome da unidade organizacional

--common-name` `x id="20"></x>`

O nome comum

--email-address` `x id="22"></x>`

O endereço de correio electrónico

Exemplo*

$ 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-----

Operações Chave#

Encrypt#

The NetHSM can encrypt data for symmetric keys, stored in the Key Store. In contrast encrypting data with asymmetric keys can not be done on the NetHSM, because of the concept in public-key cryptography to make the public key available to everybody. For asymmetric keys the NetHSM provides the public key, which can be used for encryption with an external tool. Please refer to the Show Key Details to learn more about how to retrieve the public key of a key in the Key Store.

Data can be encrypted for a symmetric key as follows.

Papel requerido*

Esta operação requer uma autenticação com o papel de Operador.

Opções requeridas*

Opção

Descrição

-k`, `x id="10"></x>` x id="23"></x>`

The ID of the key to encrypt the data with

-d`, `x id="10"></x>` >`x id=»21»></x>``

The data in Base64 encoding

-m, --mode [AES_CBC]

The encrypt mode

-iv, --initialization-vector TEXT

The initialization vector in Base64 encoding

Exemplo*

$ 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==

This prints the encrypted and base64 encoded message NetHSM rulezzzzzzzzzzzzzzzzzzz!, and the initialization vector.

Data can be encrypted for asymmetric keys with OpenSSL as follows.

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

This writes the encrypted and base64 encoded message NetHSM rulez! into the file data.crypt, using the public key from public.pem.

Decifrar#

O NetHSM pode decifrar dados para uma chave privada armazenada na Key Store no NetHSM. Este exemplo utiliza a mensagem encriptada do capítulo anterior Encrypt.

Os modos de desencriptação suportados são os seguintes.

  • TAG``

  • PKCS1`

  • FILENAME``

  • --network`

  • OAEP_SHA224``

  • OAEP_SHA224``

  • OAEP_SHA224``

  • OAEP_SHA224``

  • USER_ID`

Os dados podem ser decifrados da seguinte forma.

Papel requerido*

Esta operação requer uma autenticação com o papel de Operador.

Opções requeridas*

Opção

Descrição

-k`, `x id="10"></x>` x id="23"></x>`

A identificação da chave para decifrar a largura dos dados

-d`, `x id="10"></x>` >`x id=»21»></x>``

Os dados encriptados na codificação Base64

-d`, `x id="10"></x>` >`x id=»21»></x>``

O modo de decifrar. Os modos disponíveis estão listados acima.

Exemplo*

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

Assine#

O NetHSM pode assinar dados para uma chave privada armazenada na Key Store no NetHSM. Para assinaturas com uma chave RSA e ECDSA, deve ser calculado primeiro um digito.

Para calcular uma digestão, os dados são necessários primeiro. É criada uma mensagem como se segue.

$ echo 'NetHSM rulez!' > data

O resumo é calculado com OpenSSL como se segue.

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

Os modos de assinatura suportados são os seguintes.

  • PKCS1`

  • USER_ID`

  • FILENAME``

  • Curve25519``

  • Curve25519``

  • Curve25519``

  • Curve25519``

  • PKCS1`

  • PKCS1`

A partir da digestão pode ser criada uma assinatura como se segue.

Papel requerido*

Esta operação requer uma autenticação com o papel de Operador.

Opções requeridas*

Opção

Descrição

-k`, `x id="10"></x>` x id="23"></x>`

A identificação da chave para assinar a largura dos dados

-d`, `x id="10"></x>` >`x id=»21»></x>``

Os dados a assinar codificados usando Base64

-d`, `x id="10"></x>` >`x id=»21»></x>``

O modo sinal

Exemplo*

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

A assinatura criada pode ser verificada com OpenSSL como se segue.

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

Aleatório#

O NetHSM pode fornecer bytes aleatórios como uma corda Base64.

Papel requerido*

Esta operação requer uma autenticação com o papel de Operador.

Argumentos*

Argumento

Descrição

--time`

Bytes a recuperar

Exemplo*

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