

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

# Conceitos do Amazon DynamoDB Encryption Client
<a name="DDBEC-legacy-concepts"></a>

**nota**  
Nossa biblioteca de criptografia do lado do cliente foi [renomeada como SDK de criptografia de banco de dados da AWS](DDBEC-rename.md). O tópico a seguir fornece informações sobre as versões 1.*x*—2.*x* do DynamoDB Encryption Client para Java e versões 1.*x*—3*x* do DynamoDB Encryption Client para Python. Para obter mais informações, consulte [SDK de criptografia de banco de dados da AWS para obter suporte à versão do DynamoDB](legacy-dynamodb-encryption-client.md#legacy-support).

Este tópico explica a terminologia e os conceitos usados no Amazon DynamoDB Encryption Client. 

Para saber como os componentes do DynamoDB Encryption Client interagem, consulte [Como o DynamoDB Encryption Client funciona](DDBEC-legacy-how-it-works.md).

**Topics**
+ [Provedor de materiais de criptografia (CMP)](#concept-material-provider)
+ [Criptografadores de itens](#item-encryptor)
+ [Ações de atributos](#legacy-attribute-actions)
+ [Descrição do material](#legacy-material-description)
+ [Contexto de criptografia do DynamoDB](#legacy-encryption-context)
+ [Armazenamento de provedores](#provider-store)

## Provedor de materiais de criptografia (CMP)
<a name="concept-material-provider"></a>

Ao implementar o DynamoDB Encryption Client, uma das suas primeiras tarefas é [selecionar um provedor de materiais de criptografia](crypto-materials-providers.md) (CMP) (também conhecido como *provedor de materiais criptográficos*). Sua escolha determina muito do restante da implementação. 

O *provedor de materiais de criptografia* (CMP) coleta, monta e retorna os materiais criptográficos que o [criptografador de itens](#item-encryptor) usa para criptografar e assinar os itens de sua tabela. O CMP determina os algoritmos de criptografia a serem usados e como gerar e proteger a criptografia e as chaves de assinatura.

O CMP interage com o criptografador do item. O criptografador do item solicita materiais de criptografia ou de descriptografia do CMP, e o CMP os retorna ao criptografador do item. Então, o criptografador do item usa os materiais de criptografia para criptografar e assinar, ou verificar e descriptografar, o item.

Você especifica o CMP ao configurar o cliente. Você pode criar uma CMP personalizada compatível ou usar uma das várias CMPs da biblioteca. A maioria CMPs está disponível para várias linguagens de programação. 

## Criptografadores de itens
<a name="item-encryptor"></a>

O *criptografador do itens* é um componente de nível inferior que executa operações de criptografia para o DynamoDB Encryption Client. Ele solicita materiais de criptografia de um [provedor de materiais de criptografia](#concept-material-provider) (CMP) e usa os materiais que o CMP retorna para criptografar e assinar, ou verificar e descriptografar, o item da tabela.

É possível interagir com o criptografador do item diretamente ou usar os auxiliares fornecidos pela biblioteca. Por exemplo, o DynamoDB Encryption Client para Java inclui uma classe auxiliar `AttributeEncryptor` que é possível usar com o `DynamoDBMapper`, em vez de interagir diretamente com o criptografador de itens `DynamoDBEncryptor`. A biblioteca Python inclui as classes auxiliares `EncryptedTable`, `EncryptedClient` e `EncryptedResource` que interagem com o criptografador do item para você.

## Ações de atributos
<a name="legacy-attribute-actions"></a>

As *Ações de atributos* informam ao criptografador de itens quais ações executar em cada atributo de item. 

Os valores das ações de atributo podem ser um destes:
+ **Criptografar e assinar** – Criptografa o valor do atributo. Incluir o atributo (nome e valor) na assinatura do item.
+ **Apenas assinar** – Inclui o atributo na assinatura do item.
+ **Não fazer nada** – Não criptografa nem assina o atributo.

Para qualquer atributo que possa armazenar dados confidenciais, use **Criptografar e assinar**. Para atributos de chave primária (chave de partição e chave de classificação), use **Apenas assinar**. O [atributo de descrição do material](#legacy-material-description) e o atributo de assinatura não são assinados nem criptografados. Não é necessário especificar ações para esses atributos.

Escolha suas ações de atributos com cuidado. Em caso de dúvida, use **Criptografar e assinar**. Depois de usar o DynamoDB Encryption Client para proteger seus itens de tabela, não será possível alterar a ação de um atributo sem arriscar um erro de validação de assinatura. Para obter detalhes, consulte [Alterar seu modelo de dados](data-model.md).

**Atenção**  
Não criptografe os atributos da chave primária. Eles devem permanecer em texto simples para que o DynamoDB possa encontrar o item sem executar uma varredura completa da tabela.

Se o [contexto de criptografia do DynamoDB](concepts.md#encryption-context) identificar os atributos de chave primária, o cliente gerará um erro se você tentar criptografá-los.

A técnica usada para especificar as ações de atributo é diferente para cada linguagem de programação. Ela também pode ser específica das classes auxiliares que você usa.

Para ver detalhes, consulte a documentação da sua linguagem de programação.
+ [Python](python-using.md#python-attribute-actions)
+ [Java](java-using.md#attribute-actions-java)

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

A *descrição do material* para um item de tabela criptografado consiste em informações, como algoritmos de criptografia, sobre como o item de tabela é criptografado e assinado. O [provedor de materiais de criptografia](#concept-material-provider) (CMP) 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 o item, ele usará a descrição do material como guia. 

No DynamoDB Encryption Client, a descrição do material refere-se a três elementos relacionados:

**Descrição do material solicitado**  
Alguns [fornecedores de materiais criptográficos](#concept-material-provider) (CMPs) permitem que você especifique opções avançadas, como um algoritmo de criptografia. Para indicar suas opções, adicione pares de nome-valor à propriedade de descrição do material do [contexto de criptografia do DynamoDB](concepts.md#encryption-context) na solicitação para criptografar um item da tabela. Esse elemento é conhecido como a *descrição do material solicitado*. Os valores válidos na descrição solicitada do material são definidos pelo CMP escolhido.   
Como a descrição do material pode substituir valores padrão seguros, recomendamos que você omita a descrição solicitada do material, a menos que tenha um bom motivo para usá-la.

**Descrição real do material**  
A descrição do material que os [fornecedores de materiais criptográficos](#concept-material-provider) (CMPs) retornam é conhecida como a *descrição real do material*. Ela descreve os valores reais que o CMP usou quando montou os materiais de criptografia. Ela consiste na descrição solicitada do material, se houver, com adições e alterações.

**Atributo de descrição do material**  
O cliente salva a descrição real do material no *atributo de descrição do material* do item criptografado. O nome do atributo de descrição do material é `amzn-ddb-map-desc`, e seu valor é a descrição real do material. O cliente usa os valores do atributo de descrição do material para verificar e descriptografar o item.

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

O *contexto de criptografia do DynamoDB* fornece informações sobre a tabela e o item ao [provedor de materiais de criptografia](#concept-material-provider) (CMP). Em implementações avançadas, o contexto de criptografia do DynamoDB pode incluir uma [descrição do material solicitado](#legacy-material-description).

Quando você criptografa itens de tabela, o contexto de criptografia do DynamoDB é vinculado criptograficamente aos valores dos atributos criptografados. Ao descriptografar, se o contexto de criptografia do DynamoDB não for correspondência exata de maiúsculas e minúsculas do contexto de criptografia do DynamoDB usado para criptografar, a operação de descriptografia falhará. Se você interagir com o [criptografador de itens](#item-encryptor) diretamente, forneça um contexto de criptografia do DynamoDB ao chamar um método de criptografia ou de descriptografia. A maioria das classes auxiliares cria o contexto de criptografia do DynamoDB para você.

**nota**  
O contexto de *criptografia do DynamoDB* no DynamoDB Encryption Client não está relacionado ao contexto de criptografia em () e *o.* AWS Key Management Service AWS KMS AWS Encryption SDK

O contexto de criptografia do DynamoDB pode incluir os campos a seguir. Todos os campos e valores são opcionais.
+ Nome da tabela
+ Nome da chave de partição
+ Nome da chave de classificação
+ Pares de nome-valor do atributo
+ [Descrição do material solicitado](#legacy-material-description)

## Armazenamento de provedores
<a name="provider-store"></a>

Uma *loja de fornecedores* é um componente que retorna [fornecedores de materiais criptográficos](#concept-material-provider) (CMPs). A loja do provedor pode criá-los CMPs ou obtê-los de outra fonte, como outra loja do provedor. O repositório do provedor salva as versões do CMPs que ele cria em um armazenamento persistente, no qual cada CMP armazenado é identificado pelo nome do material do solicitante e pelo número da versão. 

O [provedor mais recente](most-recent-provider.md) no DynamoDB Encryption Client os obtém CMPs de uma loja de provedores, mas você pode usar a loja de provedores para CMPs fornecer qualquer componente. Cada provedor mais recente está associado a uma loja de provedores, mas uma loja de provedores pode fornecer CMPs a vários solicitantes em vários hosts.

A loja do provedor cria novas versões CMPs sob demanda e retorna versões novas e existentes. Ele também retorna o número da versão mais recente de um determinado nome de material. Assim, o solicitante sabe quando o armazenamento do provedor tem uma nova versão do CMP que ele pode solicitar.

O DynamoDB Encryption Client inclui [ MetaStore](most-recent-provider.md#about-metastore)um, que é um repositório de provedores que cria CMPs Wrapped com chaves armazenadas no DynamoDB e criptografadas usando um DynamoDB Encryption Client interno. 

**Saiba mais:**
+ Armazenamento de provedores: [Java](https://aws.github.io/aws-dynamodb-encryption-java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/providers/store/ProviderStore.html), [Python](https://github.com/aws/aws-dynamodb-encryption-python/blob/master/src/dynamodb_encryption_sdk/material_providers/store/__init__.py)
+ MetaStore: [Java](https://aws.github.io/aws-dynamodb-encryption-java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/providers/store/MetaStore.html), [Python](https://aws-dynamodb-encryption-python.readthedocs.io/en/latest/lib/materials_providers/metastore.html#module-dynamodb_encryption_sdk.material_providers.store.meta)