Solução de problemas de migração para as versões mais recentes - AWS Encryption SDK

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

Solução de problemas de migração para as versões mais recentes

Antes de atualizar a aplicação para a versão 2.0. x ou versões posteriores doAWS Encryption SDK, atualize para a versão 1.x mais recente do AWS Encryption SDK e implante-a completamente. Isso ajudará você a evitar a maioria dos erros que pode encontrar ao atualizar para as versões 2.0.x e posteriores. Para obter orientações detalhadas, incluindo exemplos, consulte Como migrar seu AWS Encryption SDK.

Importante

Verifique se a sua versão 1.x mais recente é a versão 1.7.x ou versão posterior do AWS Encryption SDK.

nota

CLI de criptografia da AWS: as referências neste guia à versão 1.7.x do AWS Encryption SDK se aplicam à versão 1.8.x da CLI de criptografia da AWS. As referências neste guia para a versão 2.0.x do AWS Encryption SDK se aplicam à versão 2.1.x da CLI de criptografia da AWS.

Os novos atributos de segurança foram lançados originalmente nas versões 1.7.x e 2.0.x. da CLI de criptografia da AWS. No entanto, a versão 1.8x da CLI de criptografia da AWS substitui a versão 1.7.x e a versão 2.1.x da CLI de criptografia da AWSsubstitui a 2.0.x. Para obter detalhes, consulte o boletim de segurança pertinente no repositório aws-encryption-sdk-cli no GitHub.

Este tópico foi criado para ajudar você a reconhecer e solucionar os erros mais comuns que pode encontrar.

Objetos descontinuados ou removidos

A versão 2.0.x inclui várias alterações importantes, incluindo a remoção de construtores, métodos, funções e classes herdados que foram descontinuados na versão 1.7.x.. Para evitar erros do compilador, erros de importação, erros de sintaxe e erros de símbolo não encontrado (dependendo da sua linguagem de programação), atualize primeiro para versão 1.x mais recente do AWS Encryption SDK para sua linguagem de programação. (Deve ser a versão 1.7.x ou posterior) Ao usar a versão 1.x mais recente, você pode começar a usar os elementos de substituição antes que os símbolos originais sejam removidos.

Se precisar atualizar para a versão 2.0. x ou posterior imediatamente, consulte o changelog da sua linguagem de programação e substitua os símbolos herdados pelos símbolos recomendados pelo changelog.

Conflito de configuração: política de compromisso e pacote de algoritmos

Se você especificar um pacote de algoritmos que entre em conflito com sua política de compromisso, a chamada para criptografar falhará com um erro de conflito de configuração.

Para evitar esse tipo de erro, não especifique um pacote de algoritmos. Por padrão, o AWS Encryption SDK escolhe o algoritmo mais seguro que seja compatível com sua política de compromisso. No entanto, se você precisar especificar um pacote de algoritmos, como um sem assinatura, certifique-se de escolher um pacote de algoritmos que seja compatível com sua política de compromisso.

Política de compromisso Pacotes de algoritmos compatíveis
ForbidEncryptAllowDecrypt

Qualquer pacote de algoritmos sem confirmação de chave, como:

AES_256_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384 (03 78) (com assinatura)

AES_256_GCM_IV12_TAG16_HKDF_SHA256 (01 78) (sem assinatura)

RequireEncryptAllowDecrypt

RequireEncryptRequireDecrypt

Qualquer pacote de algoritmos com confirmação de chave, como:

AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384 (05 78) (com assinatura)

AES_256_GCM_HKDF_SHA512_COMMIT_KEY (04 78) (sem assinatura)

Se você encontrar esse erro sem ter especificado um pacote de algoritmos, o pacote de algoritmos conflitante pode ter sido escolhido pelo seu gerenciador de materiais criptográficos (CMM). O CMM padrão não selecionará um pacote de algoritmos conflitantes, mas um CMM personalizado pode fazer isso. Para obter ajuda, consulte a documentação do seu CMM personalizado.

Conflito de configuração: política de compromisso e texto cifrado

A política de compromisso RequireEncryptRequireDecrypt não permite que o AWS Encryption SDK descriptografe uma mensagem que foi criptografada sem confirmação de chave. Se você solicitar que o AWS Encryption SDK descriptografe uma mensagem sem confirmação de chave, ele retornará um erro de Conflito de configuração.

Para evitar esse erro, antes de definir a política de compromisso RequireEncryptRequireDecrypt, certifique-se de que todos os textos cifrados criptografados sem confirmação de chave sejam descriptografados e recriptografados com confirmação de chave ou sejam manipulados por uma aplicação diferente. Se você encontrar esse erro, poderá retornar um erro para o texto cifrado conflitante ou alterar temporariamente sua política de compromisso para RequireEncryptAllowDecrypt.

Se estiver encontrando esse erro porque você atualizou para a versão 2.0.x ou posterior a partir uma versão anterior à 1.7.x sem ter atualizado primeiro para a versão 1x mais recente (versão 1.7. x ou posterior), considere reverter para a versão 1.x mais recente e implantar essa versão em todos os hosts antes de atualizar para a versão 2.0.x ou posterior. Para obter ajuda, consulte Como migrar e implantar o AWS Encryption SDK.

Falha na validação do confirmação de chave

Ao descriptografar mensagens criptografadas com confirmação de chave, você pode receber uma mensagem de erro de Falha na validação da confirmação de chave. Isso indica que a chamada de descriptografia falhou porque a chave de dados em uma mensagem criptografada não é idêntica à chave de dados exclusiva da mensagem. Ao validar a chave de dados durante a descriptografia, a confirmação de chave protege você de descriptografar uma mensagem que pode resultar em mais de um texto simples.

Esse erro indica que a mensagem criptografada que você estava tentando descriptografar não foi retornada pelo AWS Encryption SDK. Pode ser uma mensagem criada manualmente ou o resultado de dados corrompidos. Se você encontrar esse erro, a aplicação poderá rejeitar a mensagem e prosseguir ou interromper o processamento de novas mensagens.

Outras falhas de criptografia

A criptografia pode falhar por vários motivos. Você não pode usar um token de autenticação de descoberta do AWS KMS ou um provedor de chave mestra em modo de descoberta para criptografar uma mensagem.

Certifique-se de especificar um provedor de token de autenticação ou de chave mestra com chaves de encapsulamento que deem permissão para usar para criptografia. Para obter ajuda com as permissões das AWS KMS keys, consulte Visualizar uma política de chave e Determinar o acesso a uma AWS KMS key no Guia do desenvolvedor do AWS Key Management Service.

Outras falhas de decriptografia

Se sua tentativa de descriptografar uma mensagem criptografada falhar, isso significa que o AWS Encryption SDK não conseguiu (ou não pôde) descriptografar alguma das chaves de dados criptografadas na mensagem.

Se você usar um de token de autenticação ou um provedor de chave mestra que especifica chaves de encapsulamento, o AWS Encryption SDK usará somente as chaves de encapsulamento que você especificar. Verifique se está usando as chaves de encapsulamento pretendidas e se tem permissão kms:Decrypt em pelo menos uma das chaves de encapsulamento. Se estiver usando AWS KMS keys, como alternativa, tente descriptografar a mensagem com um token de autenticação de descoberta do AWS KMS ou um provedor de chave mestra em modo de descoberta. Se a operação for bem-sucedida, antes de retornar o texto simples, verifique se a chave usada para descriptografar a mensagem é confiável.

Considerações sobre reversão

Se a aplicação não conseguir criptografar ou descriptografar dados, geralmente, é possível resolver o problema atualizando os símbolos de código, os tokens de autenticação, os provedores de chaves mestras ou a política de compromisso. No entanto, em alguns casos, você pode decidir que é melhor reverter a aplicação para uma versão anterior do AWS Encryption SDK.

Se você precisar reverter, faça isso com cuidado. Versões do AWS Encryption SDK anteriores à 1.7.x não podem descriptografar texto cifrado criptografado com confirmação de chave.

  • Geralmente, é seguro reverter da versão 1.x mais recente para uma versão anterior do AWS Encryption SDK. Talvez seja necessário desfazer as alterações feitas no código para usar símbolos e objetos que não são compatíveis com as versões anteriores.

  • Depois de começar a criptografar com confirmação de chave (definindo sua política de compromisso como RequireEncryptAllowDecrypt) na versão 2.0.x ou posterior, você poderá reverter para a versão 1.7.x, mas não para alguma versão anterior a ela. Versões do AWS Encryption SDK anteriores à 1.7.x não podem descriptografar texto cifrado criptografado com confirmação de chave.

Se você acidentalmente ativar a criptografia com confirmação de chave antes de que todos os hosts possam descriptografar com confirmação de chave, talvez seja melhor continuar com a implantação em vez de revertê-la. Se as mensagens forem transitórias ou puderem ser descartadas com segurança, considere fazer uma reversão com perda de mensagens. Se for necessária uma reversão, considere criar uma ferramenta que descriptografe e recriptografe todas as mensagens.