适用于 AWS CloudHSM Client SDK 5 的 PKCS #11 库支持的机制
PKCS #11 库符合 2.40 版 PKCS #11 规格。要使用 PKCS#11 调用加密功能,请使用给定机制调用函数。以下各节汇总了 AWS CloudHSM Client 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 软件库可用于通过以下机制获取签名和验证功能。通过客户端软件开发工具包 5,数据将在软件中进行本地哈希处理。这意味着可由 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
签名、恢复和验证恢复功能
客户端软件开发工具包 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
包装和解包功能
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) 数据。您必须使用其生成的 IV。HSM 提供的 12 字节 IV 将写入您提供的
CK_GCM_PARAMS
参数结构的 pIV 元素所指向的内存参考。为了防止用户混淆,版本 1.1.1 及更高版本中的 PKCS #11 开发工具包将在初始化 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
出于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 年机制弃用。