AWS CloudHSM 客户端 SDK 3 使用 pkpspeed 工具验证HSM性能 - AWS CloudHSM

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS CloudHSM 客户端 SDK 3 使用 pkpspeed 工具验证HSM性能

本主题介绍如何使用客户端 SDK 3 验证 AWS CloudHSM 硬件安全模块 (HSM) 的性能。

要验证 AWS CloudHSM 集群HSMs中的性能,您可以使用客户端 3 附带的 pkpspeed (Linux) 或 pkpspeed_blocking (Windows) 工具。SDKpkpspeed 工具在理想条件下执行并直接调用HSM以执行操作,而无需执行诸如。SDK PKCS11我们建议对您的应用程序进行独立负载测试,以确定自己的扩展需求。我们不建议运行以下测试:随机 (I)、 ModExp (R) 和 EC point mul (Y)。

有关在 Linux EC2 实例上安装客户端的更多信息,请参阅安装和配置适用于 CMU 的 AWS CloudHSM 客户端(Linux)。有关在 Windows 实例上安装此客户端的更多信息,请参见安装和配置适用于 CMU (Windows) 的 AWS CloudHSM 客户端

安装和配置 AWS CloudHSM 客户端后,运行以下命令将其启动。

Amazon Linux
$ sudo start cloudhsm-client
Amazon Linux 2
$ sudo service cloudhsm-client start
CentOS 7
$ sudo service cloudhsm-client start
CentOS 8
$ sudo service cloudhsm-client start
RHEL 7
$ sudo service cloudhsm-client start
RHEL 8
$ sudo service cloudhsm-client start
Ubuntu 16.04 LTS
$ sudo service cloudhsm-client start
Ubuntu 18.04 LTS
$ sudo service cloudhsm-client start
Windows
  • 对于 Windows 客户端 1.1.2 以上版本:

    C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient
  • 对于 Windows 客户端 1.1.1 及更低版本:

    C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg

如果您已安装此客户端软件,则可能需要下载并安装最新版本才能获得 pkpspeed。您可以在 Linux 中的 /opt/cloudhsm/bin/pkpspeed 或 Windows 中的 C:\Program Files\Amazon\CloudHSM\ 中找到 pkpspeed 工具。

要使用 pkpspeed,请运行pkpspeed命令或pkpspeed_blocking.exe,在上指定加密用户 (CU) 的用户名和密码。HSM然后设置要使用的选项,并考虑以下建议。

测试建议

  • 要测试RSA签名和验证操作的性能,请在 Linux 中选择RSA_CRT密码,或者在 Windows 中选择选项 B。请勿选择 RSA(Windows 中为选项 A)。虽然密码是等效的,但 RSA_CRT 已针对性能进行优化。

  • 从少量线程开始。为了测试AES性能,一个线程通常足以显示出最高性能。为了测试RSA性能 (RSA_CRT),通常三个或四个线程就足够了。

pkpspeed 工具的配置选项

  • FIPS模式:始终 AWS CloudHSM 处于FIPS模式(有关详细信息 AWS CloudHSM FAQs,请参阅)。这可以通过使用 AWS CloudHSM 用户指南中记录的CLI工具并运行指示FIPS模式状态的 使用 CMU 获取 AWS CloudHSM 集群中的每个 HSM 的硬件信息 命令来验证。

  • 测试类型(分块与非分块):这指定了如何以线程方式执行操作。非分块方式的数值结果更佳。原因是它们利用线程和并发性。

  • 线程数:用于测试运行的线程数。

  • 运行测试的时间(以秒为单位)(最大 = 600):pkpspeed 生成以 “OPERATIONS/秒” 为单位的结果,并在测试运行的每秒钟报告此值。例如,如果测试运行了 5 秒,则可能输出类似以下示例值:

    • OPERATIONS/second 821/1

    • OPERATIONS/second 833/1

    • OPERATIONS/second 845/1

    • OPERATIONS/second 835/1

    • OPERATIONS/second 837/1

可通过 pkpspeed 工具运行的测试

  • AESGCM: 测试AESGCM模式加密。

  • 基本 3 DES CBC:测试 3 DES CBC 模式加密。有关即将发生的更改,请参阅下面的注释 1

  • 基本 AES:测试 AESCBC/ECB加密。

  • 摘要:测试哈希摘要。

  • ECDSA标志:测试ECDSA标志。

  • ECDSA验证:测试ECDSA验证。

  • FIPS随机:测试FIPS符合条件的随机数的生成(注意:这只能在阻塞模式下使用)。

  • HMAC: 测试HMAC。

  • 随机:此测试无关紧要,因为我们使用的是 FIPS 140-2 HSM。

  • RSAnon-CRT vs RSA _ CRT:测试对操作进行RSA签名和验证。

  • RSAOAEPEnc:测试RSAOAEP加密。

  • RSAOAEP12 月:测试RSAOAEP解密。

  • RSAprivate dec 非-CRT:测试RSA私钥加密(未优化)。

  • RSA私钥 dec CRT:测试RSA私钥加密(已优化)。

  • RSAPSS标志:测试RSAPSS标志。

  • RSAPSS验证:测试RSAPSS验证。

  • RSA公钥 enc:测试RSA公钥加密。

RSA公钥加密、RSA私钥解密非CRT和RSA私钥解密CRT也会提示用户回答以下问题:

Do you want to use static key [y/n]

如果输入,y则会将预先计算的密钥导入到。HSM

如果输入 n,则会生成新密钥。

[1] 根据NIST指导,2023 年之后处于FIPS模式的集群不允许这样做。对于处于非FIPS模式的集群,2023 年之后仍允许使用。有关详细信息,请参阅FIPS 140 合规:2024 年机制弃用

示例

以下示例显示了你可以使用 pkpspeed (Linux) 或 pkpspeed_blocking (Windows) 选择的选项来测试和操作的HSM性能。RSA AES

例 — 使用 pkpspeed 来测试性能 RSA

您可以在 Windows、Linux 和兼容的操作系统上运行此示例。

Linux

对 Linux 和兼容的操作系统使用这些说明。

/opt/cloudhsm/bin/pkpspeed -s CU user name -p password SDK Version: 2.03 Available Ciphers: AES_128 AES_256 3DES RSA (non-CRT. modulus size can be 2048/3072) RSA_CRT (same as RSA) For RSA, Exponent will be 65537 Current FIPS mode is: 00002 Enter the number of thread [1-10]: 3 Enter the cipher: RSA_CRT Enter modulus length: 2048 Enter time duration in Secs: 60 Starting non-blocking speed test using data length of 245 bytes... [Test duration is 60 seconds] Do you want to use static key[y/n] (Make sure that KEK is available)?n
Windows
c:\Program Files\Amazon\CloudHSM>pkpspeed_blocking.exe -s CU user name -p password Please select the test you want to run RSA non-CRT------------------->A RSA CRT----------------------->B Basic 3DES CBC---------------->C Basic AES--------------------->D FIPS Random------------------->H Random------------------------>I AES GCM ---------------------->K eXit------------------------>X B Running 4 threads for 25 sec Enter mod size(2048/3072):2048 Do you want to use Token key[y/n]n Do you want to use static key[y/n] (Make sure that KEK is available)? n OPERATIONS/second 821/1 OPERATIONS/second 833/1 OPERATIONS/second 845/1 OPERATIONS/second 835/1 OPERATIONS/second 837/1 OPERATIONS/second 836/1 OPERATIONS/second 837/1 OPERATIONS/second 849/1 OPERATIONS/second 841/1 OPERATIONS/second 856/1 OPERATIONS/second 841/1 OPERATIONS/second 847/1 OPERATIONS/second 838/1 OPERATIONS/second 843/1 OPERATIONS/second 852/1 OPERATIONS/second 837/
例 — 使用 pkpspeed 来测试性能 AES
Linux

对 Linux 和兼容的操作系统使用这些说明。

/opt/cloudhsm/bin/pkpspeed -s <CU user name> -p <password> SDK Version: 2.03 Available Ciphers: AES_128 AES_256 3DES RSA (non-CRT. modulus size can be 2048/3072) RSA_CRT (same as RSA) For RSA, Exponent will be 65537 Current FIPS mode is: 00000002 Enter the number of thread [1-10]: 1 Enter the cipher: AES_256 Enter the data size [1-16200]: 8192 Enter time duration in Secs: 60 Starting non-blocking speed test using data length of 8192 bytes...
Windows
c:\Program Files\Amazon\CloudHSM>pkpspeed_blocking.exe -s CU user name -p password login as USER Initializing Cfm2 library SDK Version: 2.03 Current FIPS mode is: 00000002 Please enter the number of threads [MAX=400] : 1 Please enter the time in seconds to run the test [MAX=600]: 20 Please select the test you want to run RSA non-CRT------------------->A RSA CRT----------------------->B Basic 3DES CBC---------------->C Basic AES--------------------->D FIPS Random------------------->H Random------------------------>I AES GCM ---------------------->K eXit------------------------>X D Running 1 threads for 20 sec Enter the key size(128/192/256):256 Enter the size of the packet in bytes[1-16200]:8192 OPERATIONS/second 9/1 OPERATIONS/second 10/1 OPERATIONS/second 11/1 OPERATIONS/second 10/1 OPERATIONS/second 10/1 OPERATIONS/second 10/...