

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

# AWS CloudHSM クライアント SDK 3 用の PKCS \$111 ライブラリ
<a name="pkcs11-v3-library"></a>

PKCS \$111 は、 AWS CloudHSMのハードウェア セキュリティ モジュール (HSM) で暗号化オペレーションを実行するための標準です。

ブートストラップの詳細については、「[クラスターへの接続](cluster-connect.md)」を参照してください。

**Topics**
+ [PKCS \$111 ライブラリのインストール](install-pkcs11-v3.md)
+ [PKCS \$111 ライブラリの認証](pkcs11-v3-pin.md)
+ [キータイプ](pkcs11-v3-key-types.md)
+ [メカニズム](pkcs11-v3-mechanisms.md)
+ [API オペレーション](pkcs11-v3-apis.md)
+ [キー属性](pkcs11-v3-attributes.md)
+ [コードサンプル](pkcs11-v3-samples.md)

# AWS CloudHSM クライアント SDK 3 用の PKCS \$111 ライブラリをインストールする
<a name="install-pkcs11-v3"></a>

このトピックでは、 AWS CloudHSM クライアント SDK 3 バージョンシリーズ用の PKCS \$111 ライブラリをインストールする手順について説明します。クライアント SDK または PKCS \$111 ライブラリの詳細については、[[クライアント SDK の使用](use-hsm.md)] と [[PKCS \$111 ライブラリ](pkcs11-library.md)] を参照してください。

## クライアント SDK 3 の前提条件
<a name="pkcs11-library-prerequisites"></a>

PKCS \$111 ライブラリには AWS CloudHSM クライアントが必要です。

 AWS CloudHSM クライアントをインストールして設定していない場合は、「」のステップに従って実行します[クライアント (Linux) のインストール](cmu-install-and-configure-client-linux.md)。クライアントのインストールと設定が完了したら、次のコマンドを使用して起動します。

------
#### [ Amazon Linux ]

```
$ sudo start cloudhsm-client
```

------
#### [ Amazon Linux 2 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ CentOS 7 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ CentOS 8 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ RHEL 7 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ RHEL 8 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 16.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 18.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 20.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------

## クライアント SDK 3 用の PKCS \$111 ライブラリのインストール
<a name="install-pkcs11-library"></a>

次のコマンドでは、PKCS \$111 ライブラリをダウンロードしてインストールします。

------
#### [ Amazon Linux ]

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-pkcs11-latest.el6.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-client-pkcs11-latest.el6.x86_64.rpm
```

------
#### [ Amazon Linux 2 ]

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-pkcs11-latest.el7.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm
```

------
#### [ CentOS 7 ]

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-pkcs11-latest.el7.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm
```

------
#### [ CentOS 8 ]

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-pkcs11-latest.el8.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-client-pkcs11-latest.el8.x86_64.rpm
```

------
#### [ RHEL 7 ]

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-pkcs11-latest.el7.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-client-pkcs11-latest.el7.x86_64.rpm
```

------
#### [ RHEL 8 ]

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-pkcs11-latest.el8.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-client-pkcs11-latest.el8.x86_64.rpm
```

------
#### [ Ubuntu 16.04 LTS ]

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-client-pkcs11_latest_amd64.deb
```

```
$ sudo apt install ./cloudhsm-client-pkcs11_latest_amd64.deb
```

------
#### [ Ubuntu 18.04 LTS ]

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Bionic/cloudhsm-client-pkcs11_latest_u18.04_amd64.deb
```

```
$ sudo apt install ./cloudhsm-client-pkcs11_latest_u18.04_amd64.deb
```

------
+ PKCS \$111 ライブラリをインストールした EC2 インスタンスに、クライアント SDK 3 の他のコンポーネントがインストールされていない場合は、クライアント SDK 3 をブートストラップする必要があります。クライアント SDK 3 のコンポーネントを使用して、各インスタンスで 1 回だけ実行する必要があります。
+ PKCS \$111 ライブラリのファイルは、次の場所にあります。

  Linuxのバイナリ、設定スクリプト、証明書およびログファイル:

  ```
  /opt/cloudhsm/lib
  ```

# AWS CloudHSM クライアント SDK 3 の PKCS \$111 ライブラリへの認証
<a name="pkcs11-v3-pin"></a>

PKCS \$111 ライブラリを使用すると、アプリケーションは AWS CloudHSMで特定の [Crypto User (CU)](manage-hsm-users.md) として実行されます。アプリケーションは、CU が所有して共有するキーのみを表示および管理できます。既存の CU を HSM で使用することも、新しい CU を作成することもできます。CU の管理については、「[Managing HSM users with CloudHSM CLI](manage-hsm-users-chsm-cli.md)」および「[Managing HSM users with CloudHSM Management Utility (CMU)](manage-hsm-users-cmu.md)」を参照してください。

PKCS \$111 に CU を指定するには、PKCS \$111 [[C\$1Login 関数](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html#_Toc385057915)] のピンパラメーターを使用します。の場合 AWS CloudHSM、ピンパラメータの形式は次のとおりです。

```
<CU_user_name>:<password>
```

たとえば、次のコマンドでユーザー名 `CryptoUser` とパスワード `CUPassword123!` を使用して PKCS \$111 ライブラリのピンを CU に設定します。

```
CryptoUser:CUPassword123!
```

# AWS CloudHSM クライアント SDK 3 の PKCS \$111 ライブラリでサポートされているキータイプ
<a name="pkcs11-v3-key-types"></a>

PKCS \$111 ライブラリは、 AWS CloudHSM クライアント SDK 3 で次のキータイプをサポートしています。


****  

| キータイプ | 説明 | 
| --- | --- | 
| RSA | 256 ビットの増分で、2,048～4,096 ビットの RSA キーを生成します。 | 
| EC | secp224r1 (P-224)、secp256r1 (P-256)、secp256k1 (ブロックチェーン)、secp384r1 (P-384)、secp521r1 (P-521) のカーブを使用してキーを生成します。 | 
| AES | 128、192、256 ビットの AES キーを生成します。 | 
| 3DES (Triple DES) | 192 ビットの DES3 キーを生成します。今後の変更については、以下の注記「[1](#pkcs11-v3-key-note)」を参照してください。 | 
| [GENERIC\$1SECRET]  | 1～64 バイトの汎用シークレットを生成します。 | 
+ [1] NIST ガイダンスに従い、2023 年以降の FIPS モードのクラスターでは、これは許可されません。FIPS 以外のモードのクラスターでは、2023 年以降も許可されます。詳細については、「[FIPS 140 コンプライアンス: 2024 年 メカニズムの非推奨](compliance-dep-notif.md#compliance-dep-notif-1)」を参照してください。

# AWS CloudHSM クライアント SDK 3 でサポートされているメカニズム
<a name="pkcs11-v3-mechanisms"></a>

PKCS \$111 ライブラリは、 AWS CloudHSM クライアント SDK 3 の次のアルゴリズムをサポートしています。
+ [**暗号化と復号化**] AES-CBC、AES-CTR、AES-ECB、AES-GCM、DES3-CBC、DES3-ECB、RSA-OAEP、RSA-PKCS
+ [**署名と確認**] RSA、HMAC、ECDSA (ハッシュあり、なし)
+ [**ハッシュ/ダイジェスト**] SHA1、SHA224、SHA256、SHA384、SHA512
+ [**キーラップ**] AES キーラップ、[[4](#pkcs11-v3-mech4)] AES-GCM、RSA-AES、RSA-OAEP
+ [**キーの導出**] — ECDH、[5](#pkcs11-v3-mech5) SP800-108 CTR KDF

## PKCS \$111 ライブラリのメカニズムと関数を示す表
<a name="pkcs11-v3-mech-function"></a>

PKCS \$111 ライブラリは PKCS \$111 仕様のバージョン 2.40 に準拠しています。PKCS\$111 を使用して暗号化機能を呼び出すには、指定されたメカニズムで関数を呼び出します。次の表は、 AWS CloudHSMでサポートされている関数とメカニズムの組み合わせをまとめたものです。

**サポートされている PKCS\$111 メカニズムと関数を示すテーブルの解釈**  
✔ マークは、 が関数のメカニズム AWS CloudHSM をサポートしていることを示します。PKCS \$111 仕様に一覧表示されている利用可能な関数がすべてサポートされているわけではありません。✖ マークは、PKCS \$111 標準で許可されている場合でも、 AWS CloudHSM が特定の関数のメカニズムをまだサポートしていないことを示します。空のセルは、PKCS \$111 標準で特定の関数のメカニズムがサポートされていないことを示します。


**サポートされている PKCS\$111 ライブラリのメカニズムと関数**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-mechanisms.html)

**メカニズムの注釈**
+ [1] シングルパートのオペレーションのみ
+ [2] メカニズムは機能的には `CKM_RSA_PKCS_KEY_PAIR_GEN` のメカニズムと似ていますが、`p` と `q` の生成に関してより強力な保証を提供します。
+ [3.1] クライアント SDK に基づいてハッシュを異なる方法で AWS CloudHSM アプローチします。クライアント SDK 3 では、ハッシュを行う場所はデータのサイズと、シングルパートオペレーションとマルチパートオペレーションのどちらを使用するかによって異なります。

  **クライアント SDK 3 のシングルパートのオペレーション**

  表 3.1 に、クライアント SDK 3 の各メカニズムの最大のデータ設定サイズを表します。ハッシュ全体が HSM 内で計算されます。16KB を超えるデータサイズはサポートされません。  
**表 3.1 シングルパートオペレーションの最大のデータ設定サイズ**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-mechanisms.html)

  **クライアント SDK 3 のマルチパートオペレーション**

  16 KB を超えるデータサイズのサポートについては、データサイズによってハッシュが行われる場所が決まります。16 KB 未満のデータバッファは HSM 内でハッシュされます。16 KBからシステムの最大のデータサイズまでのバッファは、ソフトウェアでローカルにハッシュされます。[*留意点*]: ハッシュ関数は機密情報の暗号化を必要としないため、HSM の外部で安全にコンピューティングすることができます。
+ [3.2] クライアント SDK に基づいてハッシュを異なる方法で AWS CloudHSM アプローチします。クライアント SDK 3 では、ハッシュを行う場所はデータのサイズと、シングルパートオペレーションとマルチパートオペレーションのどちらを使用するかによって異なります。

  **クライアント SDK 3 のシングルパートのオペレーション**

  表 3.2 に、クライアント SDK 3 の各メカニズムの最大のデータ設定サイズを表します。16KB を超えるデータサイズはサポートされません。  
**表 3.2 シングルパートオペレーションの最大のデータ設定サイズ**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-mechanisms.html)

  **クライアント SDK 3 のマルチパートオペレーション**

  16 KB を超えるデータサイズのサポートについては、データサイズによってハッシュが行われる場所が決まります。16 KB 未満のデータバッファは HSM 内でハッシュされます。16 KBからシステムの最大のデータサイズまでのバッファは、ソフトウェアでローカルにハッシュされます。[*留意点*]: ハッシュ関数は機密情報の暗号化を必要としないため、HSM の外部で安全にコンピューティングすることができます。
+ [3.3] 以下のいずれかのメカニズムを使用してデータを操作する際、データバッファが最大データサイズを超えるとエラーになります。これらのメカニズムでは、すべてのデータ処理が HSM 内で行われる必要があります。次の表は、各メカニズムに設定されている最大データサイズを示します:   
**表 3.3 最大のデータ設定サイズ**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-mechanisms.html)
+ [4] AES-GCM の暗号化を実行している際、HSM はアプリケーションからの初期化ベクトル (IV) データを受け入れません。HSM が生成した IV を使用する必要があります。HSM で生成された 12 バイトの IV は、指定した `CK_GCM_PARAMS` パラメータ構造の pIV 要素が指すメモリ参照に書き込まれます。ユーザーが混乱しないよう、バージョン 1.1.1 以降の PKCS\$111 SDK では、AES-GCM 暗号化が初期化されると、pIV はゼロ化されたバッファを指し示すようになっています。
+ [5]**クライアント SDK 3 のみ**。メカニズムは SSL/TLS オフロードのケースをサポートするために実装されており、HSM 内の一部でのみ実行されます。このメカニズムを使用する前に、「[の PKCS \$111 ライブラリの既知の問題 AWS CloudHSMPKCS\$111 ライブラリの既知の問題](ki-pkcs11-sdk.md)」の「Issue: ECDH key derivation is executed only partially within the HSM」を参照してください。`CKM_ECDH1_DERIVE` では、 secp521r1 (P-521) カーブはサポートされません。
+ [6] 次の `CK_MECHANISM_TYPE` および `CK_RSA_PKCS_MGF_TYPE` は、`CK_RSA_PKCS_OAEP_PARAMS` の `CKM_RSA_PKCS_OAEP` としてサポートされています:
  + `CKG_MGF1_SHA1` を使用する `CKM_SHA_1`
  + `CKG_MGF1_SHA224` を使用する `CKM_SHA224`
  + `CKG_MGF1_SHA256` を使用する `CKM_SHA256`
  + `CKM_MGF1_SHA384` を使用する `CKM_SHA384`
  + `CKM_MGF1_SHA512` を使用する `CKM_SHA512`
+ [7.1] ベンダー定義のメカニズム。CloudHSM ベンダー定義のメカニズムを使用するには、コンパイル時に PKCS \$111 アプリケーションに `/opt/cloudhsm/include/pkcs11/cloudhsm_pkcs11_vendor_defs.h` を含める必要があります。

  `CKM_CLOUDHSM_AES_GCM`: この独自のメカニズムは、標準 `CKM_AES_GCM` よりもプログラム的に安全な代替手段です。これは、HSM によって生成された IV を、暗号の初期化中に提供される `CK_GCM_PARAMS` 構造体に書き戻すのではなく、暗号文の先頭に付加します。このメカニズムは `C_Encrypt`、`C_WrapKey`、`C_Decrypt`、`C_UnwrapKey` 関数で使用できます。このメカニズムを使用する場合は、`CK_GCM_PARAMS` 構造体内の pIV 変数を `NULL` に設定する必要があります。このメカニズムを `C_Decrypt` および `C_UnwrapKey` と共に使用する場合、IV は、ラップ解除される暗号文の前に付加されることが想定されます。

  `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`: PKCS \$15 パディングを使用する AES キーラップ

  `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`: ゼロパディングを使用する AES キーラップ

  AES キーラップに関する追加情報については、[[AES キーラップ](manage-aes-key-wrapping.md)] を参照してください。
+ [8] NIST ガイダンスに従い、2023 年以降の FIPS モードのクラスターでは、これは許可されません。FIPS 以外のモードのクラスターでは、2023 年以降も許可されます。詳細については、「[FIPS 140 コンプライアンス: 2024 年 メカニズムの非推奨](compliance-dep-notif.md#compliance-dep-notif-1)」を参照してください。

# AWS CloudHSM クライアント SDK 3 でサポートされている API オペレーション
<a name="pkcs11-v3-apis"></a>

PKCS \$111 ライブラリは、 AWS CloudHSM クライアント SDK 3 の次の PKCS \$111 API オペレーションをサポートしています。
+ `C_CloseAllSessions`
+ `C_CloseSession`
+ `C_CreateObject`
+ `C_Decrypt`
+ `C_DecryptFinal`
+ `C_DecryptInit`
+ `C_DecryptUpdate`
+ `C_DeriveKey`
+ `C_DestroyObject`
+ `C_Digest`
+ `C_DigestFinal`
+ `C_DigestInit`
+ `C_DigestUpdate`
+ `C_Encrypt`
+ `C_EncryptFinal`
+ `C_EncryptInit`
+ `C_EncryptUpdate`
+ `C_Finalize`
+ `C_FindObjects`
+ `C_FindObjectsFinal`
+ `C_FindObjectsInit`
+ `C_GenerateKey`
+ `C_GenerateKeyPair`
+ `C_GenerateRandom`
+ `C_GetAttributeValue`
+ `C_GetFunctionList`
+ `C_GetInfo`
+ `C_GetMechanismInfo`
+ `C_GetMechanismList`
+ `C_GetSessionInfo`
+ `C_GetSlotInfo`
+ `C_GetSlotList`
+ `C_GetTokenInfo`
+ `C_Initialize`
+ `C_Login`
+ `C_Logout`
+ `C_OpenSession`
+ `C_Sign`
+ `C_SignFinal`
+ `C_SignInit`
+ `C_SignRecover`(クライアント SDK 3 のサポートのみ)
+ `C_SignRecoverInit`(クライアント SDK 3 のサポートのみ)
+ `C_SignUpdate`
+ `C_UnWrapKey`
+ `C_Verify`
+ `C_VerifyFinal`
+ `C_VerifyInit`
+ `C_VerifyRecover`(クライアント SDK 3 のサポートのみ)
+ `C_VerifyRecoverInit`(クライアント SDK 3 のサポートのみ)
+ `C_VerifyUpdate`
+ `C_WrapKey`

# AWS CloudHSM クライアント SDK 3 の PKCS \$111 ライブラリの主な属性
<a name="pkcs11-v3-attributes"></a>

キーオブジェクトには、パブリックキー、プライベートキー、またはシークレットキーを指定できます。キーオブジェクトで許可されているアクションは属性で指定されます。属性は、キーオブジェクトの作成時に定義されます。PKCS \$111 ライブラリを に使用すると AWS CloudHSM、PKCS \$111 標準で指定されたデフォルト値が割り当てられます。

AWS CloudHSM は、PKCS \$111 仕様に記載されているすべての属性をサポートしているわけではありません。サポートするすべての属性の仕様に準拠しています。これらの属性は、それぞれのテーブルにリストされています。

オブジェクトを作成、変更、またはコピーする `C_CreateObject`、`C_GenerateKey`、`C_GenerateKeyPair`、`C_UnwrapKey`、`C_DeriveKey` などの暗号化関数は、属性テンプレートをパラメータの 1 つとして使用します。オブジェクトの作成中に属性テンプレートを渡す方法の詳細については、「[Generate keys through PKCS \$111 library](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate)」のサンプルを参照してください。

以下のトピックでは、クライアント SDK 3 の AWS CloudHSM キー属性について詳しく説明します。

**Topics**
+ [属性テーブル](pkcs11-v3-attributes-interpreting.md)
+ [属性の変更](pkcs11-v3-modify-attr.md)
+ [AWS CloudHSM クライアント SDK 3 の PKCS \$111 ライブラリエラーコードの解釈](pkcs11-v3-attr-errors.md)

# AWS CloudHSM クライアント SDK 3 の PKCS \$111 ライブラリ属性テーブル
<a name="pkcs11-v3-attributes-interpreting"></a>

 AWS CloudHSM クライアント SDK 3 の PKCS \$111 ライブラリテーブルには、キータイプによって異なる属性のリストが含まれています。これは、特定の暗号化関数を で使用するときに、特定のキータイプで特定の属性がサポートされるかどうかを示します AWS CloudHSM。

**凡例:**
+ ✔ CloudHSM が特定のキータイプの属性をサポートしていることを示します。
+ ✖ CloudHSM が特定のキータイプの属性をサポートしていないこと示します。
+ R は、属性値が特定のキータイプに対して読み取り専用に設定されていることを示します。
+ S は、属性が機密であるため、`GetAttributeValue` で読み取れないことを示します。
+ [Default Value] 列のセルが空の場合は、属性に割り当てられている特定のデフォルト値がないことを示します。

## GenerateKeyPair
<a name="pkcs11-v3-generatekeypair"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## GenerateKey
<a name="pkcs11-v3-generatekey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## CreateObject
<a name="pkcs11-v3-createobject"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## UnwrapKey
<a name="pkcs11-v3-unwrapkey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## DeriveKey
<a name="pkcs11-v3-derivekey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## GetAttributeValue
<a name="pkcs11-v3-getattributevalue"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

**属性注釈**
+ [1] この属性はファームウェアによって部分的にサポートされており、デフォルト値にのみ明示的に設定する必要があります。
+ [2] 必須属性
+ [3]**クライアント SDK 3 のみ**。`CKA_SIGN_RECOVER` の属性は `CKA_SIGN` の属性から派生します。設定される場合は、`CKA_SIGN` に設定されている値と同じ値にのみ設定できます。設定されない場合、`CKA_SIGN` のデフォルト値が導出されます。CloudHSM では RSA ベースの回復可能な署名メカニズムのみがサポートされるため、この属性は現在 RSA パブリックキーのみに適用されます。
+ [4]**クライアント SDK 3 のみ**。`CKA_VERIFY_RECOVER` の属性は `CKA_VERIFY` の属性から派生します。設定される場合は、`CKA_VERIFY` に設定されている値と同じ値にのみ設定できます。設定されない場合、`CKA_VERIFY` のデフォルト値が導出されます。CloudHSM では RSA ベースの回復可能な署名メカニズムのみがサポートされるため、この属性は現在 RSA パブリックキーのみに適用されます。

# AWS CloudHSM クライアント SDK 3 の PKCS \$111 ライブラリ属性の変更
<a name="pkcs11-v3-modify-attr"></a>

オブジェクトの属性には、オブジェクトが作成された後に変更できるものもありますが、変更できないものもあります。属性を修正するには、cloudhsm\$1mgmt\$1util の[[setAttribute](cloudhsm_mgmt_util-setAttribute.md)] コマンドを使用します。また、cloudhsm\$1mgmt\$1util の [listAttribute](cloudhsm_mgmt_util-listAttributes.md) コマンドを使用して属性一覧とそれを表す定数を取得することも可能です。

次のリストで、オブジェクトの作成後に変更が許可荒れている許可されている属性が表示されます。
+ `CKA_LABEL`
+ `CKA_TOKEN`
**注記**  
変更が許可されるには、セッションキーをトークンキーに変更する場合のみです。key\$1mgmt\$1util の [setAttribute](key_mgmt_util-setAttribute.md) コマンドを使用して属性値を変更します。
+ `CKA_ENCRYPT`
+ `CKA_DECRYPT`
+ `CKA_SIGN`
+ `CKA_VERIFY`
+ `CKA_WRAP`
+ `CKA_UNWRAP`
+ `CKA_LABEL`
+ `CKA_SENSITIVE`
+ `CKA_DERIVE`
**注記**  
この属性ではキー取得がサポートされています。すべてのパブリックキーで `False` を指定する必要があります。`True` に設定することはできません。シークレットキーまたは EC プライベートキーに対しては、`True` または `False` に設定できます。
+ `CKA_TRUSTED`
**注記**  
この属性は Crypto Officer (CO) のみによって `True` または `False` に設定できます。
+ `CKA_WRAP_WITH_TRUSTED`
**注記**  
この属性をエクスポート可能なデータキーに適用して、このキーを `CKA_TRUSTED` としてマークされたキーでのみラップできるように指定します。1度 `CKA_WRAP_WITH_TRUSTED` を true に設定すると属性は読み取り専用になり、属性を変更または削除することはできません。

# AWS CloudHSM クライアント SDK 3 の PKCS \$111 ライブラリエラーコードの解釈
<a name="pkcs11-v3-attr-errors"></a>

特定のキーでサポートされていない PKCS \$111 ライブラリ属性をテンプレートで指定すると、エラーが発生します。次の表には、仕様に違反した場合に生成されるエラーコードが含まれています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-v3-attr-errors.html)

# AWS CloudHSM クライアント SDK 3 用の PKCS \$111 ライブラリのコードサンプル
<a name="pkcs11-v3-samples"></a>

GitHub のコードサンプルは、 AWS CloudHSM用の PKCS \$111 ライブラリを使用して基本的なタスクを実行する方法を示しています。

## サンプルコードの前提条件
<a name="pkcs11-v3-samples-prereqs"></a>

サンプルを実行する前に、以下のステップを実行して環境をセットアップします。
+ クライアント SDK 3 用の [PKCS \$111 ライブラリ](install-pkcs11-v3.md) のインストールと設定をします。
+ [暗号化ユーザー (CU)](manage-hsm-users.md) の設定をします。アプリケーションは、この HSM アカウントを使用して HSM でコードサンプルを実行します。

## コードサンプル
<a name="pkcs11-v3-samples-code"></a>

PKCS\$111 用 AWS CloudHSM ソフトウェアライブラリのコードサンプルは、[GitHub](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples) で入手できます。このリポジトリには、暗号化、復号化、署名、検証など、PKCS \$111 を使用して一般的な操作を行う方法の例が含まれています。
+ [キーの生成 (AES、RSA、EC)](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate)
+ [キー属性のリスト化](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/attributes/)
+ [AES GCM を使用したデータの暗号化および復号](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/encrypt/aes_gcm.c)
+ [AES\$1CTR を使用したデータの暗号化および復号](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/encrypt/aes_ctr.c) 
+ [3DES を使用したデータの暗号化および復号](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/encrypt/des_ecb.c) 
+ [RSAを使用したデータの署名と検証](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/sign/rsa_sign.c)
+ [HMAC KDFを使用したキーの取得](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/derivation/hmac_kdf.c)
+ [PKCS \$15 パディングありの AES を使用したキーのラップとラップ解除](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_wrapping.c)
+ [パディングなしの AES を使用したキーのラップとラップ解除](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_no_padding_wrapping.c)
+ [ゼロパディングありの AES を使用したキーのラップとラップ解除](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_zero_padding_wrapping.c)
+ [AES-GCM を使用したキーのラップとラップ解除](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/wrapping/aes_gcm_wrapping.c)
+ [RSA を使用したキーのラップとラップ解除](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/rsa_wrapping.c)