

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Importar chaves
<a name="keys-import"></a>

**Importante**  
 Os exemplos exigem a versão mais recente do AWS CLI V2. Antes de começar, certifique-se de ter feito o upgrade para o [versão mais recente](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). 

**Contents**
+ [Introdução à importação de chaves](#keys-import-introduction)
+ [Importar chaves simétricas](#keys-import-symmetric)
  + [Importe chaves usando técnicas assimétricas (TR-34)](#keys-import-tr34)
  + [Importar chaves usando técnicas assimétricas (ECDH)](#keys-import-ecdh)
  + [Importe chaves usando técnicas assimétricas (RSA Unwrap)](#keys-import-rsaunwrap)
  + [Importe chaves simétricas usando uma chave de troca de chaves pré-estabelecida (TR-31)](#keys-import-tr31)
+ [Importação de chaves públicas assimétricas (RSA, ECC)](#keys-import-asymmetric)
  + [Importar chaves públicas RSA](#keys-import-rsapublickey)
  + [Importando chaves públicas ECC](#keys-import-eccpublickey)

## Introdução à importação de chaves
<a name="keys-import-introduction"></a>

**nota**  
Ao importar chaves usando X9.143, TR-31 ou TR-34 blocos-chave, AWS A criptografia de pagamento normalmente retém (mas não utiliza) cabeçalhos opcionais. O cabeçalho HM (tipo de hash HMAC) é usado durante operações criptográficas. O cabeçalho KP (KCV da chave de empacotamento) é específico para o processo de importação e não é retido. 

Ao trocar chaves com uma contraparte, normalmente é para trocar primeiro uma chave de troca de chaves (KEK). Essa chave será então usada para proteger as chaves subsequentes. Usando formatos eletrônicos, o KEK pode ser trocado usando técnicas assimétricas, como TR-34, envoltório ECDH ou RSA. As chaves subsequentes serão trocadas usando uma troca de chaves simétrica, como TR-31. Este KEK terá vida longa e só poderá ser atualizado a cada poucos anos com base na política e no período criptográfico definido. 

Se apenas uma ou duas chaves estiverem sendo trocadas, você também poderá optar por usar técnicas assimétricas para trocar diretamente essa chave, como um BDK. AWS A criptografia de pagamento suporta os dois métodos de troca de chaves.

## Importar chaves simétricas
<a name="keys-import-symmetric"></a>

### Importe chaves usando técnicas assimétricas (TR-34)
<a name="keys-import-tr34"></a>

![AWS Processo de importação de chave de criptografia de criptografia de pagamento](https://docs.aws.amazon.com/pt_br/payment-cryptography/latest/userguide/images/keyimport-process-kek-import.png)


 TR-34 usa criptografia assimétrica RSA para criptografar e assinar chaves simétricas para troca. Isso garante a confidencialidade (criptografia) e a integridade (assinatura) da chave encapsulada. 

 Para importar suas próprias chaves, confira o AWS Exemplo de projeto de criptografia de pagamento em [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export). Para obter instruções sobre como import/export chaves de outras plataformas, o código de amostra está disponível em [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export) ou consulte o guia do usuário dessas plataformas. 

1. 

****Chame o comando Inicializar importação****  
Chame `get-parameters-for-import` para inicializar o processo de importação. Essa API gera um par de chaves para importações de chaves, assina a chave e retorna o certificado e a raiz do certificado. Criptografe a chave a ser exportada usando essa chave. Em TR-34 terminologia, isso é conhecido como KRD Cert. Esses certificados são codificados em base64, têm vida curta e são destinados somente para essa finalidade. Salve o `ImportToken` valor. 

   ```
   $ 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. 

****Instalar o certificado público no sistema de origem da chave****  
Com a maioria dos HSMs, você precisa instalar, carregar ou confiar no certificado público gerado na etapa 1 para exportar chaves usando-o. Isso pode incluir toda a cadeia de certificados ou apenas o certificado raiz da etapa 1, dependendo do HSM. 

1. 

****Gere um par de chaves no sistema de origem e forneça a cadeia de certificados para AWS Payment Cryptography****  
Para garantir a integridade da carga transmitida, a parte remetente (Key Distribution Host ou KDH) a assina. Gere uma chave pública para essa finalidade e crie um certificado de chave pública (X509) para devolver ao AWS Criptografia de pagamento. 

    Ao transferir chaves de um HSM, crie um par de chaves nesse HSM. O HSM, um terceiro ou um serviço como CA privada da AWS pode gerar o certificado. 

   Carregue o certificado raiz para AWS Criptografia de pagamento usando o `importKey` comando com KeyMaterialType do `RootCertificatePublicKey` e KeyUsageType do `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. 

   Para certificados intermediários, use o `importKey` comando com KeyMaterialType do `TrustedCertificatePublicKey` e KeyUsageType do `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. Repita esse processo para vários certificados intermediários. Use o `KeyArn` do último certificado importado na cadeia como entrada para os comandos de importação subsequentes. 
**nota**  
Não importe o certificado foliar. Forneça-o diretamente durante o comando de importação.

1. 

****Exportar chave do sistema de origem****  
Muitos HSMs e sistemas relacionados suportam a exportação de chaves usando o TR-34 norma. Especifique a chave pública da etapa 1 como o certificado KRD (criptografia) e a chave da etapa 3 como o certificado KDH (assinatura). Para importar para AWS Criptografia de pagamento, especifique o formato como TR-34.2012 Formato de duas passagens não CMS, que também pode ser chamado de TR-34 Formato Diebold. 

1. 

****Chave de importação de chamadas****  
Chame a API importKey com um KeyMaterialType do `TR34_KEY_BLOCK`. Use o keyARN da última CA importada na etapa 3 para `certificate-authority-public-key-identifier`, o material chave embrulhado da etapa 4 para `key-material`e o certificado foliar da etapa 3 para `signing-key-certificate`. Inclua o token de importação da etapa 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. 

****Use a chave importada para operações criptográficas ou importação subsequente****  
Se o importado KeyUsage era TR31\_K0\_KEY\_ENCRYPTION\_KEY, você pode usar essa chave para importações subsequentes de chaves usando TR-31. Para outros tipos de chave (como TR31\_D0\_SYMMETRIC\_DATA\_ENCRYPTION\_KEY), você pode usar a chave diretamente para operações criptográficas. 

### Importar chaves usando técnicas assimétricas (ECDH)
<a name="keys-import-ecdh"></a>

![AWS Processo de importação de chave de criptografia de criptografia de pagamento usando ECDH](https://docs.aws.amazon.com/pt_br/payment-cryptography/latest/userguide/images/keyimport-ecdh-import.png)


Curva elíptica Diffie-Hellman (ECDH) usa criptografia assimétrica ECC para estabelecer uma chave compartilhada entre duas partes sem exigir chaves pré-trocadas. As chaves ECDH são efêmeras, então AWS A criptografia de pagamento não os armazena. Nesse processo, uma única vez [KBPK/KEK](terminology.md#terms.kbpk) é derivado usando ECDH. Essa chave derivada é usada imediatamente para agrupar a chave real que você deseja transferir, que pode ser outra KBPK, uma chave IPEK ou outros tipos de chave. 

Ao importar, o sistema de envio é comumente conhecido como Parte U (Iniciador) e AWS A criptografia de pagamento é conhecida como Parte V (Respondente). 

**nota**  
 Embora o ECDH possa ser usado para trocar qualquer tipo de chave simétrica, é a única abordagem que pode ser transferida com segurança AES-256 chaves. 

1. 

****Gerar par de chaves ECC****  
Ligue `create-key` para criar um par de chaves ECC para esse processo. Essa API gera um par de chaves para importações ou exportações de chaves. Na criação, especifique que tipo de chaves podem ser derivadas usando essa chave ECC. Ao usar o ECDH para trocar (embrulhar) outras chaves, use um valor de `TR31_K1_KEY_BLOCK_PROTECTION_KEY`.
**nota**  
 Embora o ECDH de baixo nível gere uma chave derivada que pode ser usada para qualquer finalidade, AWS A criptografia de pagamento limita a reutilização acidental de uma chave para várias finalidades, permitindo que uma chave seja usada somente para um único tipo de chave derivada. 

   ```
   $ 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. 

****Obtenha o certificado de chave pública****  
Ligue `get-public-key-certificate` para receber a chave pública como X.509 certificado assinado pela CA da sua conta que é específico para AWS Criptografia de pagamento em uma região específica.  
**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. 

****Instale o certificado público no sistema da contraparte (Parte U)****  
Com muitos HSMs, você precisa instalar, carregar ou confiar no certificado público gerado na etapa 1 para exportar chaves usando-o. Isso pode incluir toda a cadeia de certificados ou apenas o certificado raiz da etapa 1, dependendo do HSM. Consulte a documentação do HSM para obter mais informações.

1. 

****Gere um par de chaves ECC no sistema de origem e forneça uma cadeia de certificados para AWS Payment Cryptography****  
No ECDH, cada parte gera um par de chaves e concorda com uma chave comum. Para AWS Criptografia de pagamento para derivar a chave, ela precisa da chave pública da contraparte em X.509 formato de chave pública.

   Ao transferir chaves de um HSM, crie um par de chaves nesse HSM. Para HSMs que suportam blocos de chaves, o cabeçalho da chave será semelhante a `D0144K3EX00E0000`. Ao criar o certificado, você geralmente gera uma CSR no HSM e depois no HSM, em um terceiro ou em um serviço como CA privada da AWS pode gerar o certificado.

   Carregue o certificado raiz para AWS Criptografia de pagamento usando o `importKey` comando com KeyMaterialType do `RootCertificatePublicKey` e KeyUsageType do `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`.

   Para certificados intermediários, use o `importKey` comando com KeyMaterialType do `TrustedCertificatePublicKey` e KeyUsageType do `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. Repita esse processo para vários certificados intermediários. Use o `KeyArn` do último certificado importado na cadeia como entrada para os comandos de importação subsequentes.
**nota**  
Não importe o certificado foliar. Forneça-o diretamente durante o comando de importação.

1. 

****Derive uma chave única usando ECDH no Party U HSM****  
Muitos HSMs e sistemas relacionados suportam o estabelecimento de chaves usando ECDH. Especifique a chave pública da etapa 1 como a chave pública e a chave da etapa 3 como a chave privada. Para opções permitidas, como métodos de derivação, consulte o [Guia de API](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportDiffieHellmanTr31KeyBlock.html). 
**nota**  
 Os parâmetros de derivação, como o tipo de hash, devem corresponder exatamente nos dois lados. Caso contrário, você gerará uma chave diferente. 

1. 

****Exportar chave do sistema de origem****  
Por fim, exporte a chave para a qual você deseja transportar AWS Criptografia de pagamento usando padrão TR-31 comandos. Especifique a chave derivada do ECDH como KBPK. A chave a ser exportada pode ser qualquer chave TDES ou AES sujeita a TR-31 combinações válidas, desde que a chave de empacotamento seja pelo menos tão forte quanto a chave a ser exportada. 

1. 

****Chave de importação de chamadas****  
Ligue para o `import-key` API com um KeyMaterialType do `DiffieHellmanTr31KeyBlock`. Use o keyARN da última CA importada na etapa 3 para `certificate-authority-public-key-identifier`, o material chave embrulhado da etapa 4 para `key-material`e o certificado foliar da etapa 3 para `public-key-certificate`. Inclua a chave privada ARN da etapa 1.

   ```
   $ 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. 

****Use a chave importada para operações criptográficas ou importação subsequente****  
Se o importado KeyUsage era TR31\_K0\_KEY\_ENCRYPTION\_KEY, você pode usar essa chave para importações subsequentes de chaves usando TR-31. Para outros tipos de chave (como TR31\_D0\_SYMMETRIC\_DATA\_ENCRYPTION\_KEY), você pode usar a chave diretamente para operações criptográficas.

### Importe chaves usando técnicas assimétricas (RSA Unwrap)
<a name="keys-import-rsaunwrap"></a>

 Visão geral: AWS A criptografia de pagamento é compatível com RSA wrap/unwrap para troca de chaves quando TR-34 não é viável. Como TR-34, essa técnica usa criptografia assimétrica RSA para criptografar chaves simétricas para troca. No entanto, ao contrário TR-34, esse método não faz com que o remetente assine a carga. Além disso, essa técnica de encapsulamento RSA não mantém a integridade dos metadados da chave durante a transferência porque não inclui blocos de chaves. 

**nota**  
 Você pode usar o RSA wrap para importar ou exportar TDES e AES-128 chaves. 

1. 

****Chame o comando Inicializar importação****  
Ligue **get-parameters-for-import** para inicializar o processo de importação com um `KeyMaterialType` do `KEY_CRYPTOGRAM`. Uso `RSA_2048` para o `WrappingKeyAlgorithm` ao trocar chaves TDES. Uso `RSA_3072` ou `RSA_4096` ao trocar TDES ou AES-128 chaves. Essa API gera um par de chaves para importações de chaves, assina a chave usando uma raiz de certificado e retorna o certificado e a raiz do certificado. Criptografe a chave a ser exportada usando essa chave. Esses certificados têm vida curta e se destinam apenas a essa finalidade. 

   ```
   $ 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. 

****Instalar o certificado público no sistema de origem da chave****  
Com muitos HSMs, você precisa instalar, carregar ou confiar no certificado público (and/or sua raiz) gerada na etapa 1 para exportar chaves usando-a. 

1. 

****Exportar chave do sistema de origem****  
Muitos HSMs e sistemas relacionados oferecem suporte à exportação de chaves usando o RSA wrap. Especifique a chave pública da etapa 1 como o certificado de criptografia (`WrappingKeyCertificate`). Se você precisar da cadeia de confiança, use o `WrappingKeyCertificateChain` da etapa 1. Ao exportar a chave do seu HSM, especifique o formato como RSA, com Padding Mode = PKCS \#1 v2.2 OAEP (com SHA 256 ou SHA 512). 

1. 

****Chame **chave de importação******  
Ligue para o **import-key** API com um `KeyMaterialType` do `KeyMaterial`. Você precisa do `ImportToken` da etapa 1 e do `key-material` (material de chave embrulhado) a partir da etapa 3. Forneça os principais parâmetros (como uso de chaves) porque o RSA wrap não usa blocos de chaves. 

   ```
   $ 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. 

****Use a chave importada para operações criptográficas ou importação subsequente****  
Se o importado `KeyUsage` estava `TR31_K0_KEY_ENCRYPTION_KEY` ou `TR31_K1_KEY_BLOCK_PROTECTION_KEY`, você pode usar essa chave para importações de chaves subsequentes usando TR-31. Se o tipo de chave fosse qualquer outro tipo (como `TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`), você pode usar a chave diretamente para operações criptográficas. 

### Importe chaves simétricas usando uma chave de troca de chaves pré-estabelecida (TR-31)
<a name="keys-import-tr31"></a>

![AWS Processo de importação de chave simétrica de criptografia de pagamento](https://docs.aws.amazon.com/pt_br/payment-cryptography/latest/userguide/images/keyimport-process-wk-import.png)


Ao trocar várias chaves ou oferecer suporte à rotação de chaves, os parceiros normalmente trocam primeiro uma chave inicial de criptografia de chave (KEK). Você pode trocar KEK com AWS Criptografia de pagamento, usando técnicas como [TR-34](#keys-import-tr34) ou [Troca de chaves físicas](keys-physicalkeyexchange.md).

 Depois de estabelecer uma KEK, você pode usá-la para transportar as chaves subsequentes (incluindo outras KEKs). AWS A criptografia de pagamento suporta essa troca de chaves usando ANSI. TR-31, que é amplamente usado e suportado por fornecedores de HSM. 

1. 

****Importar chave de criptografia de chave (KEK)****  
Verifique se você já importou seu KEK e tem o keyArn (ou keyAlias) disponível.

1. 

****Criar uma chave na plataforma de origem****  
Se a chave não existir, crie-a na plataforma de origem. Como alternativa, você pode criar a chave em AWS Criptografia de pagamento e uso do **export** comando. 

1. 

****Exportar chave da plataforma de origem****  
Ao exportar, especifique o formato de exportação como TR-31. A plataforma de origem solicitará a chave a ser exportada e a chave de criptografia de chave a ser usada. 

1. 

****Importar para AWS Payment Cryptography****  
Ao ligar para o **import-key** comando, use o keyARN (ou alias) da sua chave de criptografia para `WrappingKeyIdentifier`. Use a saída da plataforma de origem para `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"
     }
   }
   ```

## Importação de chaves públicas assimétricas (RSA, ECC)
<a name="keys-import-asymmetric"></a>

Todos os certificados importados devem ser pelo menos tão fortes quanto o certificado emissor (antecessor) na cadeia. Isso significa que uma CA RSA\_2048 só pode ser usada para proteger um certificado de folha RSA\_2048 e um certificado ECC deve ser protegido por outro certificado ECC de força equivalente. Um certificado ECC P384 só pode ser emitido por uma CA P384 ou P521. Todos os certificados não devem estar expirados no momento da importação. 

### Importar chaves públicas RSA
<a name="keys-import-rsapublickey"></a>

AWS A criptografia de pagamento suporta a importação de chaves RSA públicas como X.509 certificados. Para importar um certificado, primeiro importe seu certificado raiz. Todos os certificados não devem estar expirados no momento da importação. O certificado deve estar no formato PEM e ser codificado em base64. 

1. 

****Importar certificado raiz para AWS Payment Cryptography****  
Use o comando a seguir para importar o certificado raiz:  
**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. 

****Importar certificado de chave pública para AWS Payment Cryptography****  
Agora, você pode importar uma chave pública. Como TR-34 e o ECDH dependem da aprovação do certificado Leaf em tempo de execução. Essa opção só é usada ao criptografar dados usando uma chave pública de outro sistema. KeyUsage será definido como 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"
     }
   }
   ```

### Importando chaves públicas ECC
<a name="keys-import-eccpublickey"></a>

AWS A criptografia de pagamento suporta a importação de chaves ECC públicas como X.509 certificados. Para importar um certificado, primeiro importe seu certificado CA raiz e quaisquer certificados intermediários. Todos os certificados não devem estar expirados no momento da importação. O certificado deve estar no formato PEM e ser codificado em base64.

1. 

****Importar certificado raiz ECC para AWS Payment Cryptography****  
Use o comando a seguir para importar o certificado raiz:  
**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. 

****Importar certificado intermediário para AWS Payment Cryptography****  
Use o comando a seguir para importar um certificado intermediário:  
**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. 

****Importar certificado de chave pública (folha) para AWS Payment Cryptography****  
 Embora você possa importar um certificado ECC de folha, atualmente não há funções definidas no AWS Criptografia de pagamento para ele, além de armazenamento. Isso ocorre porque, ao usar as funções ECDH, o certificado leaf é passado em tempo de execução. 