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
Tópicos
Importar chaves usando técnicas assimétricas (TR-34)
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.
- 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 deROOT_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 de
TR34_KEY_BLOCK
.certificate-authority-public-key-identifier
Será 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 de
KeyMaterial
. Você precisará do token de importação da etapa 1 e dokey-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)
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" } }