

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

# 导入密钥
<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>

**注意**  
使用 TR-31 或密钥块导入密钥时 X9.143，P TR-34 ayment Cryptography 通常会保留（但不使用）任何可选标题。 AWS HM（HMAC 哈希类型）标头用于加密操作。KP 标头（包装密钥的 KCV）特定于导入过程，不会保留。

与交易对手交换密钥时，通常是先交换密钥交换密钥 (KEK)。然后，此密钥将用于保护后续密钥。使用电子格式，可以使用不对称技术（例如 ECDH 或 RSA 包装 TR-34）交换 KEK。后续密钥将使用对称密钥交换进行交换， 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_cn/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 支付密码学” 示例项目。有关如何从其他平台获取 import/export 密钥的说明，可在这些平台上查看示例代码，[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 证书。这些证书采用 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. 

****在密钥源系统上安装公共证书****  
对于大多数 HSM，您需要安装、加载或信任步骤 1 中生成的公共证书，才能使用该证书导出密钥。这可能包括整个证书链，或者仅包括步骤 1 中的根证书，具体取决于 HSM。

1. 

****在源系统上生成 key pair 并为 AWS 支付密码学提供证书链****  
为确保传输的有效载荷的完整性，发送方（密钥分发主机或 KDH）对其进行签名。为此生成公钥并创建公钥证书 (X509) 以提供给 AWS 支付密码学。

    从 HSM 传输密钥时，请在该 HSM 上创建密钥对。HSM、第三方或诸如之类的服务 AWS 私有 CA 可以生成证书。

   使用带 KeyMaterialType 有 of `RootCertificatePublicKey` 和 of 的`importKey`命令将根证书加载到 AWS 支付密码中 KeyUsageType 。`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`

   对于中间证书，请使用带有 `importKey` of `TrustedCertificatePublicKey` 和 of KeyMaterialType KeyUsageType 的命令`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`。对多个中间证书重复此过程。使用链`KeyArn`中最后一次导入的证书作为后续导入命令的输入。
**注意**  
不要导入树叶证书。在导入命令期间直接提供它。

1. 

****从源系统导出密钥****  
许多 HSM 和相关系统都支持使用 TR-34 规范导出密钥。将步骤 1 中的公钥指定为 KRD（加密）证书，将步骤 3 中的密钥指定为 KDH（签名）证书。要导入到 P AWS ayment Cryptography，请将格式指定为 TR-34.2012 非 CMS 双通道格式，也可以称为 TR-34 Diebold 格式。

1. 

****呼叫导入密钥****  
使用 of 调用 ImportKey API KeyMaterialType 。`TR34_KEY_BLOCK`使用步骤 3 中导入的最后一个 CA 的 KeyArn`certificate-authority-public-key-identifier`，将步骤 4 中的封装密钥材料用于`key-material`，使用步骤 3 中的叶子证书。`signing-key-certificate`包括步骤 1 中的导入令牌。

   ```
   $ 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\_K0\_KEY\_ENCRYPTION\_KEY，则可以使用此密钥进行后续密钥导入。 TR-31对于其他密钥类型（例如 TR31\_D0\_SYMMETRIC\_DATA\_ENCRYPTION\_KEY），您可以直接使用该密钥进行加密操作。

### 使用非对称技术 (ECDH) 导入密钥
<a name="keys-import-ecdh"></a>

![AWS 使用 ECDH 的支付密码学密钥加密密钥导入流程](http://docs.aws.amazon.com/zh_cn/payment-cryptography/latest/userguide/images/keyimport-ecdh-import.png)


Elliptic Curve Diffie-Hellman (ECDH) 使用 ECC 非对称加密技术在双方之间建立共享密钥，无需预先交换密钥。ECDH 密钥是临时性的，因此 AWS 支付密码学不会存储它们。在此过程中，使用 ECDH 导出一次性[KBPK/KEK](terminology.md#terms.kbpk)。该派生密钥会立即用于包装您要传输的实际密钥，该密钥可能是另一个 KBPK、IPEK 密钥或其他密钥类型。

导入时，发送系统通常被称为U方（发起方）， AWS 支付密码学被称为第五方（响应方）。

**注意**  
 虽然 ECDH 可用于交换任何对称密钥类型，但它是唯一可以安全传输 AES-256 密钥的方法。

1. 

****生成 ECC 密钥对****  
调用`create-key`为该过程创建 ECC key pair。此 API 为密钥导入或导出生成密钥对。在创建时，请指定使用此 ECC 密钥可以派生哪种密钥。使用 ECDH 交换（封装）其他密钥时，请使用值。`TR31_K1_KEY_BLOCK_PROTECTION_KEY`
**注意**  
 尽管低级 ECDH 会生成可用于任何目的的派生密钥，但 P AWS ayment 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`致电接收由您账户的 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. 

****在交易对手系统上安装公共证书（U 方）****  
对于许多 HSM，您需要安装、加载或信任步骤 1 中生成的公共证书，才能使用它导出密钥。这可能包括整个证书链，或者仅包括步骤 1 中的根证书，具体取决于 HSM。有关更多信息，请查阅您的 HSM 文档。

1. 

****在源系统上生成 ECC key pair 并为 AWS 支付密码学提供证书链****  
在 ECDH 中，各方生成一个密钥对，并就公用密钥达成一致。为了使 AWS 支付密码学派生密钥，它需要交易对手的公钥格式的 X.509 公钥。

   从 HSM 传输密钥时，请在该 HSM 上创建密钥对。对于支持按键块的 HSM，密钥标头将类似于。`D0144K3EX00E0000`创建证书时，您通常会在 HSM 上生成 CSR，然后 HSM、第三方或诸如之类的服务 AWS 私有 CA 可以生成证书。

   使用带 KeyMaterialType 有 of `RootCertificatePublicKey` 和 of 的`importKey`命令将根证书加载到 AWS 支付密码中 KeyUsageType 。`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`

   对于中间证书，请使用带有 `importKey` of `TrustedCertificatePublicKey` 和 of KeyMaterialType KeyUsageType 的命令`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`。对多个中间证书重复此过程。使用链`KeyArn`中最后一次导入的证书作为后续导入命令的输入。
**注意**  
不要导入树叶证书。在导入命令期间直接提供它。

1. 

****在 U 方 HSM 上使用 ECDH 获取一次性密钥****  
许多 HSM 和相关系统都支持使用 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. 

****呼叫导入密钥****  
使用 of 调用 `import-key` API `DiffieHellmanTr31KeyBlock`。 KeyMaterialType 使用步骤 3 中导入的最后一个 CA 的 KeyArn，将步骤 4 中的封装密钥材料用`key-material`于，将步骤 3 `certificate-authority-public-key-identifier` 中的叶子证书用于。`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\_K0\_KEY\_ENCRYPTION\_KEY，则可以使用此密钥进行后续密钥导入。 TR-31对于其他密钥类型（例如 TR31\_D0\_SYMMETRIC\_DATA\_ENCRYPTION\_KEY），您可以直接使用该密钥进行加密操作。

### 使用非对称技术导入密钥（RSA Unwrap）
<a name="keys-import-rsaunwrap"></a>

 概述： AWS 支付密码学支持 RSA 在 TR-34 不可行时 wrap/unwrap 进行密钥交换。比如 TR-34，这种技术使用 RSA 非对称加密来加密对称密钥以进行交换。但是，与之不同的是 TR-34，此方法没有让发送方对有效载荷进行签名。此外，这种 RSA 封装技术无法在传输过程中保持密钥元数据的完整性，因为它不包括密钥块。

**注意**  
 您可以使用 RSA 封装来导入或导出 TDES 和密钥。 AES-128 

1. 

****调用 “初始化导入” 命令****  
调用**get-parameters-for-import**以初始化导入过程`KEY_CRYPTOGRAM`。`KeyMaterialType``RSA_2048`用于交换 TDES 密钥`WrappingKeyAlgorithm`时使用。`RSA_4096`在交换 TDES 或 AES-128 密钥时使用`RSA_3072`或。此 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. 

****在密钥源系统上安装公共证书****  
对于许多 HSM，您需要安装、加载或信任步骤 1 中生成的公共证书（and/or其根证书），才能使用它导出密钥。

1. 

****从源系统导出密钥****  
许多 HSM 和相关系统都支持使用 RSA 封装导出密钥。将步骤 1 中的公钥指定为加密证书 (`WrappingKeyCertificate`)。如果您需要信任链，请使用 fro `WrappingKeyCertificateChain` m 步骤 1。从 HSM 导出密钥时，将格式指定为 RSA，填充模式 = PKCS \#1 v2.2 OAEP（使用 SHA 256 或 SHA 512）。

1. 

****打电话 **import-key******  
使用 of 调用 **import-key** API `KeyMaterial`。`KeyMaterialType`你需要步骤 1 `ImportToken` 中的和步骤 3 中的`key-material`（包装好的密钥材料）。请提供密钥参数（例如密钥用法），因为 RSA wrap 不使用密钥块。

   ```
   $ 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_cn/payment-cryptography/latest/userguide/images/keyimport-process-wk-import.png)


交换多个密钥或支持密钥轮换时，合作伙伴通常首先交换初始密钥加密密钥 (KEK)。您可以使用[TR-34](#keys-import-tr34)或[物理密钥交换](keys-physicalkeyexchange.md)等技术将 KEK 与 AWS 支付密码学交换。

 建立 KEK 后，您可以使用它来传输后续密钥（包括其他 KEK）。 AWS Payment Cryptography 使用 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\_2048 CA 只能用于保护 RSA\_2048 树叶证书，而 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 支付密码学****  
现在，您可以导入公钥。由于 ECDH 依赖于在运行时传递树叶证书，因此只有在使用来自其他系统的公钥加密数据时才使用此选项。 TR-34 KeyUsage 将设置为 TR31\_D1\_ASYMMETRIC\_KEY\_FOR\_DATA\_ENCRYPTION。  
**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. 

****将公钥证书（Leaf）导入 AWS 支付密码学****  
 尽管您可以导入 leaf ECC 证书，但目前 AWS 支付密码学中除了存储之外没有为其定义任何函数。这是因为在使用 ECDH 函数时，树叶证书是在运行时传递的。