

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

# 匯入金鑰
<a name="keys-import"></a>

**重要**  
 範例需要最新版本的 AWS CLI V2。開始使用之前，請確定您已升級至[最新版本](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

**Contents**
+ [匯入金鑰簡介](#keys-import-introduction)
+ [匯入對稱金鑰](#keys-import-symmetric)
  + [使用非對稱技術匯入金鑰 (TR-34)](#keys-import-tr34)
  + [使用非對稱技術 (ECDH) 匯入金鑰](#keys-import-ecdh)
  + [使用非對稱技術匯入金鑰 (RSA Unwrap)](#keys-import-rsaunwrap)
  + [使用預先建立的金鑰交換金鑰 (TR-31) 匯入對稱金鑰](#keys-import-tr31)
+ [匯入非對稱 (RSA、ECC) 公有金鑰](#keys-import-asymmetric)
  + [匯入 RSA 公有金鑰](#keys-import-rsapublickey)
  + [匯入 ECC 公有金鑰](#keys-import-eccpublickey)

## 匯入金鑰簡介
<a name="keys-import-introduction"></a>

**注意**  
使用 X9.143、TR-31 或 TR-34 金鑰區塊匯入金鑰時， AWS 付款加密通常會保留 （但不使用） 任何選用的標頭。密碼編譯操作期間會使用 HM(HMAC 雜湊類型） 標頭。KP 標頭 （包裝金鑰的 KCV) 專屬於匯入程序，不會保留。

與對手方交換金鑰時，通常會先交換金鑰交換金鑰 (KEK)。然後，此金鑰將用於保護後續金鑰。使用電子格式交換 KEK 可能會使用非對稱技術，例如 TR-34、ECDH 或 RSA 包裝。後續金鑰將使用對稱金鑰交換交換，例如 TR-31。此 KEK 將長期存在，並且只能根據政策及其定義的加密期間每幾年更新一次。

如果只交換一或兩個金鑰，您也可以選擇使用非對稱技術直接交換該金鑰，例如 BDK。 AWS 付款密碼編譯支援兩種金鑰交換方法。

## 匯入對稱金鑰
<a name="keys-import-symmetric"></a>

### 使用非對稱技術匯入金鑰 (TR-34)
<a name="keys-import-tr34"></a>

![\[AWS 付款密碼編譯金鑰加密金鑰匯入程序\]](http://docs.aws.amazon.com/zh_tw/payment-cryptography/latest/userguide/images/keyimport-process-kek-import.png)


 TR-34 使用 RSA 非對稱密碼編譯來加密和簽署對稱金鑰以進行交換。這可確保包裝金鑰的機密性 （加密） 和完整性 （簽章）。

 若要匯入您自己的金鑰，請查看 [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export) 上的 AWS 付款密碼編譯範例專案。如需有關如何從其他平台匯入/匯出金鑰的說明，範例程式碼可在 [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export) 上取得，或參閱這些平台的使用者指南。

1. 

****呼叫初始化匯入命令****  
呼叫 `get-parameters-for-import` 以初始化匯入程序。此 API 會為金鑰匯入產生金鑰對、簽署金鑰，並傳回憑證和憑證根。使用此金鑰加密要匯出的金鑰。在 TR-34 術語中，這稱為 KRD Cert。這些憑證為 base64 編碼、短期，且僅用於此目的。儲存 `ImportToken`值。

   ```
   $ aws payment-cryptography get-parameters-for-import \
       --key-material-type TR34_KEY_BLOCK \
       --wrapping-key-algorithm RSA_2048
   ```

   ```
   {
       "ImportToken": "import-token-bwxli6ocftypneu5",
       "ParametersValidUntilTimestamp": 1698245002.065,
       "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....",
       "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....",
       "WrappingKeyAlgorithm": "RSA_2048"
   }
   ```

1. 

****在金鑰來源系統上安裝公有憑證****  
對於大多數 HSMs，您需要安裝、載入或信任步驟 1 中產生的公有憑證，才能使用它匯出金鑰。這可能包括整個憑證鏈，或僅包含步驟 1 的根憑證，視 HSM 而定。

1. 

****在來源系統上產生金鑰對，並將憑證鏈提供給 AWS 付款密碼編譯****  
為了確保傳輸承載的完整性，傳送方 （金鑰分佈主機或 KDH) 會簽署它。為此目的產生公有金鑰，並建立公有金鑰憑證 AWS (X509) 以提供付款密碼編譯。

    從 HSM 傳輸金鑰時，請在該 HSM 上建立金鑰對。HSM、第三方或 等服務 AWS 私有 CA 可以產生憑證。

   使用 KeyMaterialType 為 `RootCertificatePublicKey`且 KeyUsageType 為 的 `importKey`命令，將根憑證載入 AWS 付款密碼編譯`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`。

   對於中繼憑證，請使用 `importKey`命令搭配 KeyMaterialType `TrustedCertificatePublicKey`和 KeyUsageType `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`。針對多個中繼憑證重複此程序。使用鏈結中最後一個匯入憑證`KeyArn`的 作為後續匯入命令的輸入。
**注意**  
請勿匯入分葉憑證。在匯入命令期間直接提供。

1. 

****從來源系統匯出金鑰****  
許多 HSMs和相關系統支援使用 TR-34 規範匯出金鑰。將步驟 1 的公有金鑰指定為 KRD （加密） 憑證，並將步驟 3 的金鑰指定為 KDH （簽署） 憑證。若要匯入 AWS 付款密碼編譯，請將格式指定為 TR-34.2012 非 CMS 兩種傳遞格式，也可以稱為 TR-34 Diebold 格式。

1. 

****呼叫匯入金鑰****  
使用 KeyMaterialType 呼叫 importKey API`TR34_KEY_BLOCK`。使用步驟 3 為 匯入的最後一個 CA 的 keyARN`certificate-authority-public-key-identifier`、步驟 4 為 的包裝金鑰材料`key-material`，以及步驟 3 為 的分葉憑證`signing-key-certificate`。包含步驟 1 的 Import-token。

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"Tr34KeyBlock": { \
       "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", \
       "ImportToken": "import-token-bwxli6ocftypneu5", \
       "KeyBlockFormat": "X9_TR34_2012", \
       "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...", \
       "WrappedKeyBlock": "308205A106092A864886F70D010702A08205923082058E020101310D300B0609608648016503040201308203..."} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-06-13T16:52:52.859000-04:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
       "KeyAttributes": {
         "KeyAlgorithm": "TDES_3KEY",
         "KeyClass": "SYMMETRIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": true,
           "DeriveKey": false,
           "Encrypt": true,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": true,
           "Verify": false,
           "Wrap": true
         },
         "KeyUsage": "TR31_K1_KEY_ENCRYPTION_KEY"
       },
       "KeyCheckValue": "CB94A2",
       "KeyCheckValueAlgorithm": "ANSI_X9_24",
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2023-06-13T16:52:52.859000-04:00"
     }
   }
   ```

1. 

****使用匯入的金鑰進行密碼編譯操作或後續匯入****  
如果匯入的 KeyUsage 是 TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY，您可以使用此金鑰來使用 TR-31 進行後續金鑰匯入。對於其他金鑰類型 （例如 TR31\$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY)，您可以直接將金鑰用於密碼編譯操作。

### 使用非對稱技術 (ECDH) 匯入金鑰
<a name="keys-import-ecdh"></a>

![\[AWS 使用 ECDH 的付款密碼編譯金鑰加密金鑰匯入程序\]](http://docs.aws.amazon.com/zh_tw/payment-cryptography/latest/userguide/images/keyimport-ecdh-import.png)


橢圓曲線 Diffie-Hellman (ECDH) 使用 ECC 非對稱密碼編譯在兩方之間建立共用金鑰，而不需要預先交換的金鑰。ECDH 金鑰是暫時性的，因此 AWS 付款密碼編譯不會儲存它們。在此過程中，使用 ECDH 衍生一次性 [KBPK/KEK](terminology.md#terms.kbpk)。該衍生金鑰會立即用於包裝您要傳輸的實際金鑰，這可能是另一個 KBPK、IPEK 金鑰或其他金鑰類型。

匯入時，傳送系統通常稱為 Party U （啟動器），而 AWS 付款密碼編譯稱為 Party V （回應者）。

**注意**  
 雖然 ECDH 可用來交換任何對稱金鑰類型，但它是唯一可以安全地傳輸 AES-256 金鑰的方法。

1. 

****產生 ECC 金鑰對****  
呼叫 `create-key` 來建立此程序的 ECC 金鑰對。此 API 會為金鑰匯入或匯出產生金鑰對。在建立時，指定可以使用此 ECC 金鑰衍生的金鑰類型。使用 ECDH 交換 （包裝） 其他金鑰時，請使用 的值`TR31_K1_KEY_BLOCK_PROTECTION_KEY`。
**注意**  
 雖然低階 ECDH 會產生可用於任何用途的衍生金鑰，但 AWS Payment Cryptography 只允許金鑰用於單一衍生金鑰類型，以限制金鑰意外重複使用用於多個用途。

   ```
   $ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=ECC_NIST_P256,KeyUsage=TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{DeriveKey=true}' --derive-key-usage "TR31_K1_KEY_BLOCK_PROTECTION_KEY"
   ```

   ```
   {
                     "Key": {
                         "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
                         "KeyAttributes": {
                             "KeyUsage": "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT",
                             "KeyClass": "ASYMMETRIC_KEY_PAIR",
                             "KeyAlgorithm": "ECC_NIST_P256",
                             "KeyModesOfUse": {
                                 "Encrypt": false,
                                 "Decrypt": false,
                                 "Wrap": false,
                                 "Unwrap": false,
                                 "Generate": false,
                                 "Sign": false,
                                 "Verify": false,
                                 "DeriveKey": true,
                                 "NoRestrictions": false
                             }
                         },
                         "KeyCheckValue": "2432827F",
                         "KeyCheckValueAlgorithm": "CMAC",
                         "Enabled": true,
                         "Exportable": true,
                         "KeyState": "CREATE_COMPLETE",
                         "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                         "CreateTimestamp": "2025-03-28T22:03:41.087000-07:00",
                         "UsageStartTimestamp": "2025-03-28T22:03:41.068000-07:00"
                     }
                 }
   ```

1. 

****取得公有金鑰憑證****  
呼叫 `get-public-key-certificate` 以接收公有金鑰做為您帳戶的 CA 簽署的 X.509 憑證，該憑證是特定區域的 AWS 付款密碼編譯所特有。  
**Example**  

   ```
   $ aws payment-cryptography get-public-key-certificate \
                    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv
   ```

   ```
   {
               "KeyCertificate": "LS0tLS1CRUdJTi...",
               "KeyCertificateChain": "LS0tLS1CRUdJT..."
         }
   ```

1. 

****在交易對手系統 (Party U) 上安裝公有憑證****  
許多 HSMs 都需要安裝、載入或信任步驟 1 中產生的公有憑證，才能使用它匯出金鑰。這可能包括整個憑證鏈，或僅包含步驟 1 的根憑證，視 HSM 而定。如需詳細資訊，請參閱您的 HSM 文件。

1. 

****在來源系統上產生 ECC 金鑰對，並將憑證鏈提供給 AWS 付款密碼編譯****  
在 ECDH 中，每一方都會產生金鑰對，並同意通用金鑰。若要讓 AWS 付款密碼編譯衍生金鑰，它需要 X.509 公有金鑰格式的對手方公有金鑰。

   從 HSM 傳輸金鑰時，請在該 HSM 上建立金鑰對。對於支援金鑰區塊HSMs，金鑰標頭看起來會與 類似`D0144K3EX00E0000`。建立憑證時，您通常會在 HSM 上產生 CSR，然後 HSM、第三方或 等服務 AWS 私有 CA 可以產生憑證。

   使用 KeyMaterialType 為 `RootCertificatePublicKey`且 KeyUsageType 為 的 `importKey`命令，將根憑證載入 AWS 付款密碼編譯`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`。

   對於中繼憑證，請使用 `importKey`命令搭配 KeyMaterialType `TrustedCertificatePublicKey`和 KeyUsageType `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`。針對多個中繼憑證重複此程序。使用鏈結中最後一個匯入憑證`KeyArn`的 作為後續匯入命令的輸入。
**注意**  
請勿匯入分葉憑證。在匯入命令期間直接提供。

1. 

****在 U HSM 方上使用 ECDH 衍生一次性金鑰****  
許多 HSMs和相關系統支援使用 ECDH 建立金鑰。將步驟 1 的公有金鑰指定為公有金鑰，並將步驟 3 的金鑰指定為私有金鑰。如需允許的選項，例如衍生方法，請參閱 [API 指南](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportDiffieHellmanTr31KeyBlock.html)。
**注意**  
 雜湊類型等衍生參數必須完全符合兩側。否則，您將產生不同的金鑰。

1. 

****從來源系統匯出金鑰****  
最後，使用標準 TR-31 命令匯出您要傳輸到 AWS 付款密碼編譯的金鑰。將 ECDH 衍生金鑰指定為 KBPK。要匯出的金鑰可以是受 TR-31 有效組合約束的任何 TDES 或 AES 金鑰，只要包裝金鑰至少與要匯出的金鑰一樣強。

1. 

****呼叫匯入金鑰****  
使用 KeyMaterialType 呼叫 `import-key` API`DiffieHellmanTr31KeyBlock`。使用步驟 3 為 匯入的最後一個 CA 的 KeyARN`certificate-authority-public-key-identifier`、步驟 4 為 的包裝金鑰材料`key-material`，以及步驟 3 為 的分葉憑證`public-key-certificate`。包含步驟 1 中的私有金鑰 ARN。

   ```
   $ aws payment-cryptography import-key \
             --key-material='{
               "DiffieHellmanTr31KeyBlock": {
                 "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
                 "DerivationData": {
                   "SharedInformation": "1234567890"
                 },
                 "DeriveKeyAlgorithm": "AES_256",
                 "KeyDerivationFunction": "NIST_SP800",
                 "KeyDerivationHashAlgorithm": "SHA_256",
                 "PrivateKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
                 "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN....",
                 "WrappedKeyBlock": "D0112K1TB00E0000D603CCA8ACB71517906600FF8F0F195A38776A7190A0EF0024F088A5342DB98E2735084A7841CB00E16D373A70857E9A"
               }
             }'
   ```

   ```
   {
           "Key": {
             "CreateTimestamp": "2025-03-13T16:52:52.859000-04:00",
             "Enabled": true,
             "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
             "KeyAttributes": {
               "KeyAlgorithm": "TDES_3KEY",
               "KeyClass": "SYMMETRIC_KEY",
               "KeyModesOfUse": {
                 "Decrypt": true,
                 "DeriveKey": false,
                 "Encrypt": true,
                 "Generate": false,
                 "NoRestrictions": false,
                 "Sign": false,
                 "Unwrap": true,
                 "Verify": false,
                 "Wrap": true
               },
               "KeyUsage": "TR31_K1_KEY_ENCRYPTION_KEY"
             },
             "KeyCheckValue": "CB94A2",
             "KeyCheckValueAlgorithm": "ANSI_X9_24",
             "KeyOrigin": "EXTERNAL",
             "KeyState": "CREATE_COMPLETE",
             "UsageStartTimestamp": "2025-03-13T16:52:52.859000-04:00"
           }
         }
   ```

1. 

****使用匯入的金鑰進行密碼編譯操作或後續匯入****  
如果匯入的 KeyUsage 是 TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY，您可以使用此金鑰來使用 TR-31 進行後續金鑰匯入。對於其他金鑰類型 （例如 TR31\$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY)，您可以直接將金鑰用於密碼編譯操作。

### 使用非對稱技術匯入金鑰 (RSA Unwrap)
<a name="keys-import-rsaunwrap"></a>

 Overview： AWS Payment Cryptography 支援 RSA wrap/unwrap，以便在 TR-34 不可行時交換金鑰。如同 TR-34，此技術使用 RSA 非對稱密碼編譯來加密對稱金鑰以進行交換。不過，與 TR-34 不同，此方法沒有傳送方簽署承載。此外，此 RSA 包裝技術不會在傳輸期間維持金鑰中繼資料的完整性，因為它不包含金鑰區塊。

**注意**  
 您可以使用 RSA wrap 來匯入或匯出 TDES 和 AES-128 金鑰。

1. 

****呼叫初始化匯入命令****  
呼叫 **get-parameters-for-import** 以使用 `KeyMaterialType`的 初始化匯入程序`KEY_CRYPTOGRAM`。在交換 TDES 金鑰`WrappingKeyAlgorithm`時使用 `RSA_2048` 。在交換 TDES `RSA_3072`或 AES-128 金鑰`RSA_4096`時使用 或 。此 API 會為金鑰匯入產生金鑰對、使用憑證根簽署金鑰，並同時傳回憑證和憑證根。使用此金鑰來加密要匯出的金鑰。這些憑證為短期憑證，僅供此用途使用。

   ```
   $ aws payment-cryptography get-parameters-for-import \
       --key-material-type KEY_CRYPTOGRAM \
       --wrapping-key-algorithm RSA_4096
   ```

   ```
   {
     "ImportToken": "import-token-bwxli6ocftypneu5",
     "ParametersValidUntilTimestamp": 1698245002.065,
     "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....",
     "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....",
     "WrappingKeyAlgorithm": "RSA_4096"
   }
   ```

1. 

****在金鑰來源系統上安裝公有憑證****  
對於許多 HSMs，您需要安裝、載入或信任步驟 1 中產生的公有憑證 （和/或其根目錄），以使用它匯出金鑰。

1. 

****從來源系統匯出金鑰****  
許多 HSMs和相關系統支援使用 RSA wrap 匯出金鑰。將步驟 1 的公有金鑰指定為加密憑證 (`WrappingKeyCertificate`)。如果您需要信任鏈，請使用步驟 1 `WrappingKeyCertificateChain`中的 。從 HSM 匯出金鑰時，指定格式為 RSA，填補模式 = PKCS\$11 v2.2 OAEP （使用 SHA 256 或 SHA 512)。

1. 

****呼叫 **import-key******  
使用 `KeyMaterialType`的 呼叫 **import-key** API`KeyMaterial`。您需要步驟 1 `ImportToken`的 和步驟 3 的 `key-material`（包裝金鑰材料）。提供金鑰參數 （例如金鑰用量），因為 RSA 包裝不使用金鑰區塊。

   ```
   $ cat import-key-cryptogram.json 
   ```

   ```
   {
     "KeyMaterial": {
       "KeyCryptogram": {
         "Exportable": true,
         "ImportToken": "import-token-bwxli6ocftypneu5",
         "KeyAttributes": {
           "KeyAlgorithm": "AES_128",
           "KeyClass": "SYMMETRIC_KEY",
           "KeyModesOfUse": {
             "Decrypt": true,
             "DeriveKey": false,
             "Encrypt": true,
             "Generate": false,
             "NoRestrictions": false,
             "Sign": false,
             "Unwrap": true,
             "Verify": false,
             "Wrap": true
           },
           "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY"
         },
         "WrappedKeyCryptogram": "18874746731....",
         "WrappingSpec": "RSA_OAEP_SHA_256"
       }
     }
   }
   ```

   ```
   $ aws payment-cryptography import-key --cli-input-json file://import-key-cryptogram.json
   ```

   ```
   {
     "Key": {
       "KeyOrigin": "EXTERNAL",
       "Exportable": true,
       "KeyCheckValue": "DA1ACF",
       "UsageStartTimestamp": 1697643478.92,
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
       "CreateTimestamp": 1697643478.92,
       "KeyState": "CREATE_COMPLETE",
       "KeyAttributes": {
         "KeyAlgorithm": "AES_128",
         "KeyModesOfUse": {
           "Encrypt": true,
           "Unwrap": true,
           "Verify": false,
           "DeriveKey": false,
           "Decrypt": true,
           "NoRestrictions": false,
           "Sign": false,
           "Wrap": true,
           "Generate": false
         },
         "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY",
         "KeyClass": "SYMMETRIC_KEY"
       },
       "KeyCheckValueAlgorithm": "CMAC"
     }
   }
   ```

1. 

****使用匯入的金鑰進行密碼編譯操作或後續匯入****  
如果匯入的 `KeyUsage`是 `TR31_K0_KEY_ENCRYPTION_KEY`或 `TR31_K1_KEY_BLOCK_PROTECTION_KEY`，您可以使用此金鑰來後續使用 TR-31 匯入金鑰。如果金鑰類型是任何其他類型 （例如 `TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`)，您可以直接將金鑰用於密碼編譯操作。

### 使用預先建立的金鑰交換金鑰 (TR-31) 匯入對稱金鑰
<a name="keys-import-tr31"></a>

![\[AWS 付款密碼編譯對稱金鑰匯入程序\]](http://docs.aws.amazon.com/zh_tw/payment-cryptography/latest/userguide/images/keyimport-process-wk-import.png)


交換多個金鑰或支援金鑰輪換時，合作夥伴通常會先交換初始金鑰加密金鑰 (KEK)。您可以使用書面金鑰元件等技術，或使用 [TR-34](#keys-import-tr34) 進行 AWS 付款密碼編譯。

 建立 KEK 之後，您可以使用它來傳輸後續金鑰 （包括其他 KEKs)。 AWS 付款密碼編譯使用 ANSI TR-31 支援此金鑰交換，這是 HSM 供應商廣泛使用和支援的金鑰交換。

1. 

****匯入金鑰加密金鑰 (KEK)****  
請確定您已匯入 KEK，並且有可用的 keyARN （或 keyAlias)。

1. 

****在來源平台上建立金鑰****  
如果金鑰不存在，請在來源平台上建立金鑰。或者，您可以在 AWS 付款密碼編譯上建立 金鑰，並使用 **export**命令。

1. 

****從來源平台匯出金鑰****  
匯出時，請將匯出格式指定為 TR-31。來源平台將要求匯出金鑰和要使用的金鑰加密金鑰。

1. 

****匯入 AWS 付款密碼編譯****  
呼叫 **import-key**命令時，請使用 金鑰加密金鑰的 keyARN （或別名）`WrappingKeyIdentifier`。使用 來源平台的輸出`WrappedKeyBlock`。  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"Tr31KeyBlock": { \
       "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \
       "WrappedKeyBlock": "D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"} \
       }'
   ```

   ```
   {
     "Key": {
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
       "KeyAttributes": {
         "KeyUsage": "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY",
         "KeyClass": "SYMMETRIC_KEY",
         "KeyAlgorithm": "AES_128",
         "KeyModesOfUse": {
           "Encrypt": true,
           "Decrypt": true,
           "Wrap": true,
           "Unwrap": true,
           "Generate": false,
           "Sign": false,
           "Verify": false,
           "DeriveKey": false,
           "NoRestrictions": false
         }
       },
       "KeyCheckValue": "0A3674",
       "KeyCheckValueAlgorithm": "CMAC",
       "Enabled": true,
       "Exportable": true,
       "KeyState": "CREATE_COMPLETE",
       "KeyOrigin": "EXTERNAL",
       "CreateTimestamp": "2023-06-02T07:38:14.913000-07:00",
       "UsageStartTimestamp": "2023-06-02T07:38:14.857000-07:00"
     }
   }
   ```

## 匯入非對稱 (RSA、ECC) 公有金鑰
<a name="keys-import-asymmetric"></a>

匯入的所有憑證必須至少與其在鏈中的發行 （前身） 憑證一樣強大。這表示 RSA\$12048 CA 只能用於保護 RSA\$12048 分葉憑證，且 ECC 憑證必須受到另一個同等強度的 ECC 憑證保護。ECC P384 憑證只能由 P384 或 P521 CA 發行。所有憑證在匯入時都必須未過期。

### 匯入 RSA 公有金鑰
<a name="keys-import-rsapublickey"></a>

AWS 付款密碼編譯支援將公有 RSA 金鑰匯入為 X.509 憑證。若要匯入憑證，請先匯入其根憑證。所有憑證在匯入時都必須未過期。憑證應該是 PEM 格式和 base64 編碼。

1. 

****將根憑證匯入 AWS 付款密碼編譯****  
使用下列命令匯入根憑證：  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"RootCertificatePublicKey": { \
       "KeyAttributes": { \
       "KeyAlgorithm": "RSA_2048", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": { \
       "Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKVENDQWcyZ0F3SUJBZ0lCWkRBTkJna3Foa2lHOXcwQkFR..."} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl",
       "KeyAttributes": {
         "KeyAlgorithm": "RSA_2048",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2023-08-08T18:52:01.023000+00:00"
     }
   }
   ```

1. 

****將公有金鑰憑證匯入 AWS 付款密碼編譯****  
您現在可以匯入公有金鑰。由於 TR-34 和 ECDH 依賴於在執行時間傳遞分葉憑證，只有在使用來自另一個系統的公有金鑰加密資料時，才會使用此選項。KeyUsage 將設定為 TR31\$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION。  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"Tr31KeyBlock": { \
       "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \
       "WrappedKeyBlock": "D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-08-08T18:55:46.815000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk",
       "KeyAttributes": {
         "KeyAlgorithm": "RSA_4096",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2023-08-08T18:55:46.815000+00:00"
     }
   }
   ```

### 匯入 ECC 公有金鑰
<a name="keys-import-eccpublickey"></a>

AWS 付款密碼編譯支援將公有 ECC 金鑰匯入為 X.509 憑證。若要匯入憑證，請先匯入其根 CA 憑證和任何中繼憑證。所有憑證在匯入時都必須未過期。憑證應該是 PEM 格式和 base64 編碼。

1. 

****將 ECC 根憑證匯入 AWS 付款密碼編譯****  
使用下列命令匯入根憑證：  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"RootCertificatePublicKey": { \
       "KeyAttributes": { \
       "KeyAlgorithm": "ECC_NIST_P521", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": { \
       "Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQekNDQWFDZ0F3SUJBZ0lDSjNVd0NnWUlLb1pJemowRUF3UXdNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnAKWjI1bFpFTmxjblJwWm1sallYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNQjRYRFRJMU1ETXlPREF3TURBdwpNRm9YRFRJMk1ETXlPREF3TURBd01Gb3dNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnBaMjVsWkVObGNuUnBabWxqCllYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUEKRDVEUXc5RW1Tb1lJVkRnbUpmRm1wL1pzMXp1M0ZobThrdUdkYlA4NWgwNTdydkhHZ3VISW03V3N1aTlpdXNvNApFWEZnV3ZUdy85amhZcVJrMi9yY1RHb0JrS2NpV3Q2UHMxVmpSUVZhVEZmbmxPdjRNTURQUEFEUWthVU45cVNNCkF5MTF0RklKNlFGWDR0aGx3RzBaZkFwd0NMV1ZyMzFrRU45RDJhVUh6Mjg5WlM2all6QmhNQjhHQTFVZEl3UVkKTUJhQUZFMjhnay9QZnZ3NklsNm9yQzNwRmJtK280emxNQjBHQTFVZERnUVdCQlJOdklKUHozNzhPaUplcUt3dAo2Ulc1dnFPTTVUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lDeERBS0JnZ3Foa2pPClBRUURCQU9CakFBd2dZZ0NRZ0ZRRit5VUVSYTZoQ0RwSDVHeVhlaVFYYU0wc25Fd3o2TmlmOHlSTlF1dzJ5MUoKdTNoKzZYa2N6Y3lVT01NSzhaRnhBVDhFOERMVUtpdjM1VmdzSkFDN09RSkNBSWMzdEVNV01tZTVCV3ZXTFVxSQpnV3h5U3UxWDdRSTJrR2dUK1FqRGlhQ2E4b091NVlJTmZscW4reUswR29yNGJzMTBZaUh4SHhpV2t0UVRSdVp4CkhIU3UKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wv4gb6h3xcqjk6sm",
       "KeyAttributes": {
         "KeyAlgorithm": "ECC_NIST_P521",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2025-03-08T18:52:01.023000+00:00"
     }
   }
   ```

1. 

****將中繼憑證匯入 AWS 付款密碼編譯****  
使用下列命令來匯入中繼憑證：  
**Example**  

   ```
   $ aws payment-cryptography import-key \
                   --key-material='{"TrustedCertificatePublicKey": { \
                   --certificate-authority-public-key-identifier='"arn:aws:payment-cryptography:us-east-2:111122223333:key/wv4gb6h3xcqjk6sm"  \
       "KeyAttributes": { \
       "KeyAlgorithm": "ECC_NIST_P521", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": { \
       "Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLekNDQVkyZ0F3SUJBZ0lDVDAwd0NnWUlLb1pJemowRUF3UXdNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnAKWjI1bFpFTmxjblJwWm1sallYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNQjRYRFRJMU1ETXlPREF3TURBdwpNRm9YRFRJMk1ETXlPREF3TURBd01Gb3dNREVlTUJ3R0ExVUVBd3dWUzBSSUlFbHVkR1Z5YldWa2FXRjBaU0JEClFTQXhNUTR3REFZRFZRUUZFd1V4TURJd01UQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFPOGwKZFM4c09YQlNWQlVINWxmRWZkNTZxYVVIenExZVN3VGZKdnI5eEFmb2hRNTNWZ2hLUlZoNzhNR2tJTjVCNTBJTAozbmhaU1JnUnRoS20xNkxwc084NEFGa1Z0ZEpOaEJpYUlQZlRlYXltOHh6OU44KzFWZ3RMTDZBcTBtNkwwMUFwCkUvUmxzUUJ3NWxoakM4VHVOWU1QaUpMYUNPbjJrZVh6SU5SSm01SjJtR3Q1bzFJd1VEQWZCZ05WSFNNRUdEQVcKZ0JSbklBNi9Vc3RMYUpzTzlpYjg1Zm9DWEcwRk96QWRCZ05WSFE0RUZnUVVaeUFPdjFMTFMyaWJEdlltL09YNgpBbHh0QlRzd0RnWURWUjBQQVFIL0JBUURBZ2JBTUFvR0NDcUdTTTQ5QkFNRUE0R0xBRENCaHdKQ0FmTnJjdXBkClpQd3ZqTGdVeFZiN1NtSXNhY2Z6MVZrNWZFYXZHNlVzdU95Y1lGbHlQQTlJZGgyK0lOcW5jSVg4VEo2cDFJRWkKN3RCTHpPb1l0ZWd2Q1dsL0FrRkRzWHFsWkI5bU93WnNEQy9HZEpEcm5uQ0ZkR29hM1NwZytqbGdhOGdQTmxLbAo1dE9IU0lVZnZxcFhEcWYrdXV6SEc1Z3FjdUhnQU8wOUhuMloyNUc4eVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2025-03-20T18:52:01.023000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
       "KeyAttributes": {
         "KeyAlgorithm": "ECC",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2025-03-25T18:52:01.023000+00:00"
     }
   }
   ```

1. 

****將公有金鑰憑證 （分葉） 匯入 AWS 付款密碼編譯****  
 雖然您可以匯入分葉 ECC 憑證，但除了儲存之外，目前在 AWS 付款密碼編譯中沒有已定義的函數。這是因為在使用 ECDH 函數時，分葉憑證會在執行時間傳遞。