

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

# O que é o SDK AWS de criptografia de banco de dados?
<a name="what-is-database-encryption-sdk"></a>


****  

|  | 
| --- |
| Nossa biblioteca de criptografia do lado do cliente foi renomeada para SDK de criptografia de AWS banco de dados. Este guia do desenvolvedor ainda fornece informações sobre o [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md). | 

O SDK AWS de criptografia de banco de dados é um conjunto de bibliotecas de software que permitem incluir criptografia do lado do cliente no design do banco de dados. O SDK AWS de criptografia de banco de dados fornece soluções de criptografia em nível de registro. Especifique quais campos são criptografados e quais campos são incluídos nas assinaturas para garantir a autenticidade dos seus dados. Criptografar dados em trânsito e em repouso confidenciais ajuda você a garantir que os dados em texto simples não estejam disponíveis a terceiros, incluindo à AWS. O SDK de criptografia de banco de dados da AWS é fornecido gratuitamente sob a licença do Apache 2.0.

Este guia do desenvolvedor fornece uma visão geral conceitual do SDK de criptografia de AWS banco de dados, incluindo uma [introdução à sua arquitetura](concepts.md), detalhes sobre [como ele protege seus dados](how-it-works.md), como ele difere da [criptografia do lado do servidor](client-server-side.md) e orientação sobre como [selecionar componentes essenciais para seu aplicativo para ajudá-lo](configure.md) a começar.

O SDK AWS de criptografia de banco de dados é compatível com o Amazon *DynamoDB* com criptografia em nível de atributo.

O SDK AWS de criptografia de banco de dados tem os seguintes benefícios:

**Projetado especialmente para aplicativos de banco de dados**  
Você não precisa ser um especialista em criptografia para usar o SDK de criptografia de AWS banco de dados. As implementações incluem métodos de ajuda que são projetados para trabalhar com os seus aplicativos atuais.   
Após criar e configurar os componentes necessários, o cliente de criptografia criptografa e assina de modo transparente os registros, quando você os adiciona a um banco de dados, e os verifica e os descriptografa quando você os recupera.

**Inclui criptografia e assinatura seguras**  
O SDK AWS de criptografia de banco de dados inclui implementações seguras que criptografam os valores de campo em cada registro usando uma chave de criptografia de dados exclusiva e, em seguida, assinam o registro para protegê-lo contra alterações não autorizadas, como adicionar ou excluir campos ou trocar valores criptografados.

**Usa materiais de criptografia de qualquer origem**  
O SDK AWS de criptografia de banco de dados usa [chaveiros](concepts.md#keyring-concept) para gerar, criptografar e descriptografar a chave exclusiva de criptografia de dados que protege seu registro. Os tokens de autenticação determinam as [chaves de empacotamento](concepts.md#wrapping-key) que criptografam essa chave de dados.   
É possível usar chaves de empacotamento de qualquer fonte, incluindo serviços de criptografia, como [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) (AWS KMS) ou [AWS CloudHSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/). O SDK AWS de criptografia de banco de dados não requer um Conta da AWS ou nenhum AWS serviço.

**Suporte para armazenamento em cache de materiais criptográficos**  
O [chaveiro AWS KMS hierárquico](use-hierarchical-keyring.md) é uma solução de armazenamento em cache de materiais criptográficos que reduz o número de AWS KMS chamadas usando *chaves de ramificação AWS KMS * protegidas persistentes em uma tabela do Amazon DynamoDB e, em seguida, armazenando localmente em cache materiais de chave de ramificação usados em operações de criptografia e descriptografia. Ele permite que você proteja seus materiais criptográficos sob uma chave KMS de criptografia simétrica sem ligar AWS KMS toda vez que você criptografa ou descriptografa um registro. O AWS KMS chaveiro hierárquico é uma boa opção para aplicativos que precisam minimizar as chamadas para. AWS KMS

**Criptografia pesquisável**  
É possível criar bancos de dados capazes de pesquisar registros criptografados sem descriptografar o banco de dados inteiro. Dependendo do modelo de ameaça e dos requisitos de consulta, você pode usar [criptografia pesquisável](searchable-encryption.md) para realizar pesquisas de correspondência exata ou consultas complexas mais personalizadas em seu banco de dados criptografado.

**Suporte para esquemas de banco de dados multilocatário**  
O SDK AWS de criptografia de banco de dados permite que você proteja os dados armazenados em bancos de dados com um esquema compartilhado, isolando cada inquilino com materiais de criptografia distintos. Se você tiver vários usuários executando operações de criptografia em seu banco de dados, use um dos AWS KMS chaveiros para fornecer a cada usuário uma chave distinta para usar em suas operações criptográficas. Para obter mais informações, consulte [Trabalhar com bancos de dados multilocatários](configure.md#config-multitenant-databases).

**Suporte para atualizações de esquemas simplificadas**  
Ao configurar o SDK AWS de criptografia de banco de dados, você fornece [ações criptográficas](concepts.md#crypt-actions) que informam ao cliente quais campos criptografar e assinar, quais campos assinar (mas não criptografar) e quais ignorar. Depois de usar o SDK de criptografia de banco de dados da AWS para proteger seus registros, você ainda pode [fazer alterações no seu modelo de dados](ddb-update-data-model.md). É possível atualizar ações criptográficas, como adicionar ou remover campos criptografados, em uma única implantação.

## Desenvolvido em repositórios de código aberto
<a name="dbesdk-repos"></a>

O SDK AWS de criptografia de banco de dados é desenvolvido em repositórios de código aberto no. GitHub É possível usar esses repositórios para visualizar o código, ler e enviar problemas e encontrar informações específicas para sua implementação. 

**O SDK AWS de criptografia de banco de dados para DynamoDB**
+ O repositório [aws-database-encryption-sdk-dynamodb](https://github.com/aws/aws-database-encryption-sdk-dynamodb/) on GitHub oferece suporte às versões mais recentes do SDK de criptografia de AWS banco de dados para DynamoDB em Java, .NET e Rust.

  O SDK AWS de criptografia de banco de dados para DynamoDB é um produto [da](https://github.com/dafny-lang/dafny/blob/master/README.md) Dafny, uma linguagem com reconhecimento de verificação na qual você escreve especificações, o código para implementá-las e as provas para testá-las. O resultado é uma biblioteca que implementa os recursos do SDK de criptografia de banco de dados da AWS para DynamoDB em uma estrutura que garante a correção funcional.

## Suporte e manutenção
<a name="support"></a>

O SDK AWS de criptografia de banco de dados usa a mesma [política de manutenção](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html) que o AWS SDK e as ferramentas usam, incluindo suas fases de controle de versão e ciclo de vida. Como prática recomendada, você deve usar a versão mais recente do SDK de criptografia de banco de dados da AWS para sua linguagem de programação e atualizá-la à medida que novas versões forem lançadas.

Para obter mais informações, consulte a [política de manutenção de ferramentas AWS SDKs AWS SDKs e](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html) ferramentas no Guia de referência de ferramentas.

## Enviar comentários
<a name="feedback"></a>

Os seus comentários são bem-vindos. Se você tiver uma pergunta ou comentário, ou um problema a relatar, use os seguintes recursos.

Se você descobrir uma possível vulnerabilidade de segurança no SDK AWS de criptografia de banco de dados, [notifique a AWS segurança](https://aws.amazon.com/security/vulnerability-reporting/). Não crie um GitHub problema público.

Para fornecer feedback sobre esta documentação, use o link de feedback em qualquer página.

# AWS Conceitos do SDK de criptografia de banco de dados
<a name="concepts"></a>


****  

|  | 
| --- |
| Nossa biblioteca de criptografia do lado do cliente foi renomeada para SDK de criptografia de AWS banco de dados. Este guia do desenvolvedor ainda fornece informações sobre o [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md). | 

Este tópico explica os conceitos e a terminologia usados no SDK de criptografia de AWS banco de dados. 

Para saber como os componentes do SDK de criptografia AWS de banco de dados interagem, consulte[Como funciona o SDK AWS de criptografia de banco de dados](how-it-works.md).

Para saber mais sobre o SDK AWS de criptografia de banco de dados, consulte os tópicos a seguir.
+ Saiba como o SDK AWS de criptografia de banco de dados usa [criptografia de envelope](#envelope-encryption) para proteger seus dados.
+ Saiba mais sobre os elementos da criptografia envelopada: as [chaves de dados](#data-key) que protegem seus registros e as [chaves de empacotamento](#wrapping-key) que protegem suas chaves de dados. 
+ Saiba mais sobre os [tokens de autenticação](#keyring-concept) que determinam quais chaves de empacotamento você usa.
+ Saiba mais sobre o [contexto de criptografia](#encryption-context) que adiciona integridade ao seu processo de criptografia.
+ Saiba mais sobre a [descrição do material](#material-description) que os métodos de criptografia adicionam ao seu registro.
+ Saiba mais sobre as [ações criptográficas](#crypt-actions) que informam ao SDK de criptografia de banco de dados da AWS quais campos criptografar e assinar.

**Topics**
+ [criptografia envelopada](#envelope-encryption)
+ [Chave de dados](#data-key)
+ [Chave de empacotamento](#wrapping-key)
+ [Tokens de autenticação](#keyring-concept)
+ [Ações criptográficas](#crypt-actions)
+ [Descrição do material](#material-description)
+ [Contexto de criptografia](#encryption-context)
+ [Gerenciador de material de criptografia](#crypt-materials-manager)
+ [Criptografia simétrica e assimétrica](#symmetric-key-encryption)
+ [Confirmação de chave](#key-commitment)
+ [Assinaturas digitais](#digital-sigs)

## criptografia envelopada
<a name="envelope-encryption"></a>

A segurança dos dados criptografados depende em parte da proteção da chave de dados que pode descriptografá-los. Uma prática recomendada aceita para proteger a chave de dados é criptografá-la. Para fazer isso, você precisa de outra chave de criptografia, conhecida como *chave de criptografia de chave* ou [chave de encapsulamento](#wrapping-key). Essa prática de uso de uma chave do KMS para criptografar chaves de dados é conhecida como *criptografia envelopada*.

**Proteção de chaves de dados**  
O SDK AWS de criptografia de banco de dados criptografa cada campo com uma chave de dados exclusiva. Em seguida, ele criptografa cada chave de dados sob a chave de empacotamento especificada. Ele armazena as chaves de dados criptografadas na [descrição do material](#material-description).  
Para especificar a chave de empacotamento, use um [token de autenticação](#keyring-concept).  

![\[Criptografia de envelopes com o SDK AWS de criptografia de banco de dados\]](http://docs.aws.amazon.com/pt_br/database-encryption-sdk/latest/devguide/images/dbesdk-envelope.png)


**Criptografar os mesmos dados com várias chaves de empacotamento**  
É possível criptografar a chave de dados com várias chaves de empacotamento. Talvez você queira fornecer chaves de empacotamento distintas para usuários diferentes ou chaves de empacotamento de tipos variados ou em locais diferentes. Cada uma das chaves de encapsulamento criptografa a mesma chave de dados. O SDK AWS de criptografia de banco de dados armazena todas as chaves de dados criptografadas junto com os campos criptografados na [descrição do material](#material-description).  
Para descriptografar os dados, você precisa fornecer pelo menos uma chave de empacotamento que possa descriptografar as chaves de dados criptografadas.

**Combinação de pontos fortes de vários algoritmos**  
[Para criptografar seus dados, por padrão, o SDK de criptografia de AWS banco de dados usa um [conjunto de algoritmos](supported-algorithms.md) com criptografia simétrica AES-GCM, uma função de derivação de chave (HKDF) baseada em HMAC e assinatura ECDSA.](#digital-sigs) Para criptografar a chave de dados, você pode especificar um [algoritmo de criptografia simétrico ou assimétrico](#symmetric-key-encryption) apropriado à sua chave de encapsulamento.  
Em geral, os algoritmos de criptografia de chaves simétricas são mais rápidos e produzem textos cifrados menores que a *criptografia de chave pública* ou assimétrica. No entanto, os algoritmos de chave pública fornecem separação inerente de funções. Para combinar os pontos fortes de cada um, você pode criptografar a chave de dados com a criptografia de chave pública.  
Recomendamos usar um dos AWS KMS chaveiros sempre que possível. Ao usar o [AWS KMS chaveiro](use-kms-keyring.md), você pode escolher combinar os pontos fortes de vários algoritmos especificando um AWS KMS key RSA assimétrico como sua chave de agrupamento. Também é possível usar uma chave do KMS de criptografia simétrica.

## Chave de dados
<a name="data-key"></a>

Uma *chave de dados* é uma chave de criptografia que o SDK AWS de criptografia de banco de dados usa para criptografar os campos em um registro que estão marcados `ENCRYPT_AND_SIGN` nas ações [criptográficas](#crypt-actions). Cada chave de dados é uma matriz de bytes que cumpre os requisitos para chaves criptográficas. O SDK AWS de criptografia de banco de dados usa uma chave de dados exclusiva para criptografar cada atributo.

Você não precisa especificar, gerar, implementar, estender, proteger nem usar chaves de dados. O SDK de criptografia de banco de dados da AWS faz esse trabalho para você quando você chama as operações de criptografia e descriptografia. 

[Para proteger suas chaves de dados, o SDK AWS de criptografia de banco de dados as criptografa sob uma ou mais chaves de *criptografia de chave conhecidas como chaves de* encapsulamento.](#wrapping-key) Depois que o SDK AWS de criptografia de banco de dados usa suas chaves de dados em texto simples para criptografar seus dados, ele os remove da memória assim que possível. Em seguida, ele armazena as chaves de dados criptografadas na [descrição do material](#material-description). Para obter detalhes, consulte [Como funciona o SDK AWS de criptografia de banco de dados](how-it-works.md).

**dica**  
No SDK AWS de criptografia de banco de dados, distinguimos as chaves de *dados das chaves* de *criptografia de dados*. Como prática recomendada, todos os [conjuntos de algoritmos](supported-algorithms.md) compatíveis devem usar uma [função de derivação de chave](https://en.wikipedia.org/wiki/Key_derivation_function). A função de derivação de chaves usa a chave de dados como entrada e retorna uma chave de criptografia de dados que é realmente usada para criptografar os registros. Por esse motivo, sempre dizemos que os dados são criptografados "sob" uma chave de dados em vez de "pela" chave de dados.

Cada chave de dados criptografada inclui metadados, incluindo o identificador da chave de encapsulamento que a criptografou. Esses metadados possibilitam que o SDK de criptografia AWS de banco de dados identifique chaves de encapsulamento válidas durante a descriptografia.

## Chave de empacotamento
<a name="wrapping-key"></a>

Uma *chave de empacotamento* é uma chave de criptografia que o SDK de criptografia de banco de dados da AWS usa para criptografar a [chave de dados](#data-key) que criptografa seus registros. Cada chave de dados em texto simples pode ser criptografada sob uma ou mais chaves mestras. Você determina quais chaves de empacotamento são usadas para proteger seus dados ao configurar um [token de autenticação](#keyring-concept).

![\[Criptografar uma chave de dados com várias chaves de empacotamento\]](http://docs.aws.amazon.com/pt_br/database-encryption-sdk/latest/devguide/images/dbesdk-wrapping-key.png)


O SDK AWS de criptografia de banco de dados oferece suporte a várias chaves de agrupamento comumente usadas, como [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)(AWS KMS) chaves KMS de criptografia simétrica (incluindo chaves [multirregionais) e chaves RSA KMS assimétricas, AWS KMS chaves](use-kms-keyring.md#config-mrks) AES-GCM (Advanced Encryption [Counter Mode) brutas e chaves RSA](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-rsa) brutas. Standard/Galois Recomendamos utilizar chaves do KMS sempre que possível. Para decidir qual chave de empacotamento você deve usar, consulte [Selecting wrapping keys](configure.md#config-keys).

Quando você usa a criptografia envelopada, você precisa proteger suas chaves de empacotamento contra acesso não autorizado. É possível fazer isso de uma das seguintes maneiras:
+ Use um serviço projetado para essa finalidade, como o [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/).
+ Use um [hardware security module (HSM - módulo de segurança de hardware)](https://en.wikipedia.org/wiki/Hardware_security_module), como os oferecidos pelo [AWS CloudHSM](https://aws.amazon.com/cloudhsm/).
+ Use outras ferramentas e serviços de gerenciamento de chaves.

Se você não tem um sistema de gerenciamento de chaves, recomendamos AWS KMS. O SDK AWS de criptografia de banco de dados se integra AWS KMS para ajudar você a proteger e usar suas chaves de empacotamento.

## Tokens de autenticação
<a name="keyring-concept"></a>

Para especificar as chaves de empacotamento que você usa para criptografia e decodificação, use um token de autenticação. Você pode usar os chaveiros fornecidos pelo SDK do AWS Database Encryption ou criar suas próprias implementações.

Um *token de autenticação* gera, criptografa e descriptografa chaves de dados. Ele também gera as chaves MAC usadas para calcular os Códigos de Autenticação de Mensagens Baseados em Hash (HMACs) na assinatura. Ao definir um token de autenticação, você pode especificar as [chaves de encapsulamento](#wrapping-key) que criptografam suas chaves de dados. A maioria dos tokens de autenticação especificam pelo menos uma chave de encapsulamento ou um serviço que fornece e protege chaves de encapsulamento. Ao criptografar, o SDK AWS de criptografia de banco de dados usa todas as chaves de encapsulamento especificadas no chaveiro para criptografar a chave de dados. Para obter ajuda sobre como escolher e usar os chaveiros definidos pelo SDK do AWS Database Encryption, consulte Como [usar](keyrings.md) chaveiros.

## Ações criptográficas
<a name="crypt-actions"></a>

As *ações criptográficas* informam ao criptografador quais ações devem ser executadas em cada campo em um registro. 

Os valores das ações de atributo podem ser um destes:
+ **Criptografar e assinar**: criptografa o campo. Inclua o campo criptografado na assinatura.
+ **Somente assinar**: inclui o campo na assinatura.
+ **Assinar e incluir no contexto de criptografia** — Inclua o campo no [contexto de assinatura e criptografia](#encryption-context).

  Por padrão, as chaves de partição e classificação são o único atributo incluído no contexto de criptografia. Você pode considerar definir campos adicionais para que o fornecedor da ID da chave de filial do seu [AWS KMS chaveiro hierárquico](use-hierarchical-keyring.md) possa identificar qual chave de ramificação é necessária para a descriptografia a partir `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` do contexto de criptografia. Para obter mais informações, consulte [fornecedor de ID de chave de filial](use-hierarchical-keyring.md#branch-key-id-supplier).
**nota**  
Para usar a ação `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` criptográfica, você deve usar a versão 3.3 ou posterior do SDK de criptografia de AWS banco de dados. Implante a nova versão para todos os leitores antes de [atualizar seu modelo de dados](ddb-update-data-model.md) para incluí-la`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.
+ **Não fazer nada**: não criptografa nem inclui o campo na assinatura.

Para qualquer campo que possa armazenar dados confidenciais, use **Criptografar e assinar**. Para valores de chave primária (por exemplo, uma chave de partição e uma chave de classificação em uma tabela do DynamoDB), **use Somente assinar** **ou Assinar e incluir** no contexto de criptografia. Se você especificar qualquer **sinal e incluir atributos no contexto de criptografia**, os atributos de partição e classificação também deverão ser **Assinar e incluir no contexto de criptografia**. Não é necessário especificar ações criptográficas para a [descrição do material](#material-description). O SDK AWS de criptografia de banco de dados assina automaticamente o campo em que a descrição do material está armazenada.

Escolha suas ações criptográficas com cuidado. Em caso de dúvida, use **Criptografar e assinar**. Depois de usar o SDK AWS de criptografia de banco de dados para proteger seus registros, você não pode alterar um `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` campo existente `ENCRYPT_AND_SIGN` ou alterar a `DO_NOTHING` ação criptográfica atribuída a um campo existente`DO_NOTHING`. `SIGN_ONLY` No entanto, você ainda pode [fazer outras alterações em seu modelo de dados](ddb-update-data-model.md). Por exemplo, você pode adicionar ou remover campos criptografados em uma única implantação.

## Descrição do material
<a name="material-description"></a>

A descrição do material serve como cabeçalho para um registro criptografado. Quando você criptografa e assina campos com o SDK AWS de criptografia de banco de dados, o criptografador registra a descrição do material à medida que reúne os materiais criptográficos e armazena a descrição do material em um novo campo (`aws_dbe_head`) que o criptografador adiciona ao seu registro.

A descrição do material é uma [estrutura de dados formatada](reference.md#material-description-format) portátil que contém cópias criptografadas das chaves de dados e outras informações, como algoritmos de criptografia, [contexto de criptografia](#encryption-context) e instruções de criptografia e assinatura. O criptografador registra a descrição do material à medida que monta os materiais para criptografia e assinatura. Depois, quando precisar montar materiais de criptografia para verificar e descriptografar um campo, ele usará a descrição do material como guia.

O armazenamento de dados criptografados junto com o campo criptografado simplifica a operação e elimina a necessidade de armazenar e gerenciar chaves de dados criptografadas independentemente dos dados que elas criptografam.

Para obter informações técnicas sobre a descrição do material, consulte [Formato de descrição do material](reference.md#material-description-format).

## Contexto de criptografia
<a name="encryption-context"></a>

Para melhorar a segurança de suas operações criptográficas, o SDK AWS de criptografia de banco de dados inclui um contexto de criptografia em todas as solicitações para criptografar e assinar um registro.

Um *contexto de criptografia* é um conjunto de pares de chave-valor que contêm dados autenticados adicionais arbitrários e não secretos. O SDK AWS de criptografia de banco de dados inclui o nome lógico do seu banco de dados e os valores da chave primária (por exemplo, uma chave de partição e uma chave de classificação em uma tabela do DynamoDB) no contexto de criptografia. Quando você criptografa e assina um campo, o contexto de criptografia é associado de maneira criptográfica aos registros criptografados de forma que o mesmo contexto de criptografia seja necessário para descriptografar os campos.

Se você usa um AWS KMS chaveiro, o SDK AWS de criptografia de banco de dados também usa o contexto de criptografia para fornecer dados autenticados adicionais (AAD) nas chamadas para as quais o chaveiro faz. AWS KMS

Sempre que você usar um [algoritmo de criptografia com assinatura](supported-algorithms.md#recommended-algorithms), o [gerenciador de material de criptografia](#crypt-materials-manager) (CMM) adicionará um par de nome/valor ao contexto de criptografia consistindo em um nome reservado, `aws-crypto-public-key`, e um valor representando a chave de verificação pública. A chave de verificação pública é armazenada na [descrição do material](#material-description).

## Gerenciador de material de criptografia
<a name="crypt-materials-manager"></a>

O gerenciador de material de criptografia (CMM) monta o material criptográfico usado para criptografar, descriptografar e assinar dados. Sempre que você usa o [conjunto de algoritmos padrão](supported-algorithms.md#recommended-algorithms), os *materiais criptográficos* incluem texto simples e chaves de dados criptografadas, chaves de assinatura simétricas e uma chave de assinatura assimétrica. Você nunca interage diretamente com o CMM. Os métodos de criptografia e descriptografia o processam para você.

Como o CMM atua como uma ligação entre o SDK de criptografia AWS de banco de dados e um chaveiro, é um ponto ideal para personalização e extensão, como suporte para aplicação de políticas. É possível especificar explicitamente um CMM, mas isso não é obrigatório. Quando você especifica um token de autenticação, o SDK de criptografia de banco de dados da AWS cria um CMM padrão para você. O CMM padrão obtém o material de criptografia ou de descriptografia do token de autenticação que você especificar. Isso pode envolver uma chamada a um serviço criptográfico, como o [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) (AWS KMS).

## Criptografia simétrica e assimétrica
<a name="symmetric-key-encryption"></a>

A *criptografia simétrica* usa a mesma chave para criptografar e descriptografar dados. 

A *criptografia assimétrica* usa um par de chaves de dados matematicamente relacionado. Uma chave no par criptografa os dados; somente a outra chave no par pode descriptografar os dados.

O SDK AWS de criptografia de banco de dados usa criptografia de [envelope](#envelope-encryption). Ele criptografa os dados com uma chave de dados simétrica. Ele criptografa a chave de dados simétrica com uma ou mais chaves de empacotamento simétricas ou assimétricas. Ele adiciona uma [descrição do material](#material-description) ao registro que inclui pelo menos uma cópia criptografada da chave de dados.

**Criptografar dados (criptografia simétrica)**  
Para criptografar seus dados, o SDK AWS de criptografia de banco de dados usa uma [chave de dados](#data-key) simétrica e um [conjunto de algoritmos que inclui um algoritmo](supported-algorithms.md) de criptografia simétrica. Para descriptografar os dados, o SDK de criptografia AWS de banco de dados usa a mesma chave de dados e o mesmo conjunto de algoritmos.

**Criptografar chave de dados (criptografia simétrica ou assimétrica)**  
O [token de autenticação](#keyring-concept) que você fornece para uma operação de criptografia e descriptografia determina como a chave de dados simétrica é criptografada e descriptografada. Você pode escolher um chaveiro que use criptografia simétrica, como um AWS KMS chaveiro com uma chave KMS de criptografia simétrica, ou um que use criptografia assimétrica, como um AWS KMS chaveiro com uma chave RSA KMS assimétrica.

## Confirmação de chave
<a name="key-commitment"></a>

O SDK AWS de criptografia de banco de dados oferece suporte ao *comprometimento de chaves* (às vezes conhecido como *robustez*), uma propriedade de segurança que garante que cada texto cifrado possa ser descriptografado somente em um único texto simples. Para fazer isso, o compromisso da chave garante que somente a chave de dados que criptografou seu registro seja usada para descriptografá-lo. O SDK AWS de criptografia de banco de dados inclui um compromisso fundamental para todas as operações de criptografia e descriptografia.

A maioria das cifras simétricas modernas (incluindo AES) criptografa texto sem formatação com uma única chave secreta, como a chave de [dados exclusiva que o SDK de criptografia de AWS banco de dados](#data-key) usa para criptografar cada campo de texto sem formatação marcado em um registro. `ENCRYPT_AND_SIGN` Descriptografar esse registro com a mesma chave de dados retorna um texto sem formatação idêntico ao original. A decodificação com uma chave diferente geralmente falhará. Embora seja difícil, é tecnicamente possível decifrar um texto cifrado com duas chaves diferentes. Em casos raros, é possível encontrar uma chave que possa decifrar parcialmente o texto cifrado em um texto simples diferente, mas ainda inteligível.

O SDK AWS de criptografia de banco de dados sempre criptografa cada atributo em uma chave de dados exclusiva. Ele pode criptografar essa chave de dados em várias chaves de empacotamento, mas as chaves de empacotamento sempre criptografam a mesma chave de dados. No entanto, um registro criptografado sofisticado e criado manualmente pode, na verdade, conter chaves de dados diferentes, cada uma criptografada por uma chave de empacotamento diferente. Por exemplo, se um usuário descriptografar o registro criptografado, ele retornará 0x0 (falso), enquanto outro usuário descriptografando o mesmo registro criptografado obterá 0x1 (verdadeiro).

Para evitar esse cenário, o SDK AWS de criptografia de banco de dados inclui comprometimento de chave ao criptografar e descriptografar. O método de criptografia vincula criptograficamente a chave de dados exclusiva que produziu o texto cifrado ao *compromisso da chave*, um código de autenticação de mensagens por hash (HMAC) calculado sobre a descrição do material usando uma derivação da chave de dados. Em seguida, ele armazena o compromisso de chaves na [descrição do material](#material-description). Ao descriptografar um registro com comprometimento de chave, o SDK de criptografia AWS de banco de dados verifica se a chave de dados é a única chave para esse registro criptografado. Se a verificação da chave de dados falhar, a operação de descriptografia falhará.

## Assinaturas digitais
<a name="digital-sigs"></a>

O SDK AWS de criptografia de banco de dados criptografa seus dados usando um algoritmo de criptografia autenticado, o AES-GCM, e o processo de descriptografia verifica a integridade e a autenticidade de uma mensagem criptografada sem usar uma assinatura digital. Mas como o AES-GCM usa chaves simétricas, qualquer pessoa que possa descriptografar a chave de dados usada para descriptografar o texto cifrado também pode criar manualmente um novo texto cifrado, causando uma possível preocupação de segurança. Por exemplo, se você usar um AWS KMS key como chave de encapsulamento, um usuário com `kms:Decrypt` permissões poderá criar textos cifrados criptografados sem ligar. `kms:Encrypt`

Para evitar esse problema, o [conjunto de algoritmos padrão](supported-algorithms.md#recommended-algorithms) adiciona uma assinatura do Algoritmo de assinatura digital de curva elíptica (ECDSA) aos registros criptografados. O conjunto de algoritmos padrão criptografa os campos em seu registro marcados com `ENCRYPT_AND_SIGN` usando um algoritmo de criptografia autenticado, o AES-GCM. Em seguida, ele calcula os Códigos de Autenticação de Mensagens Baseados em Hash (HMACs) e as assinaturas ECDSA assimétricas nos campos do seu registro marcados com, e. `ENCRYPT_AND_SIGN` `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` O processo de descriptografia usa as assinaturas para verificar se um usuário autorizado criptografou o registro.

Quando o conjunto de algoritmos padrão é usado, o SDK do AWS Database Encryption gera uma chave privada temporária e um par de chaves públicas para cada registro criptografado. O SDK AWS de criptografia de banco de dados armazena a chave pública na [descrição do material](#material-description) e descarta a chave privada. Isso garante que ninguém possa criar outra assinatura que seja verificada com a chave pública. O algoritmo vincula a chave pública à chave de dados criptografada como dados autenticados adicionais na descrição do material, impedindo que usuários que só podem descriptografar campos alterem a chave pública ou afetem a verificação da assinatura.

O SDK AWS de criptografia de banco de dados sempre inclui a verificação HMAC. As assinaturas digitais ECDSA são habilitadas por padrão, mas não são obrigatórias. Se os usuários que criptografam dados e os usuários que decifram os dados forem igualmente confiáveis, considere usar um conjunto de algoritmos que não inclua assinaturas digitais para melhorar seu desempenho. Para obter mais informações sobre como selecionar conjuntos de algoritmos alternativos, consulte [Escolha de um conjunto de algoritmos](ddb-java-using.md#config-algorithm).

**nota**  
Se um chaveiro não delimitar entre criptografadores e decodificadores, as assinaturas digitais não fornecem valor criptográfico.

[AWS KMS os chaveiros](use-kms-keyring.md), incluindo o AWS KMS chaveiro RSA assimétrico, podem delinear entre criptografadores e decodificadores com base nas políticas de chaves e nas políticas do IAM. AWS KMS 

Devido à sua natureza criptográfica, os seguintes chaveiros não podem delimitar entre criptografadores e decodificadores:
+ AWS KMS Chaveiro hierárquico
+ AWS KMS Chaveiro ECDH
+ Token de autenticação bruto do AES
+ Token de autenticação bruto do RSA
+ Chaveiro ECDH bruto

# Como funciona o SDK AWS de criptografia de banco de dados
<a name="how-it-works"></a>


****  

|  | 
| --- |
| Nossa biblioteca de criptografia do lado do cliente foi renomeada para SDK de criptografia de AWS banco de dados. Este guia do desenvolvedor ainda fornece informações sobre o [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md). | 

O SDK AWS de criptografia de banco de dados fornece bibliotecas de criptografia do lado do cliente projetadas especificamente para proteger os dados que você armazena nos bancos de dados. As bibliotecas incluem implementações seguras que você pode estender ou usar inalteradas. Para obter mais informações sobre como definir e usar componentes personalizados, consulte o GitHub repositório da implementação do seu banco de dados.

Os fluxos de trabalho desta seção explicam como o SDK de criptografia AWS de banco de dados criptografa, assina, descriptografa e verifica os dados em seu banco de dados. Esses fluxos de trabalho descrevem o processo básico usando elementos abstratos e os atributos padrão. Para obter detalhes sobre como o SDK AWS de criptografia de banco de dados funciona com sua implementação de banco de dados, consulte o tópico O *que é criptografado* para seu banco de dados.

O SDK AWS de criptografia de banco de dados usa [criptografia de envelope](concepts.md#envelope-encryption) para proteger seus dados. Cada mensagem é criptografada em uma [chave de dados](concepts.md#data-key) exclusiva. A chave de dados é usada para derivar uma *chave de criptografia de dados* exclusiva para cada campo marcado `ENCRYPT_AND_SIGN` em suas ações criptográficas. Em seguida, uma cópia da chave de dados é criptografada pelas chaves de empacotamento que você especificar. Para descriptografar o registro criptografado, o SDK de criptografia de AWS banco de dados usa as chaves de encapsulamento que você especifica para descriptografar pelo menos uma chave de dados criptografada. Em seguida, ele pode descriptografar o texto cifrado e retornar uma entrada de texto simples.

Para obter mais informações sobre os termos usados no SDK AWS de criptografia de banco de dados, consulte[AWS Conceitos do SDK de criptografia de banco de dados](concepts.md).

## Criptografar e assinar
<a name="encrypt-and-sign"></a>

Em essência, o SDK AWS de criptografia de banco de dados é um criptografador de registros que criptografa, assina, verifica e descriptografa os registros em seu banco de dados. Ele obtém informações sobre os registros e instruções sobre quais campos devem ser criptografados e assinados. Ele obtém os materiais de criptografia e as instruções sobre como usá-los de um [gerenciador de material de criptografia](concepts.md#crypt-materials-manager) configurado com a chave de empacotamento que você especifica.

O passo a passo a seguir descreve como o SDK de criptografia AWS de banco de dados criptografa e assina suas entradas de dados.

1. O gerenciador de materiais criptográficos fornece ao SDK AWS de criptografia de banco de dados chaves exclusivas de criptografia de dados: uma chave de [dados em texto simples, uma cópia da chave](concepts.md#data-key) de dados criptografada pela chave de [encapsulamento especificada e uma chave MAC](concepts.md#wrapping-key).
**nota**  
É possível criptografar a chave de dados em várias chaves de empacotamento. Cada uma das chaves de empacotamento criptografa uma cópia da chave de dados. O SDK AWS de criptografia de banco de dados armazena todas as chaves de dados criptografadas na [descrição do material](concepts.md#material-description). O SDK de criptografia de banco de dados da AWS adiciona um novo campo (`aws_dbe_head`) ao registro que armazena a descrição do material.  
Uma chave MAC é derivada para cada cópia criptografada da chave de dados. As chaves MAC não são armazenadas na descrição do material. Em vez disso, o método de descriptografia usa as chaves de empacotamento para derivar as chaves MAC novamente.

1. O método de criptografia criptografa cada campo marcado como `ENCRYPT_AND_SIGN` nas [ações criptográficas](concepts.md#crypt-actions) que você especificou.

1. O método de criptografia deriva `commitKey` da chave de dados e a usa para gerar um [valor de comprometimento da chave](concepts.md#key-commitment) e, em seguida, descarta a chave de dados.

1. Saiba mais sobre a [descrição do material](concepts.md#material-description) para o registro. A descrição do material contém as chaves de dados criptografadas e outras informações sobre o registro criptografado. Para obter uma lista completa das informações incluídas na descrição do material, consulte [Formato de descrição do material](reference.md#material-description-format).

1. O método de criptografia usa as chaves MAC retornadas na **Etapa 1** para calcular os valores do Código de Autenticação de Mensagens Baseadas em Hash (HMAC) sobre a canonização da descrição do material, do [contexto de criptografia](concepts.md#encryption-context) e de cada campo marcado `ENCRYPT_AND_SIGN` ou `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` nas ações `SIGN_ONLY` criptográficas. Os valores HMAC são armazenados em um novo campo (`aws_dbe_foot`) que o método de criptografia adiciona ao registro.

1. O método de criptografia calcula uma [assinatura ECDSA](concepts.md#digital-sigs) com base na canonização da descrição do material, do contexto de criptografia e de cada campo marcado `ENCRYPT_AND_SIGN``SIGN_ONLY`, ou `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` armazena as assinaturas ECDSA no campo. `aws_dbe_foot`
**nota**  
As assinaturas ECDSA são habilitadas por padrão, mas não são obrigatórias.

1. O método de criptografia armazena o registro criptografado e assinado em seu banco de dados

## Descriptografar e verificar
<a name="decrypt-and-verify"></a>

1. O gerenciador de materiais criptográficos (CMM) fornece o método de decodificação com os materiais de decodificação armazenados na descrição do material, incluindo a [chave de dados](concepts.md#data-key) em texto simples e a chave MAC correspondente.

   1. O CMM descriptografa a chave de dados criptografados com as [chaves de empacotamento](concepts.md#wrapping-key) no token de autenticação especificado e gera a chave de dados de texto simples.

1. O método de decodificação compara e verifica o valor do comprometimento chave na descrição do material.

1. O método de decodificação verifica as assinaturas no campo de assinatura.

   Ele identifica quais campos estão marcados `ENCRYPT_AND_SIGN` ou a `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` partir da lista de [campos não autenticados permitidos](ddb-java-using.md#allowed-unauth) que você definiu. `SIGN_ONLY` O método de descriptografia usa a chave MAC retornada na **Etapa 1** para recalcular e comparar os valores HMAC dos campos marcados com, ou. `ENCRYPT_AND_SIGN` `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` [Em seguida, ele verifica as [assinaturas ECDSA](concepts.md#digital-sigs) usando a chave pública armazenada no contexto de criptografia.](concepts.md#encryption-context)

1. O método de descriptografia usa a chave de dados de texto simples para descriptografar cada valor marcado com `ENCRYPT_AND_SIGN`. Em seguida, o SDK AWS de criptografia de banco de dados descarta a chave de dados em texto simples.

1. O método de descriptografia retorna os registros de texto não criptografado.

# Suítes de algoritmos compatíveis no SDK AWS de criptografia de banco de dados
<a name="supported-algorithms"></a>


****  

|  | 
| --- |
| Nossa biblioteca de criptografia do lado do cliente foi renomeada para SDK de criptografia de AWS banco de dados. Este guia do desenvolvedor ainda fornece informações sobre o [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md). | 

Um *pacote de algoritmos* é uma coleção de algoritmos criptográficos e de valores relacionados. Os sistemas criptográficos usam a implementação do algoritmo para gerar o texto cifrado.

O SDK AWS de criptografia de banco de dados usa um conjunto de algoritmos para criptografar e assinar os campos em seu banco de dados. Todos os pacotes de algoritmos compatíveis usam o algoritmo Advanced Encryption Standard (AES) com Galois/Counter Modo (GCM), conhecido como AES-GCM, para criptografar dados brutos. O SDK AWS de criptografia de banco de dados oferece suporte a chaves de criptografia de 256 bits. O tamanho da tag de autenticação é sempre 16 bytes.


**AWS Suítes de algoritmos SDK de criptografia de banco de dados**  

| Algoritmo | Algoritmo de criptografia | Tamanho da chave de dados (em bits) | Algoritmo de derivação de chave | Algoritmo de assinatura simétrica | Algoritmo de assinatura assimétrica | Compromisso com a chave | 
| --- | --- | --- | --- | --- | --- | --- | 
| Padrão | AES-GCM | 256 | HKDF com SHA-512 | HMAC-SHA-384 | ECDSA com P-384 e SHA-384 | HKDF com SHA-512 | 
| AES-GCM sem assinaturas digitais ECDSA | AES-GCM | 256 | HKDF com SHA-512 | HMAC-SHA-384 | Nenhum | HKDF com SHA-512 | 

**Algoritmo de criptografia**  
O nome e o modo do algoritmo de criptografia utilizado. Os pacotes de algoritmos no SDK AWS de criptografia de banco de dados usam o algoritmo Advanced Encryption Standard (AES) com Galois/Counter modo (GCM).  


**Tamanho da chave de dados**  
O tamanho da [chave de dados](concepts.md#data-key) em bits. O SDK AWS de criptografia de banco de dados é compatível com chaves de dados de 256 bits. A chave de dados é usada como entrada para uma função de derivação de extract-and-expand chave baseada em HMAC (HKDF). A saída da HKDF é usada como a chave de criptografia de dados no algoritmo de criptografia.

**Algoritmo de derivação de chave**  
A função de derivação de extract-and-expand chave baseada em HMAC (HKDF) usada para derivar a chave de criptografia de dados. [O SDK AWS de criptografia de banco de dados usa o HKDF definido na RFC 5869.](https://tools.ietf.org/html/rfc5869)   
+ A função hash usada é SHA-512
+ Para a etapa de extração:
  + Nenhum sal é usado. De acordo com a RFC, o sal é definido como uma string de zeros.
  + O material de chaveamento de entrada é a chave de dados do [chaveiro](concepts.md#keyring-concept).
+ Para a etapa de expansão:
  + A chave pseudoaleatória de entrada é a saída da etapa de extração.
  + O rótulo da chave são os bytes codificados em UTF-8 da string `DERIVEKEY` na ordem de bytes big endian.
  + As informações da entrada são uma concatenação do ID do algoritmo seguido pelo rótulo de chave (nessa ordem).
  + O comprimento do material de chaveamento de saída é o **Tamanho da chave de dados**. Essa saída é usada como a chave de criptografia de dados no algoritmo de criptografia.

**Algoritmo de assinatura simétrica**  
O algoritmo HMAC (Código de Autenticação de Mensagem Baseado em Hash) usado para gerar uma assinatura simétrica. Todos os pacotes de algoritmos compatíveis incluem verificação HMAC.  
O SDK AWS de criptografia de banco de dados serializa a descrição do material e todos os campos marcados com `ENCRYPT_AND_SIGN``SIGN_ONLY`, ou. `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Em seguida, ele usa o HMAC com um algoritmo de função hash criptográfica (SHA-384) para assinar a canonização.  
A assinatura HMAC simétrica é armazenada em um novo campo (`aws_dbe_foot`) que o AWS Database Encryption SDK adiciona ao registro.

**Algoritmo de assinatura assimétrica**  
O algoritmo de assinatura usado para gerar uma assinatura digital assimétrica.  
O SDK AWS de criptografia de banco de dados serializa a descrição do material e todos os campos marcados com `ENCRYPT_AND_SIGN``SIGN_ONLY`, ou. `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Em seguida, ele usa o Algoritmo de Assinatura Digital de Curva Elíptica (ECDSA) com as seguintes especificações para assinar a canonização:  
+ A curva elíptica usada é a P-384, conforme definido no [Padrão de Assinatura Digital (DSS) (FIPS PUB 186-4)](http://doi.org/10.6028/NIST.FIPS.186-4).
+ A função hash usada é SHA-384.
A assinatura ECDSA assimétrica é armazenada com a assinatura HMAC simétrica no campo. `aws_dbe_foot`  
As assinaturas digitais ECDSA são incluídas por padrão, mas não são obrigatórias.

**Confirmação de chave**  
A função de derivação de extract-and-expand chave baseada em HMAC (HKDF) usada para derivar a chave de confirmação.  
+ A função hash usada é SHA-512
+ Para a etapa de extração:
  + Nenhum sal é usado. De acordo com a RFC, o sal é definido como uma string de zeros.
  + O material de chaveamento de entrada é a chave de dados do [chaveiro](concepts.md#keyring-concept).
+ Para a etapa de expansão:
  + A chave pseudoaleatória de entrada é a saída da etapa de extração.
  + As informações de entrada são os bytes codificados em UTF-8 da `COMMITKEY` string na ordem de bytes big endian.
  + O comprimento do material de chaveamento de saída é de 256 bits. Essa saída é usada como chave de confirmação.
[A chave de confirmação calcula o [comprometimento do registro](reference.md#format-commitment), um hash distinto de código de autenticação de mensagens baseado em hash (HMAC) de 256 bits, sobre a descrição do material.](reference.md#material-description-format) Para obter uma explicação técnica sobre como adicionar comprometimento de chave a um conjunto de algoritmos, consulte [Key Committing AEADs](https://eprint.iacr.org/2020/1153) in Cryptology ePrint Archive. 

## Conjunto de algoritmos padrão
<a name="recommended-algorithms"></a>

Por padrão, o SDK AWS de criptografia de banco de dados usa um conjunto de algoritmos com AES-GCM, uma função de derivação de extract-and-expand chave (HKDF) baseada em HMAC, verificação HMAC, assinaturas digitais ECDSA, comprometimento de chave e uma chave de criptografia de 256 bits.

O conjunto de algoritmos padrão inclui verificação HMAC (assinaturas simétricas) e assinaturas [digitais ECDSA (assinaturas](concepts.md#digital-sigs) assimétricas). Essas assinaturas são armazenadas em um novo campo (`aws_dbe_foot`) que o SDK do AWS Database Encryption adiciona ao registro. As assinaturas digitais ECDSA são particularmente úteis quando a política de autorização permite que um conjunto de usuários criptografe dados e um conjunto diferente de usuários descriptografe dados.

O conjunto de algoritmos padrão também deriva de um [compromisso chave](concepts.md#key-commitment) — um hash HMAC que vincula a chave de dados ao registro. O valor de comprometimento da chave é um HMAC calculado a partir da descrição do material e da chave de confirmação. Em seguida, ele armazena o comprometimento de chaves na descrição do material. O comprometimento principal garante que cada texto cifrado seja decifrado em apenas um texto simples. Eles fazem isso validando a chave de dados usada como entrada para o algoritmo de criptografia. Ao criptografar, o conjunto de algoritmos obtém um HMAC de compromisso chave. Antes de decifrar, eles validam que a chave de dados produz o mesmo HMAC de comprometimento de chave. Caso contrário, a chamada decrypt falhará.

## AES-GCM sem assinaturas digitais ECDSA
<a name="other-algorithms"></a>

Embora o conjunto de algoritmos padrão provavelmente seja adequado para a maioria dos aplicativos, você pode escolher um conjunto alternativo de algoritmos. Por exemplo, alguns modelos de confiança seriam satisfeitos com um conjunto de algoritmos sem assinaturas digitais ECDSA. Use esse pacote somente quando os usuários que criptografam dados e os usuários que descriptografam dados forem igualmente confiáveis.

Todos os pacotes de algoritmos do AWS Database Encryption SDK incluem verificação HMAC (assinaturas simétricas). A única diferença é que o conjunto de algoritmos AES-GCM sem assinatura digital ECDSA carece da assinatura assimétrica que fornece uma camada adicional de autenticidade e não repúdio.

Por exemplo, se você tiver várias chaves de agrupamento em seu chaveiro,,`wrappingKeyA`, e `wrappingKeyB``wrappingKeyC`, e você descriptografar um registro usando`wrappingKeyA`, a assinatura simétrica HMAC verifica se o registro foi criptografado por um usuário com acesso a. `wrappingKeyA` Se você usou o conjunto de algoritmos padrão, eles HMACs fornecem a mesma verificação e`wrappingKeyA`, além disso, usam a assinatura digital ECDSA para garantir que o registro foi criptografado por um usuário com permissões de criptografia para. `wrappingKeyA`

Para selecionar o conjunto de algoritmos AES-GCM sem assinaturas digitais, inclua o seguinte trecho em sua configuração de criptografia.

------
#### [ Java ]

O trecho a seguir especifica o conjunto de algoritmos AES-GCM sem assinaturas digitais ECDSA. Para obter mais informações, consulte [Configuração de criptografia no SDK AWS de criptografia de banco de dados para DynamoDB](ddb-java-using.md#ddb-config-encrypt).

```
.algorithmSuiteId(
    DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384)
```

------
#### [ C\$1 / .NET ]

O trecho a seguir especifica o conjunto de algoritmos AES-GCM sem assinaturas digitais ECDSA. Para obter mais informações, consulte [Configuração de criptografia no SDK AWS de criptografia de banco de dados para DynamoDB](ddb-net-using.md#ddb-net-config-encrypt).

```
AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384
```

------
#### [ Rust ]

O trecho a seguir especifica o conjunto de algoritmos AES-GCM sem assinaturas digitais ECDSA. Para obter mais informações, consulte [Configuração de criptografia no SDK AWS de criptografia de banco de dados para DynamoDB](ddb-rust-using.md#ddb-rust-config-encrypt).

```
.algorithm_suite_id(
    DbeAlgorithmSuiteId::AlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384,
)
```

------