Операция#

В этой главе описаны операционные задачи для пользователей с ролями Администратор и Оператор. Пожалуйста, обратитесь к главе Роли, чтобы узнать больше о роли.

Важно

Пожалуйста, убедитесь, что вы прочитали информацию в начале этого документа перед началом работы.

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

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

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

Ключ может быть сгенерирован следующим образом.

Требуемая роль

Эта операция требует аутентификации с ролью Администратор.

Требуемые параметры

Вариант

Описание

-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

Импорт может быть инициирован следующим образом.

Требуемая роль

Эта операция требует аутентификации с ролью Администратор.

Требуемые параметры

Вариант

Описание

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

Требуемая роль

Эта операция требует аутентификации с ролью Администратор.

Аргументы

Аргумент

Описание

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

Теги для ключей#

Теги могут использоваться для задания тонких ограничений доступа к ключам и являются необязательной функцией. Ключу может быть назначена одна или несколько меток. Оператор ** может видеть все ключи, но использовать только те, которые имеют хотя бы один соответствующий тег ** . Если ключ не имеет метки ** , его могут использовать все пользователи Operator. Метка ** не может быть изменена пользователем Operator.

О том, как использовать Тэги на аккаунтах Операторов, читайте в главе Тэги для пользователей.

Примечание

Управление Тэгами без ограничений осуществляется пользователями с ролью Администратор.

Метка Tag может быть добавлена следующим образом.

Требуемая роль

Эта операция требует аутентификации с ролью Администратор.

Аргументы

Аргумент

Описание

--time`

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

TAG`

Метка, которую нужно установить на ключ

Пример.

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

Тег Tag может быть удален следующим образом.

Требуемая роль

Эта операция требует аутентификации с ролью Администратор.

Аргументы

Аргумент

Описание

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

Сертификат можно установить следующим образом.

Требуемая роль

Эта операция требует аутентификации с ролью Администратор.

Требуемые параметры

Вариант

Описание

-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 (запросов на подписание сертификатов) для хранимых ключей.

Требуемая роль

Эта операция требует аутентификации с ролью 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.

Данные могут быть зашифрованы для симметричного ключа следующим образом.

Требуемая роль

Эта операция требует аутентификации с ролью Оператор.

Требуемые параметры

Вариант

Описание

-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. В данном примере используется зашифрованное сообщение из предыдущей главы Encrypt.

Поддерживаемые режимы расшифровки следующие.

  • TAG`

  • PKCS1`

  • FILENAME`

  • --network`

  • OAEP_SHA224`

  • OAEP_SHA224`

  • OAEP_SHA224`

  • OAEP_SHA224`

  • USER_ID`

Данные могут быть расшифрованы следующим образом.

Требуемая роль

Эта операция требует аутентификации с ролью Оператор.

Требуемые параметры

Вариант

Описание

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

На основе дайджеста можно создать подпись следующим образом.

Требуемая роль

Эта операция требует аутентификации с ролью Оператор.

Требуемые параметры

Вариант

Описание

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

Требуемая роль

Эта операция требует аутентификации с ролью Оператор.

Аргументы

Аргумент

Описание

--time`

Байты для извлечения

Пример.

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