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
Argomenti
Importazione di chiavi utilizzando tecniche asimmetriche (TR-34)
![AWS Processo di importazione della chiave di crittografia dei pagamenti](images/keyimport-process-kek-import.png)
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
- 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 ofROOT_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 di
TR34_KEY_BLOCK
.certificate-authority-public-key-identifier
Sarà il KeyArn della CA principale importata nella fase 3,key-material
sarà il materiale chiave racchiuso nel passaggio 4 edsigning-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 di
KeyMaterial
. Avrai bisogno del token di importazione del passaggio 1 e delkey-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](images/keyimport-process-wk-import.png)
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_SIGNATURE
può essere utilizzato se lo scopo della chiave è verificare le firme (ad esempio quando si importa utilizzando TR-34).TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION
può 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" } }