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á.
Exportar chaves
Sumário
Exportar chaves simétricas
Importante
Certifique-se de ter a versão mais recente do AWS CLI antes de começar. Para atualizar, consulte Instalando AWS CLI o.
Exportar chaves usando técnicas assimétricas () TR-34
TR-34 usa criptografia assimétrica RSA para criptografar e assinar chaves simétricas para troca. A criptografia protege a confidencialidade, enquanto a assinatura garante a integridade. Quando você exporta chaves, a criptografia de AWS pagamento atua como o host de distribuição de chaves (KDH) e seu sistema de destino se torna o dispositivo receptor de chaves (KRD).
nota
Se seu HSM oferece suporte TR-34 à exportação, mas não à TR-34 importação, recomendamos que você primeiro estabeleça uma KEK compartilhada entre o HSM e a criptografia de AWS pagamento usando. TR-34 Você pode então usar TR-31 para transferir suas chaves restantes.
-
Inicializar o processo de exportação
Execute get-parameters-for-export para gerar um par de chaves para exportações de chaves. Usamos esse par de chaves para assinar a TR-34 carga. Na TR-34 terminologia, esse é o certificado de assinatura KDH. Os certificados têm vida curta e são válidos somente pelo período especificado em
ParametersValidUntilTimestamp.nota
Todos os certificados estão na codificação base64.
exemplo
$aws payment-cryptography get-parameters-for-export \--signing-key-algorithmRSA_2048 \--key-material-typeTR34_KEY_BLOCK{ "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...", "SigningKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS....", "SigningKeyAlgorithm": "RSA_2048", "ExportToken": "export-token-au7pvkbsq4mbup6i", "ParametersValidUntilTimestamp": "2023-06-13T15:40:24.036000-07:00" } -
Importe o AWS Certificado de criptografia de pagamento para seu sistema de recebimento
Importe a cadeia de certificados da etapa 1 para o sistema de recebimento.
-
Configure os certificados do seu sistema de recebimento
Para proteger a carga transmitida, a parte remetente (KDH) a criptografa. Seu sistema receptor (normalmente seu HSM ou o HSM do seu parceiro) precisa gerar uma chave pública e criar um certificado de chave X.509 pública. Você pode usar CA privada da AWS para gerar certificados, mas você pode usar qualquer autoridade de certificação.
Depois de obter o certificado, importe o certificado raiz para a Criptografia de AWS pagamento usando o ImportKey comando. Defina
KeyMaterialTypecomoRootCertificatePublicKeyeKeyUsageTypecomoTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE.Usamos
TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATUREcomo oKeyUsageTypeporque essa é a chave raiz que assina o certificado foliar. Você não precisa importar certificados Leaf para a criptografia AWS de pagamento — você pode passá-los on-line.nota
Se você importou anteriormente o certificado raiz, ignore esta etapa. Para certificados intermediários, use
TrustedCertificatePublicKey. -
Exporte sua chave
Chame a ExportKey API com
KeyMaterialTypeset toTR34_KEY_BLOCK. Você precisa fornecer:-
O keyARN da CA raiz da etapa 3 como
CertificateAuthorityPublicKeyIdentifier -
O certificado foliar da etapa 3 como
WrappingKeyCertificate -
O keyArn (ou alias) da chave que você deseja exportar como
--export-key-identifier -
O token de exportação da etapa 1
exemplo
$aws payment-cryptography export-key \--export-key-identifier"example-export-key" \--key-material'{"Tr34KeyBlock": { \ "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk", \ "ExportToken": "export-token-au7pvkbsq4mbup6i", \ "KeyBlockFormat": "X9_TR34_2012", \ "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFXZ0F3SUJBZ0lSQ..."} \ }'{ "WrappedKey": { "KeyMaterial": "308205A106092A864886F70D010702A08205923082058...", "WrappedKeyMaterialFormat": "TR34_KEY_BLOCK" } } -
Exportar chaves usando técnicas assimétricas (ECDH)
A curva elíptica Diffie-Hellman (ECDH) usa criptografia assimétrica ECC para estabelecer uma chave compartilhada entre duas partes sem exigir chaves pré-trocadas. As chaves ECDH são efêmeras, portanto, a criptografia de AWS pagamento não as armazena. Nesse processo, uma única vez KBPK/KEK é derivada usando ECDH. Essa chave derivada é usada imediatamente para agrupar a chave que você deseja transferir, que pode ser outra chave KBPK, BDK, IPEK ou outros tipos de chave.
Ao exportar, a Criptografia de AWS Pagamento é chamada de Parte U (Iniciador) e o sistema de recebimento é conhecido como Parte V (Respondente).
nota
O ECDH pode ser usado para trocar qualquer tipo de chave simétrica, mas é a única abordagem que pode ser usada para transferir AES-256 chaves se uma KEK ainda não estiver estabelecida.
-
Gerar par de chaves ECC
Ligue
create-keypara criar um par de chaves ECC para esse processo. Essa API gera um par de chaves para importações ou exportações de chaves. Na criação, especifique que tipo de chaves podem ser derivadas usando essa chave ECC. Ao usar o ECDH para trocar (embrulhar) outras chaves, use um valor de.TR31_K1_KEY_BLOCK_PROTECTION_KEYnota
Embora o ECDH de baixo nível gere uma chave derivada que pode ser usada para qualquer finalidade, a criptografia de AWS pagamento limita a reutilização acidental de uma chave para várias finalidades, permitindo que uma chave seja usada somente para um único tipo de chave derivada.
$aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=ECC_NIST_P256,KeyUsage=TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{DeriveKey=true}' --derive-key-usage "TR31_K1_KEY_BLOCK_PROTECTION_KEY"{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv", "KeyAttributes": { "KeyUsage": "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT", "KeyClass": "ASYMMETRIC_KEY_PAIR", "KeyAlgorithm": "ECC_NIST_P256", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": false, "Sign": false, "Verify": false, "DeriveKey": true, "NoRestrictions": false } }, "KeyCheckValue": "2432827F", "KeyCheckValueAlgorithm": "CMAC", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2025-03-28T22:03:41.087000-07:00", "UsageStartTimestamp": "2025-03-28T22:03:41.068000-07:00" } } -
Obtenha o certificado de chave pública
Ligue
get-public-key-certificatepara receber a chave pública como um X.509 certificado assinado pela CA da sua conta que é específico para criptografia AWS de pagamento em uma região específica.exemplo
$aws payment-cryptography get-public-key-certificate \--key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv{ "KeyCertificate": "LS0tLS1CRUdJTi...", "KeyCertificateChain": "LS0tLS1CRUdJT..." } -
Instalar certificado público no sistema da contraparte (Parte V)
Com muitos HSMs, você precisa instalar, carregar ou confiar no certificado público gerado na etapa 1 para estabelecer as chaves. Isso pode incluir toda a cadeia de certificados ou apenas o certificado raiz, dependendo do HSM. Consulte a documentação do HSM para obter instruções específicas.
-
Gere um par de chaves ECC no sistema de origem e forneça uma cadeia de certificados para AWS Payment Cryptography
No ECDH, cada parte gera um par de chaves e concorda com uma chave comum. Para que a criptografia de AWS pagamento obtenha a chave, ela precisa da chave pública da contraparte no formato de chave X.509 pública.
Ao transferir chaves de um HSM, crie um par de chaves nesse HSM. Para HSMs que suportam blocos de chaves, o cabeçalho da chave será semelhante a.
D0144K3EX00E0000Ao criar o certificado, você geralmente gera uma CSR no HSM e, em seguida, o HSM, um terceiro ou um serviço como esse CA privada da AWS pode gerar o certificado.Carregue o certificado raiz na criptografia de AWS pagamento usando o
importKeycomando com KeyMaterialType ofRootCertificatePublicKeye KeyUsageType ofTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE.Para certificados intermediários, use o
importKeycomando com KeyMaterialType ofTrustedCertificatePublicKeye KeyUsageType ofTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE. Repita esse processo para vários certificados intermediários. Use oKeyArnúltimo certificado importado na cadeia como entrada para os comandos de exportação subsequentes.nota
Não importe o certificado foliar. Forneça-o diretamente durante o comando de exportação.
-
Derive a chave e exporte a chave de AWS Payment Cryptography
Ao exportar, o serviço deriva uma chave usando ECDH e a usa imediatamente como KBPK para encapsular a chave a ser usada para exportar. TR-31 A chave a ser exportada pode ser qualquer chave TDES ou AES sujeita a combinações TR-31 válidas, desde que a chave de empacotamento seja pelo menos tão forte quanto a chave a ser exportada.
$aws payment-cryptography export-key \ --export-key-identifier arn:aws:payment-cryptography:us-west-2:529027455495:key/e3a65davqhbpjm4h \ --key-material='{ "DiffieHellmanTr31KeyBlock": { "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5", "DerivationData": { "SharedInformation": "ADEF567890" }, "DeriveKeyAlgorithm": "AES_256", "KeyDerivationFunction": "NIST_SP800", "KeyDerivationHashAlgorithm": "SHA_256", "PrivateKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv", "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FUR..." } }'{ "WrappedKey": { "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK", "KeyMaterial": "D0112K1TB00E00007012724C0FAAF64DA50E2FF4F9A94DF50441143294E0E995DB2171554223EAA56D078C4CFCB1C112B33BBF05597EE700", "KeyCheckValue": "E421AD", "KeyCheckValueAlgorithm": "ANSI_X9_24" } } -
Derive uma chave única usando ECDH no Party V HSM
Muitos HSMs e sistemas relacionados suportam o estabelecimento de chaves usando ECDH. Especifique a chave pública da etapa 1 como a chave pública e a chave da etapa 3 como a chave privada. Para opções permitidas, como métodos de derivação, consulte o guia da API.
nota
Os parâmetros de derivação, como o tipo de hash, devem corresponder exatamente nos dois lados. Caso contrário, você gerará uma chave diferente.
-
Importar chave para o sistema de destino
Por fim, importe a chave da criptografia de AWS pagamento usando TR-31 comandos padrão. Especifique a chave derivada do ECDH como KBPK e use o bloco de TR-31 chaves que foi exportado anteriormente da criptografia de pagamento. AWS
Exporte chaves usando técnicas assimétricas (RSA Wrap)
Quando TR-34 não estiver disponível, você pode usar o RSA wrap/unwrap para troca de chaves. Por exemplo TR-34, esse método usa criptografia assimétrica RSA para criptografar chaves simétricas. No entanto, o RSA wrap não inclui:
-
Assinatura de carga útil pela parte remetente
-
Blocos principais que mantêm a integridade dos metadados principais durante o transporte
nota
Você pode usar o RSA wrap para exportar TDES e AES-128 chaves.
-
Crie uma chave RSA e um certificado em seu sistema receptor
Crie ou identifique uma chave RSA para receber a chave encapsulada. Exigimos que as chaves estejam em formato X.509 de certificado. Certifique-se de que o certificado esteja assinado por um certificado raiz que você possa importar para a criptografia AWS de pagamento.
-
Importe o certificado público raiz para AWS Payment Cryptography
Use import-key com a
--key-materialopção de importar o certificado$aws payment-cryptography import-key \--key-material='{"RootCertificatePublicKey": { \ "KeyAttributes": { \ "KeyAlgorithm": "RSA_4096", \ "KeyClass": "PUBLIC_KEY", \ "KeyModesOfUse": {"Verify": true}, \ "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \ "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRV..."} \ }'{ "Key": { "CreateTimestamp": "2023-09-14T10:50:32.365000-07:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/nsq2i3mbg6sn775f", "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-09-14T10:50:32.365000-07:00" } } -
Exporte sua chave
Peça à AWS Payment Cryptography que exporte sua chave usando seu certificado Leaf. Você precisa especificar:
-
O ARN do certificado raiz que você importou na etapa 2
-
O certificado de folha para exportação
-
A chave simétrica para exportar
A saída é uma versão binária encapsulada (criptografada) com codificação hexadecimal da sua chave simétrica.
exemplo Exemplo — Exportar uma chave
$cat export-key.json{ "ExportKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi", "KeyMaterial": { "KeyCryptogram": { "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDEXAMPLE...", "WrappingSpec": "RSA_OAEP_SHA_256" } } }$aws payment-cryptography export-key \--cli-input-jsonfile://export-key.json{ "WrappedKey": { "KeyMaterial": "18874746731E9E1C4562E4116D1C2477063FCB08454D757D81854AEAEE0A52B1F9D303FA29C02DC82AE7785353816EFAC8B5F4F79CC29A1DDA80C65F34364373D8C74E5EC67E4CB55DEA7F091210DCACD3C46FE4A5DAA0F0D9CAA7C959CA7144A5E7052F34AAED93EF44C004AE7ABEBD616C955BBA10993C06FB905319F87B9B4E1B7A7C7D17AF15B6154E807B9C574387A43197C31C6E565554437A252EFF8AC81613305760D11F9B53B08A1BA79EC7E7C82C48083C4E2D0B6F86C34AB83647BDD7E85240AD1AF3C0F6CA8C5BF323BB2D3896457C554F978F4C9436513F494130A6FADBC038D51898AAD72E02A89FF256C524E7B5D85B813751B718C4933D9DC6031F2C5B2E13351A54B6021B2DB72AA0C7EA54727FBCD557E67E5E7CC2E165576E39DB4DA33510BA9A3C847313103A18EF3B23A3440471864D58C79C569D5CD2A653AC16043CA9A61E6878F74C18EE15F9AB23754C37A945B68C0437C19F0079F74B573D9B59DAC25A20781DBE8075C947C9EDC76177A1B0794288CBF89567A541E8401C74E85B8E1C3E501860AF702F641CAA04327018A84EF3A82932A2BCF37047AB40FE77E0A6F68D0904C7E60983CD6F871D5E0E27EEF425C97D39E9394E8927EEF5D2EA9388DF3C5C241F99378DF5DADE8D0F0CF453C803BA38BA702B9651685FAFA6DCB4B14333F8D3C57F2D93E0852AA94EEC3AF3217CAE5873EFD9", "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM" } } -
-
Importe a chave para o seu sistema de recebimento
Muitos HSMs e sistemas relacionados oferecem suporte à importação de chaves usando o RSA unwrap (incluindo AWS criptografia de pagamento). Ao importar, especifique:
-
A chave pública da etapa 1 como certificado de criptografia
-
O formato como RSA
-
Modo de preenchimento como PKCS #1 v2.2 OAEP (com SHA 256)
nota
Produzimos a chave encapsulada no formato hexBinary. Talvez seja necessário converter o formato se o sistema exigir uma representação binária diferente, como base64.
-
Exporte chaves simétricas usando uma chave de troca de chaves preestabelecida () TR-31
Ao trocar várias chaves ou oferecer suporte à rotação de chaves, os parceiros normalmente trocam primeiro uma chave inicial de criptografia de chave (KEK). Você pode trocar KEK por criptografia AWS de pagamento, usando técnicas como TR-34 ou. Troca de chaves físicas Depois de estabelecer uma KEK, você pode usá-la para transportar as chaves subsequentes, incluindo outras KEKs. Apoiamos essa troca de chaves usando o ANSI TR-31, que é amplamente suportado pelos fornecedores de HSM.
-
Configurar sua chave de criptografia de chave (KEK)
Verifique se você já trocou seu KEK e tem o keyARN (ou keyAlias) disponível.
-
Crie sua chave em AWS Payment Cryptography
Crie sua chave se ela ainda não existir. Como alternativa, você pode criar a chave em seu outro sistema e usar o comando de importação.
-
Exporte sua chave do AWS Payment Cryptography
Ao exportar em TR-31 formato, especifique a chave que você deseja exportar e a chave de empacotamento a ser usada.
exemplo Exemplo — Exportação de uma chave usando o bloco de teclas TR31
$aws payment-cryptography export-key \--key-material='{"Tr31KeyBlock": \ { "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza" }}' \--export-key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp{ "WrappedKey": { "KeyCheckValue": "73C263", "KeyCheckValueAlgorithm": "ANSI_X9_24", "KeyMaterial": "D0144K0AB00E0000A24D3ACF3005F30A6E31D533E07F2E1B17A2A003B338B1E79E5B3AD4FBF7850FACF9A3784489581A543C84816C8D3542AE888CE6D4EDDFD09C39957B131617BC", "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK" } } -
Importe a chave para o seu sistema
Use a implementação da chave de importação do seu sistema para importar a chave.
Exportar chaves iniciais DUKPT () IPEK/IK
Ao usar o DUKPT, você pode gerar uma única chave de derivação básica (BDK) para uma frota de terminais. Os terminais não têm acesso direto ao BDK. Em vez disso, cada terminal recebe uma chave de terminal inicial exclusiva, conhecida como IPEK ou Chave Inicial (IK). Cada IPEK é derivado do BDK usando um KSN (Key Serial Number) exclusivo.
A estrutura da KSN varia de acordo com o tipo de criptografia:
-
Para TDES: O KSN de 10 bytes inclui:
-
24 bits para o ID do conjunto de chaves
-
19 bits para o ID do terminal
-
21 bits para o contador de transações
-
-
Para AES: O KSN de 12 bytes inclui:
-
32 bits para o ID BDK
-
32 bits para o identificador de derivação (ID)
-
32 bits para o contador de transações
-
Fornecemos um mecanismo para gerar e exportar essas chaves iniciais. Você pode exportar as chaves geradas usando os métodos TR-31 TR-34,, ou RSA wrap. Observe que as chaves IPEK não persistem e não podem ser usadas para operações subsequentes na AWS criptografia de pagamento.
Não aplicamos a divisão entre as duas primeiras partes do KSN. Se quiser armazenar o identificador de derivação com o BDK, você pode usar tags. AWS
nota
A parte contrária do KSN (32 bits para AES DUKPT) não é usada para derivação. IPEK/IK Por exemplo, as entradas de 12345678901234560001 e 12345678901234569999 gerarão o mesmo IPEK.
$aws payment-cryptography export-key \--key-material='{"Tr31KeyBlock": { \ "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza"}} ' \--export-key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \--export-attributes'ExportDukptInitialKey={KeySerialNumber=12345678901234560001}'
{ "WrappedKey": { "KeyCheckValue": "73C263", "KeyCheckValueAlgorithm": "ANSI_X9_24", "KeyMaterial": "B0096B1TX00S000038A8A06588B9011F0D5EEF1CCAECFA6962647A89195B7A98BDA65DDE7C57FEA507559AF2A5D601D1", "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK" } }
Especifique cabeçalhos de blocos de chaves para exportação
Você pode modificar ou acrescentar informações do bloco de chaves ao exportar em TR-31 ASC ou formatos. TR-34 A tabela a seguir descreve o formato do bloco de TR-31 chaves e quais elementos você pode modificar durante a exportação.
| Atributo do bloco chave | Finalidade | Você pode modificar durante a exportação? | Observações |
|---|---|---|---|
ID da versão |
Define o método usado para proteger o material da chave. O padrão inclui:
|
Não |
Usamos a versão B para chaves de encapsulamento TDES e a versão D para chaves de encapsulamento AES. Oferecemos suporte às versões A e C somente para operações de importação. |
Comprimento do bloco de teclas |
Especifica o tamanho da mensagem restante |
Não |
Calculamos esse valor automaticamente. O comprimento pode parecer incorreto antes de descriptografar a carga, pois podemos adicionar preenchimento de chave conforme exigido pela especificação. |
Uso da chave |
Define as finalidades permitidas para a chave, como:
|
Não |
|
Algoritmo |
Especifica o algoritmo da chave subjacente. Nós apoiamos:
|
Não |
Exportamos esse valor no estado em que se encontra. |
Uso da chave |
Define as operações permitidas, como:
|
Sim* |
|
Versão chave |
Indica o número da versão da chave replacement/rotation. O padrão é 00 se não for especificado. |
Sim - Pode acrescentar |
|
Exportabilidade chave |
Controla se a chave pode ser exportada:
|
Sim* |
|
Blocos de chaves opcionais |
Sim - Pode acrescentar |
Os blocos de chaves opcionais são name/value pares vinculados criptograficamente à chave. Por exemplo, KeySet ID para chaves DUKPT. Calculamos automaticamente o número de blocos, o comprimento de cada bloco e o bloco de preenchimento (PB) com base na entrada do seu name/value par. |
*Ao modificar valores, seu novo valor deve ser mais restritivo do que o valor atual na AWS Criptografia de pagamento. Por exemplo:
-
Se o modo de uso da chave atual for Generate=True, Verify=True, você pode alterá-lo para Generate=True, Verify=False
-
Se a chave já estiver definida como não exportável, você não poderá alterá-la para exportável
Quando você exporta chaves, aplicamos automaticamente os valores atuais da chave que está sendo exportada. No entanto, talvez você queira modificar ou acrescentar esses valores antes de enviar para o sistema receptor. Aqui estão alguns cenários comuns:
-
Ao exportar uma chave para um terminal de pagamento, defina sua exportabilidade como
Not Exportableporque os terminais normalmente importam apenas chaves e não devem exportá-las. -
Quando você precisar passar os metadados da chave associada para o sistema receptor, use cabeçalhos TR-31 opcionais para vincular criptograficamente os metadados à chave em vez de criar uma carga personalizada.
-
Defina a versão da chave usando o
KeyVersioncampo para rastrear a rotação da chave.
TR-31/X9.143 define cabeçalhos comuns, mas você pode usar outros cabeçalhos, desde que eles atendam aos parâmetros AWS de criptografia de pagamento e seu sistema de recebimento possa aceitá-los. Para obter mais informações sobre cabeçalhos de blocos de chaves durante a exportação, consulte Cabeçalhos de blocos de chaves no Guia de API.
Aqui está um exemplo de exportação de uma chave BDK (por exemplo, para um KIF) com essas especificações:
-
Versão chave: 02
-
KeyExportability: NÃO EXPORTÁVEL
-
KeySetID: 00ABCDEFAB (00 indica chave TDES, ABCDEFABCD é a chave inicial)
Como não especificamos os modos de uso da chave, essa chave herda o modo de uso de arn:aws:payment-cryptography:us-east- 2:111122223333: (= true). key/5rplquuwozodpwsp DeriveKey
nota
$aws payment-cryptography export-key \--key-material='{"Tr31KeyBlock": { \ "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \ "KeyBlockHeaders": { \ "KeyModesOfUse": { \ "Derive": true}, \ "KeyExportability": "NON_EXPORTABLE", \ "KeyVersion": "02", \ "OptionalBlocks": { \ "BI": "00ABCDEFABCD"}}} \ }' \--export-key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp
{ "WrappedKey": { "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK", "KeyMaterial": "EXAMPLE_KEY_MATERIAL_TR31", "KeyCheckValue": "A4C9B3", "KeyCheckValueAlgorithm": "ANSI_X9_24" } }
Cabeçalhos comuns
X9.143 define certos cabeçalhos para casos de uso comuns. Com exceção do cabeçalho HM (HMAC Hash), a criptografia de AWS pagamento não analisa nem utiliza esses cabeçalhos.
| Nome do cabeçalho | Finalidade | Validação típica | Observações |
|---|---|---|---|
BI |
Identificador de chave de derivação básica para DUKPT |
2 caracteres hexadecimais (00 para TDES, 11 para AES) e 10 caracteres hexadecimais para TDES KSI ou 8 caracteres hexadecimais para BDK ID (AES DUKPT). |
Contém o (ID BDK, para AES DUKPT) ou o Key Set Identifier (KSI, para TDES DUKPT). Pode ser usado ao trocar o ID BDK ou o KSI, mas não precisa trocar os outros dados contidos nos blocos IK e KS. Normalmente, o BI é usado ao transmitir para um KIF, enquanto IK ou KS são usados ao injetar no próprio terminal. |
HM |
Especifica o tipo de hash para operações HMAC |
|
O serviço preenche automaticamente esse campo na exportação e o analisará na importação. Os tipos de hash não suportados pelo serviço, como o SHAKE128, podem ser importados, mas podem não ser usados para funções criptográficas. |
IK |
Número de série da chave inicial para AES DUKPT |
16 caracteres hexadecimais |
Esse valor é usado para instanciar o uso da chave DUKPT inicial no dispositivo receptor e identifica a chave inicial derivada de um BDK. Esse campo normalmente contém os dados de derivação, mas nenhum contador. Use KS para TDES DUKPT. |
KS |
Número de série da chave inicial para TDES DUKPT |
20 caracteres hexadecimais |
Esse valor é usado para instanciar o uso da chave DUKPT inicial no dispositivo receptor e identifica a chave inicial derivada de um BDK. Esse campo normalmente contém os dados de derivação mais um valor de contador zerado. Use IK para AES DUKPT. |
KP |
Valor de verificação da chave do KBPK |
2 caracteres hexadecimais representam o método KCV (00 para o X9.24 método e 01 para o método CMAC). Seguido pelo valor KCV, que normalmente é de 6 caracteres hexadecimais. Por exemplo, 010FA329 representa o KCV de 0FA329 calculado usando o método 01 (CMAC). |
Calculado de acordo com o X9.24-1-2017 Anexo A da ANSI; o KCV é usado para validação de chaves e não como um mecanismo de integridade. |
PB |
Bloco de preenchimento |
caracteres ASCII imprimíveis aleatórios |
O serviço preenche automaticamente esse campo na exportação para garantir que os cabeçalhos opcionais sejam múltiplos do comprimento do bloco de criptografia. |
Exportar chaves assimétricas (RSA)
Para exportar uma chave pública em formato de certificado, use o get-public-key-certificate comando. Esse comando retorna:
-
O certificado
-
O certificado raiz
Ambos os certificados estão na codificação base64.
nota
Essa operação não é idempotente — chamadas subsequentes podem gerar certificados diferentes, mesmo usando a mesma chave subjacente.
exemplo
$aws payment-cryptography get-public-key-certificate \--key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/5dza7xqd6soanjtb
{ "KeyCertificate": "LS0tLS1CRUdJTi...", "KeyCertificateChain": "LS0tLS1CRUdJT..." }