操作方法#

この章では、*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

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

RSA鍵の素数q

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

RSA鍵の公開指数

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

ED25519またはECDSA_*鍵の鍵データ

オプション設定

オプション

説明

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

新しい鍵のID

**

$ 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 ロールを使用した認証が必要です。

**

$ 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

キーの詳細を表示#

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

ある鍵の公開鍵は、次のようにして取得することができる。

必須項目

この操作には、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*ユーザはすべての鍵を見ることができますが、少なくとも1つの対応する*Tag*があるものだけが使用できます。タグがない鍵は、すべての*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 ロールを使用した認証が必要です。

必須オプション

オプション

説明

-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はデータを暗号化することはできませんが、暗号化に使用することができる公開鍵を提供します。公開鍵の取得方法については、Show Key Details の章を参照してください。

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

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

これは暗号化されbase64でエンコードされたメッセージ``NetHSM rulez!`` をファイル``data.crypt`` に書き込んでいるのです。

デクリプト#

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