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
メカニズムと似ていますが、p
とq
の生成に関してより強力な保証を提供します。 -
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
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 ソフトウェアライブラリでは、暗号化機能と復号化機能に次のメカニズムを使用できます。
キー機能の導出
PKCS #11 ライブラリの AWS CloudHSM ソフトウェアライブラリでは、派生関数に次のメカニズムを使用できます。
-
CKM_SP800_108_COUNTER_KDF
ラップ関数とアンラップ関数
PKCS #11 ライブラリの AWS CloudHSM ソフトウェアライブラリでは、ラップ関数とアンラップ機能に次のメカニズムを使用できます。
AES キーラップに関する追加情報については、[AES キーラップ] を参照してください。
各メカニズムの最大データサイズ
次の表は、各メカニズムに設定されている最大データサイズを示します:
メカニズム | 最大データサイズ(バイト単位) |
---|---|
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_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 #5 パディングを使用する 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 年 メカニズムの非推奨」を参照してください。