操作方法#
この章では、*Administrator*および*Operator*のロールを持つユーザーのための操作タスクについて説明します。ロールの詳細については、`ロール<administration.html#roles>`__章を参照してください。
重要
作業を始める前に、`このドキュメントの冒頭にある情報<index.html>`__を必ず読んでください。
キーマネージメント#
鍵の生成#
NetHSMはキーペアを生成することができます。表現力のある名前をつけるために、key IDオプションを指定することをお勧めします。
対応する鍵の種類とその仕組みは以下の通りです。
キータイプ |
メカニズム |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Keys are assigned to the Namespace of the user that generates the key.
鍵の生成は以下のように行うことができる。
必須項目
この操作には、Administrator ロールを使用した認証が必要です。
必須オプション
オプション |
説明 |
---|---|
|
生成される鍵のタイプ。 |
|
生成される鍵のメカニズム。 |
|
生成された鍵の長さ |
オプション設定
オプション |
説明 |
---|---|
|
生成された鍵の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
/keys/generate エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_keys_generate>`__ に記載されている。
インポートキー#
NetHSMは、既存の秘密鍵を*Key Store*にインポートすることができます。
対応する鍵の種類とその仕組みは以下の通りです。
キータイプ |
メカニズム |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Keys are assigned to the Namespace of the user that imports the key.
以下のように、PEMファイルからNetHSMに秘密鍵をインポートします。
必須項目
この操作には、Administrator ロールを使用した認証が必要です。
**論評
論証 |
説明 |
---|---|
|
Private key file in PEM format |
オプション設定
オプション |
説明 |
---|---|
|
生成される鍵のメカニズム。 |
|
新しい鍵のID |
|
新しいキーのタグ |
**例
$ 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
/keys エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_keys>`__ に記載されている。
Private keys in raw format can be imported as follows.
必須項目
この操作には、Administrator ロールを使用した認証が必要です。
必須オプション
オプション |
説明 |
---|---|
|
生成される鍵のタイプ。 |
|
生成される鍵のメカニズム。 |
|
RSA鍵の素数pをbase64エンコードしたもの。 |
|
RSA鍵の素qをbase64エンコードしたもの。 |
|
RSA 鍵の公開指数を base64 でエンコードしたもの。 |
|
ED25519またはECDSA_*鍵の鍵データをbase64エンコードしたもの。 |
オプション設定
オプション |
説明 |
---|---|
|
新しい鍵の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
/keys エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_keys>`__ に記載されている。
Delete Key#
The NetHSM can delete keys from the Key Store. Users can only delete keys in their Namespace.
必須項目
この操作には、Administrator ロールを使用した認証が必要です。
**論評
論証 |
説明 |
---|---|
|
削除するキーのキーID |
**例
$ nitropy nethsm --host $NETHSM_HOST delete-key myFirstKey
Key myFirstKey deleted on NetHSM localhost:8443
/keys/{KeyID} エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/delete_keys__KeyID_>`__ に記載されている。
リストキー#
The NetHSM can list all keys in the Key Store that are in the Namespace of the current user.
このリストは、次のようにして取得することができます。
必須項目
この操作には、Administrator または Operator ロールを使用した認証が必要です。
オプション設定
オプション |
説明 |
---|---|
|
検索するタグ |
**例
$ 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
/keys エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/get_keys>`__ に記載されている。
キーの詳細を表示#
The NetHSM can output more detailed information about a stored key. Users can only access keys in their Namespace.
詳細情報は、以下のように取得できます。
必須項目
この操作には、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
/keys/{KeyID} エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/get_keys__KeyID_>`__ に記載されている。
鍵の公開鍵は、以下のようにして取得できる。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-----
/keys/{KeyID}/public.pem エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/get_keys__KeyID__public_pem>`__ に記載されている。
公開鍵は、例えば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-----
/keys/{KeyID}/public.pem エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/get_keys__KeyID__public_pem>`__ に記載されている。
重要な証明書#
NetHSMに保存されている鍵の証明書を設定したり、問い合わせたりすることが可能です。
対応するMIMEタイプは以下の通りです。
application/x-pem-file
。application/x-x509-ca-cert
。application/pgp-keys
。
証明書は以下のように設定することができます。
必須項目
この操作には、Administrator ロールを使用した認証が必要です。
必須オプション
オプション |
説明 |
---|---|
|
証明書を設定する鍵のID |
オプション設定
オプション |
説明 |
---|---|
|
証明書の MIME タイプ。利用可能なMIMEタイプは上記の通りです。 |
**論評
論証 |
説明 |
---|---|
|
証明書ファイル |
**例
$ 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
/keys/{KeyID}/cert エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/put_keys__KeyID__cert>`__ に記載されている。
証明書の取得は次のように行います。
必須項目
この操作には、Administrator または Operator ロールを使用した認証が必要です。
必須オプション
オプション |
説明 |
---|---|
|
証明書を取得するための鍵の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-----
/keys/{KeyID}/cert エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/put_keys__KeyID__cert>`__ に記載されている。
鍵証明書の署名要求#
NetHSMは、保存された鍵のCSR(Certificate Signing Requests)の生成に対応しています。
必須項目
この操作には、Administrator または Operator ロールを使用した認証が必要です。
必須オプション
オプション |
説明 |
---|---|
|
のCSRを生成するための鍵のID。 |
|
国名 |
|
州・県名 |
|
産地名 |
|
組織名 |
|
組織単位名 |
|
一般名称 |
|
電子メールアドレス |
**例
$ 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-----
/keys/{KeyID}/csr.pem エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_keys__KeyID__csr_pem>`__ に記載されている。
主要業務#
All operations described in this chapter can only be executed for keys that are in the Namespace of the current user.
エンクリプト#
NetHSMは、Key Store に保存されている対称鍵のデータを暗号化することができます。一方、公開鍵暗号方式では、公開鍵を誰もが利用できるようにするというコンセプトがあるため、非対称鍵のデータをNetHSMで暗号化することはできません。非対称鍵の場合、NetHSMは公開鍵を提供し、外部ツールで暗号化に使用することができます。鍵ストア にある鍵の公開鍵を取得する方法については、`鍵の詳細を表示<operation.html#show-key-details>`__ を参照してください。
対称鍵の場合、以下のようにデータを暗号化することができる。
必須項目
この操作には、Operator ロールを使用した認証が必要です。
必須オプション
オプション |
説明 |
---|---|
|
データを暗号化する鍵のID。 |
|
Base64エンコーディングのデータ |
|
暗号化モード |
|
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==
/keys/{KeyID}/encrypt エンドポイントに関する情報は、 `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_keys__KeyID__encrypt>`__ に記載されています。
これは暗号化され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 ロールを使用した認証が必要です。
必須オプション
オプション |
説明 |
---|---|
|
データ幅を復号化するための鍵のID |
|
Base64エンコーディングで暗号化されたデータ |
|
復号化モード。利用可能なモードは上記の通りです。 |
**例
$ nitropy nethsm -h $NETHSM_HOST decrypt -k myFirstKey -d "$(cat data.crypt)" -m PKCS1 | base64 -d
NetHSM rulez!
/keys/{KeyID}/decrypt エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_keys__KeyID__decrypt>`__ に記載されている。
サイン#
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 ロールを使用した認証が必要です。
必須オプション
オプション |
説明 |
---|---|
|
データ幅に署名するための鍵のID |
|
Base64で符号化したデータ |
|
サインモード |
**例
$ nitropy nethsm -h $NETHSM_HOST sign -k myFirstKey -m PKCS1 -d "$(cat data.digest)" | base64 -d > data.sig
/keys/{KeyID}/sign エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_keys__KeyID__sign>`__ に記載されている。
作成された署名は、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 ロールを使用した認証が必要です。
**論評
論証 |
説明 |
---|---|
|
取得するバイト数 |
**例
nitropy nethsm --host $NETHSM_HOST random 4
94A2rg==
/random エンドポイントに関する情報は `API documentation<https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_random>`__ に記載されている。