

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

# 中的 HMAC 金鑰 AWS KMS
<a name="hmac"></a>

雜湊訊息驗證碼 (HMAC) KMS 金鑰是對稱金鑰，用於在 AWS KMS中產生和驗證 HMAC。與每個 HMAC KMS 金鑰關聯的唯一金鑰資料提供了 HMAC 演算法所需的私密金鑰。您可以將 HMAC KMS 金鑰與 `[GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)` 和 [https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html) 操作搭配使用來驗證 AWS KMS之中的資料完整性和真實性。

HMAC 演算法結合了密碼編譯雜湊函數和共享私密金鑰。它們接受訊息和私密金鑰 (如 HMAC KMS 金鑰中的金鑰資料)，並傳回一個唯一且固定大小的代碼或*標籤*。如果訊息中即使只有一個字元更改，或者私密金鑰不相同，則產生的標籤將完全不同。透過要求私密金鑰，HMAC 還提供了真實性；如果沒有私密金鑰，就無法產生相同的 HMAC 標籤。HMAC 有時被稱為*對稱簽章*，因為它們的運作方式類似於數位簽章，但使用單一金鑰進行簽署和驗證。

 AWS KMS 使用 的 HMAC KMS 金鑰和 HMAC 演算法符合 [RFC 2104 ](https://datatracker.ietf.org/doc/html/rfc2104)中定義的產業標準。 AWS KMS [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html) 操作會產生標準 HMAC 標籤。HMAC KMS 金鑰是在根據 [FIPS 140-3 密碼編譯模組驗證計劃](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4884) （中國 （北京） 和中國 （寧夏） 區域除外） 認證的 AWS KMS 硬體安全模組中產生，絕不會保持 AWS KMS 未加密狀態。若要使用 HMAC KMS 金鑰，必須呼叫 AWS KMS。

您可使用 HMAC KMS 金鑰來確定訊息的真實性，例如 JSON Web 字符 (JWT)、字符化的信用卡資訊或提交的密碼。它們還可以用作安全金鑰衍生函數 (KDF)，特別是在需要確定性金鑰的應用程式中。

HMAC KMS 金鑰提供優於應用程式軟體 HMACs的優勢，因為金鑰材料完全在內部產生和使用 AWS KMS，取決於您在金鑰上設定的存取控制。

**提示**  
最佳實務是建議您限制任何簽名機制 (包括 HMAC) 的有效時間。這可以阻止攻擊者使用簽署的訊息反覆建立有效性攻擊或在訊息被取代很長時間後反覆建立有效性攻擊。HMAC 標籤不包含時間戳記，但您可以在字符或訊息中包含時間戳記，以幫助您偵測何時重新整理 HMAC。

**支援的密碼編譯操作**  
HMAC KMS 金鑰僅支援 [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html) 和 [https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html) 密碼編譯操作。您無法使用 HMAC KMS 金鑰來加密資料或簽署訊息，或在 HMAC 操作中使用任何其他類型的 KMS 金鑰。使用 `GenerateMac` 操作時，您可以提供最多 4,096 個位元組的訊息、一個 HMAC KMS 金鑰以及與 HMAC 金鑰規格相容的 MAC 演算法，`GenerateMac` 會運算 HMAC 標籤。若要驗證 HMAC 標籤，您必須提供 HMAC 標籤以及 `GenerateMac` 用來運算原始 HMAC 標籤的相同訊息、HMAC KMS 金鑰以及 MAC 演算法。`VerifyMac` 操作會運算 HMAC 標籤並驗證它是否與提供的 HMAC 標籤相同。如果輸入和運算得出的 HMAC 標籤不相同，驗證會失敗。  
HMAC KMS 金鑰*不*支援[金鑰自動輪換](rotate-keys.md)，而且您無法在[自訂金鑰存放區](key-store-overview.md#custom-key-store-overview)建立 HMAC KMS 金鑰。  
如果您要建立 KMS 金鑰來加密 AWS 服務中的資料，請使用對稱加密金鑰。您無法使用 HMAC KMS 金鑰。

**區域**  
所有 支援的 都 AWS KMS 支援 HMAC KMS AWS 區域 金鑰。

**進一步了解**
+ 若要建立 HMAC KMS 金鑰，請參閱 [建立 HMAC KMS 金鑰](hmac-create-key.md)。
+ 若要建立多區域 HMAC KMS 金鑰，請參閱 [中的多區域金鑰 AWS KMS](multi-region-keys-overview.md)。
+ 若要檢查 AWS KMS 主控台為 HMAC KMS 金鑰設定的預設金鑰政策差異，請參閱 [允許金鑰使用者在密碼編譯操作中使用 KMS 金鑰](key-policy-default.md#key-policy-users-crypto)。
+ 若要識別和檢視 HMAC KMS 金鑰，請參閱 [識別 HMAC KMS 金鑰](identify-key-types.md#hmac-view)。
+ 若要了解有關使用 HMAC 建立 JSON Web 字符的詳細資訊，請參閱《*AWS 安全部落格*》中的「[如何在 AWS KMS內保護 HMAC](https://aws.amazon.com/blogs/security/how-to-protect-hmacs-inside-aws-kms/)」。
+ 在*官方 AWS Podcast* 上收聽 Podcast：[AWS Key Management Service的 HMAC 簡介](https://aws.amazon.com/podcasts/introducing-hmacs-apis-in-aws-key-management-service)。