View a markdown version of this page

Chiavi di esportazione - AWS Crittografia dei pagamenti

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

Esporta chiavi simmetriche

Importante

Assicurati di avere la versione più recente di AWS CLI prima di iniziare. Per eseguire l'aggiornamento, vedi Installazione di AWS CLI.

Esportazione delle chiavi utilizzando tecniche asimmetriche () TR-34

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 TR-34 l'esportazione ma non l' TR-34 importazione, ti consigliamo di stabilire prima un KEK condiviso tra il tuo HSM e Payment Cryptography utilizzando. AWS TR-34 È quindi possibile utilizzarlo 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 TR-34 payload. Nella TR-34 terminologia, 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.

    Esempio
    $ 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" }
  2. Importa il AWS Certificato di crittografia dei pagamenti sul tuo sistema di ricezione

    Importa la catena di certificati dalla fase 1 al tuo sistema di ricezione.

  3. Configura i certificati del tuo sistema di ricezione

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

    Una volta ottenuto il certificato, importate 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.

    Usiamo TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE come KeyUsageType perché questa è la chiave principale che firma il certificato foglia. Non è necessario importare i certificati leaf in AWS Payment Cryptography: puoi trasmetterli in linea.

    Nota

    Se in precedenza hai importato il certificato principale, salta questo passaggio. Per i certificati intermedi, usa. TrustedCertificatePublicKey

  4. Esporta la tua chiave

    Chiama l'ExportKeyAPI con KeyMaterialType set toTR34_KEY_BLOCK. È necessario fornire:

    • Il KeyArn della CA principale del passaggio 3 è CertificateAuthorityPublicKeyIdentifier

    • Il certificato principale della fase 3 era WrappingKeyCertificate

    • Il keyArn (o alias) della chiave che desideri esportare come --export-key-identifier

    • Il token di esportazione del passaggio 1

    Esempio
    $ 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)

AWS Processo di importazione della chiave di crittografia dei pagamenti tramite ECDH

Elliptic Curve Diffie-Hellman (ECDH) utilizza la crittografia asimmetrica ECC per stabilire una chiave condivisa tra due parti senza richiedere chiavi prescambiate. Le chiavi ECDH sono effimere, quindi Payment Cryptography non le memorizza. AWS In questo processo, viene derivata una singola volta KBPK/KEK utilizzando l'ECDH. 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 (Iniziatore) e il sistema ricevente è noto come Parte V (Risponditore).

Nota

L'ECDH può essere utilizzato per scambiare qualsiasi tipo di chiave simmetrica, ma è l'unico approccio che può essere utilizzato per trasferire le AES-256 chiavi se non è già stato stabilito un KEK.

  1. Genera una coppia di chiavi ECC

    Chiama create-key per creare una coppia di chiavi 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 possono essere derivate utilizzando questa chiave ECC. Quando si utilizza ECDH per scambiare (avvolgere) altre chiavi, utilizzare un 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 consentendo di utilizzare una chiave 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" } }
  2. Ottieni il certificato a chiave pubblica

    Chiama get-public-key-certificate per ricevere la chiave pubblica sotto forma di X.509 certificato firmato dalla CA del tuo account, specifico per la crittografia dei AWS pagamenti in una regione specifica.

    Esempio
    $ aws payment-cryptography get-public-key-certificate \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv
    { "KeyCertificate": "LS0tLS1CRUdJTi...", "KeyCertificateChain": "LS0tLS1CRUdJT..." }
  3. Installa il certificato pubblico sul sistema della controparte (Parte V)

    Con molti HSM, è necessario installare, caricare o considerare attendibile il certificato pubblico generato nel passaggio 1 per stabilire le chiavi. Ciò potrebbe includere l'intera catena di certificati o solo il certificato principale, a seconda dell'HSM. Consulta la documentazione HSM per istruzioni specifiche.

  4. Genera una coppia di chiavi ECC sul sistema sorgente e fornisci una catena di certificati a AWS Crittografia dei pagamenti

    In ECDH, ciascuna parte genera una coppia di chiavi e concorda una chiave comune. AWS Affinché Payment Cryptography possa derivare la chiave, è necessaria la chiave pubblica della controparte in formato chiave pubblica. X.509

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

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

    Per i certificati intermedi, usa il importKey comando con KeyMaterialType of TrustedCertificatePublicKey e KeyUsageType of. TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE Ripetere questa procedura per più certificati intermedi. Utilizzate KeyArn l'ultimo certificato importato della catena come input per i successivi comandi di esportazione.

    Nota

    Non importate il certificato Leaf. Forniscilo direttamente durante il comando di esportazione.

  5. Deriva la chiave e la chiave di esportazione da AWS Crittografia dei pagamenti

    Durante l'esportazione, il servizio ricava una chiave utilizzando ECDH e quindi la utilizza immediatamente come KBPK per racchiudere la chiave da esportare utilizzando. TR-31 La chiave da esportare può essere qualsiasi chiave TDES o AES soggetta a combinazioni TR-31 valide, purché la chiave di wrapping sia forte almeno quanto la 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" } }
  6. Ricava una chiave una tantum usando ECDH su Party V HSM

    Molti HSM e sistemi correlati supportano la creazione di chiavi tramite ECDH. Specifica la chiave pubblica della fase 1 come chiave pubblica e la chiave della fase 3 come chiave privata. Per le opzioni consentite, come i metodi di derivazione, consulta la guida API.

    Nota

    I parametri di derivazione, come il tipo di hash, devono corrispondere esattamente su entrambi i lati. Altrimenti, genererai una chiave diversa.

  7. Importa la chiave nel sistema di destinazione

    Infine, importa la chiave da AWS Payment Cryptography utilizzando TR-31 i comandi standard. Specifica la chiave derivata da ECDH come KBPK e usa il blocco di TR-31 chiavi precedentemente esportato da Payment Cryptography. AWS

Esporta le chiavi utilizzando tecniche asimmetriche (RSA Wrap)

Quando TR-34 non è disponibile, è possibile utilizzare RSA wrap/unwrap per lo scambio di chiavi. Ad esempio TR-34, questo metodo utilizza la crittografia asimmetrica RSA per crittografare le chiavi simmetriche. Tuttavia, RSA wrap non include:

  • Firma del payload da parte del mittente

  • Blocchi chiave che mantengono l'integrità dei metadati chiave durante il trasporto

Nota

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

  1. Crea una chiave e un certificato RSA sul tuo sistema ricevente

    Crea o identifica una chiave RSA per ricevere la chiave integrata. Richiediamo che le chiavi siano in formato X.509 certificato. Assicurati che il certificato sia firmato da un certificato radice che puoi importare in AWS Payment Cryptography.

  2. Importa il certificato pubblico principale in AWS Crittografia dei pagamenti

    Usalo import-key con l'--key-materialopzione 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" } }
  3. 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 principale importato nel passaggio 2

    • Il certificato principale per l'esportazione

    • La chiave simmetrica per l'esportazione

    L'output è una versione binaria (crittografata) con codifica esadecimale della chiave simmetrica.

    Esempio 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" } }
  4. Importa la chiave nel tuo sistema di ricezione

    Molti HSM e sistemi correlati supportano l'importazione di chiavi tramite RSA unwrap (inclusa AWS la crittografia dei pagamenti). Durante l'importazione, specificare:

    • La chiave pubblica del passaggio 1 come certificato di crittografia

    • Il formato è RSA

    • Modalità di riempimento come PKCS #1 v2.2 OAEP (con SHA 256)

    Nota

    Emettiamo la chiave racchiusa in formato HexBinary. Potrebbe essere necessario convertire il formato se il sistema richiede una rappresentazione binaria diversa, ad esempio base64.

Esporta le chiavi simmetriche utilizzando una chiave di scambio di chiavi prestabilita () TR-31

Quando si scambiano più chiavi o si supporta la rotazione delle chiavi, in genere i partner si scambiano prima una chiave di crittografia a chiave iniziale (KEK). È possibile scambiare KEK con AWS Payment Cryptography, utilizzando tecniche come o. TR-34 Scambio di chiavi fisiche Dopo aver creato un KEK, puoi utilizzarlo per trasportare le chiavi successive, inclusi altri KEK. Supportiamo questo scambio di chiavi utilizzando ANSI TR-31, ampiamente supportato dai fornitori di HSM.

  1. Configura la tua chiave di crittografia delle chiavi (KEK)

    Assicurati di aver già scambiato il tuo KEK e di avere a disposizione il KeyArn (o KeyAlias).

  2. Crea la tua chiave su AWS Crittografia dei pagamenti

    Crea la tua chiave se non esiste già. In alternativa, puoi creare la chiave sull'altro sistema e utilizzare il comando import.

  3. Esporta la tua chiave da AWS Crittografia dei pagamenti

    Quando esporti in TR-31 formato, specifica la chiave che desideri esportare e la chiave di avvolgimento da utilizzare.

    Esempio Esempio: esportazione di una chiave utilizzando il blocco di tasti 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" } }
  4. 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

Quando si utilizza DUKPT, è possibile generare una singola chiave di derivazione di base (BDK) per una flotta di terminali. I terminali non hanno accesso diretto al BDK. Ogni terminale riceve invece una chiave terminale iniziale univoca, 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 TR-31 TR-34,, o RSA wrap. Tieni presente che le chiavi IPEK non sono permanenti e non possono essere utilizzate per operazioni successive sulla crittografia dei pagamenti. AWS

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

Nota

La parte contatrice 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" } }

Specifica le intestazioni dei blocchi chiave per l'esportazione

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

Attributo del blocco chiave Scopo È possibile modificare durante l'esportazione? Note

ID versione

Definisce il metodo utilizzato per proteggere il materiale chiave. Lo standard include:

  • Versione A e C (variante chiave - obsoleta)

  • Versione B (derivazione tramite TDES)

  • Versione D (derivazione della chiave tramite AES)

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

Specifica la lunghezza del messaggio rimanente

No

Calcoliamo questo valore automaticamente. La lunghezza potrebbe apparire errata prima di decrittografare il payload perché potremmo aggiungere il keypadding come richiesto dalle specifiche.

Utilizzo delle chiavi

Definisce gli scopi consentiti per la chiave, ad esempio:

  • C0 (verifica della carta)

  • B0 (chiave di derivazione di base)

No

Algoritmo

Specifica l'algoritmo della chiave sottostante. Supportiamo:

  • (MAREE)

  • (HMAC)

  • (A ES)

No

Esportiamo questo valore così com'è.

Utilizzo delle chiavi

Definisce le operazioni consentite, ad esempio:

  • Genera e verifica (C)

  • Encrypt/Decrypt/Wrap/Unwrap (B)

Sì*

Versione chiave

Indica il numero di versione della chiave replacement/rotation. Il valore predefinito è 00 se non specificato.

Sì - Può aggiungere

Esportabilità chiave

Controlla se la chiave può essere esportata:

  • N - Nessuna esportabilità

  • E - Esportazione in base a X9.24 (blocchi chiave)

  • S - Esportazione in formati a blocchi chiave o non a blocchi di chiavi

Sì*

Blocchi chiave opzionali

Sì, può essere aggiunto

I blocchi di chiavi opzionali sono name/value coppie associate crittograficamente alla chiave. Ad esempio, KeySet ID per le chiavi DUKPT. Calcoliamo automaticamente il numero di blocchi, la lunghezza di ogni blocco e il padding block (PB) in base all'input della coppia. name/value

*Quando si modificano i valori, il nuovo valore deve essere più restrittivo rispetto al valore corrente in Payment Cryptography. AWS Ad esempio:

  • Se la modalità di utilizzo della chiave corrente è Generate=True, Verify=True, puoi cambiarla in Generate=True, Verify=False

  • Se la chiave è già impostata come non esportabile, non puoi cambiarla in esportabile

Quando esporti le chiavi, applichiamo automaticamente i valori correnti della chiave da esportare. Tuttavia, potresti voler modificare o aggiungere quei valori prima di inviarli al sistema ricevente. Ecco alcuni scenari comuni:

  • Quando esportate una chiave su un terminale di pagamento, impostate la sua esportabilità su Not Exportable perché i terminali in genere importano solo chiavi e non dovrebbero esportarle.

  • Quando devi trasmettere i metadati della chiave associati al sistema ricevente, utilizza intestazioni TR-31 opzionali per associare crittograficamente i metadati alla chiave invece di creare un payload personalizzato.

  • Imposta la versione della chiave utilizzando il campo per tracciare la rotazione della chiave. KeyVersion

TR-31/X9.143 definisce intestazioni comuni, ma puoi utilizzarne altre purché soddisfino i parametri di AWS Payment Cryptography e il tuo sistema di ricezione le accetti. Per ulteriori informazioni sulle intestazioni dei blocchi chiave durante l'esportazione, consulta Key Block Headers nella Guida API.

Ecco un esempio di esportazione di una chiave BDK (ad esempio, in un KIF) con queste specifiche:

  • Versione chiave: 02

  • KeyExportability: NON_EXPORTABLE

  • KeySetID: 00ABCDEFAB (00 indica la chiave TDES, ABCDEFABCD è la chiave iniziale)

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

Nota

Anche se imposti l'esportabilità su Non esportabile in questo esempio, il KIF può comunque: KIF

  • Derivare chiavi come quelle utilizzate in DUKPT IPEK/IK

  • 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

X9.143 definisce determinate 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 l'ID BDK (AES DUKPT).

Contiene il (ID BDK, 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 per lo scambio degli altri dati contenuti nei blocchi IK e KS. In genere, BI viene utilizzato per la trasmissione a un KIF mentre IK o KS vengono utilizzati per l'iniezione nel terminale stesso.

HM

Specifica il tipo di hash per le operazioni HMAC

  • 10 — SHA-1

  • 20 — SHA-224

  • 21 — SHA-256

  • 22 — SHA-384

  • 23 — SHA-512

  • 24 — SHA-512/224

  • 25 — SHA-512/256

  • 30 — SHA3-224

  • 31 — SHA3-256

  • 32 — SHA3-384

  • 33 — SHA3-512

  • 40 — SHAKE128

  • 41 — FRULLATO 256

Il servizio compila automaticamente questo campo durante l'esportazione e lo analizza durante l'importazione. I tipi di hash non supportati dal servizio, come SHAKE128, possono essere importati ma potrebbero non essere utilizzabili per le 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 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 + un valore del contatore azzerato. Usa IK per AES DUKPT.

KP

Valore di controllo chiave del KBPK KBPK

2 caratteri esadecimali rappresentano il metodo KCV (00 per il metodo e 01 per il X9.24 metodo CMAC). Seguito dal valore KCV che in genere è composto da 6 caratteri esadecimali. Ad esempio 010FA329 rappresenta il KCV di 0FA329 calcolato utilizzando il metodo 01 (CMAC).

Calcolato secondo l' X9.24-1-2017 allegato A dell'ANSI; il KCV viene utilizzato per la convalida delle chiavi e non come meccanismo di integrità.

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)

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.

Esempio
$ aws payment-cryptography get-public-key-certificate \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5dza7xqd6soanjtb
{ "KeyCertificate": "LS0tLS1CRUdJTi...", "KeyCertificateChain": "LS0tLS1CRUdJT..." }