AWS CloudHSM Client SDK 3 支持的机制
PKCS #11 库对 AWS CloudHSM Client SDK 3 支持以下算法:
PKCS #11 库机制函数表
PKCS #11 库符合 2.40 版 PKCS #11 规格。要使用 PKCS#11 调用加密功能,请使用给定机制调用函数。下表汇总了 AWS CloudHSM 支持的函数和机制的组合。
解释支持的 PKCS #11 机制函数表
✔ 标记表示 AWS CloudHSM 支持该函数的机制。我们不支持 PKCS #11 规范中列出的所有可能的函数。✖ 标记表示 AWS CloudHSM 尚不支持给定函数的机制,即使 PKCS #11 标准允许该机制。空单元格表示 PKCS #11 标准不支持给定函数的机制。
机制 |
函数 |
||||||
---|---|---|---|---|---|---|---|
|
生成密钥或密钥对 |
签名和验证 |
SR 和 VR |
摘要 |
加密和解密 |
派生密钥 |
包装和解开包装 |
|
✔ |
|
|
|
|
|
|
|
✔2 |
|
|
|
|
|
|
|
|
✔ |
|
|
✔ |
|
|
|
✔1 | ✖ | ✔1 |
|
✔1 | ||
|
|
|
|
|
✔1 |
|
✔6 |
|
|
✔3.2 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
✔1 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
✔ |
|
|
|
|
|
|
|
|
✔1 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
✔3.2 |
|
|
|
|
|
|
|
|
|
|
|
✔5 |
|
|
|
|
|
|
|
✔ |
|
|
✔ |
|
|
|
|
|
|
|
✔ |
|
|
|
|
|
|
|
|
|
|
|
✔ |
|
✖ |
|
|
|
|
|
✔ |
|
✖ |
|
|
|
|
|
✔3.3 |
|
✖ |
|
|
|
|
|
✔ |
|
✖ |
|
✔ |
|
|
|
|
|
|
|
|
|
|
|
✔3.3 |
|
✖ |
|
|
|
|
|
✔ |
|
✖ |
|
|
|
|
|
✔ |
|
✖ |
|
|
|
|
|
|
✔7.1 |
|
|
|
|
|
|
✔7.1 |
|
✔7.1 |
|
|
|
|
✔3.1 |
|
|
|
|
|
✔3.3 |
|
|
|
|
|
|
|
|
|
✔3.1 |
|
|
|
|
|
✔3.3 |
|
|
|
|
|
|
|
|
|
✔3.1 |
|
|
|
|
|
✔3.3 |
|
|
|
|
|
|
|
|
|
✔3.1 |
|
|
|
|
|
✔3.3 |
|
|
|
|
|
|
|
|
|
✔3.1 |
|
|
|
|
|
✔3.3 |
|
|
|
|
|
|
|
|
|
|
|
|
✔ |
|
|
|
|
|
|
|
✔ |
|
|
|
|
|
|
|
✔ |
|
|
|
|
|
|
|
✔7.1 |
|
|
|
|
|
|
|
✔7.1 |
|
|
|
|
|
|
|
✔7.1 |
机制注释
-
[1] 仅限单部分操作。
-
[2] 机制的功能与
p
机制相同,但为生成CKM_RSA_PKCS_KEY_PAIR_GEN
和q
提供了更强有力的保证。 [3.1] 哈希 AWS CloudHSM 方法视客户端软件开发工具包的不同各异。对于客户端软件开发工具包 3,我们的哈希处理时机取决于数据大小以及您所用的是单个还是多个操作。
客户端软件开发工具包 3 中的单部分操作
表 3.1 列出了客户端软件开发工具包 3 的每种机制的最大数据集大小。整个哈希值均在 HSM 内部计算。不支持 16KB 以上的数据。
表 3.1:单部分操作的最大数据集大小 机制 最大数据大小 CKM_SHA_1
16296 CKM_SHA224
16264 CKM_SHA256
16296 CKM_SHA384
16232 CKM_SHA512
16232 多部分操作客户端软件开发工具包 3
支持 16KB 以上的数据,但是数据大小决定了哈希发生的位置。小于 16KB 的数据缓冲区在 HSM 内部进行哈希处理。对于系统中的 16KB 和最大数据大小之间的缓冲区,在软件中进行本地哈希处理。请切记:哈希函数不需要加密,因此您可以在 HSM 之外安全计算。
[3.2] 哈希 AWS CloudHSM 方法视客户端软件开发工具包的不同各异。对于客户端软件开发工具包 3,我们的哈希处理时机取决于数据大小以及您所用的是单个还是多个操作。
单部分操作客户端软件开发工具包 3
表 3.2 列出了客户端软件开发工具包 3 的每种机制的最大数据集大小。不支持 16KB 以上的数据。
表 3.2:单部分操作的最大数据集大小 机制 最大数据大小 CKM_SHA1_RSA_PKCS
16296 CKM_SHA224_RSA_PKCS
16264 CKM_SHA256_RSA_PKCS
16296 CKM_SHA384_RSA_PKCS
16232 CKM_SHA512_RSA_PKCS
16232 CKM_SHA1_RSA_PKCS_PSS
16296 CKM_SHA224_RSA_PKCS_PSS
16264 CKM_SHA256_RSA_PKCS_PSS
16296 CKM_SHA384_RSA_PKCS_PSS
16232 CKM_SHA512_RSA_PKCS_PSS
16232 CKM_ECDSA_SHA1
16296 CKM_ECDSA_SHA224
16264 CKM_ECDSA_SHA256
16296 CKM_ECDSA_SHA384
16232 CKM_ECDSA_SHA512
16232 多部分操作客户端软件开发工具包 3
支持 16KB 以上的数据,但是数据大小决定了哈希发生的位置。小于 16KB 的数据缓冲区在 HSM 内部进行哈希处理。对于系统中的 16KB 和最大数据大小之间的缓冲区,在软件中进行本地哈希处理。请切记:哈希函数不需要加密,因此您可以在 HSM 之外安全计算。
[3.3] 使用以下任何机制对数据进行操作时,如果数据缓冲区超出最大数据大小,则操作会导致错误。对此机制,所有数据处理均应在 HSM 内发生。下表列出了为每个机制设置的最大数据大小:
表 3.3:最大数据集大小 机制 最大数据大小 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 [4] 在执行 AES-GCM 加密时,HSM 不会接受应用程序中的初始化向量 (IV) 数据。您必须使用其生成的 IV。HSM 提供的 12 字节 IV 将写入您提供的
CK_GCM_PARAMS
参数结构的 pIV 元素所指向的内存参考。为了防止用户混淆,版本 1.1.1 及更高版本中的 PKCS #11 开发工具包将在初始化 AES-GCM 加密时确保该 pIV 指向已清零的缓冲区。-
[5] 仅客户端软件开发工具包 3。机制的实施旨在支持 SSL/TLS 卸载案例,只能在 HSM 内部分执行。使用此机制之前,请参阅 适用于 AWS CloudHSM 的 PKCS#11 库的已知问题 中的“问题:ECDH 密钥派生只能在 HSM 内部分执行”。
CKM_ECDH1_DERIVE
不支持 secp521r1 (P-521) 曲线。 [6] 以下
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
-
[7.1] 供应商定义的机制。为了使用 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 密钥包装有关其他 AES 密钥包装的其他信息,请参阅 AES 密钥包装。
[8] 根据 NIST 指导,2023 年以后处于 FIPS 模式的集群不允许这样做。对于处于非 FIPS 模式的集群,2023 年之后仍然允许。有关详细信息,请参阅 FIPS 140 合规:2024 年机制弃用。