Chiavi di importazione - 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 importazione

Importante

Gli esempi possono richiedere la versione più recente di AWS CLI V2. Prima di iniziare, assicurati di aver effettuato l'aggiornamento alla versione più recente.

Importazione di chiavi simmetriche

Importazione di chiavi utilizzando tecniche asimmetriche (TR-34)

AWS Processo di importazione della chiave di crittografia dei pagamenti

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

Se desideri importare le tue chiavi, dai un'occhiata al progetto di esempio su Github. Per istruzioni su come importare/esportare chiavi da altre piattaforme, 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 genererà una coppia di chiavi ai fini dell'importazione delle chiavi, firmerà la chiave e restituirà il certificato e la radice del certificato. In definitiva, la chiave da esportare dovrebbe essere crittografata utilizzando questa chiave. Nella terminologia TR-34, questo è noto come KRD Cert. Si noti che questi certificati sono di breve durata e sono destinati esclusivamente a questo scopo.

2. Installa il certificato pubblico sul sistema di origine delle chiavi

Con molti HSM, potrebbe essere necessario installare/caricare/considerare attendibile il certificato pubblico generato nel passaggio 1 per esportare le chiavi utilizzandolo.

3. Genera la chiave pubblica e fornisci la radice del certificato a Payment Cryptography AWS

Per garantire l'integrità del payload trasmesso, questo viene firmato dalla parte mittente (nota come Key Distribution Host o KDH). La parte mittente vorrà generare una chiave pubblica per questo scopo e quindi creare un certificato a chiave pubblica (X509) che possa essere restituito a Payment Cryptography. AWS AWS Private CA è un'opzione per generare certificati, ma non ci sono restrizioni sull'autorità di certificazione utilizzata.

Una volta ottenuto il certificato, ti consigliamo di caricare il certificato principale su AWS Payment Cryptography usando il importKey comando and KeyMaterialType of ROOT_PUBLIC_KEY_CERTIFICATE e KeyUsageType ofTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE.

4. Esporta la chiave dal sistema sorgente

Molti HSM e sistemi correlati supportano la possibilità di esportare le chiavi utilizzando la norma TR-34. Ti consigliamo di specificare la chiave pubblica del passaggio 1 come certificato KRD (crittografia) e la chiave del passaggio 3 come certificato KDH (firma). Per effettuare l'importazione in AWS Payment Cryptography, dovrai specificare che il formato sia il formato a due passaggi TR-34.2012 non CMS, che può anche essere chiamato formato TR-34 Diebold.

5. Chiave di importazione delle chiamate

Come ultimo passaggio, chiamerai l'API ImportKey con un KeyMaterialType diTR34_KEY_BLOCK. certificate-authority-public-key-identifierSarà il KeyArn della CA principale importata nella fase 3, key-material sarà il materiale chiave racchiuso nel passaggio 4 ed signing-key-certificate è il certificato foglia del passaggio 3. Sarà inoltre necessario fornire il token di importazione del passaggio 1.

6. Utilizza la chiave importata per le operazioni crittografiche o la successiva importazione

Se la chiave importata KeyUsage era TR31_K0_KEY_ENCRYPTION_KEY, questa chiave può essere utilizzata 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), la chiave può essere utilizzata direttamente per operazioni crittografiche.

Importa le chiavi utilizzando tecniche asimmetriche (RSA Unwrap)

Panoramica: AWS Payment Cryptography supporta RSA wrap/unwrap per lo scambio di chiavi quando TR-34 non è possibile. Simile a 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 ha il payload firmato dalla parte mittente. Inoltre, questa tecnica di wrap RSA non mantiene l'integrità dei metadati chiave durante il trasferimento, in quanto non include i blocchi chiave.

Nota

Il wrap RSA può essere utilizzato per importare o esportare chiavi TDES e AES-128.

1. Chiama il comando di inizializzazione dell'importazione

Chiama get-parameters-for-import per inizializzare il processo di importazione con un tipo di materiale chiave KEY_CRYPTOGRAM. WrappingKeyAlgorithm può essere RSA_2048 quando si scambiano chiavi TDES. È possibile utilizzare RSA_3072 o RSA_4096 per lo scambio di chiavi TDES o AES-128. Questa API genererà una coppia di chiavi ai fini dell'importazione delle chiavi, firmerà la chiave utilizzando una radice del certificato e restituirà sia il certificato che la radice del certificato. In definitiva, la chiave da esportare dovrebbe essere crittografata utilizzando questa chiave. Tieni presente che 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" }
2. Installa il certificato pubblico sul sistema di origine delle chiavi

Con molti HSM, potrebbe essere necessario installare/caricare/considerare attendibile il certificato pubblico (e/o la relativa radice) generato nel passaggio 1 per esportare le chiavi utilizzandolo.

3. Esporta la chiave dal sistema sorgente

Molti HSM e sistemi correlati supportano la possibilità di esportare le chiavi utilizzando RSA wrap. Ti consigliamo di specificare la chiave pubblica del passaggio 1 come certificato (di crittografia) (WrappingKeycertificato). Se hai bisogno della catena di fiducia, questa è contenuta nel campo di risposta WrappingKeyCertificateChain nel passaggio #1. Quando esporti la chiave dal tuo HSM, ti consigliamo di specificare che il formato sia RSA, Padding Mode = PKCS #1 v2.2 OAEP (con SHA 256 o SHA 512).

4. Chiave di importazione delle chiamate

Come ultimo passaggio, chiamerai l'API ImportKey con un KeyMaterialType diKeyMaterial. Avrai bisogno del token di importazione del passaggio 1 e del key-material (materiale chiave incartato) del passaggio 3. Dovrai fornire i parametri chiave (come l'utilizzo delle chiavi) poiché 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" } }
5. Utilizza la chiave importata per le operazioni crittografiche o l'importazione successiva

Se la chiave importata KeyUsage era TR31_K0_KEY_ENCRYPTION_KEY, questa chiave può essere utilizzata 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), la chiave può essere utilizzata direttamente per operazioni crittografiche.

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

AWS Processo di importazione di chiavi simmetriche per la crittografia dei pagamenti

Quando i partner si scambiano più chiavi (o supportano la rotazione delle chiavi), è normale scambiare prima una chiave di crittografia a chiave iniziale (KEK) utilizzando tecniche come componenti chiave cartacei o, nel caso della crittografia dei AWS pagamenti, utilizzando TR-34.

Una volta stabilita una KEK, è possibile utilizzare questa chiave per trasportare le chiavi successive (incluse altre KEK). AWS Payment Cryptography supporta questo tipo di scambio di chiavi utilizzando ANSI TR-31, ampiamente utilizzato e ampiamente supportato dai fornitori di HSM.

1. Chiave di crittografia a chiave di importazione (KEK)

Si presume che abbiate già importato la vostra KEK e che abbiate KeyArn (o KeyAlias) a vostra disposizione.

2. Crea una chiave sulla piattaforma di origine

Se la chiave non esiste già, crea la chiave sulla piattaforma di origine. Al contrario, puoi creare la chiave su AWS Payment Cryptography e utilizzare invece il export comando.

3. Esporta la chiave dalla piattaforma di origine

Durante l'esportazione, assicuratevi di specificare il formato di esportazione come TR-31. La piattaforma di origine ti chiederà anche la chiave da esportare e la chiave di crittografia da utilizzare.

4. Importazione in AWS Payment Cryptography

Quando si chiama il comando ImportKey, WrappingKeyIdentifier deve essere il keyArn (o alias) della chiave di crittografia della chiave ed WrappedKeyBlock è l'output della piattaforma di origine.

$ 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 asimmetriche (RSA)

Importazione di chiavi pubbliche RSA

AWS Payment Cryptography supporta l'importazione di chiavi RSA pubbliche sotto forma di certificati X.509. Per importare un certificato, è necessario 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 deve essere codificato in base 64.

1. Importazione in Root Certificate in Payment Cryptography AWS
$ 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" } }
2. Importa il certificato a chiave pubblica nella crittografia AWS dei pagamenti

Ora puoi importare una chiave pubblica. Esistono due opzioni per importare le chiavi pubbliche. TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATUREpuò essere utilizzato se lo scopo della chiave è verificare le firme (ad esempio quando si importa utilizzando TR-34). TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTIONpuò essere utilizzato per crittografare dati destinati all'uso con un altro sistema.

$ aws payment-cryptography import-key \ --key-material='{"TrustedCertificatePublicKey":{"CertificateAuthorityPublicKeyIdentifier":"arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", \ "KeyAttributes":{"KeyAlgorithm":"RSA_2048","KeyClass":"PUBLIC_KEY","KeyModesOfUse":{"Verify":true},"KeyUsage":"TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"},\ "PublicKeyCertificate":"LS0tLS1CRUdJTiB..."}}'
{ "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" } }