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 richiedono 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

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. Per istruzioni su come importare/esportare chiavi da altre piattaforme, consulta il codice di esempio su Github o consulta la guida per l'utente di tali piattaforme.

  1. Chiama 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" }
  2. 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.

  3. 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 possono generare il AWS Private CA 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.

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

  5. Chiama Import Key

    Chiama l'API ImportKey con un KeyMaterialType . TR34_KEY_BLOCK Utilizza il keyArn dell'ultima CA importata nel passaggio 3 percertificate-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" } }
  6. Usa la chiave importata per le operazioni crittografiche o l'importazione successiva

    Se la chiave importata KeyUsage era TR31 _K0_KEY_ENCRYPTION_KEY, puoi utilizzare questa chiave per le successive importazioni di chiavi utilizzando TR-31. Per altri tipi di chiave (come TR31 _D0_SYMMETRIC_DATA_ENCRYPTION_KEY), è possibile utilizzare la chiave direttamente per le 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. 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" }
  2. 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.

  3. 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 #1 v2.2 OAEP (con SHA 256 o SHA 512).

  4. Chiama import-key

    Chiama l'import-keyAPI con KeyMaterialType unKeyMaterial. È 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" } }
  5. Utilizza la chiave importata per le operazioni crittografiche o l'importazione successiva

    Se la chiave importata lo KeyUsage eraTR31_K0_KEY_ENCRYPTION_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 esempioTR31_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)

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

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.

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.

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

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

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

    $ 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 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:

    $ 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:

    • Da utilizzare TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE se lo scopo della chiave è verificare le firme (ad esempio, quando si importa utilizzando TR-34).

    • Da utilizzare per crittografare TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION i dati per utilizzarli con un altro sistema.

    $ 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" } }