PKCS#11 程式庫的已知問題 - AWS CloudHSM

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

PKCS#11 程式庫的已知問題

問題:PKCS#11 程式庫 3.0.0 版中的AES金鑰換行在使用IVs前未驗證

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

注意

這只會影響包含 CKM_AES_KEY_WRAP 機制的 C_WrapKey

  • 影響:如果您在 PKCS #11 程式庫的 3.0.0 版中提供的 IV 小於 8 個位元組,您可能無法解除包裝金鑰。

  • 因應措施:

    • 強烈建議您升級至 PKCS #11 程式庫的 3.0.1 或更高版本,該程式庫會在AES金鑰換行期間正確強制執行 IV 長度。修改您的包裝代碼以通過 NULL IV,或指定的默認 IV 0xA6A6A6A6A6A6A6A6。如需詳細資訊,請參閱自訂IVsAES金鑰換行的不相容長度

    • 如果您使用小於 8 個位元組的 IV 包裝 PKCS #11 程式庫 3.0.0 版的任何金鑰,請聯絡我們以尋求支援

  • 解決狀態:此問題已在 PKCS #11 程式庫的 3.0.1 版中解決。若要使用AES金鑰換行來包裝金鑰,請指定長度為 8 NULL 個位元組的 IV。

問題:PKCS#11 SDK 2.0.4 和更早版本始終使用的默認 IV 0xA6A6A6A6A6A6A6A6 進行AES密鑰包裝和解包

用戶提供的IVs被默默忽略。

注意

這只會影響包含 CKM_AES_KEY_WRAP 機制的 C_WrapKey

  • Impact: (影響:)

    • 如果您使用 PKCS #11 SDK 2.0.4 或較早版本和使用者提供的 IV,您的金鑰會以的預設 IV 包裝。0xA6A6A6A6A6A6A6A6

    • 如果您使用 PKCS #11 SDK 3.0.0 或更新版本和使用者提供的 IV,您的金鑰會以使用者提供的 IV 包裝。

  • Workarounds: (因應措施:)

    • 若要解開以 PKCS #11 SDK 2.0.4 或更早版本包裝的金鑰,請使用的預設 IV。0xA6A6A6A6A6A6A6A6

    • 若要解除包裝 PKCS #11 SDK 3.0.0 或更新版本的金鑰,請使用使用者提供的 IV。

  • 解析狀態:我們強烈建議您修改包裝和解包代碼以傳遞 NULL IV,或指定的0xA6A6A6A6A6A6A6A6預設 IV。

問題:既未支援也未處理 CKA_DERIVE 屬性。

  • 解決狀態:我們已實作修正接受金鑰 CKA_DERIVE (如果設定為 FALSE)。在我們開始將金鑰衍生函數支援新增至 AWS CloudHSM前,不支援將 CKA_DERIVE 設定為 TRUE。您必須將用戶端和 SDK (s) 更新至版本 1.1.1 或更高版本,才能從此修正中受益。

問題:既未支援也未處理 CKA_SENSITIVE 屬性。

  • 解決狀態:我們已實作可以接受和正確遵守 CKA_SENSITIVE 屬性的修正。您必須將用戶端和 SDK (s) 更新至版本 1.1.1 或更高版本,才能從此修正中受益。

問題:不支援分段雜湊和簽署。

  • 影響:不會實作 C_DigestUpdateC_DigestFinalC_SignFinal 也不會實作,非 NULL 緩衝區會失敗並發生 CKR_ARGUMENTS_BAD 錯誤。

  • 因應措施:在應用程式中雜湊資料,並 AWS CloudHSM 僅用於簽署雜湊。

  • 解析狀態:我們正在修復用戶端,並正SDKs確實作多部分雜湊。更新會公告於 AWS CloudHSM 論壇和版本歷史頁面中。

問題:C_GenerateKeyPair 不是以符合標準的方式處理私有範本中的 CKA_MODULUS_BITSCKA_PUBLIC_EXPONENT

  • 影響:當私有範本包含 CKA_MODULUS_BITSCKA_PUBLIC_EXPONENTC_GenerateKeyPair 應該傳回 CKA_TEMPLATE_INCONSISTENT。但它反而產生私有金鑰,將所有使用欄位設為 FALSE。無法使用金鑰。

  • 因應措施:建議您的應用程式除了錯誤碼,也檢查使用欄位值。

  • 解決狀態:我們正在實作修正,讓系統在使用錯誤的私有金鑰範本時傳回適當的錯誤訊息。更新後的 PKCS #11 程式庫將在版本紀錄頁面上公佈。

問題:使用CKM_AES_GCM機制時C_EncryptC_DecryptAPI作業的緩衝區不得超過 16 KB

AWS CloudHSM 不支持多部分 AES-GCM 加密。

  • 影響:您不能使用 CKM_AES_GCM 機制來加密大於 16 KB 的資料。

  • 因應措施:您可以使用替代機制,例如CKM_AES_CBCCKM_AES_CBC_PAD,或者您可以將資料分成幾個部分,然後使用個AES_GCM別方式加密每個部分。如果您正在使用AES_GCM,則必須管理數據的劃分和後續加密。 AWS CloudHSM 不會為您執行多AES部分GCM加密。請注意,FIPS要求在上產生的初始化向量 (IV) HSM。AES-GCM因此,IV 對於您的每一塊 AES-GCM 加密數據將是不同的。

  • 解決狀態:如果數據緩衝區太大,我們正在修復明確失敗的問題。SDK我們返回CKR_MECHANISM_INVALIDC_EncryptUpdateC_DecryptUpdateAPI操作。我們正在評估支援較大緩衝區、而不需要仰賴分段加密的替代做法。更新將在 AWS CloudHSM 論壇和版本歷史頁面上公佈。

問題:橢圓曲線迪菲-赫爾曼()ECDH密鑰派生部分在 HSM

您的 EC 私鑰始終保留HSM在密鑰中,但密鑰派生過程通過多個步驟執行。因此,在用戶端會有每個步驟產生的中繼結果。

  • 影響:在用戶端 SDK 3 中,使用CKM_ECDH1_DERIVE機制衍生的金鑰會先在用戶端上使用,然後再匯入HSM. 然後將金鑰控制代碼傳回給到您的應用程式。

  • 因應措施:如果您正在中實作SSL/TLS卸載 AWS CloudHSM,則此限制可能不是問題。如果您的應用程序要求您的密鑰始終保持在FIPS邊界內,請考慮使用不依賴於ECDH密鑰派生的替代協議。

  • 解決狀態:我們正在開ECDH發完全在HSM. 當更新的實作可供使用時,即會在版本歷史記錄頁面中公告。

問題:在美分和 6 等EL6平台上驗證 secp256k1 簽章失敗 OS6 RHEL

這是因為 Cloud HSM PKCS #11 程式庫使用 Open SSL 來驗證 EC 曲線資料,避免在驗證作業初始化期間進行網路呼叫。由於 Secp256k1 不受EL6平台上的預設開啟SSL套件支援,因此初始化會失敗。

  • 影響:SECP 256k1 簽名驗證將在平台上失敗。EL6驗證呼叫會失敗並出現 CKR_HOST_MEMORY 錯誤。

  • 因應措施:如果您的 PKCS #11 應用程式需要驗證 secp256k1 簽章,我們建議您使用 Amazon Linux 1 或任何EL7平台。或者,升級至支援 secp256k1 曲線的開啟SSL套件版本。

  • 解決方案狀態:我們正在實施修復,以便返回到HSM如果局部曲線驗證不可用。更新後的 PKCS #11 程式庫將在版本紀錄頁面上公佈。

問題:不正確的函數調用序列會給出未定義的結果而不是失敗

  • 影響:如果您調用不正確的函數序列,即使個別函數調用傳回成功,最終結果也不正確。例如,解密的資料可能與原始純文本不匹配,否則簽名可能無法驗證。此問題會影響單一和多部分作業。

    函數序列不正確的範例:

    • 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 #11 規格的情況下,針對單一和多部分作業使用正確的函數呼叫順序。在這種情況下,您的應用程式不應該依賴 Cloud HSM PKCS #11 程式庫傳回錯誤。

問題:SDK5 中不支援唯讀工作階段

  • 問題:SDK5 不支援使用開啟唯讀階段作業C_OpenSession

  • 影響:如果您嘗試在未提供的 CKF_RW_SESSION 情況下調用 C_OpenSession,調用將失敗並顯示錯誤 CKR_FUNCTION_FAILED

  • 因應措施:開啟工作階段時,您必須將 CKF_SERIAL_SESSION | CKF_RW_SESSION 旗標傳遞至 C_OpenSession 函數調用。

問題:cryptoki.h 標頭檔案僅限 Windows

  • 問題:在 Linux 上使用 AWS CloudHSM 用戶端 SDK 5 版本 5.0.0 到 5.4.0 時,標頭檔案/opt/cloudhsm/include/pkcs11/cryptoki.h僅與視窗作業系統相容。

  • 影響:嘗試在 Linux 作業系統的應用程式中包含此標頭檔案時,可能會遇到問題。

  • 解決狀態:升級至 AWS CloudHSM 用戶端 SDK 5 版本 5.4.1 或更新版本,其中包含此標頭檔案的 Linux 相容版本。