AWS CloudHSM クライアント SDK 5 用の PKCS #11 ライブラリでサポートされているメカニズム - AWS CloudHSM

AWS CloudHSM クライアント SDK 5 用の PKCS #11 ライブラリでサポートされているメカニズム

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

PKCS #11 ライブラリは、次のアルゴリズムをサポートしています。

  • [暗号化と復号化] 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] AES-GCM、RSA-AES、RSA-OAEP

キーとキーペアの関数を生成する

PKCS #11 ライブラリの AWS CloudHSM ソフトウェアライブラリでは、「キーとキーペアの関数を生成する」機能に以下のメカニズムを使用できます。

  • CKM_RSA_PKCS_KEY_PAIR_GEN

  • CKM_RSA_X9_31_KEY_PAIR_GEN – このメカニズムは機能的には CKM_RSA_PKCS_KEY_PAIR_GEN メカニズムと似ていますが、pq の生成に関してより強力な保証を提供します。

  • CKM_EC_KEY_PAIR_GEN

  • CKM_GENERIC_SECRET_KEY_GEN

  • CKM_AES_KEY_GEN

  • CKM_DES3_KEY_GEN— 今後の変更は脚注 5 に記載されています。

署名および検証

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

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

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_HMAC2

  • CKM_SHA224_HMAC2

  • CKM_SHA256_HMAC2

  • CKM_SHA384_HMAC2

  • CKM_SHA512_HMAC2

CMAC

  • CKM_AES_CMAC

リカバリ機能への署名、リカバリ、検証

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

ダイジェスト関数

PKCS #11 AWS CloudHSM ライブラリのソフトウェアライブラリでは、「ダイジェスト関数」機能に次のメカニズムを使用できます。クライアント SDK 5 では、データはソフトウェアでローカルにハッシュされます。つまり、SDK でハッシュできるデータのサイズに制限はありません。

  • CKM_SHA_1

  • CKM_SHA224

  • CKM_SHA256

  • CKM_SHA384

  • CKM_SHA512

暗号化と復号

PKCS #11 ライブラリの AWS CloudHSM ソフトウェアライブラリでは、暗号化機能と復号化機能に次のメカニズムを使用できます。

  • CKM_RSA_X_509

  • CKM_RSA_PKCS – シングルパートのオペレーションのみ。今後の変更は脚注 5 に記載されています。

  • CKM_RSA_PKCS_OAEP – シングルパートのオペレーションのみ。

  • CKM_AES_ECB

  • CKM_AES_CTR

  • CKM_AES_CBC

  • CKM_AES_CBC_PAD

  • CKM_DES3_CBC— 今後の変更は脚注 5 に記載されています。

  • CKM_DES3_ECB— 今後の変更は脚注 5 に記載されています。

  • CKM_DES3_CBC_PAD— 今後の変更は脚注 5 に記載されています。

  • CKM_AES_GCM 1, 2

  • CKM_CLOUDHSM_AES_GCM3

キー機能の導出

PKCS #11 ライブラリの AWS CloudHSM ソフトウェアライブラリでは、派生関数に次のメカニズムを使用できます。

  • CKM_SP800_108_COUNTER_KDF

ラップ関数とアンラップ関数

PKCS #11 ライブラリの AWS CloudHSM ソフトウェアライブラリでは、ラップ関数とアンラップ機能に次のメカニズムを使用できます。

AES キーラップに関する追加情報については、[AES キーラップ] を参照してください。

  • CKM_RSA_PKCS – シングルパートのオペレーションのみ。今後の変更は、脚注 5 に記載されています。

  • CKM_RSA_PKCS_OAEP4

  • CKM_AES_GCM1, 3

  • CKM_CLOUDHSM_AES_GCM3

  • CKM_RSA_AES_KEY_WRAP

  • CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD3

  • CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD3

  • CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD3

各メカニズムの最大データサイズ

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

最大データセットサイズ
メカニズム 最大データサイズ(バイト単位)
CKM_SHA_1_HMAC 16288
CKM_SHA224_HMAC 16256
CKM_SHA256_HMAC 16288
CKM_SHA384_HMAC 16224
CKM_SHA512_HMAC 16224
CKM_AES_CBC 16272
CKM_AES_GCM 16224
CKM_CLOUDHSM_AES_GCM 16224
CKM_DES3_CBC 16280

メカニズムの注釈

  • [1] AES-GCM の暗号化を実行している際、HSM はアプリケーションからの初期化ベクトル (IV) データを受け入れません。HSM が生成した IV を使用する必要があります。HSM で生成された 12 バイトの IV は、指定した CK_GCM_PARAMS パラメータ構造の pIV 要素が指すメモリ参照に書き込まれます。ユーザーが混乱しないよう、バージョン 1.1.1 以降の PKCS#11 SDK では、AES-GCM 暗号化が初期化されると、pIV はゼロ化されたバッファを指し示すようになっています。

  • [2] 以下の仕組みでデータをオペレーションする場合、データバッファが最大データサイズを超えるとオペレーションがエラーとなります。これらのメカニズムでは、すべてのデータ処理が HSM 内で行われる必要があります。各メカニズムの最大データサイズセットについては、「各メカニズムの最大データサイズ」を参照してください。

  • [3] ベンダー定義のメカニズム。CloudHSM ベンダー定義のメカニズムを使用するには、コンパイル時に PKCS #11 アプリケーションに /opt/cloudhsm/include/pkcs11t.h を含める必要があります。

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

    CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD: PKCS #5 パディングを使用する AES キーラップ。

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

  • [4] 次の CK_MECHANISM_TYPE および CK_RSA_PKCS_MGF_TYPE は、CK_RSA_PKCS_OAEP_PARAMSCKM_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 年 メカニズムの非推奨」を参照してください。