Opération#

Ce chapitre décrit les tâches opérationnelles pour les utilisateurs ayant le rôle Administrateur et Opérateur. Veuillez vous reporter au chapitre Rôles pour en savoir plus sur le rôle.

Important

Veillez à lire les informations figurant au début de ce document avant de commencer à travailler.

Gestion des clés#

Générer une clé#

Le NetHSM peut générer des paires de clés. Il est recommandé de spécifier l’option ID de la clé pour lui donner un nom expressif.

Les types de clés pris en charge et leurs mécanismes correspondants sont les suivants.

Type de clé

Mécanismes

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

Les clés sont attribuées à `Namespace <administration.html#namespaces>`__ l’utilisateur qui génère la clé.

La clé peut être générée comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrator.

Options requises

Option

Description

-p, --port INTEGER

Le type de la clé générée. Les valeurs possibles pour l’argument KEYTYPE se trouvent dans le tableau ci-dessus.

-m, --mechanism MECHANISM

Les mécanismes de la clé générée. Les valeurs possibles pour l’argument MECHANISM se trouvent dans le tableau ci-dessus.

-l, --length INTEGER

La longueur de la clé générée

Options facultatives

Option

Description

-k, --key-id TEXT

L’ID de la clé générée

Exemple

$ 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

Clé d’importation#

Le NetHSM peut importer des clés privées existantes dans le Key Store.

Les types de clés pris en charge et leurs mécanismes correspondants sont les suivants.

Type de clé

Mécanismes

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

Les clés sont attribuées à l’espace de nommage *Namespace* de l’utilisateur qui importe la clé.

L’importation peut être lancée comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrator.

Options requises

Option

Description

-p, --port INTEGER

Le type de la clé générée. Les valeurs possibles pour l’argument KEYTYPE se trouvent dans le tableau ci-dessus.

-m, --mechanism MECHANISM

Les mécanismes de la clé générée. Les valeurs possibles pour l’argument MECHANISM se trouvent dans le tableau ci-dessus.

-u, --user-id TEXT

Le nombre premier p pour les clés RSA, encodé en base64

-u, --user-id TEXT

Le nombre premier q pour les clés RSA, encodé en base64

-e, --public-exponent TEXT

L’exposant public pour les clés RSA, encodé en base64

-d, --data TEXT

Les données de clé pour les clés ED25519 ou ECDSA_*, encodées en base64

Options facultatives

Option

Description

-k, --key-id TEXT

L’ID de la nouvelle clé

--tags TEXT

Le Tag pour la nouvelle clé

Exemple

$ 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

Touche de suppression#

Le NetHSM peut supprimer des clés du Key Store. Les utilisateurs ne peuvent supprimer des clés que dans leur *Namespace*.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrator.

Arguments

Arguments

Description

--time

L’ID de la clé à supprimer

Exemple

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

Clés de liste#

Le NetHSM peut dresser la liste de toutes les clés du Key Store qui se trouvent dans *Namespace* de l’utilisateur actuel.

La liste peut être récupérée comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrateur ou Opérateur.

Options facultatives

Option

Description

-f, --filter TEXT

L’étiquette à rechercher

Exemple

$ 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

Afficher les détails de la clé#

Le NetHSM peut fournir des informations plus détaillées sur une clé stockée. Les utilisateurs ne peuvent accéder qu’aux clés de leur *Namespace*.

Les informations détaillées peuvent être récupérées comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrateur ou Opérateur.

Exemple

$ 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 clé publique d’une clé peut être récupérée comme suit. Elle est au format PKCS#8.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrateur ou Opérateur.

Exemple

$ 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 clé publique peut être inspectée par exemple avec OpenSSL comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrateur ou Opérateur.

Exemple

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

Étiquettes pour Clés#

Les étiquettes peuvent être utilisées pour définir des restrictions d’accès précises sur les clés et sont une fonctionnalité facultative. Une ou plusieurs étiquettes ** peuvent être attribuées à une touche. Les utilisateurs de l’opérateur ** peuvent voir toutes les touches, mais ils ne peuvent utiliser que celles auxquelles correspond au moins une étiquette ** . Si une clé n’a pas d’étiquette ** , elle peut être utilisée par tous les utilisateurs Operator. Une étiquette ** ne peut pas être modifiée par un utilisateur Operator.

Pour savoir comment utiliser les étiquettes sur les comptes opérateurs, veuillez consulter le chapitre Étiquettes pour les utilisateurs.

Note

Les balises sont gérées sans restrictions par les utilisateurs ayant le rôle Administrator.

Le Tag peut être ajouté comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrator.

Arguments

Arguments

Description

--time

L’ID de la clé sur laquelle le tag doit être placé

TAG

La balise à définir sur la clé

Exemple

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

Le Tag peut être supprimé comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrator.

Arguments

Arguments

Description

--time

L’ID de la clé sur laquelle le tag doit être placé.

TAG

La balise à placer sur la clé.

Exemple

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

Certificats de clé#

Il est possible de définir et d’interroger des certificats pour les clés stockées sur un NetHSM.

Les types MIME pris en charge sont les suivants.

  • application/x-pem-file

  • application/x-x509-ca-cert

  • application/pgp-keys

Le certificat peut être défini comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrator.

Options requises

Option

Description

-k, --key-id TEXT

L’ID de la clé pour laquelle le certificat doit être établi.

Options facultatives

Option

Description

-m, --mechanism MECHANISM

Le type MIME du certificat. Les types MIME disponibles sont énumérés ci-dessus.

Arguments

Arguments

Description

FILENAME

Fichier de certificat

Exemple

$ 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

Le certificat peut être récupéré comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrateur ou Opérateur.

Options requises

Option

Description

-k, --key-id TEXT

L’ID de la clé pour laquelle il faut obtenir le certificat.

Exemple

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

Demandes de signature de certificats de clés#

Le NetHSM prend en charge la génération de CSR (Certificate Signing Requests) pour les clés stockées.

Rôle requis

Cette opération nécessite une authentification avec le rôle Administrateur ou Opérateur.

Options requises

Option

Description

-k, --key-id TEXT

L’ID de la clé pour laquelle il faut générer le CSR.

--country TEXT

Le nom du pays

--state-or-province TEXT

Le nom de l’État ou de la province

--locality TEXT

Le nom de la localité

--organization TEXT

Le nom de l’organisation

--organizational-unit TEXT

Le nom de l’unité d’organisation

--common-name TEXT

Le nom commun

--email-address TEXT

L’adresse électronique

Exemple

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

Opérations clés#

Toutes les opérations décrites dans ce chapitre ne peuvent être exécutées que pour les clés qui se trouvent dans l’espace de nommage *Namespace* de l’utilisateur actuel.

Crypter#

Le NetHSM peut chiffrer des données pour des clés symétriques, stockées dans le magasin de clés ** . En revanche, le NetHSM ne peut pas crypter des données avec des clés asymétriques, en raison du concept de cryptographie à clé publique qui veut que la clé publique soit accessible à tous. Pour les clés asymétriques, le NetHSM fournit la clé publique, qui peut être utilisée pour le cryptage avec un outil externe. Veuillez consulter la page Show Key Details pour en savoir plus sur la manière de récupérer la clé publique d’une clé dans le magasin de clés ** .

Les données peuvent être cryptées pour une clé symétrique comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Opérateur.

Options requises

Option

Description

-k, --key-id TEXT

L’ID de la clé avec laquelle les données sont cryptées

-d, --data TEXT

Les données en encodage Base64

-m, --mode [AES_CBC]

Le mode de cryptage

-iv, --initialization-vector TEXT

Le vecteur d’initialisation en encodage Base64

Exemple

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

Ceci imprime le message crypté et encodé en base64 NetHSM rulezzzzzzzzzzzzzzzzzzz!, et le vecteur d’initialisation.

Les données peuvent être cryptées pour les clés asymétriques avec OpenSSL comme suit.

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

Cette opération écrit le message crypté et codé en base64 NetHSM rulez! dans le fichier data.crypt, en utilisant la clé publique de public.pem.

Décryptage#

Le NetHSM peut décrypter des données pour une clé privée stockée dans le Key Store du NetHSM. Cet exemple utilise le message crypté du chapitre précédent Encrypter.

Les modes de décryptage pris en charge sont les suivants.

  • TAG

  • PKCS1

  • FILENAME

  • --network

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • USER_ID

Les données peuvent être décryptées comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Opérateur.

Options requises

Option

Description

-k, --key-id TEXT

L’ID de la clé pour décrypter la largeur des données

-d, --data TEXT

Les données cryptées en encodage Base64

-d, --data TEXT

Le mode de décryptage. Les modes disponibles sont énumérés ci-dessus.

Exemple

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

Signe#

Le NetHSM peut signer des données pour une clé privée stockée dans le Key Store du NetHSM. Pour les signatures avec une clé RSA et ECDSA, un condensé doit d’abord être calculé.

Pour calculer un condensé, il faut d’abord disposer des données. Un message est créé comme suit.

$ echo 'NetHSM rulez!' > data

Le condensé est calculé avec OpenSSL comme suit.

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

Les modes de signature pris en charge sont les suivants.

  • PKCS1

  • USER_ID

  • FILENAME

  • Curve25519

  • Curve25519

  • Curve25519

  • Curve25519

  • PKCS1

  • PKCS1

À partir du condensé, une signature peut être créée comme suit.

Rôle requis

Cette opération nécessite une authentification avec le rôle Opérateur.

Options requises

Option

Description

-k, --key-id TEXT

L’ID de la clé pour signer la largeur des données

-d, --data TEXT

Les données à signer codées en utilisant Base64

-d, --data TEXT

Le mode d’affichage

Exemple

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

La signature créée peut être vérifiée avec OpenSSL comme suit.

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

Random#

Le NetHSM peut fournir des octets aléatoires sous forme de chaîne Base64.

Rôle requis

Cette opération nécessite une authentification avec le rôle Opérateur.

Arguments

Arguments

Description

--time

Octets à récupérer

Exemple

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