Cloud ハードウェアセキュリティモジュールでは、独自のキーマテリアルをハードウェアセキュリティモジュール (HSM) にインポートできます。このガイドでは、key_mgmt_tool CLI を使用して、対称キーマテリアルと非対称キーマテリアルの両方をインポートする方法を説明します。
適用可能な HSM タイプ
連邦情報処理標準 (FIPS) によって検証された汎用仮想セキュリティモジュール (GVSM)
仕組み
キーマテリアルを HSM にインポートする際には、ラッピングキーを使用して転送中のキーマテリアルを保護します。
HSM 内で一時的なラッピングキーを生成します。ラッピングキーはセッションキーであり、現在のセッション中にのみ存在し、その後は回復できません。
HSM はラッピングキーを使用して、キーマテリアルを安全に受信し、アンラップします。
インポートが成功すると、HSM はインポートされたキーにキーハンドルを割り当てます。このハンドルを使用して、後続の操作でキーを参照します。
サポートされているキータイプ
| キータイプ | アルゴリズム | キーサイズ | -t 値 |
|---|---|---|---|
| 対称キー | AES (高度暗号化標準) | 16、24、または 32 バイト | 31 |
| 対称キー | 3DES (トリプルデータ暗号化標準) / DES (データ暗号化標準) | 24 バイト | 21 |
| 対称キー | GENERIC_SECRET | — | 16 |
| 非対称 | ECC (楕円曲線暗号) — secp256k1 | — | — |
前提条件
開始する前に、以下を確認してください。
hsm_proxyHSM クライアントプロキシを起動しました。詳細については、「Cloud Hardware Security Module の使用を開始する」をご参照ください。key_mgmt_toolCLI がインストールされています。 key_mgmt_tool をご参照ください。key_mgmt_toolを使用して、暗号ユーザー (CU) としてログインしていること
CU としてログインするには、以下を実行します。
/opt/hsm/bin/key_mgmt_tool
Command: loginHSM -u CU -s <yourCuUserName> -p <yourCuUserPassword>/opt/hsm/bin/key_mgmt_toolをkey_mgmt_toolの実際のパスに置き換えます。<yourCuUserName>および<yourCuUserPassword>を、CU の認証情報に置き換えます。
対称キーマテリアルのインポート
次の例では、AES-256 対称キーマテリアルをインポートします。
ステップ 1: キーマテリアルの作成
キーマテリアルがすでにある場合は、このステップをスキップしてください。キーファイルには、生のキーバイトのみが含まれている必要があります。改行やその他の追加コンテンツは含めないでください。
OpenSSL を使用して、32 バイトのランダムなキーマテリアルを生成します。
openssl rand 32 > aes256key_to_import.keyステップ 2: ラッピングキーの生成
一時的なラップキーを作成するには、genSymKey を実行します。
Command: genSymKey -t 31 -s 32 -sess -l import-wrapping-key| パラメータ | 説明 |
|---|---|
-t | キータイプ。21 = 3DES、31 = AES |
-s | キーサイズ (バイト単位)。AES: 16、24、または 32。3DES: 24 |
-sess | キーがセッションキーであることを指定します。セッションキーは、長期保存ではなく一時的な使用を目的としています。 |
-l | キータグ |
期待される出力:
Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS
Symmetric Key Created. Key Handle: 37
Cluster Status:
Node id 0 status: 0x00000000 : HSM Return: SUCCESS「[Key Handle]」の値(例: 37)を確認してください。次のステップで必要になります。
ステップ 3: 対称キーマテリアルのインポート
imSymKey を実行して、前のステップのラッピングキーを使用してキーマテリアルをインポートします:
Command: imSymKey -f aes256key_to_import.key -t 31 -l aes256-key-imported -w 37| パラメータ | 説明 |
|---|---|
-f | キーマテリアルのファイル名 |
-t | キータイプ。16 = GENERIC_SECRET、21 = 3DES または DES、31 = AES |
-l | キータグ |
-w | ステップ 2 で生成されたラッピングキーのキーハンドル |
キーハンドルはHSMによってランダムに割り当てられます。genSymKey の出力から値を使用してください。期待される出力:
Cfm3ImportWrapKey returned: 0x00 : HSM Return: SUCCESS
Cfm3CreateUnwrapTemplate2 returned: 0x00 : HSM Return: SUCCESS
Cfm3ImportUnWrapKey returned: 0x00 : HSM Return: SUCCESS
Symmetric Key Imported. Key Handle: 35
Cluster Status:
Node id 0 status: 0x00000000 : HSM Return: SUCCESSインポートされたキーには、新しいキーハンドル (例: 35) が割り当てられます。
非対称キーマテリアルのインポート
次の例では、ECC secp256k1 キーペアをインポートします。ユースケースに基づいて、秘密鍵、公開鍵、またはその両方をインポートできます。公開鍵のみをインポートする場合は、ステップ 2 をスキップしてください。
ステップ 1: キーマテリアルの作成
キーマテリアルがすでにある場合は、このステップをスキップしてください。
OpenSSL を使用して、ECC secp256k1 キーペアを生成します。
openssl ecparam -name secp256k1 -genkey -noout -out secp256k1_key.pem
openssl ec -in secp256k1_key.pem -pubout -out secp256k1_key_pub.pem秘密鍵ファイルの例 (secp256k1_key.pem): 
公開鍵ファイルの例 (secp256k1_key_pub.pem): 
ステップ 2: ラッピングキーの生成
公開鍵のみをインポートする場合は、このステップをスキップしてください。
genSymKey を実行して、一時的なラッピングキーを作成します:
Command: genSymKey -t 31 -s 32 -sess -l import-wrapping-key| パラメータ | 説明 |
|---|---|
-t | キータイプ。21 = 3DES、31 = AES |
-s | キーサイズ (バイト単位)。AES: 16、24、または 32。3DES: 24 |
-sess | キーがセッションキーであることを指定します。セッションキーは、長期保存ではなく一時的な使用を目的としています。 |
-l | キータグ |
期待される出力:
Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS
Symmetric Key Created. Key Handle: 37
Cluster Status:
Node id 0 status: 0x00000000 : HSM Return: SUCCESS[キーハンドル] の値 (例: 37) をメモしてください。この値はステップ 3 で必要になります。
ステップ 3: 秘密鍵のインポート
importPrivateKey を実行して秘密鍵をインポートします:
Command: importPrivateKey -f secp256k1_key.pem -l secp256k1_key-imported -w 37| パラメータ | 説明 |
|---|---|
-f | 秘密鍵のファイル名 |
-l | キータグ |
-w | ステップ 2 で生成されたラッピングキーのキーハンドル |
キーハンドルは HSM によってランダムに割り当てられます。 genSymKey の出力の値を使用してください。期待される出力:
BER encoded key length is 135
Cfm3ImportWrapKey returned: 0x00 : HSM Return: SUCCESS
Cfm3CreateUnwrapTemplate2 returned: 0x00 : HSM Return: SUCCESS
Cfm3ImportUnWrapKey: 0x00 : HSM Return: SUCCESS
Private Key Imported. Key Handle: 36
Cluster Status:
Node id 0 status: 0x00000000 : HSM Return: SUCCESSインポートされた秘密鍵には、新しいキーハンドル (例: 36) が割り当てられます。
ステップ 4: 公開鍵のインポート
importPubKey を実行して公開鍵をインポートします:
Command: importPubKey -f secp256k1_key_pub.pem -l secp256k1_key_pub| パラメータ | 説明 |
|---|---|
-f | 公開鍵のファイル名 |
-l | キータグ |
期待される出力:
Cfm3CreatePublicKey returned: 0x00 : HSM Return: SUCCESS