

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 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..."
}
```