

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

# AWS CloudHSM 客户端 SDK 3 使用 pkpspeed 工具验证 HSM 性能
<a name="troubleshooting-verify-hsm-performance"></a>

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

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

 有关在 Linux EC2 实例上安装此客户端的更多信息，请参见[安装和配置适用于 CMU (Linux) 的 AWS CloudHSM 客户端](cmu-install-and-configure-client-linux.md)。有关在 Windows 实例上安装此客户端的更多信息，请参见[为 CMU 安装和配置 AWS CloudHSM 客户端 (Windows)](cmu-install-and-configure-client-win.md)。

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

## 测试建议
<a name="w2aac37c11c17"></a>
+ 要测试 RSA 签名和验证操作的性能，请在 Linux 中选择 `RSA_CRT` 密码或在 Windows 中选择选项 B。请勿选择 `RSA`（Windows 中为选项 A）。虽然密码是等效的，但 `RSA_CRT` 已针对性能进行优化。
+ 从少量线程开始。对于 AES 性能测试，一个线程通常足以显示最高性能。对于 RSA 性能测试 (`RSA_CRT`)，三个或四个线程通常已足够。

## pkpspeed 工具的配置选项
<a name="w2aac37c11c19"></a>
+ **FIPS 模式**：始终 AWS CloudHSM 处于 FIPS 模式（有关详细信息，[AWS CloudHSM FAQs](https://aws.amazon.com/cloudhsm/faqs/)请参阅）。这可以通过使用 AWS CloudHSM 用户指南中记录的 CLI 工具并运行指示 FIPS 模式状态的** [使用 CMU 获取 AWS CloudHSM 集群中每个 HSM 的硬件信息](cloudhsm_mgmt_util-getHSMInfo.md) **命令来验证。
+ **测试类型（分块与非分块）**：这指定了如何以线程方式执行操作。非分块方式的数值结果更佳。原因是它们利用线程和并发性。
+ **线程数**：用于测试运行的线程数。
+ **运行测试时间（以秒为单位）(最大 = 600)**：pkpspeed 生成以 “操作/秒” 为单位测量的结果，并在测试运行的每秒钟报告此值。例如，如果测试运行了 5 秒，则可能输出类似以下示例值：
  + `OPERATIONS/second 821/1`
  + `OPERATIONS/second 833/1`
  + `OPERATIONS/second 845/1`
  + `OPERATIONS/second 835/1`
  + `OPERATIONS/second 837/1`

## 可通过 pkpspeed 工具运行的测试
<a name="w2aac37c11c21"></a>
+ **AES GCM**：测试 AES GCM 模式加密。
+ **基本 3DES CBC**：测试 3DES CBC 模式加密。有关即将发生的更改，请参阅下面的注释 [1](#verify-hsm-performance-note-1)。
+ **基本 AES**：测试 AES CBC/ECB 加密。
+ **摘要**：测试哈希摘要。
+ **ECDSA 签名**：测试 ECDSA 签名。
+ **ECDSA 验证**：测试 ECDSA 验证。
+ **FIPS Random**：测试符合 FIPS 的随机数的生成（注意：这只能在分块模式下使用）。
+ **HMAC**：测试 HMAC。
+ **Random**：此测试无关紧要，因为我们使用的是 FIPS 140-2 HSM。
+ **RSA 非 CRT 与 RSA\$1CRT**：测试 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 年机制弃用](compliance-dep-notif.md#compliance-dep-notif-1)。

## 示例
<a name="w2aac37c11c23"></a>

以下示例显示了可选择与 pkpspeed (Linux) 或 pkpspeed\$1blocking (Windows) 一起用于测试 RSA 和 AES 操作的 HSM 性能的选项。

**Example – 使用 pkpspeed 测试 RSA 性能**  
您可以在 Windows、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
```

```
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/
```

**Example – 使用 pkpspeed 测试 AES 性能**  
对 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...
```

```
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/...
```