本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
PKCS #11 库支持的机制 AWS CloudHSM 客户端软件开发工具包 5
PKCS #11 库符合 2.40 版 PKCS #11 规格。要使用 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(带和不带哈希值)、eDDSA(Ed25519 和 ed25519pH)以及(使用纯和外部 mu 模式) ML-DSA
-
Hash/digest— SHA1、SHA224、SHA256、SHA384 和 SHA512
-
密钥包装 — AES 密钥包装1 AES-GCM RSA-AES、、和 RSA-OAEP
-
密钥推导 — 使用 KDF 进行 SP800-108 计数 KDF 和 ECDH(支持的 X9.63 KDF 算法适用于 SHA1、SHA224、SHA256、SHA384、SHA512)
生成密钥与密钥对功能
PKCS #11 库的 AWS CloudHSM 软件库允许您使用以下机制来生成密钥和密钥对功能。
签署并验证功能
PKCS #11 库的 AWS CloudHSM 软件库允许您使用以下机制来执行签名和验证功能。通过客户端软件开发工具包 5,数据将在软件中进行本地哈希处理。这意味着可由 SDK 执行哈希处理的数据大小没有限制。
通过客户端软件开发工具包 5 RSA 和 ECDSA,哈希处理在本地执行,无数据限制。使用 HMAC 和 PureEd DSA (Ed25519) 时,存在数据限制。有关更多信息,请参阅脚注 2。
RSA
CKM_RSA_X_509CKM_RSA_PKCS– 仅限单部分操作。CKM_RSA_PKCS_PSS– 仅限单部分操作。CKM_SHA1_RSA_PKCSCKM_SHA224_RSA_PKCSCKM_SHA256_RSA_PKCSCKM_SHA384_RSA_PKCSCKM_SHA512_RSA_PKCSCKM_SHA512_RSA_PKCSCKM_SHA1_RSA_PKCS_PSSCKM_SHA224_RSA_PKCS_PSSCKM_SHA256_RSA_PKCS_PSSCKM_SHA384_RSA_PKCS_PSSCKM_SHA512_RSA_PKCS_PSS
ECDSA
CKM_ECDSA– 仅限单部分操作。CKM_ECDSA_SHA1CKM_ECDSA_SHA224CKM_ECDSA_SHA256CKM_ECDSA_SHA384CKM_ECDSA_SHA512
ML-DSA
EddSA
CMAC
CKM_AES_CMAC
签名、恢复和验证恢复功能
客户端软件开发工具包 5 不支持 “签名恢复” 和 “验证恢复” 功能。
摘要功能
PKCS #11 库的 AWS CloudHSM 软件库允许您将以下机制用于摘要函数。通过客户端软件开发工具包 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 -
CKM_ECDH1_DERIVE– 支持使用以下供应商定义的 KDF 类型派生 ECDH 密钥6:
包装和解包功能
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 |
CKM_CLOUDHSM_EDDSA(PureEdDSA,空参数) |
16000 |
机制注释
[1] 执行 AES-GCM 加密时,HSM 不接受来自应用程序的初始化向量 (IV) 数据。您必须使用其生成的 IV。HSM 提供的 12 字节 IV 将写入您提供的
CK_GCM_PARAMS参数结构的 pIV 元素所指向的内存参考。为防止用户混淆,1.1.1 及更高版本中的 PKCS #11 SDK 确保 PiV 在初始化加密时指向已归零的缓冲区。 AES-GCM[2] 使用以下任何机制对数据进行操作时,如果数据缓冲区超出最大数据大小,则操作会导致错误。对此机制,所有数据处理均应在 HSM 内发生。有关每种机制的最大数据大小集的信息,请参阅 每种机制的最大数据大小。
-
[3] Vendor-defined 机制。为了使用 CloudHSM 供应商定义的机制,PKCS #11 应用程序必须在编译过程中包含
/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 #5 填充的 AES 密钥包装。CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD:零填充的 AES 密钥包装。CKM_CLOUDHSM_ML_DSA_KEY_PAIR_GEN:生成密 ML-DSA 钥对。使用CKA_CLOUDHSM_PARAMETER_SET属性(类型CK_CLOUDHSM_ML_DSA_PARAMETER_SET_TYPE)指定参数集。有效值:CKP_CLOUDHSM_ML_DSA_44、CKP_CLOUDHSM_ML_DSA_65、CKP_CLOUDHSM_ML_DSA_87。CKM_CLOUDHSM_ML_DSA: 纯粹的 ML-DSA 签名和验证。使用 ML-DSA 密钥对签署或验证原始数据。CKM_CLOUDHSM_EXT_MU_ML_DSA: 使用外部 mu 进行 ML-DSA 签名和验证。对已预处理为外部 mu 值的数据进行签名或验证。CKM_CLOUDHSM_EDDSA: eDDSA 签名机制。使用空参数时: PureEdDSA (Ed25519),仅限单部分,最大 16,000 字节。带有CK_EDDSA_PARAMS(phFlag = CK_TRUE,ulContextDataLen = 0): ed25519pH,单部分和多部件,没有尺寸限制。该CK_EDDSA_PARAMS结构遵循 PKCS #11 v3.0 规范。 [4] 以下
CK_MECHANISM_TYPE和CK_RSA_PKCS_MGF_TYPE出于CKM_RSA_PKCS_OAEP作为CK_RSA_PKCS_OAEP_PARAMS受到支持:-
使用
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 年机制弃用。
[6] 供应商定义的类型。为了使用 CloudHSM 供应商定义的类型,PKCS #11 应用程序必须在编译过程中包含
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] 仅支持非 FIPS 模式下的 hsm2m.medium 实例。
[8] 密钥推导函数 (KDF) 在 NIST 特别出版物 800-56A 修订版 3 中进行了规定。