

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 密钥规范引用
<a name="symm-asymm-choose-key-spec"></a>

创建非对称 KMS 密钥或 HMAC KMS 密钥时，可以选择其[密钥规范](create-keys.md#key-spec)。*密钥规范*是每个密钥的属性 Amazon KMS key，代表您的 KMS 密钥的加密配置。密钥规范在创建 KMS 密钥时选择，并且无法更改。如果选择了错误的密钥规范，可[删除 KMS 密钥](deleting-keys.md)，然后创建一个新的密钥规范。

**注意**  
KMS 密钥的密钥规范被称为“客户主密钥规范”。该[CreateKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_CreateKey.html)操作的`CustomerMasterKeySpec`参数已被弃用。请改用 `KeySpec` 参数。`CreateKey`和[DescribeKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_DescribeKey.html)操作的响应包括具有相同值的`KeySpec`和`CustomerMasterKeySpec`成员。

密钥规范确定 KMS 密钥是对称还是非对称、KMS 密钥中密钥材料的类型以及 Amazon KMS 支持 KMS 密钥的加密算法、签名算法或消息身份验证码 (MAC) 算法。选择哪个密钥规范通常取决于使用案例和法规要求。但是，KMS 密钥加密操作的密钥规范不同，其价格和限额也不同。有关定价的详细信息，请参阅 [Amazon Key Management Service 定价](https://www.amazonaws.cn/kms/pricing/)。有关请求配额的信息，请参阅 [请求配额](requests-per-second.md)。

要限制委托人在创建 KMS 密钥时可以使用的密钥规范，请使用 k [ms: KeySpec](conditions-kms.md#conditions-kms-key-spec) 条件密钥。您还可以使用`kms:KeySpec`条件密钥来允许委托人仅对具有特定密钥规范的 KMS 密钥调用 Amazon KMS 操作。例如，您可以拒绝删除具有 `RSA_4096` 密钥规范的 KMS 密钥的计划权限。

Amazon KMS 支持 KMS 密钥的以下关键规格：

[对称加密密钥规范](#symmetric-cmks)（默认值）  
+ SYMMETRIC\$1DEFAULT

[RSA 密钥规范](#key-spec-rsa)（加密和解密或签名和验证）  
+ RSA\$12048
+ RSA\$13072
+ RSA\$14096

[椭圆曲线密钥规范](#key-spec-ecc)  
+ 非对称 NIST 标准[椭圆曲线密钥对](https://datatracker.ietf.org/doc/html/rfc5753/)（签名和验证——或者——派生共享密钥）
  + ECC\$1NIST\$1P256 (secp256r1)
  + ECC\$1NIST\$1P384 (secp384r1)
  + ECC\$1NIST\$1P521 (secp521r1)
  + ECC\$1NIST\$1 EDWARDS25519 (ed25519)-仅限签名和验证
    + **注意：**对于 ECC\$1NIST\$1 EDWARDS25519 KMS 密钥，\$1SHA\$1512 签名算法需要，而 ED25519 \$1PH\$1SHA\$1512 则需要。[`MessageType:RAW` ED25519[https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)](https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)这些消息类型不能互换使用。
+ 其他非对称椭圆曲线密钥对（签名和验证）
  + ECC\$1SECG\$1P256K1 ([secp256k1](https://en.bitcoin.it/wiki/Secp256k1))，常用于加密货币。

[SM2 密钥规范](#key-spec-sm)（加密和解密——或者——签名和验证——或者——派生共享机密）  
+ SM2 （仅限中国地区）

[HMAC 密钥规范](#hmac-key-specs)  
+ HMAC\$1224
+ HMAC\$1256
+ HMAC\$1384
+ HMAC\$1512

[ML-DSA 密钥规范](#key-spec-mldsa)  
+ ML\$1DSA\$144
+ ML\$1DSA\$165
+ ML\$1DSA\$187

## SYMMETRIC\$1DEFAULT 密钥规范
<a name="symmetric-cmks"></a>

默认密钥规范 SYMMETRIC\$1DEFAULT 是对称加密 KMS 密钥的密钥规范。当您在 Amazon KMS 控制台中选择 **Symmetric** 密钥类型**以及加密和解密密**钥用法时，它会选择密钥规范。`SYMMETRIC_DEFAULT`在[CreateKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_CreateKey.html)操作中，如果您未指定`KeySpec`值，则会选择 SYMMETRIC\$1DEFAULT。如果您没有理由使用其他密钥规范，SymMETIC\$1DEFAULT 是个不错的选择。

SYMMETRIC\$1DEFAULT 代表 AES-256-GCM，这是一种基于[伽罗瓦计数器模式](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)。但是，这种安全级别足以使对 Amazon KMS 密文的暴力攻击变得不可行。

唯一的例外是中国区域，其中 SYMMETRIC\$1DEFAULT 表示使用加密的 128 位对称密钥。 SM4 您只能在中国区域内创建 128 位 SM4 密钥。您无法在中国区域内创建 256 位的 AES-GCM KMS 密钥。

您可以使用中的对称加密 KMS 密钥 Amazon KMS 来加密、解密和重新加密数据，以及保护生成的数据密钥和数据密钥对。 Amazon 与之集成的服务 Amazon KMS 使用对称加密 KMS 密钥对您的静态数据进行加密。您可以[将自己的密钥材料导入](importing-keys.md)对称加密 KMS 密钥中，并在[自定义密钥存储](key-store-overview.md#custom-key-store-overview)中创建对称加密 KMS 密钥。有关可以对对称 KMS 密钥和非对称 KMS 密钥执行的操作的比较表格，请参阅[比较对称 KMS 密钥与非对称 KMS 密钥](symm-asymm-compare.md)。

您可以使用中的对称加密 KMS 密钥 Amazon 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 密钥规范时， Amazon KMS 会创建一个带有 RSA 密钥对的非对称 KMS 密钥。私钥永远不会处于 Amazon KMS 未加密状态。你可以在里面使用公钥 Amazon KMS，也可以下载公钥在外面使用 Amazon KMS。

**警告**  
在外部加密数据时 Amazon KMS，请确保可以解密密文。如果您使用已从 Amazon KMS删除的 KMS 密钥中的公有密钥、配置用于签名和验证的 KMS 密钥中的公有密钥或者使用 KMS 密钥不支持的加密算法，则数据将无法恢复。

在中 Amazon KMS，您可以使用带有 RSA 密钥对的非对称 KMS 密钥进行加密和解密，或者签名和验证，但不能两者兼而有之。此属性（称为*[Key usage](create-keys.md#key-usage)*）与密钥规范分开确定，但应在选择密钥规范之前做出决定。

Amazon KMS 支持以下用于加密和解密或签名和验证的 RSA 密钥规范：
+ RSA\$12048
+ RSA\$13072
+ RSA\$14096

RSA 密钥规范因 RSA 密钥长度（以位为单位）而异。选择哪个 RSA 密钥规范可能取决于安全标准或任务要求。一般来说，可使用对任务而言实用又实惠的最大密钥。KMS 密钥加密操作的 RSA 密钥规范不同，其价格也不同。有关 Amazon KMS 定价的信息，请参阅[Amazon 密钥管理服务定价](https://www.amazonaws.cn/kms/pricing/)。有关请求配额的信息，请参阅 [请求配额](requests-per-second.md)。

### 用于加密和解密的 RSA 密钥规范
<a name="key-spec-rsa-encryption"></a>

使用 RSA 非对称 KMS 密钥行加密和解密时，用公有密钥加密，然后用私有密钥解密。当您调用 RSA KMS 密钥的`Encrypt`操作时，会 Amazon KMS 使用 RSA 密钥对中的公钥和您指定的加密算法来加密您的数据。 Amazon KMS 要解密密文，请调用`Decrypt`操作并指定相同的 KMS 密钥和加密算法。 Amazon KMS 然后使用 RSA key pair 中的私钥来解密您的数据。

您也可以下载公钥并使用它来加密外部的数据 Amazon KMS。请务必使用 Amazon KMS 支持 RSA KMS 密钥的加密算法。要解密密文，请采用相同的 KMS 密钥和加密算法调用 `Decrypt` 函数。

Amazon KMS 支持两种具有 RSA 密钥规格的 KMS 密钥加密算法。这些算法在 [PKCS \$11 2.2 版](https://tools.ietf.org/html/rfc8017)中定义，它们内部使用的哈希函数有所不同。在中 Amazon KMS，RSAES\$1OAEP 算法始终使用相同的哈希函数进行哈希处理和[掩码](https://tools.ietf.org/html/rfc8017#appendix-B.2)生成函数 ()。MGF1调用 [Encrypt](https://docs.amazonaws.cn/kms/latest/APIReference/API_Encrypt.html) 和 [Decrypt](https://docs.amazonaws.cn/kms/latest/APIReference/API_Decrypt.html) 操作时，需要指定加密算法。您可以为每个请求选择不同的算法。


**支持 RSA 密钥规范的加密算法**  

| 加密算法 | 算法描述 | 
| --- | --- | 
| RSAES\$1OAEP\$1SHA\$11 | PKCS \$11 2.2 版，7.1 节。使用 OAEP Padding 进行 RSA 加密，在哈希和 MGF1 掩码生成函数中使用 SHA-1 以及空标签。 | 
| RSAES\$1OAEP\$1SHA\$1256 | PKCS \$11，7.1 节。使用 OAEP Padding 进行 RSA 加密，在哈希和 MGF1 掩码生成函数中使用 SHA-256 以及空标签。 | 

无法将 KMS 密钥配置为使用特定的加密算法。但是，您可以使用 [kms: EncryptionAlgorithm](conditions-kms.md#conditions-kms-encryption-algorithm) 策略条件来指定允许委托人使用 KMS 密钥的加密算法。

要获取 KMS 密钥的加密算法，[请在 Amazon KMS 控制台中查看 KMS 密钥的加密配置](finding-keys.md#viewing-console-details)或使用[DescribeKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_DescribeKey.html)操作。 Amazon KMS 当您在 Amazon KMS 控制台中或使用[GetPublicKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_GetPublicKey.html)操作下载公钥时，还会提供密钥规范和加密算法。

您可以根据可在每个请求中加密的明文数据的长度，选择 RSA 密钥规范。下表显示了在对 [Encrypt](https://docs.amazonaws.cn/kms/latest/APIReference/API_Encrypt.html) 操作的单次调用中，可以加密的明文的最大长度（以字节为单位）。值因密钥规范和加密算法而异。为进行比较，使用对称加密 KMS 密钥一次最多可加密 4096 字节。

要计算这些算法的最大明文长度（以字节为单位），请使用以下公式：(*key\$1size\$1in\$1bits*/8)-(2 \$1 *hash\$1length\$1in\$1bits* /8)-2。例如，对于具有 SHA-256 的 RSA\$12048，最大明文长度为 (2048/8) - (2 \$1 256/8) -2 = 190 字节。


**Encrypt 操作中的最大明文长度（以字节为单位）**  

|  | 加密算法 |  密钥规范 | RSAES\$1OAEP\$1SHA\$11 | RSAES\$1OAEP\$1SHA\$1256 | 
| --- | --- | --- | --- | --- | 
| RSA\$12048 | 214 | 190 | 
| RSA\$13072 | 342 | 318  | 
| RSA\$14096 | 470 | 446  | 

### 用于签名和验证的 RSA 密钥规范
<a name="key-spec-rsa-sign"></a>

使用 RSA 非对称 KMS 密钥进行签名和验证时，用私有密钥为消息生成签名，然后用公有密钥验证签名。

当您调用非对称 KMS 密钥的`Sign`操作时，会 Amazon KMS 使用 RSA 密钥对中的私钥、消息和您指定的签名算法来生成签名。 Amazon KMS 要验证签名，请调用 [Verify](https://docs.amazonaws.cn/kms/latest/APIReference/API_Verify.html) 操作。指定签名，以及相同的 KMS 密钥、消息和签名算法。 Amazon KMS 然后使用 RSA key pair 中的公钥来验证签名。您也可以下载公钥并使用它来验证外部的签名 Amazon KMS。

Amazon KMS 支持所有具有 RSA 密钥规范的 KMS 密钥的以下签名算法。在您调用 [Sign](https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html) 和 [Verify](https://docs.amazonaws.cn/kms/latest/APIReference/API_Verify.html) 操作后，需要指定签名算法。您可以为每个请求选择不同的算法。使用 RSA 密钥对进行签名时，首选 RSASSA-PSS 算法。为了与现有应用程序兼容，我们加入了 RSASSA-PKCS1-v1\$15 算法。


**支持 RSA 密钥规范的签名算法**  

| 签名算法 | 算法描述 | 
| --- | --- | 
| RSASSA\$1PSS\$1SHA\$1256 | PKCS \$11 v2.2，第 8.1 节，带有 PSS 填充的 RSA 签名，消息摘要和 MGF1 掩码生成功能均使用 SHA-256 以及 256 位盐 | 
| RSASSA\$1PSS\$1SHA\$1384 | PKCS \$11 v2.2，第 8.1 节，带有 PSS 填充的 RSA 签名，消息摘要和 MGF1 掩码生成功能均使用 SHA-384 以及 384 位盐 | 
| RSASSA\$1PSS\$1SHA\$1512 | PKCS \$11 v2.2，第 8.1 节，带有 PSS 填充的 RSA 签名，消息摘要和 MGF1 掩码生成功能均使用 SHA-512 以及 512 位盐 | 
| RSSASSA\$1 \$1v1\$15\$1SHA\$1256 PKCS1 | PKCS \$11 2.2 版，8.2 节，具有 PKCS \$11v1.5 填充和 SHA-256 的 RSA 签名 | 
| RSSASSA\$1 \$1V1\$15\$1SHA\$1384 PKCS1 | PKCS \$11 2.2 版，8.2 节，具有 PKCS \$11v1.5 填充和 SHA-384 的 RSA 签名 | 
| RASSASSA\$1 \$1V1\$15\$15\$1SHA\$1512 PKCS1 | PKCS \$11 2.2 版，8.2 节，具有 PKCS \$11v1.5 填充和 SHA-512 的 RSA 签名 | 

无法将 KMS 密钥配置为使用特定的签名算法。但是，您可以使用 [kms: SigningAlgorithm](conditions-kms.md#conditions-kms-signing-algorithm) 策略条件来指定允许委托人使用 KMS 密钥的签名算法。

要获取 KMS 密钥的签名算法，请在 Amazon KMS 控制台中或使用[DescribeKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_DescribeKey.html)操作[查看 KMS 密钥的加密配置](finding-keys.md#viewing-console-details)。 Amazon KMS 当您在 Amazon KMS 控制台中或使用[GetPublicKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_GetPublicKey.html)操作下载公钥时，还会提供密钥规范和签名算法。

## 椭圆曲线密钥规范
<a name="key-spec-ecc"></a>

****

使用椭圆曲线 (ECC) 密钥规范时， Amazon KMS 会创建一个带有 ECC 密钥对的非对称 KMS 密钥，用于签名和验证或派生共享密钥（但不能两者兼而有之）。生成签名或派生共享密钥的私有密钥永远不会让 Amazon KMS 处于未加密状态。您可以使用公钥来[验证内部的签名](https://docs.amazonaws.cn/kms/latest/APIReference/API_Verify.html) Amazon KMS，也可以[下载公钥](importing-keys-get-public-key-and-token.md)以在外部使用 Amazon KMS。

使用 Edwards Curve 密钥规范时， Amazon KMS 会创建一个带有 Ed25519 密钥对的非对称 KMS 密钥进行签名和验证。生成签名的私钥永远不会处于 Amazon KMS 未加密状态。您可以使用公钥来[验证内部的签名](https://docs.amazonaws.cn/kms/latest/APIReference/API_Verify.html) Amazon KMS，也可以[下载公钥](importing-keys-get-public-key-and-token.md)以在外部使用 Amazon KMS。

Amazon KMS 支持非对称 KMS 密钥的以下 ECC 密钥规范。
+ 非对称 NIST 标准椭圆曲线密钥对（签名和验证——或者——派生共享密钥）
  + ECC\$1NIST\$1P256 (secp256r1)
  + ECC\$1NIST\$1P384 (secp384r1)
  + ECC\$1NIST\$1P521 (secp521r1)
  + ECC\$1NIST\$1 EDWARDS25519 (ed25519)-仅限签名和验证
    + **注意：**对于 ECC\$1NIST\$1 EDWARDS25519 KMS 密钥，\$1SHA\$1512 签名算法需要，而 ED25519 \$1PH\$1SHA\$1512 则需要。[`MessageType:RAW` ED25519[https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)](https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)这些消息类型不能互换使用。
+ 其他非对称椭圆曲线密钥对（签名和验证）
  + ECC\$1SECG\$1P256K1 ([secp256k1](https://en.bitcoin.it/wiki/Secp256k1))，常用于加密货币。

选择哪个 ECC 密钥规范可能取决于安全标准或任务要求。一般来说，可使用对任务而言实用又实惠的点最多的曲线。

如果您要创建非对称 KMS 密钥来[派生共享密钥，请使用 NIST 标准的椭圆曲线密](https://docs.amazonaws.cn/kms/latest/APIReference/API_DeriveSharedSecret.html)钥规范之一（ECC\$1SECG\$1P256K1 和 ECC\$1NIST\$1 除外）。EDWARDS25519唯一支持的用于派生共享密钥的密钥协议算法是[椭圆曲线加密辅助因子 Diffie-Hellman Priman Primitive](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf#page=60)（ECDH）。有关如何离线派生共享密钥的示例，请参阅[离线派生共享密钥](offline-operations.md#key-spec-ecc-offline)。

如果您正在创建非对称 KMS 密钥以用于加密货币，请使用 ECC\$1SEG\$1P256K1 密钥规范。此密钥规范也可以用于其他目的，但比特币和其他加密货币必须使用此密钥规范。

下表显示了每个 ECC 密钥规范所 Amazon KMS 支持的签名算法。无法将 KMS 密钥配置为使用特定的签名算法。但是，您可以使用 [kms: SigningAlgorithm](conditions-kms.md#conditions-kms-signing-algorithm) 策略条件来指定允许委托人使用 KMS 密钥的签名算法。


**支持 ECC 密钥规范的签名算法**  

|  密钥规范 | 签名算法 | 算法描述 | 
| --- | --- | --- | 
| ECC\$1NIST\$1P256  | ECDSA\$1SHA\$1256 | NIST FIPS 186-4, Section 6.4, ECDSA signature using the curve specified by the key and SHA-256 表示消息摘要。 | 
| ECC\$1NIST\$1P384 | ECDSA\$1SHA\$1384 | NIST FIPS 186-4, Section 6.4, ECDSA signature using the curve specified by the key and SHA-384 表示消息摘要。 | 
| ECC\$1NIST\$1P521 | ECDSA\$1SHA\$1512 | NIST FIPS 186-4, Section 6.4, ECDSA signature using the curve specified by the key and SHA-512 表示消息摘要。 | 
| ECC\$1SECG\$1P256K1 | ECDSA\$1SHA\$1256 | NIST FIPS 186-4, Section 6.4, ECDSA signature using the curve specified by the key and SHA-256 表示消息摘要。 | 
| ECC\$1NIST\$1 EDWARDS25519 | ED25519\$1SHA\$1512 | NIST FIPS 186-5, Section 7, EdDSA signature using the curve specified by the key and SHA-512 表示消息摘要。KMS 需要[https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)使用此算法。 | 
| ECC\$1NIST\$1 EDWARDS25519 | ED25519\$1PH\$1SHA\$1512 | NIST FIPS 186-5, Section 7, EdDSA signature using the curve specified by the key and SHA-512 表示消息摘要。KMS 需要[https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType](https://docs.amazonaws.cn/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-MessageType)使用此算法。 | 

## HMAC KMS 密钥的密钥规范
<a name="hmac-key-specs"></a>

Amazon KMS 支持不同长度的对称 HMAC 密钥。您选择的密钥规范可取决于安全、法规或业务要求。密钥的长度决定了[GenerateMac](https://docs.amazonaws.cn/kms/latest/APIReference/API_GenerateMac.html)和[VerifyMac](https://docs.amazonaws.cn/kms/latest/APIReference/API_VerifyMac.html)操作中使用的 MAC 算法。一般来说，较长的密钥更安全。使用适用于您的使用场景的最长密钥。


| HMAC 密钥规范 | MAC 算法 | 
| --- | --- | 
| HMAC\$1224 | HMAC\$1SHA\$1224 | 
| HMAC\$1256 | HMAC\$1SHA\$1256 | 
| HMAC\$1384 | HMAC\$1SHA\$1384 | 
| HMAC\$1512 | HMAC\$1SHA\$1512 | 

## ML-DSA 密钥规范
<a name="key-spec-mldsa"></a>

ML-DSA 密钥是 Module-Lattice-Based数字签名算法 (ML-DSA) 中使用的加密密钥，该算法专为后量子密码学而设计。该算法是美国国家标准与技术研究院（NIST）标准化工作的一部分，详见[联邦信息处理标准（FIPS）204](https://csrc.nist.gov/pubs/fips/204/final) 所述。

ML-DSA 密钥用于公私密钥对系统。私有密钥用于对数据进行签名，公有密钥则用于验证签名。即使面对潜在的量子计算机威胁，该系统也可确保数字消息或文档的真实性、完整性和不可否认性。

使用 ML-DSA 密钥规范创建密钥时， Amazon KMS 会创建一个带有 ML-DSA 密钥对的非对称 KMS 密钥用于签名和验证。生成签名的私钥永远不会处于 Amazon KMS 未加密状态。您可以使用公钥来[验证内部的签名](https://docs.amazonaws.cn/kms/latest/APIReference/API_Verify.html) Amazon KMS，也可以[下载公钥](https://docs.amazonaws.cn/kms/latest/developerguide/importing-keys-get-public-key-and-token.html)以在外部使用 Amazon KMS。

Amazon KMS 支持以下 ML-DSA 非对称 KMS 密钥规范：
+ ML\$1DSA\$144
+ ML\$1DSA\$165
+ ML\$1DSA\$187

Amazon KMS 支持所有 ML-DSA 密钥规范的 ML\$1DSA\$1SHAKE\$1256 签名算法。

## SM2 密钥规范（仅限中国地区）
<a name="key-spec-sm"></a>

该 SM2 密钥规范是在[中国国家商用密码管理局 (OSCCA) 发布的一 GM/T 系列规范中定义的](https://www.oscca.gov.cn/)椭圆曲线密钥规范。密 SM2 钥规范仅在中国地区可用。使用 SM2 密钥规范时，使用密钥对 Amazon KMS 创建非对称 KMS SM2 密钥。你可以在里面使用你的 SM2 密钥 pair Amazon KMS，也可以下载公钥在外面使用 Amazon KMS。有关更多信息，请参阅 [使用 SM2 密钥对进行离线验证（仅限中国区域）](offline-operations.md#key-spec-sm-offline-verification)。

每个 KMS 密钥都只能有一个[Key usage](create-keys.md#key-usage)。您可以使用 SM2 KMS 密钥进行签名和验证、加密和解密*或*获取共享密钥。在创建 KMS 密钥时，您必须指定密钥用途，并且密钥一经创建便无法更改。

如果您要创建非对称 KMS 密钥来[派生共享密](https://docs.amazonaws.cn/kms/latest/APIReference/API_DeriveSharedSecret.html)钥，请使用密 SM2 钥规范。唯一支持的用于派生共享密钥的密钥协议算法是[椭圆曲线加密辅助因子 Diffie-Hellman Priman Primitive](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf#page=60)（ECDH）。

Amazon KMS 支持以下 SM2 加密和签名算法：
+   
**SM2PKE** 加密算法  
SM2PKE 是一种基于椭圆曲线的加密算法，由 OSCCA 在 0003.4-2012 中定义。 GM/T 
+   
**SM2DSA** 签名算法  
SM2DSA 是一种基于椭圆曲线的签名算法，由 OSCCA 在 0003.2-2012 中定义。 GM/T SM2DSA 需要一个可区分的 ID，该ID使用哈希算法进行 SM3 哈希处理，然后与您传递给的消息或消息摘要组合在一起。 Amazon KMS然后对这个串联的值进行哈希处理并由其签名。 Amazon KMS