

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# KMU AWS CloudHSM を使用して対称キーを生成する
<a name="key_mgmt_util-genSymKey"></a>

 AWS CloudHSM key\_mgmt\_util ツールの **genSymKey** コマンドを使用して、ハードウェアセキュリティモジュール (HSM) に対称キーを生成します。キーのタイプとサイズを指定し、ID とラベルを割り当て、他の HSM ユーザーとキーを共有することができます。また、抽出不可のキーや、セッションが終了すると同時に失効するキーを作成することもできます。コマンドが成功すると、HSM がキーに割り当てるキーハンドルが返されます。このキーハンドルでキーを識別して他のコマンドで使用できます。

key\_mgmt\_util コマンドを実行する前に、[key\_mgmt\_util を起動し](key_mgmt_util-setup.md#key_mgmt_util-start)、Crypto User (CU) として HSM に [ログインする](key_mgmt_util-log-in.md) 必要があります。

## Syntax
<a name="genSymKey-syntax"></a>

```
genSymKey -h

genSymKey -t {{<key-type>}}
          -s {{<key-size>}} 
          -l {{<label>}} 
          [-id {{<key-ID>}}] 
          [-min_srv {{<minimum-number-of-servers>}}] 
          [-m_value {{<0..8>}}]
          [-nex] 
          [-sess] 
          [-timeout {{<number-of-seconds>}} ]
          [-u {{<user-ids>}}] 
          [-attest]
```

## 例
<a name="genSymKey-examples"></a>

以下の例では、**genSymKey** を使用して HSM に対称キーを作成する方法を示しています。

**ヒント**  
これらの例で作成したキーをHMACオペレーションに使用するには、`OBJ_ATTR_SIGN` キーを生成した後に `OBJ_ATTR_VERIFY` と `TRUE` を設定する必要があります。これらの値を設定するには、CloudHSM 管理ユーティリティ (CMU) で **setAttribute** を使用します。詳細については、[setAttribute](cloudhsm_mgmt_util-setAttribute.md) を参照してください。

**Example : AES キーの生成**  
このコマンドは、`aes256` というラベルを持つ 256 ビット AES キーを作成します。出力は、新しいキーのキーハンドルが `6` であることを示します。  

```
Command: genSymKey -t 31 -s 32 -l aes256

        Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

        Symmetric Key Created.  Key Handle: 6

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```

**Example : セッションキーの作成**  
次のコマンドは、現在のセッションでのみ有効な、抽出不可の 192 ビット AES キーを作成します。次のようなキーを作成して、エクスポートするキーをラップ (および直後にラップ解除) することができます。  

```
Command: genSymKey -t 31 -s 24 -l tmpAES -id wrap01 -nex -sess 
```

**Example : 迅速に戻る**  
次のコマンドでは、`IT_test_key` をラベルとする 512 バイトの汎用キーを作成します。このコマンドは、キーがクラスターのすべての HSM に同期されるまで待機しません。代わりに、いずれかの HSM でキーが作成された時点 (`-min_srv 1`) または 1 秒 (`-timeout 1`) のいずれか短い方で戻ります。タイムアウトが経過する前に、指定した最小数の HSM にキーが同期されない場合、キーは生成されません。次の例の `for` ループのように、多数のキーを作成するスクリプトでこのようなコマンドを使用できます。  

```
Command: genSymKey -t 16 -s 512 -l IT_test_key -min_srv 1 -timeout 1

$  for i in {1..30}; 
     do /opt/cloudhsm/bin/key_mgmt_util singlecmd loginHSM -u CU -s example_user -p example_pwd genSymKey -l aes -t 31 -s 32 -min_srv 1 -timeout 1; 
 done;
```

**Example : クォーラム認証汎用キーの作成**  
次のコマンドでは、`generic-mV2` をラベルとする 2048 ビットの汎用シークレットキーを作成します。このコマンドでは、`-u` パラメータを使用して別の CU、ユーザー 6、とキーを共有します。`-m_value` パラメータを使用して、キーを使用するすべての暗号オペレーションで 2 つ以上のクォーラムの承認を要求します。また、このコマンドでは、`-attest` パラメータを使用して、キーが生成されたファームウェアの整合性を検証します。  
出力は、コマンドがキーハンドル `9` でキーを生成し、クラスターファームウェアの認証チェックが成功したことを示しています。  

```
                Command:  genSymKey -t 16 -s 2048 -l generic-mV2 -m_value 2 -u 6 -attest

        Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

        Symmetric Key Created.  Key Handle: 9

        Attestation Check : [PASS]

        Cluster Error Status
        Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```

**Example : キーの作成と検証**  
このコマンドは、ラベルが `3DES_shared` で ID が `IT-02` の Triple DES キーを作成します。現在のユーザーと、ユーザー 4 およびユーザー 5 がキーを使用できます。クラスター内で ID が一意でない場合、または現在のユーザーがユーザー 4 またはユーザー 5 の場合、コマンドは失敗します。  
出力は、新規キーのキーハンドルが `7` であることを示しています。  

```
Command: genSymKey -t 21 -s 24 -l 3DES_shared -id IT-02 -u 4,5

       Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

        Symmetric Key Created.  Key Handle: 7

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```
新しい 3DES キーが現在のユーザーによって所有され、ユーザー 4 とユーザー 5 と共有されていることを確認するには、**[getKeyInfo](key_mgmt_util-getKeyInfo.md)** を使用します。このコマンドは、新しいキーに割り当てられたハンドル (`Key Handle: 7`) を使用します。  
出力は、キーの所有者がユーザー 3 で、キーをユーザー 4 とユーザー 5 が共有していることを示しています。  

```
Command:  getKeyInfo -k 7

        Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS

        Owned by user 3

        also, shared to following 2 user(s):

                 4, 5
```
キーの他のプロパティを確認するには、[getAttribute](key_mgmt_util-getAttribute.md) を使用します。最初のコマンドでは、`getAttribute` を使用して、キーハンドル 7 (`-o 7`) のすべての属性 (`-a 512`) を取得します。それを `attr_7` ファイルに書き込みます。2 番目のコマンドは、`cat` を使用して、`attr_7` ファイルの内容を取得します。  
このコマンドは、キー 7 が 192 ビット (`OBJ_ATTR_VALUE_LEN 0x00000018` または 24 バイト) 3DES (`OBJ_ATTR_KEY_TYPE 0x15`) 対称キー (`OBJ_ATTR_CLASS 0x04`) で、ラベルが `3DES_shared` (`OBJ_ATTR_LABEL 3DES_shared`)、ID が `IT_02` (`OBJ_ATTR_ID IT-02`) であることを示しています。このキーは永続的 (`OBJ_ATTR_TOKEN 0x01`) および抽出可能 (`OBJ_ATTR_EXTRACTABLE 0x01`) で、暗号化、復号、およびラッピングに使用できます。  
タイプ、長さ、ラベル、ID など、作成したキーの属性を検索するには、[getAttribute](key_mgmt_util-getAttribute.md) を使用します。特定のユーザーのキーを見つけるには、[getKeyInfo](key_mgmt_util-getKeyInfo.md) を使用します。属性値に基づいてキーを検索するには、[findKey](key_mgmt_util-findKey.md) を使用します。
キー属性の解釈については、 [AWS CloudHSM KMU のキー属性リファレンス](key-attribute-table.md) を参照してください。  

```
Command:  getAttribute -o 7 -a 512 -out attr_7

got all attributes of size 444 attr cnt 17
Attributes dumped into attr_7 file

        Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS


$  cat attr_7

OBJ_ATTR_CLASS
0x04
OBJ_ATTR_KEY_TYPE
0x15
OBJ_ATTR_TOKEN
0x01
OBJ_ATTR_PRIVATE
0x01
OBJ_ATTR_ENCRYPT
0x01
OBJ_ATTR_DECRYPT
0x01
OBJ_ATTR_WRAP
0x00
OBJ_ATTR_UNWRAP
0x00
OBJ_ATTR_SIGN
0x00
OBJ_ATTR_VERIFY
0x00
OBJ_ATTR_LOCAL
0x01
OBJ_ATTR_SENSITIVE
0x01
OBJ_ATTR_EXTRACTABLE
0x01
OBJ_ATTR_LABEL
3DES_shared
OBJ_ATTR_ID
IT-02
OBJ_ATTR_VALUE_LEN
0x00000018
OBJ_ATTR_KCV
0x59a46e
```
これらの例で作成したキーをHMACオペレーションに使用するには、`OBJ_ATTR_SIGN` キーを生成した後に `OBJ_ATTR_VERIFY` と `TRUE` を設定する必要があります。これらの値を設定するには、CMUで **setAttribute** を使用します。詳細については、[setAttribute](cloudhsm_mgmt_util-setAttribute.md) を参照してください。

## パラメータ
<a name="genSymKey-params"></a>

**-h**  
コマンドに関するヘルプを表示します。  
必須: はい

**-t**  
対称キーのタイプを指定します。キーのタイプを表す定数を入力します。たとえば、AES キーを作成するには「`-t 31`」と入力します。  
有効な値:   
+ 16: [GENERIC\_SECRET](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226962)。*汎用シークレットキー* は、AES キーの要件など、特定のスタンダードに準拠していないバイト配列です。
+ 18: [RC4](https://en.wikipedia.org/wiki/RC4)。RC4 キーは FIPS モードの HSM では無効です
+ 21: [Triple DES (3DES)](https://en.wikipedia.org/wiki/Triple_DES)。NIST のガイダンスに従い、2023 年以降の FIPS モードのクラスターでは、これは許可されません。FIPS 以外のモードのクラスターでは、2023 年以降も許可されます。詳細については、「[FIPS 140 コンプライアンス: 2024 年 メカニズムの非推奨](compliance-dep-notif.md#compliance-dep-notif-1)」を参照してください。
+ 31: [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)
必須: はい

**-s**  
キーのサイズをバイト単位で指定します。たとえば、192 ビットのキーを作成するには「`24`」と入力します。  
各キータイプに有効な値:  
+ AES: 16 (128 ビット)、24 (192 ビット)、32 (256 ビット)
+ 3DES: 24 (192 ビット)
+ 汎用シークレット: <3584 (28672 ビット)
必須: はい

**-I**  
キーのユーザー定義ラベルを指定します。文字列を入力します。  
キーを識別するのに役立つ任意のフレーズを使用できます。ラベルは一意である必要がないため、このラベルを使用してキーをグループ化および分類できます。  
必須: はい

**-attest**  
クラスターを実行するファームウェアが改ざんされていないことを確認する整合性チェックを実行します。  
デフォルト: 認証チェックなし。  
必須: いいえ

**-id**  
キーのユーザー定義識別子を指定します。クラスター内で一意の文字列を入力します。デフォルトは空の文字列です。  
デフォルト: ID 値なし。  
必須: いいえ

**-min\_srv**  
`-timeout` パラメーターの値が期限切れになる前に、キーが同期される HSM の最小数を指定します。キーが割り当てられた時間内に指定された数のサーバーに同期されない場合は、作成されません。  
AWS CloudHSM は、すべてのキーをクラスター内のすべての HSM に自動的に同期します。プロセスを高速化するため、`min_srv` の値をクラスターの HSM の数より少なく設定し、低いタイムアウト値を設定します。ただし、一部のリクエストでキーが生成されない場合があることに注意してください。  
デフォルト: 1  
必須: いいえ

**-m\_value**  
キーを使用する暗号化オペレーションを承認する必要があるユーザーの数を指定します。`0` から `8` までの値を入力します。  
このパラメータは、キーのクォーラム認証要件を確立します。デフォルト値、`0` で、キーのクォーラム認証機能を無効にします。クォーラム認証が有効になっている場合、指定された数のユーザーは、キーを使用する暗号化オペレーション、およびキーを共有または共有解除するオペレーションを承認するためにトークンに署名する必要があります。  
キーの `m_value` を見つけるには、[getKeyInfo](key_mgmt_util-getKeyInfo.md) を使用します。  
このパラメータが有効なのは、コマンドの `-u` パラメータが `m_value` の要件を満たすために十分な数のユーザーとキーを共有するときのみです。  
デフォルト: 0  
必須: いいえ

**-nex**  
キーを抽出できなくなります。生成されたキーは [HSM からエクスポートできません](export-keys.md)。  
デフォルト: キーは抽出可能です。  
必須: いいえ

**-sess**  
現在のセッションにのみ存在するキーを作成します。セッション終了後、キーをリカバリすることはできません。  
このパラメータは、別のキーを暗号化してからすばやく復号化するラッピングキーなど、キーが短時間だけ必要な場合に使用します。セッション終了後に復号する必要がある可能性のあるデータを暗号化するためにセッションキーを使用しないでください。  
セッションキーを永続(トークン)キーに変更するには、[setAttribute](key_mgmt_util-setAttribute.md) を使用します。  
デフォルト: キーは永続的です。  
必須: いいえ

**-timeout**  
キーが `min_srv` パラメータで指定された HSM の数に同期されるのをコマンドが待機する時間 (秒単位) を指定します。  
このパラメータは、`min_srv` パラメータがコマンドでも使用されている場合にのみ有効です。  
デフォルト: タイムアウトなし。このコマンドは無期限に待機し、キーが最小数のサーバーと同期されている場合にのみ戻ります。  
必須: いいえ

**-u**  
指定されたユーザーとキーを共有します。このパラメータは、別の HSM Crypto User (CU) に、暗号化オペレーションでこのキーを使用するアクセス許可を付与します。  
( -`u 5,6`などの) HSM ユーザー ID のカンマ区切りリストを入力します。現在のユーザーの HSM ユーザー ID を含めないでください。HSM で CU の HSM ユーザー ID を検索するには、[listUsers](key_mgmt_util-listUsers.md) を使用します。既存のキーを共有および共有解除するには、cloudhsm\_mgmt\_util で [shareKey](cloudhsm_mgmt_util-shareKey.md) を使用します。  
デフォルト : 現在のユーザーのみがキーを使用できます。  
必須: いいえ

## 関連トピック
<a name="genSymKey-seealso"></a>
+ [exSymKey](key_mgmt_util-exSymKey.md)
+ [genRSAKeyPair](key_mgmt_util-genRSAKeyPair.md)
+ [genDSAKeyPair](key_mgmt_util-genDSAKeyPair.md)
+ [genECCKeyPair](key_mgmt_util-genECCKeyPair.md)
+ [setAttribute](cloudhsm_mgmt_util-setAttribute.md)