

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 的 PKCS \$111 程式庫已知問題 AWS CloudHSM
<a name="ki-pkcs11-sdk"></a>

下列問題會影響 PKCS \$111 程式庫 AWS CloudHSM。

**Topics**
+ [問題：PKCS \$111 程式庫 3.0.0 版中的 AES 金鑰包裝不會在使用前驗證 IV。](#ki-pkcs11-1)
+ [問題：PKCS \$111 SDK 2.0.4 和先前的版本一律會針對 AES 金鑰包裝和取消包裝使用 `0xA6A6A6A6A6A6A6A6` 預設 IV。](#ki-pkcs11-2)
+ [問題：既未支援也未處理 `CKA_DERIVE` 屬性。](#ki-pkcs11-3)
+ [問題：既未支援也未處理 `CKA_SENSITIVE` 屬性。](#ki-pkcs11-4)
+ [問題：不支援分段雜湊和簽署。](#ki-pkcs11-5)
+ [問題：`C_GenerateKeyPair` 不是以符合標準的方式處理私有範本中的 `CKA_MODULUS_BITS` 或 `CKA_PUBLIC_EXPONENT`。](#ki-pkcs11-6)
+ [問題：使用 `CKM_AES_GCM` 機制時，`C_Encrypt` 和 `C_Decrypt` API 操作的緩衝區不能超過 16 KB。](#ki-pkcs11-8)
+ [問題：在 HSM 中橢圓曲線 Diffie-Hellman (ECDH) 金鑰衍生只會部分執行。](#ki-pkcs11-9)
+ [問題：在 CentOS6 和 RHEL 6 等 EL6 平台上驗證 secp256k1 簽章失敗](#ki-pkcs11-10)
+ [問題：不正確的函數調用序列會給出未定義的結果而不是失敗](#ki-pkcs11-11)
+ [問題：SDK 5 不支援唯讀工作階段](#ki-pkcs11-13)
+ [問題：`cryptoki.h` 標頭檔案僅限 Windows](#ki-pkcs11-14)

## 問題：PKCS \$111 程式庫 3.0.0 版中的 AES 金鑰包裝不會在使用前驗證 IV。
<a name="ki-pkcs11-1"></a>

如果您指定的 IV 長度小於 8 個位元組，便會在使用之前利用無法預測的位元組進行填補。

**注意**  
這只會影響包含 `CKM_AES_KEY_WRAP` 機制的 `C_WrapKey`。
+ **影響：**如果您在 PKCS \$111 程序庫 3.0.0 版中提供的 IV 長度小於 8 個位元組。您便可能無法取消包裝金鑰。
+ **因應措施：**
  + 我們強烈建議您升級到 PKCS \$111 程式庫 3.0.1 或更新版本，這些新版本會在 AES 金鑰包裝期間強制要求 IV 長度。修改您的包裝程式碼以傳遞 NULL IV，或是指定預設 IV `0xA6A6A6A6A6A6A6A6`。如需詳細資訊，請參閱 [AES 金鑰包裝的非合規長度自訂 IV](troubleshooting-aes-keys.md)。
  + 如果您已搭配長度小於 8 個位元組的 IV 使用 PKCS \$111 程式庫 3.0.0 包裝任何金鑰，請聯絡我們以取得[支援](https://aws.amazon.com/support)。
+ **解決狀態：**此問題已在 PKCS \$111 程式庫 3.0.1 中解決。如要使用 AES 金鑰包裝來包裝金鑰，請指定 NULL 或長度為 8 個位元組的 IV。

## 問題：PKCS \$111 SDK 2.0.4 和先前的版本一律會針對 AES 金鑰包裝和取消包裝使用 `0xA6A6A6A6A6A6A6A6` 預設 IV。
<a name="ki-pkcs11-2"></a>

使用者提供的 IV 會在無提示的情況下遭到忽略。

**注意**  
這只會影響包含 `CKM_AES_KEY_WRAP` 機制的 `C_WrapKey`。
+ **Impact: (影響：)** 
  + 如果您使用 PKCS \$111 程式庫 2.0.4 或先前版本及使用者提供的 IV，您的金鑰會使用預設 IV `0xA6A6A6A6A6A6A6A6` 進行包裝。
  + 如果您使用 PKCS \$111 程式庫 3.0.0 或更新版本及使用者提供的 IV，您的金鑰則會使用使用者提供的 IV 進行包裝。
+ **Workarounds: (因應措施：)**
  + 如要取消包裝使用 PKCS \$111 程式庫 2.0.4 或先前版本包裝的金鑰，請使用預設 IV `0xA6A6A6A6A6A6A6A6`。
  + 如要取消包裝使用 PKCS \$111 程式庫 3.0.0 及更新版本包裝的金鑰，請使用使用者提供的 IV。
+ **Resolution status: (解決狀態：)** 我們強烈建議您修改您的包裝和取消包裝程式碼，以傳遞 NULL IV，或是指定預設 IV `0xA6A6A6A6A6A6A6A6`。

## 問題：既未支援也未處理 `CKA_DERIVE` 屬性。
<a name="ki-pkcs11-3"></a>
+ **解決狀態：**我們已實作修正接受金鑰 `CKA_DERIVE` (如果設定為 `FALSE`)。在我們開始將金鑰衍生函數支援新增至 AWS CloudHSM前，不支援將 `CKA_DERIVE` 設定為 `TRUE`。您必須將用戶端和程式庫更新至 1.1.1 版或更高版本，才能受益於修正。

## 問題：既未支援也未處理 `CKA_SENSITIVE` 屬性。
<a name="ki-pkcs11-4"></a>
+ **解決狀態：**我們已實作可以接受和正確遵守 `CKA_SENSITIVE` 屬性的修正。您必須將用戶端和程式庫更新至 1.1.1 版或更高版本，才能受益於修正。

## 問題：不支援分段雜湊和簽署。
<a name="ki-pkcs11-5"></a>
+ **影響：**不會實作 `C_DigestUpdate` 和 `C_DigestFinal`。`C_SignFinal` 也不會實作，非 `NULL` 緩衝區會失敗並發生 `CKR_ARGUMENTS_BAD` 錯誤。
+ **解決方法：**在應用程式中雜湊您的資料，並 AWS CloudHSM 僅用於簽署雜湊。
+ **解決狀態：**我們正在進行修復，讓用戶端和程式庫能夠正確實作分段雜湊。更新會公告於 AWS CloudHSM 論壇和版本歷史頁面中。

## 問題：`C_GenerateKeyPair` 不是以符合標準的方式處理私有範本中的 `CKA_MODULUS_BITS` 或 `CKA_PUBLIC_EXPONENT`。
<a name="ki-pkcs11-6"></a>
+ **影響：**當私有範本包含 `CKA_MODULUS_BITS` 或 `CKA_PUBLIC_EXPONENT`，`C_GenerateKeyPair` 應該傳回 `CKA_TEMPLATE_INCONSISTENT`。但它反而產生私有金鑰，將所有使用欄位設為 `FALSE`。無法使用金鑰。
+ **因應措施：**建議您的應用程式除了錯誤碼，也檢查使用欄位值。
+ **解決狀態：**我們正在實作修正，讓系統在使用錯誤的私有金鑰範本時傳回適當的錯誤訊息。會在版本歷史頁面中公告更新的 PKCS \$111 程式庫。

## 問題：使用 `CKM_AES_GCM` 機制時，`C_Encrypt` 和 `C_Decrypt` API 操作的緩衝區不能超過 16 KB。
<a name="ki-pkcs11-8"></a>

AWS CloudHSM 不支援分段 AES-GCM 加密。
+ **影響：**您不能使用 `CKM_AES_GCM` 機制來加密大於 16 KB 的資料。
+ **解決方法：**您可以使用替代機制，例如 `CKM_AES_CBC`、 `CKM_AES_CBC_PAD`或 ，您可以將資料分成數個部分，並使用`AES_GCM`個別方式加密每個部分。如果您使用的是 `AES_GCM`，則必須管理資料的分割和後續加密。 AWS CloudHSM 不會為您執行分段 AES-GCM 加密。請注意，FIPS 要求在 HSM 上`AES-GCM`產生 的初始化向量 (IV)。因此，AES-GCM 加密資料之每個片段的 IV 都不同。
+ **解決狀態：**我們正在進行修復，讓程式庫在資料緩衝區過大時明確失敗。我們會針對 `C_EncryptUpdate` 和 `C_DecryptUpdate` API 操作傳回 `CKR_MECHANISM_INVALID`。我們正在評估支援較大緩衝區、而不需要仰賴分段加密的替代做法。更新將在 AWS CloudHSM 論壇和版本歷史記錄頁面上宣布。

## 問題：在 HSM 中橢圓曲線 Diffie-Hellman (ECDH) 金鑰衍生只會部分執行。
<a name="ki-pkcs11-9"></a>

您的 EC 私有金鑰仍一律保留在 HSM 中，但金鑰衍生程序會分成多個步驟執行。因此，在用戶端會有每個步驟產生的中繼結果。
+ **影響：**在用戶端 SDK 3 中，使用 `CKM_ECDH1_DERIVE`機制衍生的金鑰首先可在用戶端上使用，然後匯入 HSM。然後將金鑰控制代碼傳回給到您的應用程式。
+ **因應措施：**如果您在 AWS CloudHSM中實作 SSL/TLS 卸載，此限制可能不是問題。如果您的應用程式要求金鑰需隨時符合 FIPS，請考慮使用其他不倚賴 ECDH 金鑰衍生的通訊協定。
+ **解決狀態： **SDK 5.16 現在支援具有金鑰衍生的 ECDH，完全在 HSM 內執行。

## 問題：在 CentOS6 和 RHEL 6 等 EL6 平台上驗證 secp256k1 簽章失敗
<a name="ki-pkcs11-10"></a>

 這是因為 CloudHSM PKCS\$111 程式庫會使用 OpenSSL 來驗證 EC 曲線資料，藉此避免在驗證操作初始化期間進行網路呼叫。由於 EL6 平台上的預設 OpenSSL 套件並不支援 Secp256k1，初始化作業會失敗。
+ **影響：**無法在 EL6 平台上進行 Secp256k1 簽章驗證，驗證呼叫會失敗並出現 `CKR_HOST_MEMORY` 錯誤。
+ **因應措施：**若 PKCS\$111 應用程式需要驗證 secp256k1 簽章，則建議使用 Amazon Linux 1 或任何 EL7 平台。或者，您可將 OpenSSL 套件升級至支援 secp256k1 曲線的版本。
+ **解決狀態：**我們正在實作修正，以便在無法驗證本機曲線的情況下切換回 HSM。[版本歷史記錄](client-history.md)頁面中會公告更新的 PKCS\$111 程式庫。

## 問題：不正確的函數調用序列會給出未定義的結果而不是失敗
<a name="ki-pkcs11-11"></a>
+ **影響**：如果您調用不正確的函數序列，即使個別函數調用傳回成功，最終結果也不正確。例如，解密的資料可能與原始純文本不匹配，否則簽名可能無法驗證。此問題會影響單一和多部分作業。

  函數序列不正確的範例：
  + `C_EncryptInit`/`C_EncryptUpdate` 後跟 `C_Encrypt`
  + `C_DecryptInit`/`C_DecryptUpdate` 後跟 `C_Decrypt`
  + `C_SignInit`/`C_SignUpdate` 後跟 `C_Sign`
  + `C_VerifyInit`/`C_VerifyUpdate` 後跟 `C_Verify`
  + `C_FindObjectsInit` 後跟 `C_FindObjectsInit`
+  **因應措施**：您的應用程式應在符合 PKCS \$111 規格的情況下，針對單一和多部分作業使用正確的函數調用順序。在此情況下，您的應用程式不應該依賴 CloudHSM PKCS \$111 程式庫來傳回錯誤。

## 問題：SDK 5 不支援唯讀工作階段
<a name="ki-pkcs11-13"></a>
+ **問題：**`C_OpenSession` 的 SDK 5 不支援使用開啟唯讀工作階段。
+ **影響：**如果您嘗試在未提供的 `CKF_RW_SESSION` 情況下調用 `C_OpenSession`，調用將失敗並顯示錯誤 `CKR_FUNCTION_FAILED`。
+ **因應措施：**開啟工作階段時，您必須將 `CKF_SERIAL_SESSION | CKF_RW_SESSION` 旗標傳遞至 `C_OpenSession` 函數調用。

## 問題：`cryptoki.h` 標頭檔案僅限 Windows
<a name="ki-pkcs11-14"></a>
+ **問題：**使用 Linux 上的 AWS CloudHSM 用戶端 SDK 5 5.0.0 到 5.4.0 版，標頭檔案`/opt/cloudhsm/include/pkcs11/cryptoki.h`僅與 Windows 作業系統相容。
+ **影響：**嘗試在 Linux 作業系統的應用程式中包含此標頭檔案時，可能會遇到問題。
+ **解決狀態：**升級至 AWS CloudHSM 用戶端 SDK 5 5.4.1 版或更新版本，其中包含此標頭檔案的 Linux 相容版本。