Операция#

Тази глава описва оперативните задачи за потребители с роли Администратор и Оператор. Моля, вижте глава Роли, за да научите повече за ролята.

Important

Моля, уверете се, че сте прочели информацията в началото на този документ, преди да започнете работа.

Управление на ключовете#

Генериране на ключове#

NetHSM може да генерира двойки ключове. Препоръчително е да посочите опцията ID на ключа, за да му дадете изразително име.

Поддържаните типове ключове и съответните им механизми са следните.

Тип на ключа

Механизми

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

Ключът може да се генерира по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator.

Задължителни опции

Опция

Описание

-p, --port INTEGER

Типът на генерирания ключ. Възможните стойности за аргумента KEYTYPE могат да бъдат намерени в таблицата по-горе.

-m, --mechanism MECHANISM

Механизмите за генерирания ключ. Възможните стойности за аргумента MECHANISM могат да бъдат намерени в таблицата по-горе.

-l, --length INTEGER

Дължината на генерирания ключ

Възможни опции

Опция

Описание

-k, --key-id TEXT

Идентификаторът на генерирания ключ

Пример

$ 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

Ключ за импортиране#

NetHSM може да импортира съществуващи частни ключове в Key Store.

Поддържаните типове ключове и съответните им механизми са следните.

Тип на ключа

Механизми

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

Вносът може да бъде иницииран по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator.

Задължителни опции

Опция

Описание

-p, --port INTEGER

Типът на генерирания ключ. Възможните стойности за аргумента KEYTYPE могат да бъдат намерени в таблицата по-горе.

-m, --mechanism MECHANISM

Механизмите за генерирания ключ. Възможните стойности за аргумента MECHANISM могат да бъдат намерени в таблицата по-горе.

-u, --user-id TEXT

Първичното число p за ключове RSA, кодирано в base64

-u, --user-id TEXT

Първичното число q за ключове RSA, кодирано в base64

-e, --public-exponent TEXT

Публичният експонент за ключове RSA, кодиран в base64

-d, --data TEXT

Ключовите данни за ключове ED25519 или ECDSA_*, кодирани по base64

Възможни опции

Опция

Описание

-k, --key-id TEXT

Идентификаторът на новия ключ

--tags TEXT

Етикетът за новия ключ

Пример

$ 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

Клавиш за изтриване#

NetHSM може да изтрива ключове от Key Store.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator.

Аргументи

Аргумент

Описание

--time

Идентификатор на ключа, който трябва да се изтрие

Пример

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

Списък с ключове#

NetHSM може да изведе всички налични ключове в Key Store.

Списъкът може да бъде изтеглен по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator или Operator.

Възможни опции

Опция

Описание

-f, --filter TEXT

Етикетът за търсене

Пример

$ 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

Показване на подробностите за ключа#

NetHSM може да извежда по-подробна информация за съхранения ключ.

Подробната информация може да бъде извлечена, както следва.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator или Operator.

Пример

$ 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

Публичният ключ на даден ключ може да бъде извлечен по следния начин. Той е във формат PKCS#8.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator или Operator.

Пример

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

Публичният ключ може да се провери например с OpenSSL по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator или Operator.

Пример

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

Тагове за Ключове#

Етикетите могат да се използват за задаване на фини ограничения на достъпа до ключовете и са незадължителна функция. Един или повече Тагове могат да бъдат зададени на даден ключ. Потребителите на оператора ** могат да виждат всички ключове, но да използват само тези, които имат поне един съответен таг. Ако даден ключ няма Tag, той може да се използва от всички потребители на Operator. Ключ с Tag не може да бъде променян от потребител на Operator.

За да научите как да използвате Тагове в акаунти на Оператори, моля, вижте глава Тагове за потребители.

Note

Таговете се управляват без ограничения от потребители с роля Администратор.

Таг може да се добави по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator.

Аргументи

Аргумент

Описание

--time

Идентификаторът на ключа, на който се поставя етикетът

TAG

Тагът, който се задава на ключа

Пример

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

Тагът може да бъде изтрит по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator.

Аргументи

Аргумент

Описание

--time

Идентификаторът на ключа, на който се поставя етикетът.

TAG

Етикетът, който се задава на ключа.

Пример

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

Ключови сертификати#

Възможно е да се задават и изискват сертификати за ключовете, съхранявани в NetHSM.

Поддържаните типове MIME са следните.

  • application/x-pem-file

  • application/x-x509-ca-cert

  • application/pgp-keys

Сертификатът може да бъде зададен, както следва.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator.

Задължителни опции

Опция

Описание

-k, --key-id TEXT

Идентификаторът на ключа, за който се задава сертификатът

Възможни опции

Опция

Описание

-m, --mechanism MECHANISM

Типът MIME на сертификата. Наличните MIME типове са изброени по-горе.

Аргументи

Аргумент

Описание

FILENAME

Файл със сертификат

Пример

$ 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

Сертификатът може да бъде изтеглен по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator или Operator.

Задължителни опции

Опция

Описание

-k, --key-id TEXT

Идентификаторът на ключа, за който трябва да се получи сертификат

Пример

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

Заявки за подписване на ключови сертификати#

NetHSM поддържа генериране на CSR (Certificate Signing Requests) за съхраняваните ключове.

Изисквана роля

Тази операция изисква удостоверяване с ролята Administrator или Operator.

Задължителни опции

Опция

Описание

-k, --key-id TEXT

Идентификаторът на ключа, за който се генерира CSR

--country TEXT

Името на страната

--state-or-province TEXT

Наименованието на държавата или провинцията

--locality TEXT

Наименованието на местността

--organization TEXT

Името на организацията

--organizational-unit TEXT

Име на организационната единица

--common-name TEXT

Общоприетото име

--email-address TEXT

Имейл адресът

Пример

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

Основни операции#

Криптиране#

NetHSM може да криптира данни за симетрични ключове, съхранявани в Key Store. За разлика от това криптирането на данни с асиметрични ключове не може да се извършва в NetHSM поради концепцията в криптографията с публичен ключ публичният ключ да бъде достъпен за всички. За асиметричните ключове NetHSM предоставя публичния ключ, който може да се използва за криптиране с външен инструмент. Моля, направете справка с Show Key Details (Покажи подробности за ключа) , за да научите повече за това как да извлечете публичния ключ на даден ключ в Key Store (Съхранение на ключове).

Данните могат да бъдат криптирани със симетричен ключ по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Operator.

Задължителни опции

Опция

Описание

-k, --key-id TEXT

Идентификаторът на ключа, с който се криптират данните

-d, --data TEXT

Данните в кодиране Base64

-m, --mode [AES_CBC]

Режимът на криптиране

-iv, --initialization-vector TEXT

Векторът за инициализация в кодиране Base64

Пример

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

Отпечатва се криптираното и кодирано в base64 съобщение NetHSM rulezzzzzzzzzzzzzzzzzzz! и вектора за инициализация.

Данните могат да бъдат криптирани за асиметрични ключове с OpenSSL, както следва.

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

Записва се криптираното и кодирано в base64 съобщение NetHSM rulez! във файла data.crypt, като се използва публичният ключ от public.pem.

Декриптиране#

NetHSM може да декриптира данни за частен ключ, съхраняван в Key Store на NetHSM. В този пример се използва криптираното съобщение от предишната глава Криптиране.

Поддържаните режими на декриптиране са следните.

  • TAG

  • PKCS1

  • FILENAME

  • --network

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • USER_ID

Данните могат да бъдат декриптирани по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Operator.

Задължителни опции

Опция

Описание

-k, --key-id TEXT

Идентификаторът на ключа за декриптиране на ширината на данните

-d, --data TEXT

Криптираните данни в кодиране Base64

-d, --data TEXT

Режимът на декриптиране. Наличните режими са изброени по-горе.

Пример

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

Знак#

NetHSM може да подписва данни за частен ключ, съхраняван в Key Store на NetHSM. За подписване с ключ RSA и ECDSA първо трябва да се изчисли цифров сбор.

За да се изчисли цифровата информация, първо се изискват данните. Съобщението се създава по следния начин.

$ echo 'NetHSM rulez!' > data

Разбивката се изчислява с OpenSSL по следния начин.

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

Поддържаните режими на подписване са следните.

  • PKCS1

  • USER_ID

  • FILENAME

  • Curve25519

  • Curve25519

  • Curve25519

  • Curve25519

  • PKCS1

  • PKCS1

На базата на цифровия код може да се създаде подпис по следния начин.

Изисквана роля

Тази операция изисква удостоверяване с ролята Operator.

Задължителни опции

Опция

Описание

-k, --key-id TEXT

Идентификаторът на ключа за подписване на ширината на данните

-d, --data TEXT

Данните за подписване, кодирани чрез Base64

-d, --data TEXT

Режимът на знака

Пример

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

Създаденият подпис може да бъде проверен с OpenSSL по следния начин.

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

Случаен#

NetHSM може да предостави случайни байтове като низ Base64.

Изисквана роля

Тази операция изисква удостоверяване с ролята Operator.

Аргументи

Аргумент

Описание

--time

Байтове за извличане

Пример

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