すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:HSM 間でのキーのコピー

最終更新日:Apr 01, 2026

あるハードウェアセキュリティモジュール (HSM) から別の HSM にキーをコピーするには、ソース HSM からキーをエクスポートし、宛先 HSM にインポートします。このトピックでは、2 つの HSM 間で対称キーと非対称キーをコピーする方法について説明します。

対象となる HSM タイプ

連邦情報処理標準 (FIPS) によって検証された General Virtual Security Modules (GVSM)。

手動でキーをコピーするケース

2 つの HSM が同じクラスターに属しておらず、自動キー同期がサポートされていない場合は、手動でキーをコピーします。

説明

同じクラスター内のキーは自動的に同期されます。手動でのコピーは不要です。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • hsm_proxy HSM クライアントプロキシが実行中であること。設定手順については、「Cloud Hardware Security Module の概要」をご参照ください。

  • key_mgmt_tool CLI がインストールされていること。詳細については、「key_mgmt_tool」をご参照ください。

key_mgmt_tool へのログイン

操作を実行する前に、暗号化ユーザー (CU) としてログインします。

$/opt/hsm/bin/key_mgmt_tool
Command: loginHSM -u CU -s <yourCuUserName> -p <yourCuUserPassword>

/opt/hsm/bin/key_mgmt_tool を実際のパスに置き換え、<yourCuUserName><yourCuUserPassword> をご利用の CU 認証情報に置き換えてください。

仕組み

コピープロセスでは、キーラッピングを使用して、HSM 間でキーマテリアルを安全に移動させます。

  1. HSM B で、ラッピングキーとして RSA キーペアを生成し、その公開鍵をエクスポートします。

  2. HSM A で、HSM B からの RSA 公開鍵をインポートし、それを使用してコピーしたいキーをラップ (暗号化) します。

  3. ラップされたキーファイルを HSM B に転送し、そこで RSA 秘密鍵を使用してアンラップします。

非対称キーの場合は、公開鍵も別途エクスポートおよびインポートします。

対称キーのコピー

この例では、RSA-2048 ラッピングキーと RSA-OAEP (SHA-256) を使用して、AES-256 対称キーを HSM A から HSM B にコピーします。

ステップ 1:HSM B でのラッピングキーの作成とエクスポート

  1. ラッピングキーとして使用する RSA キーペアを生成します。

    パラメーター説明
    -mキー長 (ビット単位)
    -e公開指数。65537 から 2^31-1 までの奇数である必要があります。
    -lキーラベル
    Command:  genRSAKeyPair -m 2048 -e 65537 -l rsa_wrapping_key

    期待される出力:

    Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS
    Cfm3GenerateKeyPair:    public key handle: 33    private key handle: 32
    Cluster Status:
    Node id 0 status: 0x00000000 : HSM Return: SUCCESS
  2. RSA 公開鍵をファイルにエクスポートします。

    パラメーター説明
    -kエクスポートする公開鍵のハンドル
    -out出力ファイル名
    Command:  exportPubKey -k 33 -out rsa_wrapping_key.pub

    期待される出力:

    PEM formatted public key is written to rsa_wrapping_key.pub
    Cfm3ExportPubKey returned: 0x00 : HSM Return: SUCCESS

rsa_wrapping_key.pub を HSM A の環境に転送します。

ステップ 2:HSM A での対称キーのラップ

  1. 対称キーを生成します。キーがすでに存在する場合は、このステップをスキップしてください。

    パラメーター説明
    -tキータイプ: 16 = GENERIC_SECRET、21 = 3DES、31 = AES
    -sキー長 (バイト単位)。AES:16、24、または 32。3DES:24。GENERIC_SECRET:800 以下
    -lキーラベル
    Command:  genSymKey -t 31 -s 32 -l mySymmetricKey

    期待される出力:

    Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS
    Symmetric Key Created.  Key Handle: 29
    Cluster Status:
    Node id 0 status: 0x00000000 : HSM Return: SUCCESS
  2. HSM B からの RSA 公開鍵をセッションキーとしてインポートします。

    パラメーター説明
    -sessキーをセッションキーとしてインポートし、一時的にのみ使用します
    -lキーラベル
    -fインポートする公開鍵ファイル
    Command:  importPubKey -sess -l rsa_pub_key -f rsa_wrapping_key.pub

    期待される出力:

    Cfm3CreatePublicKey returned: 0x00 : HSM Return: SUCCESS
    Public Key Handle: 28
    Cluster Status:
    Node id 0 status: 0x00000000 : HSM Return: SUCCESS
  3. インポートした RSA 公開鍵を使用して対称キーをラップし、結果をファイルに保存します。

    パラメーター説明
    -kラップするキーのハンドル
    -wラッピングキーのハンドル
    -mラッピングメソッド。8 = RSA_OAEP。サポートされているすべての値については、「ラッピングメソッドのリファレンス」をご参照ください。
    -tハッシュタイプ。-m7 または 8 の場合に必要です。3 = SHA-256。サポートされているすべての値については、「ハッシュタイプのリファレンス」をご参照ください。
    -outラップされたキーの出力ファイル名
    Command:  wrapKey -k 29 -w 28 -m 8 -t 3 -out symmetric_key_wrapped_with_rsa.wrap

    期待される出力:

    Cfm2WrapKey5 returned: 0x00 : HSM Return: SUCCESS
    Key Wrapped.
    Wrapped Key written to file "symmetric_key_wrapped_with_rsa.wrap" length 525

symmetric_key_wrapped_with_rsa.wrap を HSM B の環境に転送します。

ステップ 3:HSM B での対称キーのアンラップ

HSM B の RSA 秘密鍵 (ステップ 1 のハンドル 32) を使用して、ラップされたキーファイルをアンラップします。

Command:  unWrapKey -f symmetric_key_wrapped_with_rsa.wrap -w 32 -m 8 -t 3
パラメーター説明
-fインポートするラップされたキーファイル
-wラッピングキー (RSA 秘密鍵) のハンドル
-mラッピングメソッド。wrapKey で使用した値と一致させる必要があります。
-tハッシュタイプ。wrapKey で使用した値と一致させる必要があります。

期待される出力:

Cfm2UnWrapKey5 returned: 0x00 : HSM Return: SUCCESS
Key Unwrapped.  Key Handle: 31
Cluster Status:
Node id 0 status: 0x00000000 : HSM Return: SUCCESS

これで、対称キーはキーハンドル 31 で HSM B で利用可能になります。誤った再インポートを防ぐために、symmetric_key_wrapped_with_rsa.wrap にマークを付けるか、削除してください。

非対称キーのコピー

この例では、EC secp256k1 キーペアを HSM A から HSM B にコピーします。秘密鍵は RSA-2048 と RSA-OAEP (SHA-256) を使用してラップされます。公開鍵は別途エクスポートされます。

ステップ 1:HSM B でのラッピングキーの作成とエクスポート

対称キーのコピーのステップ 1」と同じ genRSAKeyPair および exportPubKey コマンドを実行します。期待される出力は、公開鍵ハンドル 33 と秘密鍵ハンドル 32 です。

rsa_wrapping_key.pub を HSM A の環境に転送します。

ステップ 2:HSM A での秘密鍵のラップと公開鍵のエクスポート

  1. EC キーペアを生成します。キーがすでに存在する場合は、このステップをスキップしてください。

    パラメーター説明
    -iECC 曲線識別子。有効な値:1~16
    -lキーラベル
    Command:  genECCKeyPair -i 16 -l secp256k1_key

    期待される出力:

    Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS
    Cfm3GenerateKeyPair:    public key handle: 29    private key handle: 28
    Cluster Status:
    Node id 0 status: 0x00000000 : HSM Return: SUCCESS
  2. HSM B からの RSA 公開鍵をセッションキーとしてインポートします。

    Command:  importPubKey -sess -l rsa_pub_key -f rsa_wrapping_key.pub

    期待される出力: Public Key Handle: 31

  3. インポートした RSA 公開鍵を使用して EC 秘密鍵をラップします。

    Command:  wrapKey -k 28 -w 31 -m 8 -t 3 -out secp256k1_key_wrapped_with_rsa.wrap

    期待される出力:

    Cfm2WrapKey5 returned: 0x00 : HSM Return: SUCCESS
    Key Wrapped.
    Wrapped Key written to file "secp256k1_key_wrapped_with_rsa.wrap" length 515
  4. EC 公開鍵をファイルにエクスポートします。

    Command:  exportPubKey -k 29 -out secp256k1_key.pub

    期待される出力:

    PEM formatted public key is written to secp256k1_key.pub
    Cfm3ExportPubKey returned: 0x00 : HSM Return: SUCCESS

secp256k1_key_wrapped_with_rsa.wrapsecp256k1_key.pub を HSM B の環境に転送します。

ステップ 3:HSM B での秘密鍵のアンラップと公開鍵のインポート

  1. HSM B の RSA 秘密鍵を使用して EC 秘密鍵をアンラップします。

    Command:  unWrapKey -f secp256k1_key_wrapped_with_rsa.wrap -w 32 -m 8 -t 3

    期待される出力:

    Cfm2UnWrapKey5 returned: 0x00 : HSM Return: SUCCESS
    Key Unwrapped.  Key Handle: 27
    Cluster Status:
    Node id 0 status: 0x00000000 : HSM Return: SUCCESS
  2. EC 公開鍵をインポートします。

    パラメーター説明
    -lキーラベル
    -fインポートする公開鍵ファイル
    Command:  importPubKey -l secp256k1_key_pub_imported -f secp256k1_key.pub

    期待される出力:

    Cfm3CreatePublicKey returned: 0x00 : HSM Return: SUCCESS
    Public Key Handle: 26
    Cluster Status:
    Node id 0 status: 0x00000000 : HSM Return: SUCCESS

これで、EC キーペアは HSM B で利用可能になります:秘密鍵ハンドル 27、公開鍵ハンドル 26。誤った再インポートを防ぐために、secp256k1_key_wrapped_with_rsa.wrap にマークを付けるか、削除してください。

ラッピングメソッドのリファレンス

wrapKey および unWrapKey-m パラメーターでは、以下のラッピングメソッドがサポートされています:

メソッド制約
0AES_CBC_PAD-noheader が指定されている場合は、初期化ベクトルが必要です
1AES_CBC-noheader が指定されている場合は、初期化ベクトルが必要です
4CLOUDHSM_AES_KEY_WRAP
5NIST_AES_WRAP_NO_PADキー長は 8 バイトの倍数である必要があります
6 (デフォルト)NIST_AES_WRAP_PAD
7RSA_AES-t (ハッシュタイプ) が必要です
8RSA_OAEP-t (ハッシュタイプ) が必要です。キー長 ≤ Mod_len − 2 × Hash_len − 2 バイト
9NIST_TDEA_WRAPキー長は 4 バイトの倍数である必要があります
10AES_GCM
11CLOUDHSM_AES_GCM
12RSA_PKCSキー長 ≤ Mod_len − 11 バイト

ハッシュタイプのリファレンス

-m7 (RSA_AES) または 8 (RSA_OAEP) の場合、-t パラメーターは必須です。

ハッシュアルゴリズム
2 (デフォルト)SHA-1
3SHA-256
4SHA-384
5SHA-512
6SHA-224