Importar chaves - AWS Criptografia de pagamento

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Importar chaves

Importante

Os exemplos podem exigir a versão mais recente da AWS CLI V2. Antes de começar, verifique se você atualizou para a versão mais recente.

Importar chaves simétricas

Importar chaves usando técnicas assimétricas (TR-34)

AWS Processo de importação de chave criptográfica de pagamento

Visão geral: O TR-34 utiliza criptografia RSA assimétrica para criptografar chaves simétricas para troca, além de garantir a origem dos dados (assinatura). Isso garante a confidencialidade (criptografia) e a integridade (assinatura) da chave encapsulada.

Se quiser importar suas próprias chaves, confira o projeto de amostra disponível no Github. Para obter instruções sobre como importar/exportar chaves de outras plataformas, consulte o guia do usuário dessas plataformas.

1. Chamar o comando de inicialização de importação

Chame get-parameters-for-import para inicializar o processo de importação. Isso API gerará um par de chaves para fins de importação de chaves, assinará a chave e retornará o certificado e a raiz do certificado. Em última análise, a chave a ser exportada deve ser criptografada usando essa chave. Na terminologia TR-34, isso é conhecido como Cert. KRD Observe que esses certificados têm vida curta e se destinam apenas a essa finalidade.

2. Instalar o certificado público no sistema de origem da chave

Com muitosHSMs, talvez você precise install/load/trust do certificado público gerado na etapa 1 para exportar as chaves usando-o.

3. Gere a chave pública e forneça a raiz do certificado para criptografia AWS de pagamento

Para garantir a integridade da carga transmitida, ela é assinada pela parte remetente (conhecida como Key Distribution Host ouKDH). A parte remetente desejará gerar uma chave pública para essa finalidade e, em seguida, criar um certificado de chave pública (X509) que possa ser devolvido à AWS Payment Cryptography. AWS Private CA é uma opção para gerar certificados, mas não há restrições quanto à autoridade de certificação usada.

Depois de ter o certificado, você desejará carregar o certificado raiz na Criptografia AWS de Pagamento usando o importKey comando e KeyMaterialType de ROOT_PUBLIC_KEY_CERTIFICATE e KeyUsageType deTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE.

4. Exportar chave do sistema de origem

Muitos HSMs sistemas relacionados suportam a capacidade de exportar chaves usando a norma TR-34. Você deve especificar a chave pública da etapa 1 como o certificado KRD (de criptografia) e a chave da etapa 3 como o certificado KDH (de assinatura). Para importar para a criptografia de AWS pagamento, você deve especificar o formato TR-34.2012 sem CMS duas passagens, que também pode ser chamado de formato TR-34 Diebold.

5. Chamar chave de importação

Como última etapa, você ligará para o importKey API com um KeyMaterialType deTR34_KEY_BLOCK. certificate-authority-public-key-identifierSerá a chave ARN da CA raiz importada na etapa 3, key-material será o material-chave encapsulado da etapa 4 e será signing-key-certificate o certificado preliminar da etapa 3. Você também precisará fornecer o token de importação da etapa 1.

6. Use a chave importada para operações criptográficas ou importação subsequente

Se o importado KeyUsage foi TR31 _K0_ _ KEY ENCRYPTION _KEY, essa chave pode ser usada para importações de chaves subsequentes usando TR-31. Se o tipo de chave for qualquer outro tipo (como TR31 _D0_ _ _ SYMMETRIC _ DATA ENCRYPTION _KEY), a chave poderá ser usada diretamente para operações criptográficas.

Importe chaves usando técnicas assimétricas (Unwrap) RSA

Visão geral: A criptografia AWS de pagamento suporta RSA embrulhar/desembrulhar para troca de chaves quando o TR-34 não é viável. Semelhante ao TR-34, essa técnica utiliza criptografia RSA assimétrica para criptografar chaves simétricas para troca. No entanto, diferentemente do TR-34, esse método não tem a carga assinada pela parte remetente. Além disso, essa técnica de RSA encapsulamento não mantém a integridade dos metadados da chave durante a transferência por não incluir blocos de chaves.

nota

RSAwrap pode ser usado para importar ou exportar TDES e AES -128 chaves.

1. Chamar o comando de inicialização de importação

Ligue get-parameters-for-import para inicializar o processo de importação com um tipo de material chave de KEY _CRYPTOGRAM. WrappingKeyAlgorithm pode ser RSA _2048 ao trocar TDES chaves. RSA_3072 ou RSA _4096 podem ser usados ao trocar TDES chaves ou -128. AES Isso API gerará um par de chaves para fins de importação de chaves, assinará a chave usando uma raiz de certificado e retornará tanto o certificado quanto a raiz do certificado. Em última análise, a chave a ser exportada deve ser criptografada usando essa chave. Observe que esses certificados têm vida curta e se destinam apenas a essa finalidade.

$ 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. Instalar o certificado público no sistema de origem da chave

Com muitosHSMs, talvez seja necessário que install/load/trust the public certificate(and/or sua raiz () seja gerada na etapa 1 para exportar chaves usando-a.

3. Exportar chave do sistema de origem

Muitos HSMs sistemas relacionados oferecem suporte à capacidade de exportar chaves usando RSA wrap. Você desejará especificar a chave pública da etapa 1 como o certificado () (de criptografiaWrappingKeyCertificate). Se você precisar da cadeia de confiança, ela está contida no campo de resposta WrappingKeyCertificateChain na etapa #1. Ao exportar a chave do seuHSM, você deve especificar o formato a serRSA, Padding Mode = PKCS #1 v2.2 OAEP (com SHA 256 ou SHA 512).

4. Chamar chave de importação

Como última etapa, você ligará para o importKey API com um KeyMaterialType deKeyMaterial. Você precisará do token de importação da etapa 1 e do key-material (material da chave embrulhada) da etapa 3. Você precisará fornecer os parâmetros-chave (como Uso da chave), pois o RSA wrap não utiliza blocos de chaves.

$ 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. Use a chave importada para operações criptográficas ou importação subsequente

Se o importado KeyUsage foi TR31 _K0_ _ KEY ENCRYPTION _KEY, essa chave pode ser usada para importações de chaves subsequentes usando TR-31. Se o tipo de chave for qualquer outro tipo (como TR31 _D0_ _ _ SYMMETRIC _ DATA ENCRYPTION _KEY), a chave poderá ser usada diretamente para operações criptográficas.

Importe chaves simétricas usando uma chave de troca de chaves preestabelecida (TR-31)

AWS Processo de importação de chave simétrica de criptografia de pagamento

Quando os parceiros estão trocando várias chaves (ou para oferecer suporte à rotação de chaves), é comum trocar primeiro uma chave de criptografia de chave inicial (KEK) usando técnicas como componentes de chave em papel ou, no caso de criptografia de AWS pagamento, usando TR-34.

Depois que a KEK for estabelecida, você poderá usar essa chave para transportar as chaves subsequentes (incluindo outrasKEKs). AWS A criptografia de pagamento suporta esse tipo de troca de chaves usando o ANSI TR-31, que é amplamente utilizado e amplamente suportado pelos fornecedores. HSM

1. Importar chave de criptografia (KEK)

Supõe-se que você já tenha importado sua KEK e tenha a chave ARN (oukeyAlias) disponível para você.

2. Criar uma chave na plataforma de origem

Se a chave ainda não existir, crie-a na plataforma de origem. Por outro lado, você pode criar a chave no AWS Payment Cryptography e usar o comando export em vez disso.

3. Exportar chave da plataforma de origem

Ao exportar, especifique o formato de exportação como TR-31. A plataforma de origem também solicitará a exportação da chave e a chave de criptografia a ser usada.

4. Importar para criptografia AWS de pagamento

Ao chamar o importKey comando, WrappingKeyIdentifier deve ser a chave ARN (ou alias) da sua chave de criptografia e WrappedKeyBlock a saída da plataforma de origem.

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

Importação de chaves assimétricas () RSA

Importação de chaves RSA públicas

AWS A criptografia de pagamento suporta a importação de RSA chaves públicas na forma de certificados X.509. Para importar um certificado, você precisará primeiro importar seu certificado raiz. Todos os certificados devem estar válidos no momento da importação. O certificado deve estar no PEM formato e ser codificado em base64.

1. Importar para o certificado raiz para criptografia AWS de pagamento
$ 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. Importar certificado de chave pública para criptografia AWS de pagamento

Agora, você pode importar uma chave pública. Existem duas opções para importar chaves públicas. TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE pode ser usado se o objetivo da chave for verificar assinaturas (por exemplo, ao importar usando TR-34). TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION pode ser usado ao criptografar dados destinados ao uso com outro 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" } }