

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à.

# Importazione ed esportazione di chiavi
<a name="keys-importexport"></a>

È possibile importare chiavi AWS di crittografia dei pagamenti da altre soluzioni ed esportarle in altre soluzioni, ad esempio. HSMs Molti clienti scambiano chiavi con i fornitori di servizi utilizzando funzionalità di importazione ed esportazione. Abbiamo progettato AWS Payment Cryptography per utilizzare un approccio elettronico moderno alla gestione delle chiavi che ti aiuta a mantenere la conformità e i controlli. Consigliamo di utilizzare lo scambio di chiavi elettroniche basato su standard anziché componenti chiave cartacei.

**Punti di forza minimi ed effetto sulle funzioni di importazione ed esportazione**  
PCI richiede punti di forza minimi specifici per le operazioni crittografiche, l'archiviazione e la trasmissione delle chiavi. Questi requisiti possono cambiare quando gli standard PCI vengono rivisti. Le regole specificano che l'imballaggio delle chiavi utilizzate per l'archiviazione o il trasporto deve essere almeno altrettanto resistente della chiave da proteggere. Applichiamo questo requisito automaticamente durante l'esportazione e impediamo che le chiavi vengano protette da chiavi più deboli, come illustrato nella tabella seguente.  
La tabella seguente mostra le combinazioni supportate di chiavi di avvolgimento, chiavi da proteggere e metodi di protezione.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/keys-importexport.html)
Per ulteriori informazioni, vedere l'[Appendice D - Dimensioni e punti di forza minimi ed equivalenti delle chiavi per gli algoritmi approvati](https://docs-prv.pcisecuritystandards.org/PTS/Derived%20Test%20Requirements/PCI_HSM_DTRs_v4.pdf) negli standard PCI HSM. 

**Scambio di chiavi di crittografia (KEK)**  
Si consiglia di utilizzare lo standard [ANSI X9.24](terminology.md#terms.tr34) TR-34. Questo tipo di chiave iniziale può essere chiamato Key Encryption Key (KEK), Zone Master Key (ZMK) o Zone Control Master Key (ZCMK). [Se i tuoi sistemi o partner non supportano ancora TR-34, puoi utilizzare RSA Wrap/Unwrap.](terminology.md#terms.rsawrap) [Se le tue esigenze includono lo scambio di chiavi AES-256, puoi usare ECDH.](terminology.md#terms.ecdh)   
Se devi continuare a elaborare i componenti chiave cartacei fino a quando tutti i partner non supporteranno lo scambio di chiavi elettroniche, prendi in considerazione l'utilizzo di un HSM offline o l'utilizzo di un servizio di [custodia delle chiavi](terminology.md#terms.kcaas) di terze parti.  
Per importare le tue chiavi di test o sincronizzarle con quelle esistenti HSMs, consulta il codice di esempio di AWS Payment Cryptography su. [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export) 

**Working Key (WK) Exchange**  
Utilizziamo gli standard di settore ([ANSI X9.24 TR 31-2018 e X9.143](terminology.md#terms.tr31)) per lo scambio di chiavi di lavoro. Ciò richiede che tu abbia già scambiato una KEK utilizzando TR-34, RSA Wrap, ECDH o schemi simili. Questo approccio soddisfa il requisito del PIN PCI per associare crittograficamente il materiale chiave al tipo e all'utilizzo in ogni momento. Le chiavi di lavoro includono le chiavi di lavoro dell'acquirente, le chiavi di lavoro dell'emittente, BDK e IPEK. 

**Topics**
+ [Chiavi di importazione](keys-import.md)
+ [Chiavi di esportazione](keys-export.md)
+ [Argomenti avanzati](keyexchange-advanced.md)

# 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)
  + [Importazione di chiavi utilizzando tecniche asimmetriche (TR-34)](#keys-import-tr34)
  + [Importa le 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 i blocchi chiave X9.143, TR-31 o TR-34, AWS Payment Cryptography in genere conserva (ma non utilizza) le 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>

### Importazione di 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. Nella terminologia TR-34, 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****  
Nella maggior parte dei casi HSMs, è 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 radice 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 HSMs sistemi correlati supportano l'esportazione di chiavi utilizzando la norma TR-34. 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 non CMS TR-34.2012, che può anche essere chiamato formato TR-34 Diebold. 

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 \$1K0\$1KEY\$1ENCRYPTION\$1KEY, puoi utilizzare questa chiave per le successive importazioni di chiavi utilizzando TR-31. Per altri tipi di chiave (come TR31 \$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY), è possibile utilizzare la chiave direttamente per le operazioni crittografiche. 

### Importa le 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 derivato un codice KBPK/KEK monouso utilizzando ECDH.](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 in modo sicuro chiavi 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 certificato X.509 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 della controparte (Party U)****  
Con molti HSMs, è 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 radice 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. Per ricavare la chiave, AWS Payment Cryptography necessita della chiave pubblica della controparte nel formato di chiave pubblica X.509.

   Quando trasferisci le chiavi da un HSM, crea una coppia di chiavi su quell'HSM. Per HSMs i blocchi chiave di supporto, l'intestazione della chiave avrà un aspetto 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 in AWS Private CA 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 sistemi correlati supportano HSMs 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 i comandi TR-31 standard. Specificate la chiave derivata ECDH come KBPK. La chiave da esportare può essere qualsiasi chiave TDES o AES soggetta a combinazioni valide TR-31, 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 \$1K0\$1KEY\$1ENCRYPTION\$1KEY, puoi utilizzare questa chiave per le successive importazioni di chiavi utilizzando TR-31. Per altri tipi di chiave (come TR31 \$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY), è 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 TR-34 non è fattibile. Come TR-34, questa tecnica utilizza la crittografia asimmetrica RSA per crittografare le chiavi simmetriche per lo scambio. Tuttavia, a differenza di 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 chiavi TDES e 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. Utilizzare `RSA_3072` o `RSA_4096` quando si scambiano chiavi TDES o 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 HSMs, è necessario installare, caricare o considerare attendibile il certificato pubblico (e/o la relativa radice) generato nel passaggio 1 per esportare le chiavi utilizzandolo. 

1. 

****Esporta la chiave dal sistema sorgente****  
Molti HSMs sistemi correlati supportano l'esportazione di chiavi utilizzando 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 come RSA, con Padding Mode = PKCS \$11 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 Processo di importazione di chiavi simmetriche per la crittografia dei pagamenti\]](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). È possibile farlo utilizzando tecniche come i componenti chiave cartacei o, per la crittografia dei AWS pagamenti, utilizzando [TR-34](#keys-import-tr34).

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

1. 

****Chiave di crittografia a chiave di importazione (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, specificare 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\$12048 può essere utilizzata solo per proteggere un certificato foglia RSA\$12048 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 ed ECDH si basano 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 verrà impostato su \$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION. TR31  
**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, importate innanzitutto 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. 

# Chiavi di esportazione
<a name="keys-export"></a>

**Contents**
+ [Esporta chiavi simmetriche](#keys-export-symmetric)
  + [Esportazione delle chiavi utilizzando tecniche asimmetriche (TR-34)](#keys-export-tr34)
  + [Esporta le chiavi utilizzando tecniche asimmetriche (ECDH)](#keys-export-ecdh)
  + [Esporta le chiavi utilizzando tecniche asimmetriche (RSA Wrap)](#keys-export-rsawrap)
  + [Esporta le chiavi simmetriche utilizzando una chiave di scambio di chiavi prestabilita (TR-31)](#keys-export-tr31)
+ [Esporta le chiavi iniziali DUKPT (IPEK/IK)](#keys-export-ipek)
+ [Specificate le intestazioni dei blocchi chiave per l'esportazione](#keys-export-optionalheaders)
  + [Intestazioni comuni](#keys-export-commonheaders)
+ [Esporta chiavi asimmetriche (RSA)](#keys-export-publickey)

## Esporta chiavi simmetriche
<a name="keys-export-symmetric"></a>

**Importante**  
 Assicurati di avere la versione più recente di AWS CLI prima di iniziare. Per eseguire l'aggiornamento, consulta [Installazione di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). 

### Esportazione delle chiavi utilizzando tecniche asimmetriche (TR-34)
<a name="keys-export-tr34"></a>

TR-34 utilizza la crittografia asimmetrica RSA per crittografare e firmare chiavi simmetriche per lo scambio. La crittografia protegge la riservatezza, mentre la firma garantisce l'integrità. Quando si esportano le chiavi, AWS Payment Cryptography funge da host di distribuzione delle chiavi (KDH) e il sistema di destinazione diventa il dispositivo di ricezione delle chiavi (KRD).

**Nota**  
Se il tuo HSM supporta l'esportazione di TR-34 ma non l'importazione di TR-34, ti consigliamo di stabilire prima una KEK condivisa tra l'HSM e la crittografia dei pagamenti utilizzando TR-34. AWS È quindi possibile utilizzare TR-31 per trasferire le chiavi rimanenti.

1. 

****Inizializza il processo di esportazione****  
Esegui **get-parameters-for-export** per generare una coppia di chiavi per le esportazioni di chiavi. Utilizziamo questa coppia di chiavi per firmare il payload TR-34. Nella terminologia TR-34, questo è il certificato di firma KDH. I certificati sono di breve durata e validi solo per la durata specificata in. `ParametersValidUntilTimestamp`
**Nota**  
Tutti i certificati sono in codifica base64.  
**Example**  

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

   ```
   {
     "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...",
     "SigningKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS....",
     "SigningKeyAlgorithm": "RSA_2048",
     "ExportToken": "export-token-au7pvkbsq4mbup6i",
     "ParametersValidUntilTimestamp": "2023-06-13T15:40:24.036000-07:00"
   }
   ```

1. 

****Importa il certificato AWS Payment Cryptography nel tuo sistema di ricezione****  
Importa la catena di certificati dalla fase 1 al tuo sistema di ricezione.

1. 

****Configura i certificati del tuo sistema di ricezione****  
Per proteggere il payload trasmesso, la parte mittente (KDH) lo crittografa. Il sistema di ricezione (in genere l'HSM o l'HSM del partner) deve generare una chiave pubblica e creare un certificato a chiave pubblica X.509. È possibile utilizzare AWS Private CA per generare certificati, ma è possibile utilizzare qualsiasi autorità di certificazione.

   Dopo aver ottenuto il certificato, importa il certificato principale in AWS Payment Cryptography utilizzando il **ImportKey** comando. Imposta `KeyMaterialType` su `RootCertificatePublicKey` e `KeyUsageType` su `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`.

   `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`Usiamo `KeyUsageType` perché questa è la chiave principale che firma il certificato leaf. Non è necessario importare i certificati leaf in AWS Payment Cryptography: è possibile trasmetterli online.
**Nota**  
Se in precedenza hai importato il certificato principale, salta questo passaggio. Per i certificati intermedi, usa. `TrustedCertificatePublicKey`

1. 

****Esporta la tua chiave****  
Chiama l'**ExportKey**API con `KeyMaterialType` set to`TR34_KEY_BLOCK`. Devi fornire:
   + Il keyArn della CA principale del passaggio 3 come `CertificateAuthorityPublicKeyIdentifier`
   + Il certificato leaf della fase 3 come `WrappingKeyCertificate`
   + Il keyArn (o alias) della chiave che desideri esportare come `--export-key-identifier`
   + Il token di esportazione del passaggio 1  
**Example**  

   ```
   $ aws payment-cryptography export-key \
       --export-key-identifier "example-export-key" \
       --key-material '{"Tr34KeyBlock": { \
       "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk", \
       "ExportToken": "export-token-au7pvkbsq4mbup6i", \
       "KeyBlockFormat": "X9_TR34_2012", \
       "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFXZ0F3SUJBZ0lSQ..."} \
       }'
   ```

   ```
   {
     "WrappedKey": {
       "KeyMaterial": "308205A106092A864886F70D010702A08205923082058...",
       "WrappedKeyMaterialFormat": "TR34_KEY_BLOCK"
     }
   }
   ```

### Esporta le chiavi utilizzando tecniche asimmetriche (ECDH)
<a name="keys-export-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-export.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 derivato un codice KBPK/KEK monouso utilizzando ECDH.](terminology.md#terms.kbpk) Tale chiave derivata viene immediatamente utilizzata per racchiudere la chiave che si desidera trasferire, che potrebbe essere un'altra chiave KBPK, BDK, IPEK o altri tipi di chiave. 

Durante l'esportazione, la crittografia dei AWS pagamenti viene denominata Parte U (Initiator) e il sistema di ricezione è noto come Party V (Responder). 

**Nota**  
L'ECDH può essere utilizzato per scambiare qualsiasi tipo di chiave simmetrica, ma è l'unico approccio che può essere utilizzato per trasferire chiavi AES-256 se non è già stata stabilita una KEK. 

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 certificato X.509 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 della controparte (Parte V)****  
Con molti HSMs, è necessario installare, caricare o considerare attendibile il certificato pubblico generato nella fase 1 per stabilire le chiavi. Ciò potrebbe includere l'intera catena di certificati o solo il certificato principale, a seconda dell'HSM. Consultate la documentazione HSM per istruzioni specifiche.

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. Per ricavare la chiave, AWS Payment Cryptography necessita della chiave pubblica della controparte nel formato di chiave pubblica X.509.

   Quando trasferisci le chiavi da un HSM, crea una coppia di chiavi su quell'HSM. Per HSMs i blocchi chiave di supporto, l'intestazione della chiave avrà un aspetto simile a. `D0144K3EX00E0000` Quando si crea il certificato, in genere si genera una CSR sull'HSM, quindi l'HSM, una terza parte o un servizio come quello in AWS Private CA 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 successivi comandi di esportazione.
**Nota**  
Non importate il certificato Leaf. Forniscilo direttamente durante il comando di esportazione.

1. 

****Deriva la chiave ed esporta la chiave da AWS Payment Cryptography****  
Durante l'esportazione, il servizio ricava una chiave utilizzando ECDH e quindi la utilizza immediatamente come [KBPK](terminology.md#terms.kbpk) per racchiudere la chiave da esportare utilizzando TR-31. La chiave da esportare può essere qualsiasi chiave TDES o AES soggetta a combinazioni valide per TR-31, purché la chiave di wrapping sia almeno altrettanto potente della chiave da esportare. 

   ```
   $ aws payment-cryptography export-key \
               --export-key-identifier arn:aws:payment-cryptography:us-west-2:529027455495:key/e3a65davqhbpjm4h \
               --key-material='{
                 "DiffieHellmanTr31KeyBlock": {
                   "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
                   "DerivationData": {
                     "SharedInformation": "ADEF567890"
                   },
                   "DeriveKeyAlgorithm": "AES_256",
                   "KeyDerivationFunction": "NIST_SP800",
                   "KeyDerivationHashAlgorithm": "SHA_256",
                   "PrivateKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
                   "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FUR..."
                 }
               }'
   ```

   ```
   {
               "WrappedKey": {
                   "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK",
                   "KeyMaterial": "D0112K1TB00E00007012724C0FAAF64DA50E2FF4F9A94DF50441143294E0E995DB2171554223EAA56D078C4CFCB1C112B33BBF05597EE700",
                   "KeyCheckValue": "E421AD",
                   "KeyCheckValueAlgorithm": "ANSI_X9_24"
               }
           }
   ```

1. 

****Ricava una chiave monouso utilizzando ECDH su Party V HSM****  
Molti sistemi correlati supportano HSMs 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_ExportDiffieHellmanTr31KeyBlock.html). 
**Nota**  
 I parametri di derivazione, come il tipo di hash, devono corrispondere esattamente su entrambi i lati. Altrimenti, genererai una chiave diversa. 

1. 

****Importa la chiave nel sistema di destinazione****  
Infine, importa la chiave da AWS Payment Cryptography utilizzando i comandi TR-31 standard. Specificate la chiave derivata ECDH come KBPK e utilizzate il blocco chiave TR-31 precedentemente esportato da Payment Cryptography. AWS 

### Esporta le chiavi utilizzando tecniche asimmetriche (RSA Wrap)
<a name="keys-export-rsawrap"></a>

 Quando TR-34 non è disponibile, puoi usare RSA per lo scambio di chiavi. wrap/unwrap Come TR-34, questo metodo utilizza la crittografia asimmetrica RSA per crittografare le chiavi simmetriche. Tuttavia, RSA wrap non include: 
+ Firma del payload da parte della parte mittente
+ Blocchi chiave che mantengono l'integrità dei metadati chiave durante il trasporto

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

1. 

****Crea una chiave RSA e un certificato sul tuo sistema di ricezione****  
Crea o identifica una chiave RSA per ricevere la chiave incapsulata. Richiediamo che le chiavi siano in formato certificato X.509. Assicurati che il certificato sia firmato da un certificato root che puoi importare in AWS Payment Cryptography.

1. 

****Importa il certificato pubblico principale in AWS Payment Cryptography****  
Da utilizzare **import-key** con l'`--key-material`opzione per importare il certificato

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

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-09-14T10:50:32.365000-07:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/nsq2i3mbg6sn775f",
       "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-09-14T10:50:32.365000-07:00"
     }
   }
   ```

1. 

****Esporta la tua chiave****  
Chiedi a AWS Payment Cryptography di esportare la tua chiave utilizzando il tuo certificato leaf. Devi specificare: 
   + L'ARN per il certificato radice importato nel passaggio 2
   + Il certificato foglia per l'esportazione
   + La chiave simmetrica per l'esportazione

   L'output è una versione (crittografata) binaria con codifica esadecimale della chiave simmetrica.  
**Example Esempio: esportazione di una chiave**  

   ```
   $ cat export-key.json
   ```

   ```
   {
     "ExportKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
     "KeyMaterial": {
       "KeyCryptogram": {
         "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl",
         "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDEXAMPLE...",
         "WrappingSpec": "RSA_OAEP_SHA_256"
       }
     }
   }
   ```

   ```
   $ aws payment-cryptography export-key \
       --cli-input-json file://export-key.json
   ```

   ```
   {
     "WrappedKey": {
       "KeyMaterial": "18874746731E9E1C4562E4116D1C2477063FCB08454D757D81854AEAEE0A52B1F9D303FA29C02DC82AE7785353816EFAC8B5F4F79CC29A1DDA80C65F34364373D8C74E5EC67E4CB55DEA7F091210DCACD3C46FE4A5DAA0F0D9CAA7C959CA7144A5E7052F34AAED93EF44C004AE7ABEBD616C955BBA10993C06FB905319F87B9B4E1B7A7C7D17AF15B6154E807B9C574387A43197C31C6E565554437A252EFF8AC81613305760D11F9B53B08A1BA79EC7E7C82C48083C4E2D0B6F86C34AB83647BDD7E85240AD1AF3C0F6CA8C5BF323BB2D3896457C554F978F4C9436513F494130A6FADBC038D51898AAD72E02A89FF256C524E7B5D85B813751B718C4933D9DC6031F2C5B2E13351A54B6021B2DB72AA0C7EA54727FBCD557E67E5E7CC2E165576E39DB4DA33510BA9A3C847313103A18EF3B23A3440471864D58C79C569D5CD2A653AC16043CA9A61E6878F74C18EE15F9AB23754C37A945B68C0437C19F0079F74B573D9B59DAC25A20781DBE8075C947C9EDC76177A1B0794288CBF89567A541E8401C74E85B8E1C3E501860AF702F641CAA04327018A84EF3A82932A2BCF37047AB40FE77E0A6F68D0904C7E60983CD6F871D5E0E27EEF425C97D39E9394E8927EEF5D2EA9388DF3C5C241F99378DF5DADE8D0F0CF453C803BA38BA702B9651685FAFA6DCB4B14333F8D3C57F2D93E0852AA94EEC3AF3217CAE5873EFD9",
       "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM"
     }
   }
   ```

1. 

****Importa la chiave nel tuo sistema di ricezione****  
Molti HSMs sistemi correlati supportano l'importazione di chiavi tramite RSA unwrap (inclusa AWS Payment Cryptography). Durante l'importazione, specificare:
   + La chiave pubblica della fase 1 come certificato di crittografia
   + Il formato come RSA
   + Modalità di riempimento come PKCS \$11 v2.2 OAEP (con SHA 256)
**Nota**  
Emettiamo la chiave incapsulata in formato HexBinary. Potrebbe essere necessario convertire il formato se il sistema richiede una rappresentazione binaria diversa, come base64.

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

[Quando si scambiano più chiavi o si supporta la rotazione delle chiavi, in genere si scambia prima una chiave di crittografia a chiave iniziale (KEK) utilizzando componenti chiave cartacei o, con AWS Payment Cryptography, utilizzando TR-34.](#keys-export-tr34) Dopo aver stabilito una KEK, è possibile utilizzarla per trasportare le chiavi successive, incluse altre. KEKs Supportiamo questo scambio di chiavi utilizzando lo standard ANSI TR-31, ampiamente supportato dai fornitori HSM.

1. 

****Configura la tua chiave di crittografia delle chiavi (KEK)****  
Assicurati di aver già cambiato la tua KEK e di avere KeyArn (o KeyAlias) disponibile.

1. 

****Crea la tua chiave su Payment Cryptography AWS****  
Crea la tua chiave se non esiste già. In alternativa, puoi creare la chiave sull'altro sistema e utilizzare il comando [import](#keys-export-tr31).

1. 

****Esporta la tua chiave da AWS Payment Cryptography****  
Quando esportate in formato TR-31, specificate la chiave che desiderate esportare e la chiave di avvolgimento da utilizzare.  
**Example Esempio: esportazione di una chiave utilizzando il blocco chiave TR31**  

   ```
   $ aws payment-cryptography export-key \
       --key-material='{"Tr31KeyBlock": \
       { "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza" }}' \
       --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp
   ```

   ```
   {
     "WrappedKey": {
       "KeyCheckValue": "73C263",
       "KeyCheckValueAlgorithm": "ANSI_X9_24",
       "KeyMaterial": "D0144K0AB00E0000A24D3ACF3005F30A6E31D533E07F2E1B17A2A003B338B1E79E5B3AD4FBF7850FACF9A3784489581A543C84816C8D3542AE888CE6D4EDDFD09C39957B131617BC",
       "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK"
     }
   }
   ```

1. 

****Importa la chiave nel tuo sistema****  
Usa l'implementazione della chiave di importazione del tuo sistema per importare la chiave.

## Esporta le chiavi iniziali DUKPT (IPEK/IK)
<a name="keys-export-ipek"></a>

Quando si utilizza [DUKPT](terminology.md#terms.dukpt), è possibile generare una singola Base Derivation Key (BDK) per una flotta di terminali. I terminali non hanno accesso diretto al BDK. Invece, ogni terminale riceve una chiave terminale iniziale unica, nota come IPEK o Initial Key (IK). Ogni IPEK è derivato dal BDK utilizzando un Key Serial Number (KSN) univoco.

La struttura KSN varia in base al tipo di crittografia:
+ Per TDES: il KSN a 10 byte include:
  + 24 bit per l'ID del set di chiavi
  + 19 bit per l'ID del terminale
  + 21 bit per il contatore delle transazioni
+ Per AES: il KSN a 12 byte include:
  + 32 bit per l'ID BDK
  + 32 bit per l'identificatore di derivazione (ID)
  + 32 bit per il contatore delle transazioni

Forniamo un meccanismo per generare ed esportare queste chiavi iniziali. È possibile esportare le chiavi generate utilizzando i metodi wrap TR-31, TR-34 o RSA. Tieni presente che le chiavi IPEK non sono persistenti e non possono essere utilizzate per operazioni successive sulla crittografia dei pagamenti. AWS 

Non applichiamo la suddivisione tra le prime due parti del KSN. Se desideri memorizzare l'identificatore di derivazione con il BDK, puoi utilizzare i tag. AWS 

**Nota**  
La parte del contatore del KSN (32 bit per AES DUKPT) non viene utilizzata per la derivazione IPEK/IK. Ad esempio, gli input di 12345678901234560001 e 12345678901234569999 genereranno lo stesso IPEK.

```
$ aws payment-cryptography export-key \
    --key-material='{"Tr31KeyBlock": { \
    "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza"}} ' \
    --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \
    --export-attributes 'ExportDukptInitialKey={KeySerialNumber=12345678901234560001}'
```

```
{
"WrappedKey": {
    "KeyCheckValue": "73C263",
    "KeyCheckValueAlgorithm": "ANSI_X9_24",
    "KeyMaterial": "B0096B1TX00S000038A8A06588B9011F0D5EEF1CCAECFA6962647A89195B7A98BDA65DDE7C57FEA507559AF2A5D601D1",
    "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK"
}
}
```

## Specificate le intestazioni dei blocchi chiave per l'esportazione
<a name="keys-export-optionalheaders"></a>

È possibile modificare o aggiungere informazioni sui blocchi chiave durante l'esportazione nei formati ASC TR-31 o TR-34. La tabella seguente descrive il formato del blocco chiave TR-31 e gli elementi che è possibile modificare durante l'esportazione.


| Attributo del blocco chiave | Scopo | È possibile modificare durante l'esportazione? | Note | 
| --- | --- | --- | --- | 
| ID versione |  Definisce il metodo usato per proteggere il materiale chiave. Lo standard include:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/keys-export.html)  | No |  Utilizziamo la versione B per le chiavi di wrapping TDES e la versione D per le chiavi di wrapping AES. Supportiamo le versioni A e C solo per le operazioni di importazione.  | 
| Lunghezza del blocco chiave | Speciifica la lunghezza del messaggio rimanente | No |  Calcoliamo questo valore automaticamente. La lunghezza potrebbe apparire errata prima di decifrare il payload perché possiamo aggiungere il key padding come richiesto dalle specifiche.  | 
| Utilizzo delle chiavi |  Definisce gli scopi consentiti per la chiave, ad esempio:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/keys-export.html)  | No |  | 
| Algoritmo |  Specifica l'algoritmo della chiave sottostante. Supportiamo: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/keys-export.html)  | No | Esportiamo questo valore così com'è. | 
| Utilizzo delle chiavi |  Definisce le operazioni consentite, come:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/keys-export.html)  | Sì\$1 |  | 
| Versione chiave | Indica il numero di versione per la sostituzione/rotazione della chiave. Il valore predefinito è 00 se non specificato. | Sì: può aggiungere |  | 
| Esportabilità chiave |  Controlla se la chiave può essere esportata:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/keys-export.html)  | Sì\$1 |  | 
| Blocchi chiave opzionali | Sì, può aggiungere |  I blocchi chiave opzionali sono name/value coppie legate crittograficamente alla chiave. Ad esempio, KeySet ID per le chiavi DUKPT. Calcoliamo automaticamente il numero di blocchi, la lunghezza di ogni blocco e il blocco di imbottitura (PB) in base all'input della coppia. name/value   |  | 

*\$1Quando si modificano i valori, il nuovo valore deve essere più restrittivo rispetto al valore corrente in Payment Cryptography. AWS * Esempio: 
+ Se l'attuale modalità d'uso dei tasti è Generate=True, Verify=True, puoi cambiarla in Generate=True, Verify=False
+ Se la chiave è già impostata su non esportabile, non è possibile modificarla in esportabile

Quando esporti le chiavi, applichiamo automaticamente i valori correnti della chiave che viene esportata. Tuttavia, potresti voler modificare o aggiungere tali valori prima di inviarli al sistema ricevente. Ecco alcuni scenari comuni: 
+ Quando esportate una chiave su un terminale di pagamento, impostate la relativa esportabilità su questo parametro, `Not Exportable` poiché i terminali in genere importano solo le chiavi e non devono esportarle.
+ Quando devi passare i metadati delle chiavi associate al sistema ricevente, usa le intestazioni opzionali TR-31 per associare crittograficamente i metadati alla chiave invece di creare un payload personalizzato.
+ Imposta la versione della chiave utilizzando il campo per tenere traccia della rotazione dei tasti. `KeyVersion`

TR-31/X9.143 definisce le intestazioni comuni, ma è possibile utilizzare altre intestazioni purché soddisfino i parametri di crittografia dei AWS pagamenti e il sistema ricevente sia in grado di accettarle. [Per ulteriori informazioni sulle intestazioni dei blocchi chiave durante l'esportazione, consulta Key Block Headers nella Guida API.](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_KeyBlockHeaders.html)

Ecco un esempio di esportazione di una chiave BDK (ad esempio, in un KIF) con queste specifiche: 
+ Versione chiave: 02
+ KeyExportability: NON\$1ESPORTABILE
+ KeySetID: 00ABCDEFAB (00 indica la chiave TDES, ABCDEFABCD è la chiave iniziale)

 Poiché non specifichiamo le principali modalità d'uso, questa chiave eredita la modalità d'uso da arn:aws:payment-cryptography:us-east- 2:111122223333:key/5rplquuwozodpwsp (= true). DeriveKey 

**Nota**  
Anche quando si imposta [l'](terminology.md#terms.kif)esportabilità su Non esportabile in questo esempio, il KIF può comunque:   
[Deriva chiavi come IPEK/IK utilizzate in DUKPT](terminology.md#terms.ipek)
Esporta queste chiavi derivate per installarle sui dispositivi
Ciò è specificamente consentito dagli standard.

```
$ aws payment-cryptography export-key \
    --key-material='{"Tr31KeyBlock": { \
    "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \
    "KeyBlockHeaders": { \
    "KeyModesOfUse": { \
    "Derive": true}, \
    "KeyExportability": "NON_EXPORTABLE", \
    "KeyVersion": "02", \
    "OptionalBlocks": { \
    "BI": "00ABCDEFABCD"}}} \
    }' \
    --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp
```

```
{
"WrappedKey": {
    "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK",
    "KeyMaterial": "EXAMPLE_KEY_MATERIAL_TR31",
    "KeyCheckValue": "A4C9B3",
    "KeyCheckValueAlgorithm": "ANSI_X9_24"
    }
}
```

### Intestazioni comuni
<a name="keys-export-commonheaders"></a>

X9.143 definisce alcune intestazioni per casi d'uso comuni. Ad eccezione dell'intestazione HM (HMAC Hash), AWS Payment Cryptography non analizza né utilizza queste intestazioni.


| Header Name (Nome intestazione) | Scopo | Validazione tipica | Note | 
| --- | --- | --- | --- | 
| BI | Identificatore chiave di derivazione di base per DUKPT | 2 caratteri esadecimali (00 per TDES, 11 per AES) quindi 10 caratteri esadecimali per TDES KSI o 8 caratteri esadecimali per BDK ID (AES DUKPT). | Contiene il (BDK ID, per AES DUKPT) o il Key Set Identifier (KSI, per TDES DUKPT). Può essere utilizzato per lo scambio dell'ID BDK o del KSI, ma non è necessario scambiare gli altri dati contenuti nei blocchi IK e KS. In genere la BI viene utilizzata per la trasmissione a un KIF, mentre IK o KS vengono utilizzati per l'iniezione nel terminale stesso. | 
| HM | Speciifica il tipo di hash per le operazioni HMAC |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/payment-cryptography/latest/userguide/keys-export.html)  | Il servizio compila automaticamente questo campo durante l'esportazione e lo analizzerà durante l'importazione. I tipi di hash non supportati dal servizio, ad esempio, SHAKE128 possono essere importati ma potrebbero non essere utilizzabili per funzioni crittografiche. | 
| cinematica inversa |  Numero di serie della chiave iniziale per AES DUKPT | 16 caratteri esadecimali  | Questo valore viene utilizzato per istanziare l'uso della chiave DUKPT iniziale sul dispositivo ricevente e identifica la chiave iniziale derivata da un BDK. Questo campo contiene in genere i dati di derivazione ma nessun contatore. Usa KS per TDES DUKPT. | 
| È |  Numero di serie della chiave iniziale per TDES DUKPT | 20 caratteri esadecimali  | Questo valore viene utilizzato per istanziare l'uso della chiave DUKPT iniziale sul dispositivo ricevente e identifica la chiave iniziale derivata da un BDK. Questo campo contiene in genere i dati di derivazione più un valore contatore azzerato. Usa IK per AES DUKPT. | 
| KP | [KCV](terminology.md#terms.kcv) della chiave di avvolgimento | 2 caratteri esadecimali rappresentano il metodo KCV (00 per il metodo X9.24 e 01 per il metodo CMAC). Seguito dal valore KCV che in genere è composto da 6 caratteri esadecimali. Ad esempio 010 FA329 rappresenta KCV di 0 FA329 calcolato utilizzando il metodo 01 (CMAC).   | Questo valore viene utilizzato per istanziare l'uso della chiave DUKPT iniziale sul dispositivo ricevente e identifica la chiave iniziale derivata da un BDK. Questo campo contiene in genere i dati di derivazione più un valore contatore azzerato. Usa IK per AES DUKPT. | 
| PB | blocco di imbottitura | caratteri ASCII stampabili casuali  | Il servizio compila automaticamente questo campo durante l'esportazione per garantire che le intestazioni opzionali siano multipli della lunghezza del blocco di crittografia | 

## Esporta chiavi asimmetriche (RSA)
<a name="keys-export-publickey"></a>

Per esportare una chiave pubblica sotto forma di certificato, usa il comando. **get-public-key-certificate** Questo comando restituisce: 
+ Il certificato
+ Il certificato principale

Entrambi i certificati sono in codifica base64.

**Nota**  
Questa operazione non è idempotente: le chiamate successive potrebbero generare certificati diversi anche quando si utilizza la stessa chiave sottostante.

**Example**  

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

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

# Argomenti avanzati
<a name="keyexchange-advanced"></a>

Questa sezione tratta scenari e configurazioni avanzati di scambio di chiavi.

**Topics**
+ [Bring Your Own Certificate Authority (BYOCA)](keyexchange-byoca.md)

# Bring Your Own Certificate Authority (BYOCA)
<a name="keyexchange-byoca"></a>

Per impostazione predefinita, quando è necessario un certificato a chiave pubblica per le chiavi asimmetriche (RSA, ECC) create all'interno del servizio, questi certificati vengono emessi da una AWS Payment Cryptography e da un'autorità di certificazione (CA) univoca per l'account. Ciò ha lo scopo di semplificare l'utilizzo di X.509 senza l'onere di identificare o configurare una CA o gestire le richieste di firma dei certificati (CSR).

AWS Payment Cryptography offre anche la possibilità di utilizzare la propria CA quando necessario per motivi di policy o conformità.

## Panoramica di
<a name="keyexchange-byoca.overview"></a>

La funzionalità BYOCA consente di utilizzare la propria Autorità di certificazione ovunque vengano utilizzati i certificati, tra cui l'importazione/esportazione TR-34, RSA Unwrap e i trasferimenti di chiavi basati su ECDH. Ciò è utile quando è necessario mantenere una catena di certificati coerente all'interno dell'organizzazione o quando si lavora con partner che richiedono certificati CA specifici. L'esempio seguente illustra il flusso di lavoro BYOCA che utilizza l'esportazione di chiavi TR-34.

Le tre differenze principali rispetto al flusso di esportazione TR-34 standard sono:

1. La chiave RSA di firma viene creata esplicitamente utilizzando. [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) In precedenza, veniva creata implicitamente tramite. [GetParametersForExport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForExport.html)

1. Una nuova API [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)crea una Richiesta di firma del certificato (CSR) che può essere firmata dalla CA esterna.

1. L'[ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html)API è estesa per consentire la fornitura di un certificato in fase di esecuzione. In precedenza, questo era fornito implicitamente da`import-token`, che diventa un campo opzionale.

**Considerazioni importanti**  
Questi esempi utilizzano chiavi RSA-2048 e racchiudono una chiave TDES-2KEY. Quando esportate AES-128, assicuratevi che tutte le chiavi siano RSA-3072 o RSA-4096.
L'errore più comune è che la chiave rappresentata da e non corrisponde. `SigningKeyIdentifier` `SigningKeyCertificate`

## Flusso di lavoro BYOCA
<a name="keyexchange-byoca.workflow"></a>

I passaggi seguenti illustrano il flusso di lavoro BYOCA completo per l'esportazione TR-34.

**Topics**
+ [Fase 1: Creare una chiave RSA](#keyexchange-byoca.create-rsa)
+ [Fase 2: Generazione della richiesta di firma del certificato](#keyexchange-byoca.generate-csr)
+ [Fase 3: Rivedi la CSR (opzionale)](#keyexchange-byoca.review-csr)
+ [Fase 4: Firma la CSR con un'autorità di certificazione](#keyexchange-byoca.sign-csr)
+ [Fase 5: Importazione del certificato CA](#keyexchange-byoca.import-ca)
+ [Passaggio 6: Ottieni il certificato di crittografia KRD](#keyexchange-byoca.get-krd)
+ [Passaggio 7: esporta la chiave con BYOCA](#keyexchange-byoca.export-key)

### Fase 1: Creare una chiave RSA
<a name="keyexchange-byoca.create-rsa"></a>

Innanzitutto, crea una coppia di chiavi RSA che alla fine sarà il certificato di firma KDH. Puoi aggiungere tag per identificare lo scopo della chiave.

**Example Crea una chiave RSA per la firma**  

```
$ aws payment-cryptography create-key --exportable \
    --key-attributes KeyAlgorithm=RSA_2048,KeyUsage=TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{Sign=True}'
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc",
        "KeyAttributes": {
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE",
            "KeyClass": "ASYMMETRIC_KEY_PAIR",
            "KeyAlgorithm": "RSA_2048",
            "KeyModesOfUse": {
                "Sign": true
            }
        },
        "KeyCheckValue": "41E3723C",
        "KeyCheckValueAlgorithm": "SHA_1",
        "Enabled": true,
        "Exportable": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY"
    }
}
```

Prendi nota di `KeyArn` quanto ti servirà nel passaggio successivo.

### Fase 2: Generazione della richiesta di firma del certificato
<a name="keyexchange-byoca.generate-csr"></a>

Genera una richiesta di firma del certificato (CSR) da firmare dalla tua CA esterna utilizzando l'[GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)API. L'output è un file PEM con codifica Base64. Se decodificate i contenuti in base64 e li salvate, avrete una CSR valida in formato PEM.

**Example Genera CSR**  

```
$ aws payment-cryptography-data get-certificate-signing-request \
    --key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc \
    --signing-algorithm SHA512 \
    --certificate-subject '{
        "CommonName": "MyCertificateAWSUSEAST",
        "Organization": "Amazon",
        "OrganizationUnit": "PaymentCryptography",
        "Country": "US",
        "StateOrProvince": "Virginia",
        "City": "Arlington"
    }'
```

```
{
    "CertificateSigningRequest": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..."
}
```

Il `CertificateSigningRequest` campo contiene il CSR con codifica base64 che invierai alla tua CA per la firma.

### Fase 3: Rivedi la CSR (opzionale)
<a name="keyexchange-byoca.review-csr"></a>

Facoltativamente, puoi usare OpenSSL per esaminare i contenuti CSR e assicurarti che siano validi e come previsto.

**Example Esamina la CSR con OpenSSL**  

```
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d | openssl req -text
```

### Fase 4: Firma la CSR con un'autorità di certificazione
<a name="keyexchange-byoca.sign-csr"></a>

Dopo aver generato la CSR, devi farla firmare da un'autorità di certificazione (CA). Negli ambienti di produzione, in genere si utilizza CA privata AWS l'infrastruttura CA consolidata dell'organizzazione. A scopo di test, puoi usare OpenSSL per creare un certificato autofirmato.

#### Usando CA privata AWS
<a name="keyexchange-byoca.sign-csr-pca"></a>

Per firmare la CSR utilizzando CA privata AWS, prima decodifica la CSR con codifica base64 e salvala in un file, quindi utilizza l'API. [IssueCertificate](https://docs.aws.amazon.com/acm-pca/latest/APIReference/API_IssueCertificate.html)

**Example Firma CSR con AWS Private CA**  

```
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d > csr.pem

$ aws acm-pca issue-certificate \
    --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \
    --csr fileb://csr.pem \
    --signing-algorithm SHA256WITHRSA \
    --validity Value=365,Type=DAYS
```

```
{
    "CertificateArn": "arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef1234567890"
}
```

Quindi recupera il certificato firmato:

**Example Recupera il certificato firmato**  

```
$ aws acm-pca get-certificate \
    --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \
    --certificate-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef1234567890
```

```
{
    "Certificate": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----",
    "CertificateChain": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----"
}
```

Salva il contenuto del certificato per utilizzarlo nella fase di esportazione. Dovrai codificarlo in base64 quando lo fornisci all'API. `ExportKey`

#### Usare OpenSSL per i test
<a name="keyexchange-byoca.sign-csr-openssl"></a>

A scopo di test, puoi utilizzare OpenSSL per creare una CA autofirmata e firmare la CSR. Innanzitutto, crea una chiave privata CA e un certificato autofirmato:

**Example Crea Test CA con OpenSSL**  

```
$ # Generate CA private key
openssl genrsa -out ca-key.pem 4096

$ # Create self-signed CA certificate
openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem \
    -subj "/C=US/ST=Virginia/L=Arlington/O=TestOrg/CN=Test CA"
```

Quindi decodifica la CSR del passaggio precedente e firmala con la tua CA di prova:

**Example Firma CSR con OpenSSL**  

```
$ # Decode the base64-encoded CSR
echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d > csr.pem

$ # Sign the CSR with the CA
openssl x509 -req -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem \
    -CAcreateserial -out signed-cert.pem -days 365 -sha512
```

```
Certificate request self-signature ok
subject=C=US, ST=Virginia, L=Arlington, O=Amazon, OU=PaymentCryptography, CN=MyCertificateAWSUSEAST
```

Il certificato firmato è ora disponibile. `signed-cert.pem` Dovrai codificare questo certificato in base64 quando lo fornisci all'API: `ExportKey`

**Example Base64: codifica il certificato firmato**  

```
$ cat signed-cert.pem | base64 -w 0
```

### Fase 5: Importazione del certificato CA
<a name="keyexchange-byoca.import-ca"></a>

È necessario innanzitutto considerare attendibile qualsiasi CA utilizzata per impedire l'utilizzo di certificati arbitrari. Importa il certificato radice della tua CA esterna utilizzando l'[ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html)API. Se si utilizza una CA intermedia, `import-key` richiamare ma specificare `TrustedPublicKey` invece di `RootCertificatePublicKey` e specificare l'ARN della CA principale.

**Example Importa il certificato CA principale**  

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

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xivpaqy7qbbm7cdw",
        "KeyAttributes": {
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE",
            "KeyClass": "PUBLIC_KEY",
            "KeyAlgorithm": "RSA_4096",
            "KeyModesOfUse": {
                "Verify": true
            }
        },
        "Enabled": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "EXTERNAL"
    }
}
```

Prendi nota delle CA `KeyArn` da utilizzare nella fase di esportazione.

### Passaggio 6: Ottieni il certificato di crittografia KRD
<a name="keyexchange-byoca.get-krd"></a>

In questo esempio, stiamo reimportando in AWS Payment Cryptography, quindi chiamiamo il servizio per ricevere un certificato a chiave pubblica KRD utilizzando l'API. [GetParametersForImport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForImport.html) In uno scenario reale, questo verrebbe fornito da un altro sistema, come un HSM, un bancomat, un terminale di pagamento o un sistema di gestione dei terminali di pagamento.

**Example Ottieni parametri per l'importazione**  

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

```
{
    "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
    "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
    "WrappingKeyAlgorithm": "RSA_2048",
    "ImportToken": "import-token-v2rxpl6drxeptn7w",
    "ParametersValidUntilTimestamp": "2025-11-01T18:45:31.271000-07:00"
}
```

### Passaggio 7: esporta la chiave con BYOCA
<a name="keyexchange-byoca.export-key"></a>

Infine, esporta la chiave utilizzando TR-34 con il tuo certificato firmato da CA utilizzando l'API. [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) Fornisci il certificato di firma firmato dalla tua CA esterna.

**Example TR-34 Esportazione con BYOCA**  

```
$ aws payment-cryptography-data export-key \
    --export-key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/iox73p5f4c4yjiod \
    --key-material '{
        "Tr34KeyBlock": {
            "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-1:111122223333:key/j625deyfqlwctu57",
            "SigningKeyIdentifier": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc",
            "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
            "KeyBlockFormat": "X9_TR34_2012",
            "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t..."
        }
    }'
```

```
{
    "WrappedKey": {
        "WrappedKeyMaterialFormat": "TR34_KEY_BLOCK",
        "KeyMaterial": "3082055A06092A864886F70D010702A082054B30820547...",
        "KeyCheckValue": "3DCA31",
        "KeyCheckValueAlgorithm": "ANSI_X9_24"
    }
}
```

Il blocco chiave esportato può ora essere importato dal sistema ricevente utilizzando il processo di importazione standard TR-34.

## Note aggiuntive
<a name="keyexchange-byoca.notes"></a>
+ Questi esempi sono mostrati utilizzando la CLI di AWS. La stessa funzionalità è disponibile in tutti gli AWS, SDKs inclusi Java, Python, Go e Rust.
+ Se esegui il test con una CA autofirmata, puoi utilizzare OpenSSL per creare una CA di test e firmare la CSR. In produzione, utilizza l'infrastruttura CA consolidata della tua organizzazione.