

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

# AWS CloudHSM クライアント SDK 5 の PKCS \$111 ライブラリでサポートされているメカニズム
<a name="pkcs11-mechanisms"></a>

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

PKCS \$111 ライブラリは、次のアルゴリズムをサポートしています。
+ [**暗号化と復号化**] 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 キーラップ、[[1](#mech1)] AES-GCM、RSA-AES、RSA-OAEP
+ **キー導出** — SP800-108 Counter KDF、および KDF 付き ECDH (サポートされている KDF アルゴリズムは、X9.63 with SHA1、SHA224、SHA256、SHA384、SHA512 です)

**Topics**
+ [キーとキーペアの関数を生成する](#pkcs11-mech-function-genkey)
+ [署名および検証](#pkcs11-mech-function-signverify)
+ [リカバリ機能への署名、リカバリ、検証](#pkcs11-mech-function-sr-vr)
+ [ダイジェスト関数](#pkcs11-mech-function-digest)
+ [暗号化と復号](#pkcs11-mech-function-enc-dec)
+ [キー機能の導出](#pkcs11-mech-function-derive-key)
+ [ラップ関数とアンラップ関数](#pkcs11-mech-function-wrap-unwrap)
+ [各メカニズムの最大データサイズ](#pkcs11-mech-max)
+ [メカニズムの注釈](#pkcs11-mech-annotations)

## キーとキーペアの関数を生成する
<a name="pkcs11-mech-function-genkey"></a>

PKCS \$111 ライブラリ用の AWS CloudHSM ソフトウェアライブラリを使用すると、キーとキーペアの生成関数に次のメカニズムを使用できます。
+ `CKM_RSA_PKCS_KEY_PAIR_GEN`
+ `CKM_RSA_X9_31_KEY_PAIR_GEN` – このメカニズムは機能的には `CKM_RSA_PKCS_KEY_PAIR_GEN` メカニズムと似ていますが、`p` と `q` の生成に関してより強力な保証を提供します。
+ `CKM_EC_KEY_PAIR_GEN`
+ `CKM_GENERIC_SECRET_KEY_GEN`
+ `CKM_AES_KEY_GEN`
+ `CKM_DES3_KEY_GEN`— 今後の変更は脚注 [5](#mech5) に記載されています。

## 署名および検証
<a name="pkcs11-mech-function-signverify"></a>

PKCS \$111 ライブラリ用の AWS CloudHSM ソフトウェアライブラリを使用すると、署名および検証関数に次のメカニズムを使用できます。クライアント SDK 5 では、データはソフトウェアでローカルにハッシュされます。つまり、SDK でハッシュできるデータのサイズに制限はありません。

クライアント SDK 5 では、RSA と ECDSA のハッシュはローカルで行われるため、データ制限はありません。HMAC にはデータ制限があります。詳細については、脚注 [2](#mech2) を参照してください。

**RSA**
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS` – シングルパートのオペレーションのみ。
+ `CKM_RSA_PKCS_PSS` – シングルパートのオペレーションのみ。
+ `CKM_SHA1_RSA_PKCS`
+ `CKM_SHA224_RSA_PKCS`
+ `CKM_SHA256_RSA_PKCS`
+ `CKM_SHA384_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA1_RSA_PKCS_PSS`
+ `CKM_SHA224_RSA_PKCS_PSS`
+ `CKM_SHA256_RSA_PKCS_PSS`
+ `CKM_SHA384_RSA_PKCS_PSS`
+ `CKM_SHA512_RSA_PKCS_PSS`

**ECDSA**
+ `CKM_ECDSA` – シングルパートのオペレーションのみ。
+ `CKM_ECDSA_SHA1`
+ `CKM_ECDSA_SHA224`
+ `CKM_ECDSA_SHA256`
+ `CKM_ECDSA_SHA384`
+ `CKM_ECDSA_SHA512`

**HMAC**
+ `CKM_SHA_1_HMAC`[2](#mech2)
+ `CKM_SHA224_HMAC`[2](#mech2)
+ `CKM_SHA256_HMAC`[2](#mech2)
+ `CKM_SHA384_HMAC`[2](#mech2)
+ `CKM_SHA512_HMAC`[2](#mech2)

**CMAC**
+ `CKM_AES_CMAC`

## リカバリ機能への署名、リカバリ、検証
<a name="pkcs11-mech-function-sr-vr"></a>

クライアント SDK 5 は、署名と復号機能をサポートしていません。

## ダイジェスト関数
<a name="pkcs11-mech-function-digest"></a>

PKCS \$111 ライブラリ用の AWS CloudHSM ソフトウェアライブラリを使用すると、ダイジェスト関数に次のメカニズムを使用できます。クライアント SDK 5 では、データはソフトウェアでローカルにハッシュされます。つまり、SDK でハッシュできるデータのサイズに制限はありません。
+ `CKM_SHA_1`
+ `CKM_SHA224`
+ `CKM_SHA256`
+ `CKM_SHA384`
+ `CKM_SHA512`

## 暗号化と復号
<a name="pkcs11-mech-function-enc-dec"></a>

PKCS \$111 ライブラリ用の AWS CloudHSM ソフトウェアライブラリを使用すると、暗号化および復号関数に次のメカニズムを使用できます。
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS` – シングルパートのオペレーションのみ。今後の変更は脚注 [5](#mech5) に記載されています。
+ `CKM_RSA_PKCS_OAEP` – シングルパートのオペレーションのみ。
+ `CKM_AES_ECB`
+ `CKM_AES_CTR`
+ `CKM_AES_CBC`
+ `CKM_AES_CBC_PAD`
+ `CKM_DES3_CBC`— 今後の変更は脚注 [5](#mech5) に記載されています。
+ `CKM_DES3_ECB`— 今後の変更は脚注 [5](#mech5) に記載されています。
+ `CKM_DES3_CBC_PAD`— 今後の変更は脚注 [5](#mech5) に記載されています。
+  `CKM_AES_GCM` [1](#mech1), [2](#mech2)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)

## キー機能の導出
<a name="pkcs11-mech-function-derive-key"></a>

PKCS \$111 ライブラリ用の AWS CloudHSM ソフトウェアライブラリは、次のキー取得メカニズムをサポートしています。
+ `CKM_SP800_108_COUNTER_KDF`
+ `CKM_ECDH1_DERIVE` - 次のベンダー定義の KDF タイプを使用した ECDH キー導出をサポートします[6](#kdf6)。
  + `CKD_CLOUDHSM_X963_SHA1_KDF` - X9.63 KDF with SHA1[7](#kdf7)
  + `CKD_CLOUDHSM_X963_SHA224_KDF` - X9.63 KDF with SHA224[7](#kdf7)
  + `CKD_CLOUDHSM_X963_SHA256_KDF` - X9.63 KDF with SHA256[7](#kdf7)
  + `CKD_CLOUDHSM_X963_SHA384_KDF` - X9.63 KDF with SHA384[7](#kdf7)
  + `CKD_CLOUDHSM_X963_SHA512_KDF` - X9.63 KDF with SHA512[7](#kdf7)

## ラップ関数とアンラップ関数
<a name="pkcs11-mech-function-wrap-unwrap"></a>

PKCS \$111 ライブラリ用の AWS CloudHSM ソフトウェアライブラリを使用すると、ラップ関数とラップ解除関数に次のメカニズムを使用できます。

AES キーラップに関する追加情報については、[[AES キーラップ](manage-aes-key-wrapping.md)] を参照してください。
+ `CKM_RSA_PKCS` – シングルパートのオペレーションのみ。今後の変更は、脚注 [5](#mech5) に記載されています。
+ `CKM_RSA_PKCS_OAEP`[4](#mech4)
+ `CKM_AES_GCM`[1](#mech1), [3](#mech3)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)
+ `CKM_RSA_AES_KEY_WRAP`
+ `CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`[3](#mech3)

## 各メカニズムの最大データサイズ
<a name="pkcs11-mech-max"></a>

次の表は、各メカニズムに設定されている最大データサイズを示します: 


**最大データセットサイズ**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/pkcs11-mechanisms.html)

## メカニズムの注釈
<a name="pkcs11-mech-annotations"></a>
+ [1] AES-GCM の暗号化を実行している際、HSM はアプリケーションからの初期化ベクトル (IV) データを受け入れません。HSM が生成した IV を使用する必要があります。HSM で生成された 12 バイトの IV は、指定した `CK_GCM_PARAMS` パラメータ構造の pIV 要素が指すメモリ参照に書き込まれます。ユーザーが混乱しないよう、バージョン 1.1.1 以降の PKCS\$111 SDK では、AES-GCM 暗号化が初期化されると、pIV はゼロ化されたバッファを指し示すようになっています。
+ [2] 以下の仕組みでデータをオペレーションする場合、データバッファが最大データサイズを超えるとオペレーションがエラーとなります。これらのメカニズムでは、すべてのデータ処理が HSM 内で行われる必要があります。各メカニズムの最大データサイズセットについては、「[各メカニズムの最大データサイズ](#pkcs11-mech-max)」を参照してください。
+ [3] ベンダー定義のメカニズム。CloudHSM ベンダー定義のメカニズムを使用するには、コンパイル時に PKCS \$111 アプリケーションに `/opt/cloudhsm/include/pkcs11/pkcs11t.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 キーラップ。
+ [4] 次の `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`
+ [5] NIST ガイダンスに従い、2023 年以降の FIPS モードのクラスターでは、これは許可されません。FIPS 以外のモードのクラスターでは、2023 年以降も許可されます。詳細については、「[FIPS 140 コンプライアンス: 2024 年 メカニズムの非推奨](compliance-dep-notif.md#compliance-dep-notif-1)」を参照してください。
+ [6] ベンダー定義タイプ。CloudHSM ベンダー定義タイプを使用するには、コンパイル時に PKCS \$111 アプリケーションに `cloudhsm_pkcs11_vendor_defs.h` を含める必要があります。これは、Linux ベースのプラットフォームでは `/opt/cloudhsm/include/pkcs11/cloudhsm_pkcs11_vendor_defs.h` に、Windows ベースのプラットフォームでは `C:\Program Files\Amazon\CloudHSM\include\pkcs11\cloudhsm_pkcs11_vendor_defs.h` にあります。
+ [7] キー取得関数 (KDFs) は [NIST Special Publication 800-56A Revision 3 ](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf)で指定されています。