

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

# 建立非對稱 KMS 金鑰
<a name="asymm-create-key"></a>

您可以在 AWS KMS 主控台中使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) API 或使用 AWS：：KMS：：Key 範本來建立[非對稱 KMS](symmetric-asymmetric.md) 金鑰。 [AWS::KMS::Key CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html) 非對稱 KMS 金鑰代表可用於加密、簽署或衍生共用秘密的公有和私有金鑰對。私有金鑰會保留在 內 AWS KMS。若要下載要在 外部使用的公有金鑰 AWS KMS，請參閱 [下載公有金鑰](download-public-key.md)。

建立非對稱 KMS 金鑰時，您必須選取金鑰規格。通常，您選取的金鑰規格取決於法規、安全或業務需求。但也可能受需要加密或簽署之訊息的大小所左右。一般而言，較長的加密金鑰更能抵禦暴力破解攻擊。如需所有支援金鑰規格的詳細說明，請參閱 [金鑰規格參考](symm-asymm-choose-key-spec.md)。

AWS 與 整合的 服務 AWS KMS 不支援非對稱 KMS 金鑰。如果您想要建立 KMS 金鑰來加密您在 AWS 服務中存放或管理的資料，[請建立對稱加密 KMS 金鑰](create-symmetric-cmk.md)。

如需建立 KMS 金鑰所需之許可的詳細資訊，請參閱 [建立 KMS 金鑰的許可](create-keys.md#create-key-permissions)。

## 使用 AWS KMS 主控台
<a name="create-asymmetric-keys-console"></a>

您可以使用 AWS 管理主控台 來建立非對稱 AWS KMS keys (KMS 金鑰）。每個非對稱 KMS 金鑰皆代表一對公有和私有金鑰對。

**重要**  
請勿在別名、說明或標籤包含機密或敏感資訊。這些欄位可能在 CloudTrail 日誌與其他輸出中以純文字顯示。

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 的 AWS Key Management Service (AWS KMS) 主控台。

1. 若要變更 AWS 區域，請使用頁面右上角的區域選擇器。

1. 在導覽窗格中，選擇 **Customer managed keys** (客戶受管金鑰)。

1. 選擇**建立金鑰**。

1. 若要建立非對稱 **KMS 金鑰**，請在金鑰類型中選擇 **Asymmetric** (非對稱)。

1. 若要建立用於公有金鑰加密的非對稱 KMS 金鑰，請在**金鑰使用情形**中選擇 **Encrypt and decrypt** (加密和解密)。

   若要建立用於簽署訊息和驗證簽章的非對稱 KMS 金鑰，請在**金鑰用量**中選擇**簽署和驗證**。

   若要建立用於衍生共用秘密的非對稱 KMS 金鑰，請在**金鑰用量**中選擇**金鑰協議**。

   如需選擇金鑰用途值的說明，請參閱[選擇要建立的 KMS 金鑰類型](create-keys.md#symm-asymm-choose)。

1. 選取非對稱 KMS 金鑰的規格 (**Key spec** (金鑰規格))。

1. 選擇**下一步**。

1. 輸入 KMS 金鑰的[別名](kms-alias.md)。別名名稱的開頭不可以是 **aws/**。**aws/** 字首由 Amazon Web Services 保留，以代表您帳戶中的 AWS 受管金鑰 。

   *別名*是易記的名稱，可用來識別主控台和部分 AWS KMS APIs中的 KMS 金鑰。我們建議您選擇別名來表示您計劃保護的資料類型，或您計劃搭配 KMS 金鑰一起使用的應用程式。

   在 AWS 管理主控台中建立 KMS 金鑰時需要別名。使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作時，您不能指定別名，但您可以使用主控台或 [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) 操作來建立現有 KMS 金鑰的別名。如需詳細資訊，請參閱[中的別名 AWS KMS](kms-alias.md)。

1. (選用) 輸入 KMS 金鑰的描述。

   輸入描述來說明您計劃保護的資料類型，或您計劃搭配 KMS 金鑰一起使用的應用程式。

   您可以立即新增描述或在任意時間更新，除非[金鑰狀態](key-state.md)為 `Pending Deletion` 或 `Pending Replica Deletion`。若要新增、變更或刪除現有客戶受管金鑰的描述，請在 中編輯 KMS 金鑰詳細資訊頁面上的描述， AWS 管理主控台 或使用 [UpdateKeyDescription](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html) 操作。

1. (選用) 輸入標籤索引鍵和選用標籤值。若要將其他標籤新增至 KMS 金鑰，請選擇 **Add tag** (新增標籤)。

   當您將標籤新增至 AWS 資源時， AWS 會產生成本分配報告，其中包含依標籤彙總的用量和成本。標籤也可以用來控制 KMS 金鑰的存取。如需標記 KMS 金鑰的詳細資訊，請參閱 [中的標籤 AWS KMS](tagging-keys.md) 和 [適用於 的 ABAC AWS KMS](abac.md)。

1. 選擇**下一步**。

1. 選取可管理 KMS 金鑰的 IAM 使用者和角色。
**備註**  
此金鑰政策提供此 KMS 金鑰的完整 AWS 帳戶 控制權。它允許帳戶管理員使用 IAM 政策授予其他主體管理 KMS 金鑰的許可。如需詳細資訊，請參閱[預設金鑰政策](key-policy-default.md)。  
IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 中的安全性最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。  
 AWS KMS 主控台會將金鑰管理員新增至陳述式識別碼 下的金鑰政策`"Allow access for Key Administrators"`。修改此陳述式識別符可能會影響主控台顯示您對陳述式所做的更新的方式。

1. (選用) 為了防止選取的 IAM 使用者和角色刪除此 KMS 金鑰，請在頁面底部的 **Key deletion** (金鑰刪除) 區段中，清除 **Allow key administrators to delete this key** (允許金鑰管理員刪除此金鑰) 核取方塊。

1. 選擇**下一步**。

1. 選取可將 KMS 金鑰用於[密碼編譯操作](kms-cryptography.md#cryptographic-operations)的 IAM 使用者和角色。
**備註**  
IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 中的安全性最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。  
 AWS KMS 主控台會將金鑰使用者新增至陳述式識別碼 `"Allow use of the key"`和 下的金鑰政策`"Allow attachment of persistent resources"`。修改這些陳述式識別符可能會影響主控台顯示您對陳述式所做的更新。

1. （選用） 您可以允許其他 AWS 帳戶 使用此 KMS 金鑰進行密碼編譯操作。若要這樣做，請在頁面底部的**其他 AWS 帳戶** 區段中，選擇**新增另一個 AWS 帳戶**，然後輸入外部帳戶的 AWS 帳戶 識別號碼。若要新增多個外部帳戶，請重複此步驟。
**注意**  
若要允許外部帳戶中的主體使用 KMS 金鑰，外部帳戶的管理員必須建立 IAM 政策來提供這些許可。如需詳細資訊，請參閱[允許其他帳戶中的使用者使用 KMS 金鑰](key-policy-modifying-external-accounts.md)。

1. 選擇**下一步**。

1. 檢閱金鑰的金鑰政策陳述式。若要變更金鑰政策，請選取**編輯**。

1. 選擇**下一步**。

1. 檢閱您選擇的金鑰設定。您仍然可以返回並變更所有設定。

1. 選擇 **Finish** (完成) 來建立 KMS 金鑰。

## 使用 AWS KMS API
<a name="create-asymmetric-keys-api"></a>

您可以使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作來建立非對稱 AWS KMS key。以下範例使用 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/)，但您可以使用任何支援的程式設計語言。

當您建立非對稱 KMS 金鑰時，必須指定 `KeySpec` 參數，決定您建立的金鑰類型。此外，您必須指定 ENCRYPT\$1DECRYPT、SIGN\$1VERIFY 或 KEY\$1AGREEMENT `KeyUsage`的值。建立 KMS 金鑰之後即無法變更這些屬性。

`CreateKey` 操作不允許您指定別名，但您可以使用 [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) 操作來建立新 KMS 金鑰的別名。

**重要**  
請勿在 `Description` 或 `Tags` 欄位包含機密或敏感資訊。這些欄位可能在 CloudTrail 日誌與其他輸出中以純文字顯示。

**建立用於公有加密的非對稱 KMS 金鑰對**  
下列範例會使用 `CreateKey` 操作建立專為公有金鑰加密設計之 4096 位元 RSA 金鑰的非對稱 KMS 金鑰。

```
$ aws kms create-key --key-spec RSA_4096 --key-usage ENCRYPT_DECRYPT
{
    "KeyMetadata": {
        "KeyState": "Enabled",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "KeyManager": "CUSTOMER",
        "Description": "",
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "CreationDate": 1569973196.214,
        "MultiRegion": false,
        "KeySpec": "RSA_4096",
        "CustomerMasterKeySpec": "RSA_4096",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "EncryptionAlgorithms": [
            "RSAES_OAEP_SHA_1",
            "RSAES_OAEP_SHA_256"
        ],
        "AWSAccountId": "111122223333",
        "Origin": "AWS_KMS",
        "Enabled": true
    }
}
```

**建立用於簽署和驗證的非對稱 KMS 金鑰對**  
下列範例命令會建立非對稱 KMS 金鑰，代表用於簽署和驗證的一組 ECC 金鑰。您無法建立用於加密和解密的橢圓曲線金鑰對。

```
$ aws kms create-key --key-spec ECC_NIST_P521 --key-usage SIGN_VERIFY
{
    "KeyMetadata": {
        "KeyState": "Enabled",
        "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321",
        "CreationDate": 1570824817.837,
        "Origin": "AWS_KMS",
        "SigningAlgorithms": [
            "ECDSA_SHA_512"
        ],
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321",
        "AWSAccountId": "111122223333",
        "KeySpec": "ECC_NIST_P521",
        "CustomerMasterKeySpec": "ECC_NIST_P521",
        "KeyManager": "CUSTOMER",
        "Description": "",
        "Enabled": true,
        "MultiRegion": false,
        "KeyUsage": "SIGN_VERIFY"
    }
}
```

**建立非對稱 KMS 金鑰對以衍生共用秘密**  
下列範例命令會建立非對稱 KMS 金鑰，代表用於衍生共用秘密的 ECDH 金鑰對。您無法建立用於加密和解密的橢圓曲線金鑰對。

```
$ aws kms create-key --key-spec ECC_NIST_P256 --key-usage KEY_AGREEMENT
{
    "KeyMetadata": {
        "AWSAccountId": "111122223333",
        "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321",
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321",
        "CreationDate": "2023-12-27T19:10:15.063000+00:00",
        "Enabled": true,
        "Description": "",
        "KeyUsage": "KEY_AGREEMENT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "ECC_NIST_P256",
        "KeySpec": "ECC_NIST_P256",
        "KeyAgreementAlgorithms": [
            "ECDH"
        ],
        "MultiRegion": false
    }
}
```