Операция

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

Важно

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

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

Основные типы и механизмы

Поддерживаются следующие типы ключей и соответствующие им механизмы.

Тип ключа

Механизмы

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`

EC_P256K1

ECDSA_Signature BIP340_Signature

BrainpoolP256

EdDSA_Signature`

BrainpoolP384

EdDSA_Signature`

BrainpoolP512

EdDSA_Signature`

USER_ID`

AES_Encryption_CBC AES_Decryption_CBC

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

NetHSM может генерировать пары ключей. Рекомендуется указать параметр ID ключа, чтобы дать ему выразительное имя.

Ключи присваиваются Namespace пользователя, который генерирует ключ.

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

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

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

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

Вариант

Описание

-p, --port INTEGER.

Тип сгенерированного ключа, см. Типы и механизмы ключей.

-m, --mechanism MECHANISM.

One or multiple mechanisms for the generated key, see Key Types and Mechanisms

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

Ключи присваиваются пространству имен ` <administration.html#namespaces>` __ пользователя, который импортирует ключ.

Импортируй закрытый ключ из PEM-файла в NetHSM следующим образом.

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

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

Аргументы

Аргумент

Описание

FILENAME`

Файл закрытого ключа в формате PEM

Опциональные опции

Пример.

$ nitropy nethsm --host $NETHSM_HOST import-key \
   --mechanism RSA_Signature_PSS_SHA256 \
   --mechanism RSA_Decryption_PKCS1 \
   --key-id myFirstKey \
   mykey.pem
Key myFirstKey added to NetHSM localhost:8443

Импорт закрытых ключей в сыром формате осуществляется следующим образом.

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

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

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

Вариант

Описание

-p, --port INTEGER.

Тип сгенерированного ключа, см. Типы и механизмы ключей.

-m, --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 может удалять ключи из хранилища ключей ** . Пользователи могут удалять ключи только в своем пространстве имен.

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

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

Аргументы

Аргумент

Описание

--time`

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

Пример.

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

Move Key

The NetHSM can move (rename) keys in the Key Store to a new key ID. Users can only move keys in their Namespace.

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

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

Аргументы

Аргумент

Описание

OLD_KEY_ID

The key ID of the key to move

NEW_KEY_ID

The new key ID

Пример.

$ nitropy nethsm --host $NETHSM_HOST move-key myFirstKey mySecondKey
Key myFirstKey moved to mySecondKey on NetHSM localhost:8443

Ключи списка

NetHSM может перечислить все ключи в Key Store, которые находятся в Namespace текущего пользователя.

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

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

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

Опциональные опции

Вариант

Описание

-f, --filter TEXT

Метка для поиска

-p, --prefix 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 может выводить более подробную информацию о хранимом ключе. Пользователи могут получить доступ к ключам только в своем пространстве имен ` <administration.html#namespaces>` __.

Подробную информацию можно получить следующим образом.

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

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

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

Все операции, описанные в этой главе, могут быть выполнены только для ключей, которые находятся в пространстве имен ` <administration.html#namespaces>` __ текущего пользователя.

Зашифровать

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`

  • BIP340

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

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

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

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

Вариант

Описание

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