Operation#

Dieses Kapitel beschreibt operative Aufgaben für Benutzer mit der Rolle Administrator und Operator. Bitte lesen Sie das Kapitel Rollen, um mehr über diese Rollen zu erfahren.

Wichtig

Bitte lesen Sie unbedingt die Informationen am Anfang von diesem Dokument bevor Sie mit der Arbeit beginnen.

Schlüsselverwaltung#

Schlüssel generieren#

Der NetHSM kann Schlüsselpaare erzeugen. Es wird empfohlen, die Option Schlüssel-ID anzugeben, um dem Schlüssel einen aussagekräftigen Namen zu geben.

Die unterstützten Schlüsseltypen und ihre entsprechenden Mechanismen sind die folgenden

Schlüssel Typ

Mechanismen

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

Der Schlüssel kann wie folgt generiert werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator.

Erforderliche Optionen

Option

Beschreibung

-p, --port INTEGER

Der Typ für den erzeugten Schlüssel. Mögliche Werte für das Argument KEYTYPE sind der obigen Tabelle zu entnehmen.

-m, --mechanism MECHANISM

Die Mechanismen für den generierten Schlüssel. Mögliche Werte für das Argument MECHANISM sind der obigen Tabelle zu entnehmen.

-l, --length INTEGER

Die Länge des generierten Schlüssels

Optionale Optionen

Option

Beschreibung

-k, --key-id TEXT

Die ID des generierten Schlüssels

Beispiel

$ 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

Schlüssel importieren#

Der NetHSM kann vorhandene private Schlüssel in den Schlüsselspeicher importieren.

Die unterstützten Schlüsseltypen und ihre entsprechenden Mechanismen sind die folgenden

Schlüssel Typ

Mechanismen

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

Der Import kann wie folgt eingeleitet werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator.

Erforderliche Optionen

Option

Beschreibung

-p, --port INTEGER

Der Typ für den erzeugten Schlüssel. Mögliche Werte für das Argument KEYTYPE sind der obigen Tabelle zu entnehmen.

-m, --mechanism MECHANISM

Die Mechanismen für den generierten Schlüssel. Mögliche Werte für das Argument MECHANISM sind der obigen Tabelle zu entnehmen.

-u, --user-id TEXT

Die Primzahl p für RSA-Schlüssel

-u, --user-id TEXT

Die Primzahl q für RSA-Schlüssel

-e, --public-exponent TEXT

Der öffentliche Exponent für RSA-Schlüssel

-d, --data TEXT

Die Schlüsseldaten für ED25519- oder ECDSA_*-Schlüssel

Optionale Optionen

Option

Beschreibung

-k, --key-id TEXT

Die ID des neuen Schlüssels

Beispiel

$ 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

Taste löschen#

Der NetHSM kann Schlüssel aus dem Key Store löschen.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator.

Argumente

Argument

Beschreibung

--time

Die Schlüssel-ID des zu löschenden Schlüssels

Beispiel

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

Schlüssel auflisten#

Der NetHSM kann alle verfügbaren Schlüssel im Schlüsselspeicher auflisten.

Die Liste kann wie folgt abgerufen werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator oder Operator.

Beispiel

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

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

Schlüsseldetails anzeigen#

Der NetHSM kann detailliertere Informationen über einen gespeicherten Schlüssel ausgeben.

Die detaillierten Informationen können wie folgt abgerufen werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator oder Operator.

Beispiel

$ 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

Der öffentliche Schlüssel eines Schlüssels kann wie folgt abgefragt werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator oder Operator.

Beispiel

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

Der öffentliche Schlüssel kann z.B. mit OpenSSL wie folgt eingesehen werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator oder Operator.

Beispiel

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

Tags für Schlüssel#

Tags können verwendet werden, um Zugangsbeschränkungen für Schlüssel festzulegen, und sind eine optionale Funktion. Die Operator-Benutzer können alle Schlüssel sehen, aber nur diejenigen verwenden, die mindestens einen entsprechenden Tag haben. Wenn ein Schlüssel keinen Tag hat, kann er von allen Operator-Benutzern verwendet werden. Ein Schlüssel kann von einem Operator-Benutzer nicht geändert werden.

Wie Sie Tags auf Betreiber-Konten verwenden können, erfahren Sie im Kapitel Tags für Benutzer.

Bemerkung

Tags werden ohne Einschränkungen von Benutzern mit der Rolle Administrator verwaltet.

Der Tag kann wie folgt hinzugefügt werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator.

Argumente

Argument

Beschreibung

--time

Die ID des Schlüssels, auf den die Markierung gesetzt werden soll

TAG

Die auf der Taste zu setzende Markierung

Beispiel

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

Der Tag kann wie folgt gelöscht werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator.

Argumente

Argument

Beschreibung

--time

Die ID des Schlüssels, auf den der Tag gesetzt werden soll.

TAG

Die auf dem Schlüssel zu setzende Markierung.

Beispiel

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

Schlüssel-Zertifikate#

Es ist möglich, Zertifikate für die auf einem NetHSM gespeicherten Schlüssel zu setzen und abzufragen.

Die folgenden MIME-Typen werden unterstützt.

  • application/x-pem-file

  • application/x-x509-ca-cert

  • application/pgp-keys

Das Zertifikat kann wie folgt eingestellt werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator.

Erforderliche Optionen

Option

Beschreibung

-k, --key-id TEXT

Die ID des Schlüssels, für den das Zertifikat erstellt werden soll

Optionale Optionen

Option

Beschreibung

-m, --mechanism MECHANISM

Der MIME-Typ des Zertifikats. Die verfügbaren MIME-Typen sind oben aufgeführt.

Argumente

Argument

Beschreibung

FILENAME

Zertifikat-Datei

Beispiel

$ 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

Das Zertifikat kann wie folgt abgerufen werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator oder Operator.

Erforderliche Optionen

Option

Beschreibung

-k, --key-id TEXT

Die ID des Schlüssels, für den das Zertifikat abgerufen werden soll

Beispiel

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

Signieranforderungen für Schlüsselzertifikate#

Der NetHSM unterstützt die Erzeugung von CSR (Certificate Signing Requests) für die gespeicherten Schlüssel.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Administrator.

Erforderliche Optionen

Option

Beschreibung

-k, --key-id TEXT

Die ID des Schlüssels, für den die CSR erzeugt werden soll

--country TEXT

Der Name des Landes

--state-or-province TEXT

Der Name des Bundeslandes oder der Provinz

--locality TEXT

Der Name des Ortes

--organization TEXT

Der Name der Organisation

--organizational-unit TEXT

Der Name der Organisationseinheit

--common-name TEXT

Der gemeinsame Name

--email-address TEXT

Die E-Mail Adresse

Beispiel

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

Wichtige Vorgänge#

Verschlüsseln Sie#

Der NetHSM kann keine Daten verschlüsseln, aber er stellt den öffentlichen Schlüssel zur Verfügung, der für die Verschlüsselung verwendet werden kann. Wie Sie den öffentlichen Schlüssel abrufen können, erfahren Sie im Kapitel Schlüsseldetails anzeigen.

Daten können mit OpenSSL wie folgt verschlüsselt werden.

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

Dies schreibt die verschlüsselte und base64-kodierte Nachricht NetHSM rulez! in die Datei data.crypt.

Entschlüsseln#

Der NetHSM kann Daten für einen privaten Schlüssel entschlüsseln, der im Schlüsselspeicher des NetHSM gespeichert ist. Dieses Beispiel verwendet die verschlüsselte Nachricht aus dem vorherigen Kapitel Encrypt.

Die unterstützten Entschlüsselungsmodi sind wie folgt

  • TAG

  • PKCS1

  • FILENAME

  • --network

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • USER_ID

Die Daten können wie folgt entschlüsselt werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Operator.

Erforderliche Optionen

Option

Beschreibung

-k, --key-id TEXT

Die ID des Schlüssels zur Entschlüsselung der Datenbreite

-d, --data TEXT

Die verschlüsselten Daten in Base64-Kodierung

-d, --data TEXT

Der Entschlüsselungsmodus. Die verfügbaren Modi sind oben aufgeführt.

Beispiel

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

Unterschrift#

Der NetHSM kann Daten für einen privaten Schlüssel signieren, der im Schlüsselspeicher des NetHSM gespeichert ist. Für Signaturen mit einem RSA- und ECDSA-Schlüssel muss zunächst ein Digest berechnet werden.

Um einen Digest zu berechnen, werden zunächst die Daten benötigt. Eine Nachricht wird wie folgt erstellt.

$ echo 'NetHSM rulez!' > data

Der Digest wird mit OpenSSL wie folgt berechnet.

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

Die unterstützten Signiermodi sind wie folgt

  • PKCS1

  • USER_ID

  • FILENAME

  • Curve25519

  • Curve25519

  • Curve25519

  • Curve25519

  • PKCS1

  • PKCS1

Aus dem Digest kann wie folgt eine Signatur erstellt werden.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Operator.

Erforderliche Optionen

Option

Beschreibung

-k, --key-id TEXT

Die ID des Schlüssels zum Signieren der Datenbreite

-d, --data TEXT

Die zu signierenden Daten werden mit Base64 kodiert.

-d, --data TEXT

Der Vorzeichenmodus

Beispiel

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

Die erstellte Signatur kann mit OpenSSL wie folgt überprüft werden.

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

Zufällig#

Der NetHSM kann Zufallsbytes als Base64-String bereitstellen.

Erforderliche Rolle

Dieser Vorgang erfordert eine Authentifizierung mit der Rolle Operator.

Argumente

Argument

Beschreibung

--time

Abzurufende Bytes

Beispiel

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