

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

# Provedor encapsulado de materiais
<a name="wrapped-provider"></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).

O *provedor empacotado de materiais* (CMP empacotado) permite usar chaves encapsuladas e de assinatura a partir de qualquer origem com o DynamoDB Encryption Client. O Wrapped CMP não depende de nenhum AWS serviço. No entanto, você deve gerar e gerenciar suas chaves de empacotamento e assinatura fora do cliente, incluindo o fornecimento das chaves corretas para verificar e descriptografar o item. 

O CMP encapsulado gera uma chave exclusiva de criptografia para cada item. Ele encapsula a chave de criptografia do item com a chave de empacotamento que você fornece, e salva a chave de criptografia de item encapsulada no [atributo de descrição do material](DDBEC-legacy-concepts.md#legacy-material-description) do item. Como fornece as chaves de empacotamento e assinatura, você determina como as chaves de empacotamento e assinatura serão geradas e se elas serão exclusivas de cada item ou reutilizadas. 

O CMP encapsulado é uma implementação segura e uma boa opção para aplicativos que podem gerenciar materiais de criptografia.

O Wrapped CMP é um dos vários [fornecedores de materiais criptográficos](DDBEC-legacy-concepts.md#concept-material-provider) (CMPs) compatíveis com o DynamoDB Encryption Client. Para obter informações sobre o outro CMPs, consulte[Provedor de materiais de criptografia](crypto-materials-providers.md).

**Para ver um código de exemplo, consulte:**
+ Java: [AsymmetricEncryptedItem](https://github.com/aws/aws-dynamodb-encryption-java/blob/master/examples/src/main/java/com/amazonaws/examples/AsymmetricEncryptedItem.java)
+ Python:, [wrapped-rsa-encrypted-table[wrapped-symmetric-encrypted-table](https://github.com/aws/aws-dynamodb-encryption-python/blob/master/examples/src/dynamodb_encryption_sdk_examples/wrapped_symmetric_encrypted_table.py)](https://github.com/aws/aws-dynamodb-encryption-python/blob/master/examples/src/dynamodb_encryption_sdk_examples/wrapped_rsa_encrypted_table.py)

**Topics**
+ [Como usar](#wrapped-cmp-how-to-use)
+ [Como funciona](#wrapped-cmp-how-it-works)

## Como usar
<a name="wrapped-cmp-how-to-use"></a>

Para criar um CMP empacotado, especifique uma chave de empacotamento (necessária para a criptografia), uma chave de desempacotamento (necessária para a descriptografia) e uma chave de assinatura. É necessário fornecer chaves ao criptografar e descriptografar itens.

As chaves de empacotamento, desempacotamento e assinatura podem ser chaves simétricas ou pares de chaves assimétricos. 

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

```
// This example uses asymmetric wrapping and signing key pairs
final KeyPair wrappingKeys = ...
final KeyPair signingKeys = ...

final WrappedMaterialsProvider cmp = 
    new WrappedMaterialsProvider(wrappingKeys.getPublic(),
                                 wrappingKeys.getPrivate(),
                                 signingKeys);
```

------
#### [ Python ]

```
# This example uses symmetric wrapping and signing keys
wrapping_key = ...
signing_key  = ...

wrapped_cmp = WrappedCryptographicMaterialsProvider(
    wrapping_key=wrapping_key,
    unwrapping_key=wrapping_key,
    signing_key=signing_key
)
```

------

## Como funciona
<a name="wrapped-cmp-how-it-works"></a>

O CMP encapsulado gera uma nova chave de criptografia para cada item. Ele usa as chaves de empacotamento, desempacotamento e assinatura que você fornece, conforme mostrado no diagrama a seguir.

![\[A entrada, o processamento e a saída do provedor empacotado de materiais no DynamoDB Encryption Client\]](http://docs.aws.amazon.com/pt_br/database-encryption-sdk/latest/devguide/images/wrappedCMP.png)


### Obter materiais de criptografia
<a name="wrapped-cmp-get-encryption-materials"></a>

Esta seção descreve em detalhes as entradas, as saídas e o processamento do provedor encapsulado de materiais (CMP encapsulado) quando ele recebe uma solicitação de materiais de criptografia. 

**Entrada** (do aplicativo)
+ Chave de empacotamento: uma chave simétrica do [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) ou uma chave pública [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem)). Obrigatória se houver valores de atributo criptografados. Caso contrário, ela é opcional e ignorada.
+ Chave de descriptografia: opcional e ignorada. 
+ Chave de assinatura

**Entrada** (do criptografador de itens)
+ [Contexto de criptografia do DynamoDB](concepts.md#encryption-context)

**Saída** (para o criptografador de itens):
+ Chave de criptografia do item de texto simples
+ Chave de assinatura (inalterada)
+ [Descrição real do material](DDBEC-legacy-concepts.md#legacy-material-description): esses valores são salvos no [atributo de descrição do material](DDBEC-legacy-concepts.md#legacy-material-description) que o cliente adiciona ao item. 
  + `amzn-ddb-env-key`: chave de criptografia de item encapsulado codificada em Base64
  + `amzn-ddb-env-alg`: algoritmo de criptografia usado para criptografar o item. O padrão é AES-256-CBC.
  + `amzn-ddb-wrap-alg`: o algoritmo de empacotamento que o CMP empacotado usou para encapsular a chave de criptografia de item. Se a chave de empacotamento for uma chave do AES, ela será encapsulada com o `AES-Keywrap` não preenchido, conforme definido na [RFC 3394](https://tools.ietf.org/html/rfc3394.html). Se a chave de empacotamento for uma chave RSA, a chave será criptografada usando RSA OAEP com preenchimento. MGF1 

**Processamento**

Quando você criptografa um item, transmite uma chave de empacotamento e outra de assinatura. A chave de descriptografia é opcional e ignorada.

1. O CMP encapsulado gera uma chave exclusiva de criptografia simétrica para o item de tabela.

1. Ele usa a chave de empacotamento que você especifica para encapsular a chave de criptografia de item. Depois, ele a remove da memória o mais rápido possível.

1. Ele retorna a chave de criptografia do item de texto sem formatação, a chave de assinatura que você forneceu e uma [descrição real do material](DDBEC-legacy-concepts.md#legacy-material-description) que inclui a chave de criptografia do item empacotado e os algoritmos de criptografia e empacotamento.

1. O criptografador do item usa a chave de criptografia de texto simples para criptografar o item. Ele usa a chave de assinatura que você forneceu para assinar o item. Depois, ele remove as chaves de texto simples da memória o mais rápido possível. Ele copia os campos na descrição real do material, incluindo a chave de criptografia encapsulada (`amzn-ddb-env-key`), para o atributo de descrição do material do item.

### Obter materiais de descriptografia
<a name="wrapped-cmp-get-decryption-materials"></a>

Esta seção descreve em detalhes as entradas, as saídas e o processamento do provedor encapsulado de materiais (CMP encapsulado) quando ele recebe uma solicitação de materiais de descriptografia. 

**Entrada** (do aplicativo)
+ Chave de criptografia: opcional e ignorada.
+ Chave de descriptografia: a mesma chave simétrica [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) ou a chave privada [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem)) que corresponde à chave pública RSA usada para criptografia. Obrigatória se houver valores de atributo criptografados. Caso contrário, ela é opcional e ignorada.
+ Chave de assinatura

**Entrada** (do criptografador de itens)
+ Uma cópia do [contexto de criptografia do DynamoDB](concepts.md#encryption-context) com o conteúdo do atributo de descrição do material.

**Saída** (para o criptografador de itens)
+ Chave de criptografia do item de texto simples
+ Chave de assinatura (inalterada)

**Processamento**

Quando você descriptografa um item, transmite uma chave de desempacotamento e outra de assinatura. A chave de empacotamento é opcional e ignorada.

1. O CMP encapsulado obtém a chave de criptografia de item encapsulado do atributo de descrição do material do item.

1. Ele usa o algoritmo e a chave de desempacotamento para desencapsular a chave de criptografia de item. 

1. Ele retorna a chave de criptografia de item de texto simples, a chave de assinatura e os algoritmos de criptografia e assinatura para o criptografador do item.

1. O criptografador do item usa a chave de assinatura para verificar o item. Quando consegue fazer isso, ele usa a chave de criptografia de item para descriptografar o item. Depois, ele remove as chaves de texto simples da memória o mais rápido possível.