

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Chiavi di importazione
<a name="keys-import"></a>

**Importante**  
 Gli esempi richiedono la versione più recente di AWS CLI V2. [Prima di iniziare, assicurati di aver effettuato l'aggiornamento alla versione più recente.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 

**Contents**
+ [Introduzione all'importazione di chiavi](#keys-import-introduction)
+ [Importazione di chiavi simmetriche](#keys-import-symmetric)
  + [Importa chiavi utilizzando tecniche asimmetriche () TR-34](#keys-import-tr34)
  + [Importazione delle chiavi utilizzando tecniche asimmetriche (ECDH)](#keys-import-ecdh)
  + [Importa le chiavi utilizzando tecniche asimmetriche (RSA Unwrap)](#keys-import-rsaunwrap)
  + [Importa chiavi simmetriche utilizzando una chiave di scambio di chiavi prestabilita () TR-31](#keys-import-tr31)
+ [Importazione di chiavi pubbliche asimmetriche (RSA, ECC)](#keys-import-asymmetric)
  + [Importazione di chiavi pubbliche RSA](#keys-import-rsapublickey)
  + [Importazione di chiavi pubbliche ECC](#keys-import-eccpublickey)

## Introduzione all'importazione di chiavi
<a name="keys-import-introduction"></a>

**Nota**  
Quando si importano chiavi utilizzando X9.143 TR-31 o blocchi di TR-34 chiavi, AWS Payment Cryptography in genere conserva (ma non utilizza) eventuali intestazioni opzionali. L'intestazione HM (tipo di hash HMAC) viene utilizzata durante le operazioni crittografiche. L'intestazione KP (KCV della chiave di wrapping) è specifica del processo di importazione e non viene mantenuta. 

Quando si scambiano chiavi con una controparte, in genere si scambia prima una chiave di scambio di chiavi (KEK). Questa chiave verrà quindi utilizzata per proteggere le chiavi successive. Utilizzando formati elettronici, la KEK può essere sostituita utilizzando tecniche asimmetriche come TR-34 ECDH o RSA wrap. Le chiavi successive verranno scambiate utilizzando uno scambio di chiavi simmetrico come. TR-31 Questa KEK durerà a lungo e potrà essere aggiornata solo ogni pochi anni in base alla politica e al periodo crittografico definito. 

Se vengono scambiate solo una o due chiavi, puoi anche scegliere di utilizzare tecniche asimmetriche per scambiare direttamente quella chiave, ad esempio un BDK. AWS Payment Cryptography supporta entrambi i metodi di scambio di chiavi.

## Importazione di chiavi simmetriche
<a name="keys-import-symmetric"></a>

### Importa chiavi utilizzando tecniche asimmetriche () TR-34
<a name="keys-import-tr34"></a>

![AWS Processo di importazione della chiave di crittografia dei pagamenti](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/images/keyimport-process-kek-import.png)


 TR-34 utilizza la crittografia asimmetrica RSA per crittografare e firmare chiavi simmetriche per lo scambio. Ciò garantisce sia la riservatezza (crittografia) che l'integrità (firma) della chiave incapsulata. 

 Per importare le tue chiavi, dai un'occhiata al progetto di esempio AWS Payment Cryptography su. [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export) Per istruzioni su come utilizzare import/export chiavi da altre piattaforme, il codice di esempio è disponibile su [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export)o consulta la guida per l'utente di tali piattaforme. 

1. 

****Chiamate il comando Initialize Import****  
Chiama `get-parameters-for-import` per inizializzare il processo di importazione. Questa API genera una coppia di chiavi per l'importazione di chiavi, firma la chiave e restituisce il certificato e la radice del certificato. Crittografa la chiave da esportare utilizzando questa chiave. In TR-34 terminologia, questo è noto come certificato KRD. Questi certificati sono codificati in base64, hanno una durata breve e sono destinati esclusivamente a questo scopo. Salva il valore. `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. 

****Installa il certificato pubblico sul sistema di origine delle chiavi****  
Con la maggior parte degli HSM, è necessario installare, caricare o considerare attendibile il certificato pubblico generato nel passaggio 1 per esportare le chiavi utilizzandolo. Ciò potrebbe includere l'intera catena di certificati o solo il certificato principale del passaggio 1, a seconda dell'HSM. 

1. 

****Genera una coppia di chiavi sul sistema sorgente e fornisci una catena di certificati alla crittografia AWS dei pagamenti****  
Per garantire l'integrità del payload trasmesso, la parte mittente (Key Distribution Host o KDH) lo firma. Genera una chiave pubblica per questo scopo e crea un certificato a chiave pubblica (X509) da restituire alla crittografia dei pagamenti. AWS 

    Quando trasferisci le chiavi da un HSM, crea una coppia di chiavi su quell'HSM. L'HSM, una terza parte o un servizio simile AWS Private CA possono generare il certificato. 

   Carica il certificato principale in AWS Payment Cryptography utilizzando il `importKey` comando with KeyMaterialType of `RootCertificatePublicKey` e KeyUsageType of. `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE` 

   Per i certificati intermedi, usa il `importKey` comando with KeyMaterialType of `TrustedCertificatePublicKey` e KeyUsageType of. `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE` Ripeti questa procedura per più certificati intermedi. Utilizzate `KeyArn` l'ultimo certificato importato nella catena come input per i comandi di importazione successivi. 
**Nota**  
Non importate il certificato Leaf. Forniscilo direttamente durante il comando di importazione.

1. 

****Esporta la chiave dal sistema sorgente****  
Molti HSM e sistemi correlati supportano l'esportazione delle chiavi utilizzando la TR-34 norma. Specificate la chiave pubblica del passaggio 1 come certificato KRD (crittografia) e la chiave del passaggio 3 come certificato KDH (firma). Per importare in AWS Payment Cryptography, specifica il formato come formato a due passaggi TR-34.2012 non CMS, che può anche essere chiamato formato Diebold. TR-34 

1. 

****Chiama Import Key****  
Chiama l'API ImportKey con un KeyMaterialType . `TR34_KEY_BLOCK` Utilizza il keyArn dell'ultima CA importata nel passaggio 3 per`certificate-authority-public-key-identifier`, il materiale chiave incapsulato del passaggio 4 per `key-material` e il certificato foglia del passaggio 3 per. `signing-key-certificate` Includi il token di importazione del passaggio 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. 

****Usa la chiave importata per le operazioni crittografiche o l'importazione successiva****  
Se la chiave importata KeyUsage era TR31\_K0\_KEY\_ENCRYPTION\_KEY, è possibile utilizzare questa chiave per le successive importazioni di chiavi utilizzando. TR-31 Per altri tipi di chiave (come TR31\_D0\_SYMMETRIC\_DATA\_ENCRYPTION\_KEY), è possibile utilizzare la chiave direttamente per le operazioni crittografiche. 

### Importazione delle chiavi utilizzando tecniche asimmetriche (ECDH)
<a name="keys-import-ecdh"></a>

![AWS Processo di importazione della chiave di crittografia dei pagamenti tramite ECDH](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/images/keyimport-ecdh-import.png)


Elliptic Curve Diffie-Hellman (ECDH) utilizza la crittografia asimmetrica ECC per stabilire una chiave condivisa tra due parti senza richiedere chiavi prescambiate. Le chiavi ECDH sono effimere, quindi Payment Cryptography non le memorizza. AWS In questo processo, viene derivata una tantum utilizzando l'ECDH. [KBPK/KEK](terminology.md#terms.kbpk) Tale chiave derivata viene immediatamente utilizzata per racchiudere la chiave effettiva che si desidera trasferire, che potrebbe essere un'altra chiave KBPK, una chiave IPEK o altri tipi di chiave. 

Durante l'importazione, il sistema di invio è comunemente noto come Party U (Initiator) e AWS Payment Cryptography è noto come Party V (Responder). 

**Nota**  
 Sebbene ECDH possa essere utilizzato per lo scambio di qualsiasi tipo di chiave simmetrica, è l'unico approccio in grado di trasferire le chiavi in modo sicuro. AES-256 

1. 

****Genera una coppia di chiavi ECC****  
Chiama `create-key` per creare una key pair ECC per questo processo. Questa API genera una coppia di chiavi per le importazioni o le esportazioni di chiavi. Al momento della creazione, specifica il tipo di chiavi che è possibile derivare utilizzando questa chiave ECC. Quando utilizzate ECDH per scambiare (avvolgere) altre chiavi, utilizzate il valore di. `TR31_K1_KEY_BLOCK_PROTECTION_KEY`
**Nota**  
 Sebbene l'ECDH di basso livello generi una chiave derivata che può essere utilizzata per qualsiasi scopo, AWS Payment Cryptography limita il riutilizzo accidentale di una chiave per più scopi, consentendone l'utilizzo solo per un singolo tipo di chiave derivata. 

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

****Ottieni un certificato a chiave pubblica****  
Chiama `get-public-key-certificate` per ricevere la chiave pubblica come X.509 certificato firmato dalla CA del tuo account, specifico per la crittografia dei AWS pagamenti in una regione specifica.  
**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. 

****Installa il certificato pubblico sul sistema di controparte (Parte U)****  
Con molti moduli di protezione hardware, è necessario installare, caricare o considerare attendibile il certificato pubblico generato nella fase 1 per esportare le chiavi utilizzandolo. Ciò potrebbe includere l'intera catena di certificati o solo il certificato principale del passaggio 1, a seconda dell'HSM. Per ulteriori informazioni, consultate la documentazione HSM.

1. 

****Genera una coppia di chiavi ECC sul sistema di origine e fornisci una catena di certificati a AWS Payment Cryptography****  
Nell'ECDH, ciascuna parte genera una coppia di chiavi e concorda una chiave comune. AWS Affinché Payment Cryptography possa derivare la chiave, è necessaria la chiave pubblica della controparte in formato chiave pubblica. X.509 

   Quando trasferisci le chiavi da un HSM, crea una coppia di chiavi su quell'HSM. Per gli HSM che supportano i blocchi chiave, l'intestazione della chiave sarà simile a. `D0144K3EX00E0000` Quando si crea il certificato, in genere si genera una CSR sull'HSM e poi l'HSM, una terza parte o un servizio come quello AWS Private CA in grado di generare il certificato.

   Carica il certificato principale in AWS Payment Cryptography utilizzando il `importKey` comando with KeyMaterialType of e of. `RootCertificatePublicKey` KeyUsageType `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`

   Per i certificati intermedi, usa il `importKey` comando with KeyMaterialType of `TrustedCertificatePublicKey` e KeyUsageType of. `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE` Ripeti questa procedura per più certificati intermedi. Utilizzate `KeyArn` l'ultimo certificato importato nella catena come input per i comandi di importazione successivi.
**Nota**  
Non importate il certificato Leaf. Forniscilo direttamente durante il comando di importazione.

1. 

****Ricava una chiave monouso utilizzando ECDH su Party U HSM****  
Molti HSM e sistemi correlati supportano la creazione di chiavi utilizzando ECDH. Specificate la chiave pubblica del passaggio 1 come chiave pubblica e la chiave del passaggio 3 come chiave privata. Per le opzioni consentite, come i metodi di derivazione, consulta la guida [API](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportDiffieHellmanTr31KeyBlock.html). 
**Nota**  
 I parametri di derivazione, come il tipo di hash, devono corrispondere esattamente su entrambi i lati. Altrimenti, genererai una chiave diversa. 

1. 

****Esporta la chiave dal sistema sorgente****  
Infine, esporta la chiave che desideri trasportare in AWS Payment Cryptography utilizzando TR-31 i comandi standard. Specificate la chiave derivata ECDH come KBPK. La chiave da esportare può essere qualsiasi chiave TDES o AES soggetta a combinazioni TR-31 valide, purché la chiave di wrapping sia almeno altrettanto potente della chiave da esportare. 

1. 

****Chiama Import Key****  
Chiama l'`import-key`API con KeyMaterialType un`DiffieHellmanTr31KeyBlock`. Utilizza il KeyArn dell'ultima CA importata nel passaggio 3 `certificate-authority-public-key-identifier` per, il materiale chiave avvolto dal passaggio 4 `key-material` per e il certificato foglia dal passaggio 3 per. `public-key-certificate` Includi la chiave privata ARN del passaggio 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. 

****Usa la chiave importata per le operazioni crittografiche o l'importazione successiva****  
Se la chiave importata KeyUsage era TR31\_K0\_KEY\_ENCRYPTION\_KEY, è possibile utilizzare questa chiave per le successive importazioni di chiavi utilizzando. TR-31 Per altri tipi di chiave (come TR31\_D0\_SYMMETRIC\_DATA\_ENCRYPTION\_KEY), è possibile utilizzare la chiave direttamente per le operazioni crittografiche.

### Importa le chiavi utilizzando tecniche asimmetriche (RSA Unwrap)
<a name="keys-import-rsaunwrap"></a>

 Panoramica: AWS Payment Cryptography supporta RSA wrap/unwrap per lo scambio di chiavi quando non è possibile. TR-34 Ad esempio TR-34, questa tecnica utilizza la crittografia asimmetrica RSA per crittografare le chiavi simmetriche per lo scambio. Tuttavia, a differenza di questo metodo TR-34, questo metodo non prevede che la parte mittente firmi il payload. Inoltre, questa tecnica di wrap RSA non mantiene l'integrità dei metadati chiave durante il trasferimento perché non include blocchi chiave. 

**Nota**  
 È possibile utilizzare RSA wrap per importare o esportare TDES e chiavi. AES-128 

1. 

****Chiama il comando Initialize Import****  
Chiama **get-parameters-for-import** per inizializzare il processo di importazione con un `KeyMaterialType` of. `KEY_CRYPTOGRAM` Da utilizzare `RSA_2048` per lo `WrappingKeyAlgorithm` scambio di chiavi TDES. Usa `RSA_3072` o `RSA_4096` quando scambia TDES o chiavi. AES-128 Questa API genera una coppia di chiavi per l'importazione di chiavi, firma la chiave utilizzando una radice del certificato e restituisce sia il certificato che la radice del certificato. Crittografa la chiave da esportare utilizzando questa chiave. Questi certificati sono di breve durata e sono destinati esclusivamente a questo scopo. 

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

****Installa il certificato pubblico sul sistema di origine delle chiavi****  
Con molti HSM, è necessario installare, caricare o considerare attendibile il certificato pubblico (la and/or sua radice) generato nel passaggio 1 per esportare le chiavi utilizzandolo. 

1. 

****Esporta la chiave dal sistema di origine****  
Molti HSM e sistemi correlati supportano l'esportazione di chiavi tramite RSA wrap. Specificate la chiave pubblica del passaggio 1 come certificato di crittografia (). `WrappingKeyCertificate` Se hai bisogno della catena di fiducia, usa il `WrappingKeyCertificateChain` passaggio 1. Quando esportate la chiave dal vostro HSM, specificate il formato RSA, con Padding Mode = PKCS \#1 v2.2 OAEP (con SHA 256 o SHA 512). 

1. 

****Chiama **import-key******  
Chiama l'**import-key**API con `KeyMaterialType` un`KeyMaterial`. È necessario il materiale `ImportToken` del passaggio 1 e il `key-material` (materiale chiave incartato) del passaggio 3. Fornisci i parametri chiave (come Key Usage) perché RSA wrap non utilizza blocchi chiave. 

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

****Utilizza la chiave importata per le operazioni crittografiche o l'importazione successiva****  
Se la chiave importata `KeyUsage` era `TR31_K0_KEY_ENCRYPTION_KEY` o`TR31_K1_KEY_BLOCK_PROTECTION_KEY`, è possibile utilizzare questa chiave per le successive importazioni di chiavi utilizzando TR-31. Se il tipo di chiave era di qualsiasi altro tipo (ad esempio`TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`), è possibile utilizzare la chiave direttamente per le operazioni crittografiche. 

### Importa chiavi simmetriche utilizzando una chiave di scambio di chiavi prestabilita () TR-31
<a name="keys-import-tr31"></a>

![AWS Crittografia dei pagamenti (processo di importazione di chiavi simmetriche)](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/images/keyimport-process-wk-import.png)


Quando si scambiano più chiavi o si supporta la rotazione delle chiavi, i partner in genere si scambiano prima una chiave di crittografia a chiave iniziale (KEK). Puoi scambiare KEK con AWS Payment Cryptography, utilizzando tecniche come o. [TR-34](#keys-import-tr34)[Scambio di chiavi fisiche](keys-physicalkeyexchange.md)

 Dopo aver stabilito una KEK, è possibile utilizzarla per trasportare le chiavi successive (incluse altre KEK). AWS Payment Cryptography supporta questo scambio di chiavi tramite ANSI TR-31, che è ampiamente utilizzato e supportato dai fornitori di HSM. 

1. 

****Importa chiave di crittografia (KEK)****  
Assicurati di aver già importato la tua KEK e di avere KeyArn (o KeyAlias) disponibile.

1. 

****Crea la chiave sulla piattaforma di origine****  
Se la chiave non esiste, creala sulla piattaforma di origine. In alternativa, puoi creare la chiave su AWS Payment Cryptography e utilizzare il **export** comando. 

1. 

****Esporta la chiave dalla piattaforma di origine****  
Durante l'esportazione, specifica il formato di esportazione come TR-31. La piattaforma di origine richiederà la chiave da esportare e la chiave di crittografia da utilizzare. 

1. 

****Importazione in AWS Payment Cryptography****  
Quando chiamate il **import-key** comando, utilizzate il keyArn (o alias) della chiave di crittografia della chiave per. `WrappingKeyIdentifier` Usa l'output della piattaforma di origine per. `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"
     }
   }
   ```

## Importazione di chiavi pubbliche asimmetriche (RSA, ECC)
<a name="keys-import-asymmetric"></a>

Tutti i certificati importati devono avere almeno la stessa robustezza del certificato di emissione (predecessore) presente nella catena. Ciò significa che una CA RSA\_2048 può essere utilizzata solo per proteggere un certificato foglia RSA\_2048 e un certificato ECC deve essere protetto da un altro certificato ECC di resistenza equivalente. Un certificato ECC P384 può essere rilasciato solo da una CA P384 o P521. Tutti i certificati non devono essere scaduti al momento dell'importazione. 

### Importazione di chiavi pubbliche RSA
<a name="keys-import-rsapublickey"></a>

AWS Payment Cryptography supporta l'importazione di chiavi RSA pubbliche come certificati. X.509 Per importare un certificato, devi prima importare il relativo certificato radice. Tutti i certificati non devono essere scaduti al momento dell'importazione. Il certificato deve essere in formato PEM e codificato in base64. 

1. 

****Importa il certificato principale nella crittografia dei pagamenti AWS****  
Utilizzate il seguente comando per importare il certificato principale:  
**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. 

****Importa il certificato a chiave pubblica nella crittografia AWS dei pagamenti****  
Ora puoi importare una chiave pubblica. Poiché TR-34 ECDH si basa sul rilascio del certificato leaf in fase di esecuzione, questa opzione viene utilizzata solo per crittografare i dati utilizzando una chiave pubblica di un altro sistema. KeyUsage sarà impostato su 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"
     }
   }
   ```

### Importazione di chiavi pubbliche ECC
<a name="keys-import-eccpublickey"></a>

AWS Payment Cryptography supporta l'importazione di chiavi ECC pubbliche come certificati. X.509 Per importare un certificato, devi prima importare il relativo certificato CA principale e tutti i certificati intermedi. Tutti i certificati non devono essere scaduti al momento dell'importazione. Il certificato deve essere in formato PEM e codificato in base64.

1. 

****Importa il certificato root ECC nella crittografia dei pagamenti AWS****  
Utilizzate il seguente comando per importare il certificato principale:  
**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. 

****Importa il certificato intermedio nella crittografia AWS dei pagamenti****  
Utilizzate il seguente comando per importare un certificato intermedio:  
**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. 

****Importa il certificato a chiave pubblica (Leaf) nella crittografia AWS dei pagamenti****  
 Sebbene sia possibile importare un certificato ECC Leaf, al momento non esistono funzioni definite in AWS Payment Cryptography oltre all'archiviazione. Questo perché quando si utilizzano le funzioni ECDH, il certificato leaf viene passato in fase di esecuzione. 