Melhores práticas para a AWS Encryption SDK - 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á.

Melhores práticas para a AWS Encryption SDK

OAWS Encryption SDKO foi projetado para facilitar a proteção de seus dados usando os padrões e as melhores práticas do setor. Embora muitas práticas recomendadas sejam selecionadas para você em valores padrão, algumas práticas são opcionais, mas recomendadas sempre que for prático.

Usar a versão mais recente

Quando você começa a usar oAWS Encryption SDK, use a versão mais recente oferecida no seulinguagem de programação do. Se você estiver usando oAWS Encryption SDK, atualize para cada versão mais recente o mais rápido possível. Isso garante que você esteja usando a configuração recomendada e aproveitando as novas propriedades de segurança para proteger seus dados. Para obter detalhes sobre as versões compatíveis, incluindo orientações para migração e implantação, consulteSupport e manutençãoeVersões doAWS Encryption SDK.

Se uma nova versão substituir elementos em seu código, substitua-os assim que possível. Avisos de desaprovação e comentários de código geralmente recomendam uma boa alternativa.

Para tornar as atualizações significativas mais fáceis e menos propensas a erros, ocasionalmente fornecemos uma versão temporária ou transitória. Use essas versões e a documentação que a acompanha para garantir que você possa atualizar seu aplicativo sem interromper o fluxo de trabalho de produção.

Usar valores padrão do

OAWS Encryption SDKprojeta as melhores práticas em seus valores padrão. Sempre que possível, use-os. Para casos em que o padrão é impraticável, fornecemos alternativas, como conjuntos de algoritmos sem assinatura. Também oferecemos oportunidades de personalização para usuários avançados, como chaveiros personalizados, fornecedores de chaves mestras e gerenciadores de material criptográfico (CMMs). Use essas alternativas avançadas com cautela e tenha suas escolhas verificadas por um engenheiro de segurança sempre que possível.

Usar um contexto de criptografia do

Para melhorar a segurança de suas operações de criptografia, inclua umcontexto de criptografiacom um valor significativo em todas as solicitações para criptografar dados. O uso de um contexto de criptografia é opcional, mas é uma melhor prática de criptografia que recomendamos. Um contexto de criptografia fornece dados autenticados adicionais (AAD) para criptografia autenticada noAWS Encryption SDK. Embora não seja segredo, o contexto de criptografia pode ajudar aproteger a integridade e a autenticidadedos seus dados criptografados.

NoAWS Encryption SDK, você especifica um contexto de criptografia somente ao criptografar. Ao descriptografar, oAWS Encryption SDKO usa o contexto de criptografia no cabeçalho da mensagem criptografada no cabeçalho da mensagem criptografada que oAWS Encryption SDKO retorna. Antes do aplicativo retornar dados de texto não criptografado, verifique se o contexto de criptografia usado para descriptotografia da mensagem está incluído no contexto que foi usado para descriptotocriptografar a mensagem. Para ver detalhes, consulte os exemplos em sua linguagem de programação.

Quando você usa a interface de linha de comando do, oAWS Encryption SDKO verifica o contexto de criptografia para você.

Proteja suas chaves de embrulho

OAWS Encryption SDKO gera uma chave de dados exclusiva para criptografar cada mensagem de texto não criptografado. Em seguida, ele criptografa a chave de dados com as chaves de encapsulamento que você fornece. Se suas chaves de encapsulamento forem perdidas ou excluídas, seus dados criptografados serão irrecuperáveis. Se suas chaves não estiverem protegidas, seus dados podem ficar vulneráveis.

Use chaves de encapsulamento protegidas por uma infraestrutura de chave segura, comoAWS Key Management Service(AWS KMS). Ao usar chaves de AES ou RSA não criptografadas, use uma origem de aleatoriedade e armazenamento durável que atende aos seus requisitos de segurança. Gerar e armazenar chaves de encapsulamento em um hardware security module (HSM — Módulo de segurança de hardware) ou em um serviço que fornece HSMs, comoAWS CloudHSM, é uma melhor prática.

Use os mecanismos de autorização da infraestrutura de chaves para limitar o acesso às chaves de encapsulamento somente aos usuários que precisam delas. Implemente princípios de práticas recomendadas, como privilégio mínimo. Ao usar oAWS KMS keys, use políticas de chaves e políticas do IAM que implementam oprincípios de melhores práticas do.

Especifique suas chaves de embrulho

É sempre uma melhor práticaespecifique suas chaves de embrulhoexplicitamente ao descriptografar, bem como criptografar. Quando você fizer isso, oAWS Encryption SDKO usa somente as chaves que você especificar. Essa prática garante que você use apenas as chaves de criptografia pretendidas. para oAWS KMSempacotando chaves, ele também melhora o desempenho, impedindo que você use inadvertidamente chaves em umConta da AWSou Região, ou tentar descriptografar com chaves que você não tem permissão para usar.

Ao criptografar, os chaveiros e os provedores de chaves mestras queAWS Encryption SDKsuprimentos exigem que você especifique chaves de encapsulamento. Eles usam todas e somente as chaves de encapsulamento que você especificar. Também é necessário especificar chaves de encapsulamento ao criptografar e descriptografar com chaveiros AES brutos, chaveiros RSA brutos e JCEMasterKeys.

No entanto, ao descriptografar comAWS KMSchaveiros e provedores de chaves mestras, você não precisa especificar chaves de encapsulamento. OAWS Encryption SDKO pode obter o identificador de chave dos metadados da chave de dados criptografada. No entanto, especificar chaves de encapsulamento é uma melhor prática que recomendamos.

Para apoiar essa prática recomendada ao trabalhar comAWS KMSEmpacotamento de chaves, recomendamos o seguinte:

  • Usar oAWS KMSchaveiros que especificam chaves de encapsulamento. Ao criptografar e descriptografar, esses chaveiros usam somente as chaves de encapsulamento especificadas por você.

  • Ao usar oAWS KMSchaves mestras e provedores de chaves mestras, use os construtores de modo estrito introduzidos noversão 1.7.xdoAWS Encryption SDK. Eles criam provedores que criptografam e descriptografam somente com as chaves de encapsulamento que você especificar. Construtores para provedores de chaves mestras que sempre descriptografam com qualquer chave de encapsulamento estão obsoletos na versão 1.7.xe excluídos na versão 2.0.x.

Ao especificarAWS KMSempacotar chaves para descriptografar é impraticável, você pode usar provedores de descoberta. OAWS Encryption SDKem C e JavaScript apoioAWS KMStokens de autenticação de descoberta. Os provedores de chaves mestras com um modo de descoberta estão disponíveis para Java e Python nas versões 1.7.xe posterior. Esses provedores de descoberta, que são usados apenas para descriptografar comAWS KMSchaves de encapsulamento, direcione explicitamente oAWS Encryption SDKpara usar qualquer chave de encapsulamento que criptografou uma chave de dados.

Se você precisar usar um provedor de descoberta, usefiltro de descoberta dorecursos para limitar as chaves de encapsulamento que eles usam. Por exemplo, as receitasAWS KMSToken de autenticação de descoberta regional dousa somente as chaves de encapsulamento em um determinadoRegião da AWS. Você também pode configurarAWS KMStokens de autenticação eAWS KMS provedores de chaves mestrpara usar somente ochaves de embalagem doem particularContas da AWS. Além disso, como sempre, use políticas de chaves e políticas do IAM para controlar o acesso ao seuAWS KMSchaves de embrulho.

Use assinaturas digitais

É uma prática recomendada usar um conjunto de algoritmos com assinatura. Assinaturas digitaisverificar se o remetente da mensagem foi autorizado a enviar a mensagem e proteger a integridade da mensagem. Todas as versões doAWS Encryption SDKuse conjuntos de algoritmos com assinatura por padrão.

Se seus requisitos de segurança não incluírem assinaturas digitais, você poderá selecionar um conjunto de algoritmos sem assinaturas digitais. No entanto, recomendamos o uso de assinaturas digitais, especialmente quando um grupo de usuários criptografa dados e um conjunto diferente de usuários descriptografa esses dados.

Usar o compromisso de chaves

É uma prática recomendada usar o principal recurso de segurança de compromisso. Verificando a identidade do únicochave de dados doque criptografou seus dadoscompromisso de chaves doimpede que você descriptografe qualquer texto cifrado que possa resultar em mais de uma mensagem de texto simples.

OAWS Encryption SDKfornece suporte completo para criptografia e descriptografia com compromisso fundamental começando emversão 2.0.x. Por padrão, todas as suas mensagens são criptografadas e descriptografadas com compromisso de chave. Versão 1.7.xdoAWS Encryption SDKpode descriptografar textos cifrados com compromisso fundamental. Ele foi projetado para ajudar os usuários de versões anteriores a implantar a versão 2.0.xcom êxito.

O Support para o compromisso principal incluinovos pacotes de algoritmos doe umnovo formato de mensagem doque produz um texto cifrado com apenas 30 bytes maior do que um texto cifrado sem compromisso de chave. O design minimiza seu impacto no desempenho para que a maioria dos usuários possa aproveitar os benefícios do compromisso principal. Se o seu aplicativo for muito sensível ao tamanho e ao desempenho, você pode optar por usar opolítica de compromisso doconfiguração para desabilitar o compromisso principal ou permitir queAWS Encryption SDKpara descriptografar mensagens sem compromisso, mas faça isso somente se for necessário.

Limitar o número de chaves de dados criptografadas

É uma prática recomendadalimitar o número de chaves de dados criptografadasem mensagens que você descriptografa, especialmente mensagens de fontes não confiáveis. Descriptografar uma mensagem com várias chaves de dados criptografadas que você não pode descriptografar pode causar atrasos prolongados, aumentar as despesas, limitar seu aplicativo e outros que compartilham sua conta e potencialmente esgotar sua infraestrutura de chaves. Sem limites, uma mensagem criptografada pode ter até 65.535 (2^16 - 1) chaves de dados criptografadas. Para obter detalhes, consulte Limitar chaves de dados criptografadas.

Para obter mais informações sobre oAWS Encryption SDKrecursos de segurança que sustentam essas práticas recomendadas, consulte.Criptografia aprimorada do lado do cliente: Explícita KeyIds e compromisso de chaves donoAWSBlog de segurança.