

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

# 金鑰規格參考
<a name="symm-asymm-choose-key-spec"></a>

在建立非對稱 KMS 金鑰或 HMAC KMS 金鑰時，需選取其 [key spec](create-keys.md#key-spec) (金鑰規格)。*金鑰規格*是每個 的屬性 AWS KMS key，代表 KMS 金鑰的密碼編譯組態。您可以在建立 KMS 金鑰時選擇金鑰規格，之後便無法進行變更。如果選取了錯誤的金鑰規格，請[刪除 KMS 金鑰](deleting-keys.md)，再建立新的金鑰規格。

**注意**  
KMS 金鑰的金鑰規格稱為「客戶主要金鑰規格」。已取代 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作的 `CustomerMasterKeySpec` 參數。請改用 `KeySpec` 參數。`CreateKey` 和 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作的回應包括具有相同值的 `KeySpec` 和 `CustomerMasterKeySpec`。

金鑰規格會決定 KMS 金鑰是對稱還是非對稱、KMS 金鑰中的金鑰材料類型，以及 KMS 金鑰 AWS KMS 支援的加密演算法、簽署演算法或訊息身分驗證碼 (MAC) 演算法。您選擇的金鑰規格通常會依您的使用案例和法規要求決定。不過，具有不同金鑰規格的 KMS 金鑰的密碼編譯操作定價也不同，而且有不同的配額。如需定價詳細資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。如需請求配額的詳細資訊，請參閱 [請求配額](requests-per-second.md)。

如要限制委託人在建立 KMS 金鑰時可使用的金鑰規格，請使用 [kms:KeySpec](conditions-kms.md#conditions-kms-key-spec) 條件索引鍵。您也可以使用 `kms:KeySpec`條件金鑰，允許委託人僅在具有特定金鑰規格的 KMS 金鑰上呼叫 AWS KMS 操作。例如，您可以拒絕排程刪除任何具有 `RSA_4096` 金鑰規格之 KMS 金鑰的許可。

AWS KMS 支援下列 KMS 金鑰的金鑰規格：

[對稱加密金鑰規格](#symmetric-cmks) (預設)  
+ SYMMETRIC\_DEFAULT

[RSA 金鑰規格](#key-spec-rsa) (加密和解密或簽署和驗證)  
+ RSA\_2048
+ RSA\_3072
+ RSA\_4096

[橢圓曲線金鑰規格](#key-spec-ecc)  
+ 非對稱 NIST 標準[橢圓曲線金鑰對](https://datatracker.ietf.org/doc/html/rfc5753/) （簽署和驗證 - 或 - 衍生共用秘密）
  + ECC\_NIST\_P256 (secp256r1)
  + ECC\_NIST\_P384 (secp384r1)
  + ECC\_NIST\_P521 (secp521r1)
  + ECC\_NIST\_EDWARDS25519 (ed25519) - 僅限簽署和驗證
    + **注意：**對於 ECC\_NIST\_EDWARDS25519 KMS 金鑰，ED25519\_SHA\_512 簽署演算法需要 [https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)，而 ED25519\_PH\_SHA\_512 需要 [https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)。這些訊息類型無法互換使用。
+ 其他非對稱橢圓曲線金鑰對 (簽署和驗證)
  + ECC\_SECG\_P256K1 ([secp256k1](https://en.bitcoin.it/wiki/Secp256k1))，常用於加密貨幣。

[SM2 金鑰規格](#key-spec-sm) （加密和解密 – 或 – 簽署和驗證 – 或 – 衍生共用秘密）  
+ SM2 (僅限中國區域)

[HMAC 金鑰規格](#hmac-key-specs)  
+ HMAC\_224
+ HMAC\_256
+ HMAC\_384
+ HMAC\_512

[ML-DSA 金鑰規格](#key-spec-mldsa)  
+ ML\_DSA\_44
+ ML\_DSA\_65
+ ML\_DSA\_87

## SYMMETRIC\_DEFAULT 金鑰規格
<a name="symmetric-cmks"></a>

預設的金鑰規格 SYMMETRIC\_DEFAULT 是對稱加密 KMS 金鑰的金鑰規格。當您在 AWS KMS 主控台中選取**對稱**金鑰類型和**加密和解密**金鑰用量時，它會選取`SYMMETRIC_DEFAULT`金鑰規格。在 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作中，如果您不指定 `KeySpec` 值，即會選取 SYMMETRIC\_DEFAULT。如果沒有使用不同金鑰規格的理由，SYMMETRIC\_DEFAULT 是很好的選擇。

SYMMETRIC\_DEFAULT 代表 AES-256-GCM，這是一種以 [Galois 計數器模式](http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf) (GCM) 中的[進階加密標準](https://csrc.nist.gov/csrc/media/publications/fips/197/final/documents/fips-197.pdf) (AES) 為基礎的對稱演算法，具有 256 位元金鑰，是安全加密的業界標準。此演算法產生的加密文字支援額外的驗證資料 (AAD)，如[加密內容](encrypt_context.md)，而 GCM 則提供對加密文字的額外完整性檢查。

使用 AES-256-GCM 加密的資料現在和未來都受到保護。密碼學家認為此演算法具有「量子抗性」**。在理論上，未來針對以 256 位元 AES-GCM 金鑰建立的加密文字所做的大規模量子運算攻擊，會[將金鑰的有效安全性降低到 128 位元](https://www.etsi.org/images/files/ETSIWhitePapers/QuantumSafeWhitepaper.pdf)。但是，此安全層級足以對 AWS KMS 加密文字進行暴力破解攻擊。

中國區域是唯一的例外，在該處 SYMMETRIC\_DEFAULT 代表使用 SM4 加密的 128 位元對稱金鑰。您只能在中國區域內建立 128 位元 SM4 金鑰。您無法在中國區域內建立 256 位元 AES-GCM KMS 金鑰。

您可以在 中使用對稱加密 KMS 金鑰 AWS KMS 來加密、解密和重新加密資料，以及保護產生的資料金鑰和資料金鑰對。與 整合 AWS 的服務 AWS KMS 會使用對稱加密 KMS 金鑰來加密靜態資料。您可以[將自己的金鑰資料匯入](importing-keys.md)對稱加密 KMS 金鑰，並在[自訂金鑰存放區](key-store-overview.md#custom-key-store-overview)中建立對稱加密 KMS 金鑰。如需對稱和非對稱 KMS 金鑰執行之操作的比較表，請參閱[比較對稱和非對稱 KMS 金鑰](symm-asymm-compare.md)。

您可以在 中使用對稱加密 KMS 金鑰 AWS KMS 來加密、解密和重新加密資料，並產生資料金鑰和資料金鑰對。您可以建立[多區域](multi-region-keys-overview.md)對稱加密 KMS 金鑰、[將自己的金鑰資料匯入](importing-keys.md)對稱加密 KMS 金鑰，並在[自訂金鑰存放區](key-store-overview.md#custom-key-store-overview)中建立對稱加密 KMS 金鑰。如需不同類型的 KMS 金鑰執行之操作的比較表，請參閱[金鑰類型參考](symm-asymm-compare.md)。

## RSA 金鑰規格
<a name="key-spec-rsa"></a>

當您使用 RSA 金鑰規格時， 會 AWS KMS 建立具有 RSA 金鑰對的非對稱 KMS 金鑰。私有金鑰永遠不會讓 AWS KMS 處於未加密狀態。您可以在 中使用公有金鑰 AWS KMS，或下載公有金鑰以在 外部使用 AWS KMS。

**警告**  
當您在 外部加密資料時 AWS KMS，請確定您可以解密加密文字。如果您使用已從 AWS KMS刪除之 KMS 金鑰的公有金鑰、設定用於簽署和驗證之 KMS 金鑰的公有金鑰，或不受 KMS 金鑰支援的加密演算法，該資料無法復原。

在 中 AWS KMS，您可以將非對稱 KMS 金鑰與 RSA 金鑰對搭配使用，以進行加密和解密，或簽署和驗證，但不能同時使用兩者。此屬性稱為 *[Key usage](create-keys.md#key-usage)*，與金鑰規格分開決定，但您應該在選取金鑰規格之前做出該決定。

AWS KMS 支援下列 RSA 金鑰規格進行加密和解密，或簽署和驗證：
+ RSA\_2048
+ RSA\_3072
+ RSA\_4096

RSA 金鑰規格因 RSA 金鑰的位元長度而不同。您選擇的 RSA 金鑰規格可能隨安全標準或任務需求而定。任務一般會使用實用且可負擔的最長密鑰。具有不同 RSA 金鑰規格之 KMS 金鑰的密碼編譯操作定價也不同。如需 AWS KMS 定價的資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。如需請求配額的詳細資訊，請參閱 [請求配額](requests-per-second.md)。

### 用於加密和解密的 RSA 金鑰規格
<a name="key-spec-rsa-encryption"></a>

使用 RSA 非對稱 KMS 金鑰加密和解密時，您會使用公有金鑰加密，並使用私有金鑰解密。當您在 `Encrypt` 中呼叫 RSA KMS 金鑰 AWS KMS 的操作時， AWS KMS 會使用 RSA 金鑰對中的公有金鑰，以及您指定的加密演算法來加密資料。若要解密加密文字，請呼叫 `Decrypt`操作並指定相同的 KMS 金鑰和加密演算法。 AWS KMS 然後， 會使用 RSA 金鑰對中的私有金鑰來解密您的資料。

您也可以下載公有金鑰，並使用它來加密 外部的資料 AWS KMS。請務必使用 AWS KMS 支援 RSA KMS 金鑰的加密演算法。若要解密加密文字，請使用相同的 KMS 金鑰和加密演算法呼叫 `Decrypt` 函數。

AWS KMS 支援兩種具有 RSA 金鑰規格的 KMS 金鑰加密演算法。這些演算法同在 [PKCS \#1 v2.2](https://tools.ietf.org/html/rfc8017) 中定義，但其內部使用的雜湊函數不同。在 AWS KMS中，RSAES\_OAEP 演算法對雜湊目的和[遮罩產生函數](https://tools.ietf.org/html/rfc8017#appendix-B.2) (MGF1) 一律使用相同的雜湊函數。當您呼叫 [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 和 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 操作時，必須指定加密演算法。您可以為每個請求選擇不同的演算法。


**支援 RSA 金鑰規格的加密演算法**  

| 加密演算法 | 演算法說明 | 
| --- | --- | 
| RSAES\_OAEP\_SHA\_1 | PKCS \#1 v2.2 第 7.1 節。RSA 加密與 OAEP 填補在雜湊和 MGF1 遮罩產生函數中都使用 SHA-1 加一個空標籤。 | 
| RSAES\_OAEP\_SHA\_256 | PKCS \#1 第 7.1 節。RSA 加密與 OAEP 填補在雜湊和 MGF1 遮罩產生函數中都使用 SHA-256 加一個空標籤。 | 

您無法將 KMS 金鑰設定為使用特定的加密演算法。但可以使用 [kms:EncryptionAlgorithm](conditions-kms.md#conditions-kms-encryption-algorithm) 政策條件指定允許主體搭配 KMS 金鑰使用的加密演算法。

若要取得 KMS 金鑰的加密演算法，請在 AWS KMS 主控台中[檢視 KMS 金鑰的密碼編譯組態](finding-keys.md#viewing-console-details)，或使用 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作。 AWS KMS 當您在 AWS KMS 主控台中下載公有金鑰或使用 [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html) 操作時， 也會提供金鑰規格和加密演算法。

您可根據能在每個請求中加密的純文字資料長度，選擇 RSA 金鑰規格。下表顯示您在單次呼叫 [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 操作中可以加密的純文字大小上限 (以位元組為單位)。這些值與金鑰規格和加密演算法不同。若要進行比較，您可以使用對稱加密 KMS 金鑰一次加密多達 4096 個位元組。

若要計算這些演算法的純文字長度上限 (以位元組為單位)，請使用以下公式：({{key\_size\_in\_bits}} / 8) - (2 \* {{hash\_length\_in\_bits}}/8) - 2。例如，具有 SHA-256 之 RSA\_2048 的純文字大小上限 (位元組) 為 (2048/8) - (2 \* 256/8) -2 = 190。


**Encrypt 操作中的純文字大小上限 (位元組)**  
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/symm-asymm-choose-key-spec.html)

### 用於簽署和驗證的 RSA 金鑰規格
<a name="key-spec-rsa-sign"></a>

使用 RSA 非對稱 KMS 金鑰執行簽署和驗證作業時，您會使用私有金鑰產生訊息的簽章，並使用公有金鑰驗證該簽章。

當您 AWS KMS 在 中呼叫非對稱 KMS 金鑰`Sign`的操作時， AWS KMS 會使用 RSA 金鑰對中的私有金鑰、訊息和您指定的簽署演算法來產生簽章。若要驗證簽章，請呼叫 [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) 操作。指定簽章，加上相同的 KMS 金鑰、訊息和簽署演算法。 AWS KMS 然後， 會使用 RSA 金鑰對中的公有金鑰來驗證簽章。您也可以下載公有金鑰，並使用它來驗證外部的簽章 AWS KMS。

AWS KMS 支援具有 RSA 金鑰規格的所有 KMS 金鑰的下列簽署演算法。當您呼叫 [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) 和 [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) 操作時，必須指定簽署演算法。您可以為每個請求選擇不同的演算法。使用 RSA 金鑰對進行簽署時，偏好使用 RSASSA-PSS 演算法。我們包含 RSASSA-PKCS1-v1\_5 演算法，以便與現有應用程式相容。


**支援 RSA 金鑰規格的簽署演算法**  

| 簽署演算法 | 演算法說明 | 
| --- | --- | 
| RSASSA\_PSS\_SHA\_256 | PKCS \#1 v2.2 第 8.1 節，具有 PSS 填補和使用 SHA-256 的 RSA 簽章，適用於訊息摘要和 MGF1 遮覃產生函數以及 256 位元的 salt | 
| RSASSA\_PSS\_SHA\_384 | PKCS \#1 v2.2 第 8.1 節，具有 PSS 填補和使用 SHA-384 的 RSA 簽章，適用於訊息摘要和 MGF1 遮覃產生函數以及 384 位元的 salt | 
| RSASSA\_PSS\_SHA\_512 | PKCS \#1 v2.2 第 8.1 節，具有 PSS 填補和使用 SHA-512 的 RSA 簽章，適用於訊息摘要和 MGF1 遮覃產生函數以及 512 位元的 salt | 
| RSASSA\_PKCS1\_V1\_5\_SHA\_256 | PKCS \#1 v2.2 第 8.2 節，具有 PKCS \#1v1.5 填補和 SHA-256 的 RSA 簽章 | 
| RSASSA\_PKCS1\_V1\_5\_SHA\_384 | PKCS \#1 v2.2 第 8.2 節，具有 PKCS \#1v1.5 填補和 SHA-384 的 RSA 簽章 | 
| RSASSA\_PKCS1\_V1\_5\_SHA\_512 | PKCS \#1 v2.2 第 8.2 節，具有 PKCS \#1v1.5 填補和 SHA-512 的 RSA 簽章 | 

您無法將 KMS 金鑰設定為使用特定的簽署演算法。不過，您可以使用 [kms:SigningAlgorithm](conditions-kms.md#conditions-kms-signing-algorithm) 政策條件指定允許主體搭配 KMS 金鑰使用的簽署演算法。

若要取得 KMS 金鑰的簽署演算法，請在 AWS KMS 主控台或使用 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作檢視 KMS 金鑰[的密碼編譯組態](finding-keys.md#viewing-console-details)。 AWS KMS 當您在 AWS KMS 主控台下載公有金鑰或使用 [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html) 操作時， 也會提供金鑰規格和簽署演算法。

## 橢圓曲線金鑰規格
<a name="key-spec-ecc"></a>

****

當您使用橢圓曲線 (ECC) 金鑰規格時， AWS KMS 會建立具有 ECC 金鑰對的非對稱 KMS 金鑰，用於簽署和驗證或衍生共用秘密 （但不能同時建立兩者）。產生簽章或衍生共用秘密的私有金鑰絕不會保持 AWS KMS 未加密狀態。您可以使用公有金鑰來[驗證內部的簽章](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) AWS KMS，或[下載公有金鑰](importing-keys-get-public-key-and-token.md)以供外部使用 AWS KMS。

當您使用 Edwards Curve 金鑰規格時， 會 AWS KMS 建立具有 Ed25519 金鑰對的非對稱 KMS 金鑰，以進行簽署和驗證。產生簽章的私有金鑰永遠不會讓 AWS KMS 處於未加密狀態。您可以使用公有金鑰來[驗證 內的簽章](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) AWS KMS，或[下載公有金鑰](importing-keys-get-public-key-and-token.md)以供 外部使用 AWS KMS。

AWS KMS 支援下列非對稱 KMS 金鑰的 ECC 金鑰規格。
+ 非對稱 NIST 標準橢圓曲線金鑰對 （簽署和驗證 - 或 - 衍生共用秘密）
  + ECC\_NIST\_P256 (secp256r1)
  + ECC\_NIST\_P384 (secp384r1)
  + ECC\_NIST\_P521 (secp521r1)
  + ECC\_NIST\_EDWARDS25519 (ed25519) - 僅限簽署和驗證
    + **注意：**對於 ECC\_NIST\_EDWARDS25519 KMS 金鑰，ED25519\_SHA\_512 簽署演算法需要 [https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)，而 ED25519\_PH\_SHA\_512 需要 [https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)。這些訊息類型無法互換使用。
+ 其他非對稱橢圓曲線金鑰對 (簽署和驗證)
  + ECC\_SECG\_P256K1 ([secp256k1](https://en.bitcoin.it/wiki/Secp256k1))，常用於加密貨幣。

您選擇的 ECC 金鑰規格可能隨安全標準或任務需求而定。任務一般會使用實用且可負擔的最多點曲線。

如果您要建立非對稱 KMS 金鑰來[衍生共用秘密](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)，請使用其中一個 NIST 標準橢圓曲線金鑰規格 (ECC\_SECG\_P256K1 和 ECC\_NIST\_EDWARDS25519 除外）。衍生共用秘密唯一支援的金鑰協議演算法是[橢圓曲線密碼編譯 Cofactor Diffie-Hellman 基本 ](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf#page=60)(ECDH)。如需如何離線衍生共用秘密的範例，請參閱 [離線衍生共用秘密](offline-operations.md#key-spec-ecc-offline)。

如果您要建立非對稱 KMS 金鑰以搭配使用加密貨幣，請使用 ECC\_SECG\_P256K1 金鑰規格。此金鑰規格也可供其他用途使用，但對 Bitcoin 和其他加密貨幣而言是必要項目。

下表顯示每個 ECC 金鑰規格 AWS KMS 支援的簽署演算法。您無法將 KMS 金鑰設定為使用特定的簽署演算法。不過，您可以使用 [kms:SigningAlgorithm](conditions-kms.md#conditions-kms-signing-algorithm) 政策條件指定允許委託人搭配 KMS 金鑰使用的簽署演算法。


**支援 ECC 金鑰規格的簽署演算法**  

| 金鑰規格 | 簽署演算法 | 演算法說明 | 
| --- | --- | --- | 
| ECC\_NIST\_P256  | ECDSA\_SHA\_256 | NIST FIPS 186-4 第 6.4 節，適用於訊息摘要之金鑰和 SHA-256 所指定的使用曲線的 ECDSA 簽章。 | 
| ECC\_NIST\_P384 | ECDSA\_SHA\_384 | NIST FIPS 186-4 第 6.4 節，適用於訊息摘要之金鑰和 SHA-384 所指定的使用曲線的 ECDSA 簽章。 | 
| ECC\_NIST\_P521 | ECDSA\_SHA\_512 | NIST FIPS 186-4 第 6.4 節，適用於訊息摘要之金鑰和 SHA-512 所指定的使用曲線的 ECDSA 簽章。 | 
| ECC\_SECG\_P256K1 | ECDSA\_SHA\_256 | NIST FIPS 186-4 第 6.4 節，適用於訊息摘要之金鑰和 SHA-256 所指定的使用曲線的 ECDSA 簽章。 | 
| ECC\_NIST\_EDWARDS25519 | ED25519\_SHA\_512 | NIST FIPS 186-5，第 7.6 節，使用 金鑰和 SHA-512 為訊息摘要指定的曲線的 EdDSA 簽章。KMS [https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType) 需要使用此演算法。 | 
| ECC\_NIST\_EDWARDS25519 | ED25519\_PH\_SHA\_512 | NIST FIPS 186-5，第 7.8 節，使用 金鑰和 SHA-512 為訊息摘要指定的曲線的 HashEdDSA 簽章。KMS [https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType) 需要使用此演算法。當您使用 指定 ED25519\_PH\_SHA\_512 簽署演算法時MessageType:DIGEST， AWS KMS 仍會執行第 [7.8.1 節的步驟 1 中所述的 ](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf#page=39)SHA-512 預湊。這表示輸入會經過雜湊兩次：一次由您執行，一次由 KMS 執行。 | 

## HMAC KMS 金鑰的金鑰規格
<a name="hmac-key-specs"></a>

AWS KMS 支援不同長度的對稱 HMAC 金鑰。金鑰規格可根據您的安全、法規或業務需求進行選取。金鑰的長度決定了 [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html) 和 [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html) 操作中使用的 MAC 演算法。通常，較長的金鑰更安全。使用適用於您的使用案例的最長金鑰。


| HMAC 金鑰規格 | MAC 演算法 | 
| --- | --- | 
| HMAC\_224 | HMAC\_SHA\_224 | 
| HMAC\_256 | HMAC\_SHA\_256 | 
| HMAC\_384 | HMAC\_SHA\_384 | 
| HMAC\_512 | HMAC\_SHA\_512 | 

## ML-DSA 金鑰規格
<a name="key-spec-mldsa"></a>

ML-DSA 金鑰是 Module-Lattice-Based Digital Signature Algorithm (ML-DSA) 中使用的密碼編譯金鑰，專為量子後密碼編譯而設計。此演算法是 NIST （國家標準技術研究所） 標準化工作的一部分，特別在[聯邦資訊處理標準 (FIPS) 204 ](https://csrc.nist.gov/pubs/fips/204/final)中概述。

ML-DSA 金鑰用於公有-私有金鑰對系統。私有金鑰用於簽署資料，而公有金鑰用於驗證簽章。即使面臨潛在的量子電腦威脅，此系統也能確保數位訊息或文件的真實性、完整性和不可否認性。

當您使用 ML-DSA 金鑰規格建立金鑰時， 會使用 ML-DSA 金鑰對 AWS KMS 建立非對稱 KMS 金鑰以進行簽署和驗證。產生簽章的私有金鑰永遠不會讓 AWS KMS 處於未加密狀態。您可以使用公有金鑰來[驗證內部的簽章](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) AWS KMS，或[下載公有金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-get-public-key-and-token.html)以供 外部使用 AWS KMS。

AWS KMS 支援下列非對稱 KMS 金鑰的 ML-DSA 金鑰規格：
+ ML\_DSA\_44
+ ML\_DSA\_65
+ ML\_DSA\_87

AWS KMS 支援所有 ML-DSA 金鑰規格的 ML\_DSA\_SHAKE\_256 簽署演算法。

## SM2 金鑰規格 (僅限中國區域)
<a name="key-spec-sm"></a>

SM2 金鑰規格是在[中國商用密碼管理辦公室 (OSCCA)](https://www.oscca.gov.cn/) 公佈的 GM/T 系列規格中定義的橢圓曲線金鑰規格。SM2 金鑰規格僅在中國區域提供。當您使用 SM2 金鑰規格時， 會 AWS KMS 建立具有 SM2 金鑰對的非對稱 KMS 金鑰。您可以在 中使用 SM2 金鑰對 AWS KMS，或下載公有金鑰以在 外部使用 AWS KMS。如需詳細資訊，請參閱[使用 SM2 金鑰對進行離線驗證 (僅限中國區域)](offline-operations.md#key-spec-sm-offline-verification)。

每個 KMS 金鑰只能有一個 [Key usage](create-keys.md#key-usage)。您可以使用 SM2 KMS 金鑰來簽署和驗證、加密和解密，*或*衍生共用秘密。在建立 KMS 金鑰時，您必須指定金鑰使用方式，且在金鑰建立之後即無法變更。

如果您要建立非對稱 KMS 金鑰來[衍生共用秘密](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)，請使用 SM2 金鑰規格。產生共用秘密唯一支援的金鑰協議演算法是[橢圓曲線密碼編譯 Cofactor Diffie-Hellman 基本 ](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf#page=60)(ECDH)。

AWS KMS 支援下列 SM2 加密和簽署演算法：
+   
**SM2PKE** 加密演算法  
SM2PKE 是 OSCCA 在 GM/T 0003.4-2012 中定義的橢圓曲線型加密演算法。
+   
**SM2DSA** 簽署演算法  
SM2DSA 是 OSCCA 在 GM/T 0003.2-2012 中定義的橢圓曲線型簽署演算法。SM2DSA 需要使用 SM3 雜湊演算法雜湊的辨別 ID，然後與您傳遞的訊息或訊息摘要結合 AWS KMS。然後，此串連值會經過雜湊處理和簽署 AWS KMS。