操作方法#

この章では、*Administrator*および*Operator*のロールを持つユーザーのための操作タスクについて説明します。ロールの詳細については、`ロール<administration.html#roles>`__章を参照してください。

重要

作業を始める前に、`このドキュメントの冒頭にある情報<index.html>`__を必ず読んでください。

キーマネージメント#

鍵の生成#

NetHSMはキーペアを生成することができます。表現力のある名前をつけるために、key IDオプションを指定することをお勧めします。

対応する鍵の種類とその仕組みは以下の通りです。

キータイプ

メカニズム

TAG

RSA_Decryption_RAW RSA_Decryption_PKCS1 x id="50"></x> RSA_Decryption_OAEP_SHA1````RSA_Decryption_OAEP_SHA224 RSA_Decryption_OAEP_SHA256 RSA_Decryption_OAEP_SHA384 <x id="198">`RSA_Decryption_OAEP_SHA512<X><X>168 "></xid="226"></x>` RSA_Signature_PKCS1 RSA_Signature_PSS_MD5 RSA_Signature_PSS_SHA1 </x><Xid="308"></x> 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, <ex id="5"></x><x id="7"></x><ex id="8"></x></ex

生成された鍵の長さ

オプション設定

オプション

説明

-k, --key-id ``TEXT``に相当する。

生成された鍵のID

**

$ 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 x id="50"></x> RSA_Decryption_OAEP_SHA1````RSA_Decryption_OAEP_SHA224 RSA_Decryption_OAEP_SHA256 RSA_Decryption_OAEP_SHA384 <x id="198">`RSA_Decryption_OAEP_SHA512<X><X>168 "></xid="226"></x>` RSA_Signature_PKCS1 RSA_Signature_PSS_MD5 RSA_Signature_PSS_SHA1 </x><Xid="308"></x> 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``に相当する。

RSA鍵の素数pをbase64エンコードしたもの。

-u, --user-id ``TEXT``に相当する。

RSA鍵の素qをbase64エンコードしたもの。

-e, --public-exponent ``TEXT``に相当する。

RSA 鍵の公開指数を base64 でエンコードしたもの。

-d, --data ``TEXT``の場合。

ED25519またはECDSA_*鍵の鍵データをbase64エンコードしたもの。

オプション設定

オプション

説明

-k, --key-id ``TEXT``に相当する。

新しい鍵のID

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

Delete Key#

NetHSMは、*Key Store*からキーを削除することができます。

必須項目

この操作には、Administrator ロールを使用した認証が必要です。

**論評

論証

説明

--time

削除するキーのキーID

**

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

鍵のタグ#

タグ は、鍵にきめ細かいアクセス制限を設定するために使用することができ、 オプション機能である。1つまたは複数の*タグ* 、1つのキーに割り当てることができる。オペレータ ユーザーはすべてのキーを見ることができるが、少なくとも1つの対応する*タグ* を持つキーのみを使用することができる。キーに*タグ* がない場合は、すべての*Operator* ユーザーが使用できます。タグ は、Operator ユーザーが変更することはできません。

Operator* アカウントでの Tags の使用方法については、Tags for Users の章を参照してください。

注釈

タグは、*Administrator ロールを持つユーザーによって制限なく管理されます。

タグ*は、以下のように付加することができる。

必須項目

この操作には、Administrator ロールを使用した認証が必要です。

**論評

論証

説明

--time

タグを設定するキーID

TAG

キーに設定するタグ

**

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

タグ*の削除は、以下のように行います。

必須項目

この操作には、Administrator ロールを使用した認証が必要です。

**論評

論証

説明

--time

タグを設定するキーIDです。

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``に相当する。

証明書を設定する鍵のID

オプション設定

オプション

説明

-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``に相当する。

証明書を取得するための鍵のID

**

$ 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を生成するための鍵のID。

--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は公開鍵を提供し、外部ツールで暗号化に使用することができます。鍵ストア にある鍵の公開鍵を取得する方法については、`鍵の詳細を表示<operation.html#show-key-details>`__ を参照してください。

対称鍵の場合、以下のようにデータを暗号化することができる。

必須項目

この操作には、Operator ロールを使用した認証が必要です。

必須オプション

オプション

説明

-k, --key-id ``TEXT``に相当する。

データを暗号化する鍵のID。

-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

これは``NetHSM rulez!`` というメッセージを``data.crypt`` というファイルに、public.pem の公開鍵を使って暗号化し、base64エンコードしたものを書き込んでいます。

デクリプト#

NetHSMは、NetHSM上の*Key Store*に保存されている秘密鍵のデータを復号化することができます。この例では、前章の`Encrypt <operation.html#encrypt>`__ の暗号化メッセージを使用しています。

対応する復号化モードは以下の通りです。

  • TAG

  • PKCS1

  • FILENAME

  • --network

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • OAEP_SHA224

  • USER_ID

データは以下のように復号化することができる。

必須項目

この操作には、Operator ロールを使用した認証が必要です。

必須オプション

オプション

説明

-k, --key-id ``TEXT``に相当する。

データ幅を復号化するための鍵のID

-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は、NetHSM上の*Key Store*に保存されている秘密鍵のデータに署名することができます。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``に相当する。

データ幅に署名するための鍵のID

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