

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

# 步驟 2：下載包裝公有金鑰及匯入字符
<a name="importing-keys-get-public-key-and-token"></a>

[建立 AWS KMS key 不含金鑰資料的 ](importing-keys-create-cmk.md)後，請使用 AWS KMS 主控台或 [GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html) API，下載該 KMS 金鑰的包裝公有金鑰和匯入字符。包裝公有金鑰與匯入字符是不可分割的集合，必須一起使用。

您將利用包裝公有金鑰來[加密您的金鑰資料](importing-keys-encrypt-key-material.md)，以便進行傳輸。在下載 RSA 包裝金鑰對之前，您可以選取 RSA 包裝金鑰對的長度 （金鑰規格），以及用於在[步驟 3 ](importing-keys-encrypt-key-material.md)中加密匯入金鑰材料以進行傳輸的包裝演算法。 AWS KMS 也支援 SM2 包裝金鑰規格 （僅限中國區域）。

每個包裝公有金鑰與匯入字符集合的有效期為 24 小時。如您未在下載後 24 小時內利用它們來匯入金鑰資料，則必須下載新的集合。您可隨時下載新的包裝公有金鑰與匯入字符集合。這可讓您更改 RSA 包裝金鑰長度 (「金鑰規格」) 或替取代遺失的集合。

您也可下載包裝公有金鑰與匯入字符集合，以便[重新匯入相同金鑰資料](importing-keys-import-key-material.md#reimport-key-material)至 KMS 金鑰。這樣做可設定或變更金鑰資料的過期時間，或者還原已過期或已刪除的金鑰資料。每次匯入金鑰材料時，都必須下載並重新加密。 AWS KMS

**運用包裝公有金鑰**  
下載包含專屬於您的公有金鑰 AWS 帳戶，也稱為*包裝公有金鑰*。  
匯入金鑰材料之前，您可以使用公有包裝金鑰加密金鑰材料，然後將加密的金鑰材料上傳至其中 AWS KMS。當 AWS KMS 收到您的加密金鑰材料時，它會使用對應的私有金鑰解密金鑰材料，然後在 AES 對稱金鑰下重新加密金鑰材料，全部都在 AWS KMS 硬體安全模組 (HSM) 內。

**使用匯入符記**  
該下載包括匯入字符，字符所帶的中繼資料可確保金鑰材料正確匯入。當您上傳加密的金鑰資料到 時 AWS KMS，您必須上傳您在此步驟中下載的相同匯入字符。

## 選取包裝公有金鑰規格
<a name="select-wrapping-key-spec"></a>

為了在匯入期間保護您的金鑰材料，您可以使用您下載的包裝公有金鑰 AWS KMS和支援的[包裝演算法](#select-wrapping-algorithm)來加密它。在下載包裝公有金鑰與匯入字符之前，請先選取金鑰規格。所有包裝金鑰對都會在 AWS KMS 硬體安全模組 (HSMs中產生。您的私有金鑰永遠不會以純文字形式離開 HSM。

**RSA 包裝金鑰規格**  
包裝公有金鑰的*金鑰規格*決定 RSA 金鑰對的金鑰長度，該金鑰對在傳輸至 AWS KMS的過程會保護您的金鑰資料。一般情況而言，建議採用符合實用的最長公有金鑰。我們提供數種包裝公有金鑰規格，以便支援各種 HSM 與金鑰管理器。  
AWS KMS 支援用於匯入所有類型金鑰材料的 RSA 包裝金鑰的下列金鑰規格，除非另有說明。  
+ RSA\_4096 （建議）
+ RSA\_3072
+ RSA\_2048
**注意**  
不支援下列組合：ECC\_NIST\_P521 金鑰資料、RSA\_2048 公有包裝金鑰規格以及 RSAES\_OAE\_SHA\_\* 包裝演算法。  
您無法使用 RSA\_2048 公有包裝金鑰直接包裝 ECC\_NIST\_P521 金鑰材質。使用較大的包裝金鑰或 RSA\_AES\_KEY\_WRAP\_SHA\_\* 包裝演算法。

**SM2 包裝金鑰規格 （僅限中國區域）**  
AWS KMS 支援用於匯入非對稱金鑰材料的 SM2 包裝金鑰的下列金鑰規格。  
+ SM2

## 選取包裝演算法
<a name="select-wrapping-algorithm"></a>

為在匯入期間保護金鑰資料，請利用下載的包裝公有金鑰及支援的包裝演算法來加密金鑰資料。

AWS KMS 支援數個標準 RSA 包裝演算法和兩個步驟的混合包裝演算法。一般而言，建議採用相容匯入金鑰資料及[包裝金鑰規格](#select-wrapping-key-spec)的最安全包裝演算法。您通常是選擇硬體安全模組 (HSM) 或保護金鑰資料的金鑰管理系統所支援的演算法。

下表顯示每種金鑰資料與 KMS 金鑰類型所支援的包裝演算法。演算法以偏好順序列出。


| 金鑰資料 | 支援的包裝演算法與規格 | 
| --- | --- | 
| 對稱加密金鑰 256 位元 AES 金鑰<br /> <br />128 位元 SM4 金鑰 (僅限中國區域) |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/importing-keys-get-public-key-and-token.html)  | 
| 非對稱 RSA 私有金鑰  |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/importing-keys-get-public-key-and-token.html)  | 
| 非對稱橢圓曲線 (ECC) 私有金鑰  <br />您不能搭配採用 RSAES\_OAEP\_SHA\_\* 包裝演算法與 RSA\_2048 包裝金鑰規格來包裝 ECC\_NIST\_P521 金鑰資料。 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/importing-keys-get-public-key-and-token.html)  | 
| 非對稱 SM2 私有金鑰 （僅限中國區域） |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/importing-keys-get-public-key-and-token.html)  | 
| HMAC 金鑰 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/importing-keys-get-public-key-and-token.html)  | 

**注意**  
中國區域不支援 `RSA_AES_KEY_WRAP_SHA_256`和 `RSA_AES_KEY_WRAP_SHA_1`包裝演算法。
+ `RSA_AES_KEY_WRAP_SHA_256` - 此為兩步驟混合包裝演算法，結合加密金鑰資料以及您產生的 AES 對稱金鑰，然後利用下載的 RSA 公有包裝金鑰與 RSAES\_OAEP\_SHA\_256 包裝演算法來加密 AES 對稱金鑰。

  除了您必須使用`RSA_AES_KEY_WRAP_SHA_*`包裝演算法的中國區域以外，包裝 RSA 私有金鑰材料需要`SM2PKE`包裝演算法。
+ `RSA_AES_KEY_WRAP_SHA_1` - 此為兩步驟混合包裝演算法，結合加密金鑰資料以及您產生的 AES 對稱金鑰，然後利用下載的 RSA 包裝公有金鑰與 RSAES\_OAEP\_SHA\_1 包裝演算法來加密 AES 對稱金鑰。

  除了您必須使用`RSA_AES_KEY_WRAP_SHA_*`包裝演算法的中國區域以外，包裝 RSA 私有金鑰材料需要`SM2PKE`包裝演算法。
+ `RSAES_OAEP_SHA_256` – RSA 加密演算法搭配最佳非對稱加密填補 (OAEP) 以及 SHA-256 雜湊函數。
+ `RSAES_OAEP_SHA_1` – RSA 加密演算法搭配最佳非對稱加密填補 (OAEP) 以及 SHA-1 雜湊函數。
+ `RSAES_PKCS1_V1_5` （已棄用；截至 2023 年 10 月 10 日， AWS KMS 不支援 RSAES\_PKCS1\_V1\_5 包裝演算法） – RSA 加密演算法搭配 PKCS \#1 版本 1.5 中定義的填補格式。
+ `SM2PKE` （僅限中國區域） – OSCCA 在 GM/T 0003.4-2012 中定義的橢圓曲線型加密演算法。

**Topics**
+ [選取包裝公有金鑰規格](#select-wrapping-key-spec)
+ [選取包裝演算法](#select-wrapping-algorithm)
+ [下載包裝公有金鑰與匯入字符 (主控台)](#importing-keys-get-public-key-and-token-console)
+ [下載包裝公有金鑰和匯入字符 (AWS KMS API)](#importing-keys-get-public-key-and-token-api)

## 下載包裝公有金鑰與匯入字符 (主控台)
<a name="importing-keys-get-public-key-and-token-console"></a>

您可以使用 AWS KMS 主控台下載包裝公有金鑰和匯入字符。

1. 如果您剛完成[建立不含金鑰材料之 KMS 金鑰](importing-keys-create-cmk.md#importing-keys-create-cmk-console)的步驟，且目前是在 **Download wrapping key and import token** (下載包裝金鑰和匯入字符) 頁面，請跳到 [Step 10](#id-wrap-step)。

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** (客戶受管金鑰)。
**提示**  
您僅能匯入金鑰資料至**來源**是**外部 (匯入金鑰資料) **的 KMS 金鑰。這表示建立的 KMS 金鑰不含金鑰資料。如要將 **Origin (來源)** 資料行新增至您的資料表，請在頁面的右上角選擇設定圖示 (![](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/images/console-icon-settings-new.png))。開啟 **Origin (來源)**，然後選擇 **Confirm (確認)**。

1. 選擇待匯入的 KMS 金鑰的別名或金鑰 ID。

1. 選擇 **Cryptographic configuration** (密碼編譯組態) 索引標籤並檢視其值。索引標籤位於 **General Configuration** (一般組態) 區段下。

   您僅能匯入金鑰資料至**來源**是**外部 (匯入金鑰資料) **的 KMS 金鑰。如需有關建立具有匯入金鑰材料之 KMS 金鑰的資訊，請參閱 [匯入金鑰的 AWS KMS 金鑰材料](importing-keys.md)。

1. 根據您的金鑰類型選擇適當的標籤。
   + 對於非對稱和 HMAC 金鑰，請選擇**金鑰材料**索引標籤。
   + 針對對稱加密金鑰，選擇**金鑰材料和輪換**標籤。

1. 選擇匯入動作。
   + 針對非對稱和 HMAC 金鑰，選擇**匯入金鑰材料**。
   + 針對對稱加密金鑰，選擇下列其中一項：
     + **匯入初始金鑰材料** （如果尚未匯入金鑰材料）
     + **匯入新的金鑰材料** （新增要輪換的新材料）
     + **重新匯入金鑰材料** （可從金鑰材料資料表中的**動作**功能表取得）
**注意**  
對於多區域金鑰，您必須先將新的金鑰材料匯入主要區域金鑰。然後，將相同的金鑰材料匯入每個複本區域金鑰。  
對於主要多區域金鑰，**金鑰資料**資料表包含**複本匯入狀態**欄，顯示所有複本區域的匯入狀態 （例如，匯入 3 的 0)。選擇複本匯入狀態值，以開啟顯示每個複本區域的匯入狀態的模態。模態為尚未**匯入新金鑰材料**的複本區域提供匯入金鑰材料連結。

1. 針對**選取包裝金鑰規格**，請選擇 KMS 金鑰的組態。在建立此金鑰後，您便無法變更金鑰規格。

1. <a name="id-wrap-step"></a>對於 **Select wrapping algorithm (選取包裝演算法)**，請選擇您將用來加密金鑰材料的選項。如需選項的詳細資訊，請參閱[選取包裝演算法](#select-wrapping-algorithm)。

1. 選擇**下載包裝公有金鑰與匯入字符**，然後儲存檔案。

   如果您有 **Next (下一步)** 選項，現在請繼續程序，選擇 **Next (下一步)**。若要稍後再繼續，請選擇 **Cancel (取消)**。

1. 解壓縮您在上一個步驟中儲存的 `.zip` 檔案 (`Import_Parameters_{{<key_id>}}_{{<timestamp>}}`)。

   資料夾內含下列檔案：
   + 在名為 的檔案中包裝公有金鑰`WrappingPublicKey.bin`。
   + 匯入字符位於名為 `ImportToken.bin` 的檔案。
   + 名為 README.txt 的文本檔案。此檔案包含包裝公有金鑰的相關資訊、用來加密金鑰資料的包裝演算法，以及包裝公有金鑰與匯入字符過期的日期及時間。

1. 若要繼續程序，請參閱[加密金鑰材料](importing-keys-encrypt-key-material.md)。

## 下載包裝公有金鑰和匯入字符 (AWS KMS API)
<a name="importing-keys-get-public-key-and-token-api"></a>

若要下載公有金鑰和匯入字符，請使用 [GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html) API。指定將與匯入金鑰材料相關聯的 KMS 金鑰。此 KMS 金鑰的 [Origin](create-keys.md#key-origin) (來源) 值必須為 `EXTERNAL`。

**注意**  
您無法匯入 ML-DSA KMS 金鑰的金鑰材料。

此範例指定 `RSA_AES_KEY_WRAP_SHA_256` 包裝演算法、RSA\_3072 包裝公有金鑰規格，以及金鑰 ID 範例。將這些範例值取代為下載的有效值。對於金鑰 ID，您可採用[金鑰 ID](concepts.md#key-id-key-id) 或[金鑰 ARN](concepts.md#key-id-key-ARN)，但您不能在此操作採用[別名名稱](concepts.md#key-id-alias-name)或[別名 ARN](concepts.md#key-id-alias-ARN)。

```
$ aws kms get-parameters-for-import \
    --key-id {{1234abcd-12ab-34cd-56ef-1234567890ab}} \
    --wrapping-algorithm {{RSA_AES_KEY_WRAP_SHA_256}} \
    --wrapping-key-spec {{RSA_3072}}
```

如果命令成功執行，您會看到類似如下的輸出：

```
{
    "ParametersValidTo": 1568290320.0,
    "PublicKey": "{{public key (base64 encoded)}}",
    "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "ImportToken": "{{import token (base64 encoded)}}"
}
```

為了準備下一步要使用的資料，將對公有金鑰和匯入字符進行 base64 解碼，然後將解碼的值保存在檔案中。

若要對公有金鑰和匯入字符進行 base64 解碼：

1. 複製 base64 編碼公有金鑰 (在範例輸出中表示為{{公有金鑰 (base64 編碼)}})，將其貼入新檔案，然後儲存檔案。以描述性名稱命名檔案，例如 `PublicKey.b64`。

1. 使用 [OpenSSL](https://openssl.org/) 來以 base64 解碼檔案的內容，並將解碼資料儲存到新的檔案。以下範例會解碼您在上一個步驟中所儲存檔案的資料 (`PublicKey.b64`)，並將輸出儲存到新的檔案，檔名為 `WrappingPublicKey.bin`。

   ```
   $ openssl enc -d -base64 -A -in PublicKey.b64 -out WrappingPublicKey.bin
   ```

1. 複製 base64 編碼匯入字符 (在範例輸出中表示為{{匯入字符 (base64 編碼)}})、將其貼入新檔案，然後儲存檔案。提供檔案描述性的名稱，例如 `importtoken.b64`。

1. 使用 [OpenSSL](https://openssl.org/) 來以 base64 解碼檔案的內容，並將解碼資料儲存到新的檔案。以下範例會解碼您在上一個步驟中所儲存檔案的資料 (`ImportToken.b64`)，並將輸出儲存到新的檔案，檔名為 `ImportToken.bin`。

   ```
   $ openssl enc -d -base64 -A -in importtoken.b64 -out ImportToken.bin
   ```

繼續執行「[步驟 3：加密金鑰材料](importing-keys-encrypt-key-material.md)」。