自訂 中AES金鑰包裝IVs的不合規長度 AWS CloudHSM - AWS CloudHSM

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

自訂 中AES金鑰包裝IVs的不合規長度 AWS CloudHSM

此故障診斷主題可協助您判斷應用程式是否產生無法復原的包裝金鑰。如果您受到此問題的影響,請使用本主題來解決問題。

確定代碼是否生成不可復原的包裝金鑰。

只有當您符合以下所有條件時,您才會受到影響:

條件 如何知道?

您的應用程式使用 PKCS #11 程式庫

PKCS #11 程式庫會安裝為/opt/cloudhsm/lib資料夾中libpkcs11.so的檔案。以 C 語言撰寫的應用程式通常直接使用 PKCS #11 程式庫,而以 Java 撰寫的應用程式可能會間接透過 Java 抽象層使用程式庫。如果您使用的是 Windows,您會NOT受到影響,因為 PKCS #11 程式庫目前不適用於 Windows。

您的應用程式特別使用 PKCS #11 程式庫的 3.0.0 版

如果您收到來自 AWS CloudHSM 團隊的電子郵件,您可能會使用 PKCS #11 程式庫的 3.0.0 版。

若要檢查應用程式執行個體上的軟體版本,請使用以下指令:

rpm -qa | grep ^cloudhsm

您可以使用金鑰包裝來包裝AES金鑰

AES 金鑰包裝表示您使用 AES金鑰來包裝其他金鑰。對應的機制名稱為 CKM_AES_KEY_WRAP。它與函數 C_WrapKey 一起使用。使用初始化向量 (IVs) 的其他AES基礎包裝機制,例如 CKM_AES_GCM CKM_CLOUDHSM_AES_GCM,不受此問題的影響。進一步瞭解函數和機制

您在呼叫AES金鑰包裝時指定自訂 IV,且此 IV 的長度短於 8

AES 金鑰包裝通常使用CK_MECHANISM結構初始化,如下所示:

CK_MECHANISM mech = {CKM_AES_KEY_WRAP, IV_POINTER, IV_LENGTH};

只有在以下情況下此問題才適用於您:

  • IV_POINTER 不是 NULL

  • IV_LENGTH 小於 8 個位元組

如果您不符合上述所有條件,則可以立即停止閱讀。您包裝的金鑰可以正確解開包裝,並且此問題不會影響您。否則,請參閱 如果代碼生成不可復原的包裝金鑰,則必須採取的動作

如果代碼生成不可復原的包裝金鑰,則必須採取的動作

您應該採取以下三個步驟:

  1. 立即將 PKCS #11 程式庫升級至較新的版本

  2. 更新您的軟體以使用符合標準的 IV

    我們強烈建議您遵循範例程式碼,並僅指定 NULL IV,這會導致 HSM 使用符合標準的預設 IV。或者,您也可以明確指定 IV 與 0xA6A6A6A6A6A6A6A6 對應的 8 IV 長度。我們不建議使用任何其他 IV 進行AES金鑰包裝,並將明確停用未來版本 PKCS #11 程式庫中IVsAES金鑰包裝的自訂。

    用於正確指定 IV 的範例程式碼會顯示在 上的 aes_wrapping.c 中 GitHub。

  3. 識別和恢復現有包裝的金鑰

    您應該使用 PKCS #11 程式庫的 3.0.0 版來識別您包裝的任何金鑰,然後聯絡 支援以取得復原這些金鑰的協助 (https://aws.amazon.com/support )。

重要

此問題只會影響以 3.0.0 版的 PKCS #11 程式庫包裝的金鑰。您可以使用舊版 (2.0.4 和較低編號的套件) 或更新版本 (3.0.1 和較高編號的套件) 的 PKCS #11 程式庫來包裝金鑰。