客户端软件开发工具包 3:使用 pkpspeed 工具验证 HSM 性能 - AWS CloudHSM

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

客户端软件开发工具包 3:使用 pkpspeed 工具验证 HSM 性能

本主题介绍如何使用客户端软件开发工具包 3 验证 HSM 性能。

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

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

安装和配置 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,并在 HSM 上指定加密用户 (CU) 的用户名和密码。然后设置要使用的选项,并考虑以下建议。

测试建议

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

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

pkpspeed 工具的配置选项

  • FIPS 模式:始终 AWS CloudHSM 处于 FIPS 模式(详情请参阅AWS CloudHSM 常见问题解答)。这可以通过使用 AWS CloudHSM 用户指南中记录的 CLI 工具并运行指示 FIPS 模式状态的 getHSMInfo 命令来验证。

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

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

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

    • OPERATIONS/second 821/1

    • OPERATIONS/second 833/1

    • OPERATIONS/second 845/1

    • OPERATIONS/second 835/1

    • OPERATIONS/second 837/1

可通过 pkpspeed 工具运行的测试

  • AES GCM:测试 AES GCM 模式加密。

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

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

  • 摘要:测试哈希摘要。

  • ECDSA 签名:测试 ECDSA 签名。

  • ECDSA 验证:测试 ECDSA 验证。

  • FIPS Random:测试符合 FIPS 的随机数的生成(注意:这只能在分块模式下使用)。

  • HMAC:测试 HMAC。

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

  • RSA 非 CRT 与 RSA_CRT:测试 RSA 签名并验证操作。

  • RSA OAEP Enc:测试 RSA OAEP 加密。

  • RSA OAEP 12 月:测试 RSA OAEP 解密。

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

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

  • RSA PSS 签名:测试 RSA PSS 签名。

  • RSA PSS 验证:测试 RSA PSS 验证。

  • 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) 一起用于测试 RSA 和 AES 操作的 HSM 性能的选项。

例 – 使用 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/...