AWS CloudHSM Client SDK 3 支持的机制 - AWS CloudHSM

AWS CloudHSM Client SDK 3 支持的机制

PKCS #11 库对 AWS CloudHSM Client SDK 3 支持以下算法:

  • 加密和解密 - 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 密钥包装、4AES-GCM、RSA-AES 和 RSA-OAEP

  • 密钥派生 — ECDH、5SP800-108 CTR KDF

PKCS #11 库机制函数表

PKCS #11 库符合 2.40 版 PKCS #11 规格。要使用 PKCS#11 调用加密功能,请使用给定机制调用函数。下表汇总了 AWS CloudHSM 支持的函数和机制的组合。

解释支持的 PKCS #11 机制函数表

✔ 标记表示 AWS CloudHSM 支持该函数的机制。我们不支持 PKCS #11 规范中列出的所有可能的函数。✖ 标记表示 AWS CloudHSM 尚不支持给定函数的机制,即使 PKCS #11 标准允许该机制。空单元格表示 PKCS #11 标准不支持给定函数的机制。

支持的 PKCS #11 库机制和函数

机制

函数

 

生成密钥密钥对

签名和验证

SR 和 VR

摘要

加密和解密

派生密钥

包装和解开包装

CKM_RSA_PKCS_KEY_PAIR_GEN

 

 

 

 

 

 

CKM_RSA_X9_31_KEY_PAIR_GEN

2

 

 

 

 

 

 

CKM_RSA_X_509

 

 

 

 

 

CKM_RSA_PKCS请参阅备注 8

  1   1

 

1

CKM_RSA_PKCS_OAEP

 

 

 

 

1

 

6

CKM_SHA1_RSA_PKCS

 

3.2

 

 

 

 

 

CKM_SHA224_RSA_PKCS

 

3.2

 

 

 

 

 

CKM_SHA256_RSA_PKCS

 

3.2

 

 

 

 

 

CKM_SHA384_RSA_PKCS

 

2,3.2

 

 

 

 

 

CKM_SHA512_RSA_PKCS

 

3.2

 

 

 

 

 

CKM_RSA_PKCS_PSS

 

1

 

 

 

 

 

CKM_SHA1_RSA_PKCS_PSS

 

3.2

 

 

 

 

 

CKM_SHA224_RSA_PKCS_PSS

 

3.2

 

 

 

 

 

CKM_SHA256_RSA_PKCS_PSS

 

3.2

 

 

 

 

 

CKM_SHA384_RSA_PKCS_PSS

 

2,3.2

 

 

 

 

 

CKM_SHA512_RSA_PKCS_PSS

 

3.2

 

 

 

 

 

CKM_EC_KEY_PAIR_GEN

 

 

 

 

 

 

CKM_ECDSA

 

1

 

 

 

 

 

CKM_ECDSA_SHA1

 

3.2

 

 

 

 

 

CKM_ECDSA_SHA224

 

3.2

 

 

 

 

 

CKM_ECDSA_SHA256

 

3.2

 

 

 

 

 

CKM_ECDSA_SHA384

 

3.2

 

 

 

 

 

CKM_ECDSA_SHA512

 

3.2

 

 

 

 

 

CKM_ECDH1_DERIVE

 

 

 

 

 

5

 

CKM_SP800_108_COUNTER_KDF

 

 

 

 

 

 

CKM_GENERIC_SECRET_KEY_GEN

 

 

 

 

 

 

CKM_AES_KEY_GEN

 

 

 

 

 

 

CKM_AES_ECB

 

 

 

 

 

CKM_AES_CTR

 

 

 

 

 

CKM_AES_CBC

 

 

 

 

3.3

 

CKM_AES_CBC_PAD

 

 

 

 

 

CKM_DES3_KEY_GEN 请参阅备注 8

 

 

 

 

 

 

CKM_DES3_CBC 请参阅备注 8

 

 

 

 

3.3

 

CKM_DES3_CBC_PAD 请参阅备注 8

 

 

 

 

 

CKM_DES3_ECB 请参阅备注 8

 

 

 

 

 

CKM_AES_GCM

 

 

 

 

3.3, 4

 

7.1

CKM_CLOUDHSM_AES_GCM

 

 

 

 

7.1

 

7.1

CKM_SHA_1

 

 

 

3.1

 

 

 

CKM_SHA_1_HMAC

 

3.3

 

 

 

 

 

CKM_SHA224

 

 

 

3.1

 

 

 

CKM_SHA224_HMAC

 

3.3

 

 

 

 

 

CKM_SHA256

 

 

 

3.1

 

 

 

CKM_SHA256_HMAC

 

3.3

 

 

 

 

 

CKM_SHA384

 

 

 

3.1

 

 

 

CKM_SHA384_HMAC

 

3.3

 

 

 

 

 

CKM_SHA512

 

 

 

3.1

 

 

 

CKM_SHA512_HMAC

 

3.3

 

 

 

 

 

CKM_RSA_AES_KEY_WRAP

 

 

 

 

 

 

CKM_AES_KEY_WRAP

 

 

 

 

 

 

CKM_AES_KEY_WRAP_PAD

 

 

 

 

 

 

CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD

 

 

 

 

 

 

7.1

CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD

 

 

 

 

 

 

7.1

CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD

 

 

 

 

 

 

7.1

机制注释

  • [1] 仅限单部分操作。

  • [2] 机制的功能与 p 机制相同,但为生成 CKM_RSA_PKCS_KEY_PAIR_GENq 提供了更强有力的保证。

  • [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_TYPECK_RSA_PKCS_MGF_TYPE 出于 CKM_RSA_PKCS_OAEP 作为 CK_RSA_PKCS_OAEP_PARAMS 受到支持:

    • 使用 CKG_MGF1_SHA1CKM_SHA_1

    • 使用 CKG_MGF1_SHA224CKM_SHA224

    • 使用 CKG_MGF1_SHA256CKM_SHA256

    • 使用 CKM_MGF1_SHA384CKM_SHA384

    • 使用 CKM_MGF1_SHA512CKM_SHA512

  • [7.1] 供应商定义的机制。为了使用 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_DecryptC_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 年机制弃用