

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Fournisseur de matériaux encapsulé
<a name="wrapped-provider"></a>

**Note**  
Notre bibliothèque de chiffrement côté client a été [renommée AWS Database Encryption SDK](DDBEC-rename.md). La rubrique suivante fournit des informations sur les versions 1. *x* —2. *x* du client de chiffrement DynamoDB pour Java et versions 1. *x* —3. *x* du client de chiffrement DynamoDB pour Python. Pour plus d'informations, consultez la section [SDK AWS de chiffrement de base de données pour la prise en charge des versions DynamoDB](legacy-dynamodb-encryption-client.md#legacy-support).

Le *Wrapped Materials Provider* (Wrapped CMP) vous permet d'utiliser des clés d'encapsulation et de signature provenant de n'importe quelle source avec le client de chiffrement DynamoDB. Le CMP Wrapped ne dépend d'aucun AWS service. Cependant, vous devez générer et gérer vos clés d'encapsulation et de signature en dehors du client, y compris la fourniture des clés appropriées pour vérifier et déchiffrer l'élément. 

Le fournisseur CMP encapsulé génère une clé de chiffrement d'élément unique pour chaque élément. Il encapsule la clé de chiffrement d'élément avec la clé d'encapsulation que vous fournissez et enregistre la clé de chiffrement d'élément encapsulée dans l'[attribut de description de matériau](DDBEC-legacy-concepts.md#legacy-material-description) de l'élément. Comme vous fournissez les clés d'encapsulation et de signature, vous déterminez de quelle façon les clés d'encapsulation et de signature sont générées, et si elles sont propres à chaque élément ou sont réutilisées. 

Le fournisseur CMP encapsulé constitue une implémentation sécurisée et un bon choix pour les applications qui peuvent gérer les matériaux de chiffrement.

Le Wrapped CMP est l'un des nombreux [fournisseurs de matériel cryptographique](DDBEC-legacy-concepts.md#concept-material-provider) (CMPs) pris en charge par le client de chiffrement DynamoDB. Pour plus d'informations sur l'autre CMPs, voir[Fournisseur de matériel cryptographique](crypto-materials-providers.md).

**Pour obtenir un exemple de code, consultez :**
+ 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](https://github.com/aws/aws-dynamodb-encryption-python/blob/master/examples/src/dynamodb_encryption_sdk_examples/wrapped_rsa_encrypted_table.py), [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)

**Topics**
+ [Comment l'utiliser](#wrapped-cmp-how-to-use)
+ [Comment ça marche](#wrapped-cmp-how-it-works)

## Comment l'utiliser
<a name="wrapped-cmp-how-to-use"></a>

Pour créer un fournisseur CMP encapsulé, spécifiez une clé d'encapsulation (requise au chiffrement), une clé de désencapsulation (requise au déchiffrement) et une clé de signature. Vous devez fournir les clés lorsque vous chiffrez et déchiffrez les éléments.

Les clés d'encapsulation, de désencapsulation et de signature peuvent être des clés symétriques ou des paires de clés asymétriques. 

------
#### [ 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
)
```

------

## Comment ça marche
<a name="wrapped-cmp-how-it-works"></a>

Le fournisseur CMP encapsulé génère une nouvelle clé de chiffrement d'élément pour chaque élément. Il utilise les clés d'encapsulation, de désencapsulation et de signature que vous fournissez, comme illustré dans le schéma suivant.

![\[Entrée, traitement et sortie du fournisseur de matériaux encapsulés dans le client de chiffrement DynamoDB\]](http://docs.aws.amazon.com/fr_fr/database-encryption-sdk/latest/devguide/images/wrappedCMP.png)


### Obtention des matériaux de chiffrement
<a name="wrapped-cmp-get-encryption-materials"></a>

Cette section décrit en détail les entrées, les sorties et le traitement du fournisseur CMP encapsulé quand il reçoit une demande de matériaux de chiffrement. 

**Entrée** (depuis l'application)
+ Clé d'encapsulation : clé symétrique [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) ou clé publique [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem)). Obligatoire si les valeurs d'attribut sont chiffrées. Sinon, elle est facultative et ignorée.
+ Clé de désencapsulation : facultative et ignorée. 
+ Clé de signature

**Entrée** (depuis le chiffreur d'élément)
+ [Contexte de chiffrement DynamoDB](concepts.md#encryption-context)

**Sortie** (vers le chiffreur d'élément) :
+ Clé de chiffrement d'élément en texte brut
+ Clé de signature (inchangée)
+ [Description du matériau réel](DDBEC-legacy-concepts.md#legacy-material-description) : ces valeurs sont enregistrées dans l'[attribut de description du matériau](DDBEC-legacy-concepts.md#legacy-material-description) que le client ajoute à l'élément. 
  + `amzn-ddb-env-key` : clé de chiffrement d'élément codée en base64
  + `amzn-ddb-env-alg` : algorithme de chiffrement utilisé pour chiffrer l'élément. La valeur par défaut est AES-256-CBC.
  + `amzn-ddb-wrap-alg` : algorithme d'encapsulation utilisé par le fournisseur CMP encapsulé pour encapsuler la clé de chiffrement d'élément. Si la clé d'encapsulation est une clé AES, la clé est encapsulée à l'aide de `AES-Keywrap` non complétée, comme défini dans [RFC 3394](https://tools.ietf.org/html/rfc3394.html). Si la clé d'encapsulation est une clé RSA, elle est chiffrée à l'aide de RSA OAEP avec rembourrage. MGF1 

**Traitement**

Lorsque vous chiffrez un élément, vous transmettez une clé d'encapsulation et une clé de signature. Une clé de désencapsulation est facultative et ignorée.

1. Le fournisseur CMP encapsulé génère une clé de chiffrement d'élément symétrique unique pour l'élément de table.

1. Il utilise la clé d'encapsulation que vous spécifiez pour encapsuler la clé de chiffrement d'élément. Puis, il la supprime de la mémoire dès que possible.

1. Il retourne la clé de chiffrement d'élément en texte brut, la clé de signature que vous avez fournie et une [description de matériau réel](DDBEC-legacy-concepts.md#legacy-material-description) qui inclut la clé de chiffrement d'élément encapsulé, ainsi que les algorithmes de chiffrement et d'encapsulation.

1. Le chiffreur d'élément utilise la clé de chiffrement en texte brut pour chiffrer l'élément. Il utilise la clé de signature que vous avez fournie pour signer l'élément. Puis, il supprime les clés en texte brut de la mémoire dès que possible. Il copie les champs de la description du matériel réel, y compris la clé de chiffrement encapsulée (`amzn-ddb-env-key`), dans l'attribut de la description de matériau de l'élément.

### Obtention des matériaux de déchiffrement
<a name="wrapped-cmp-get-decryption-materials"></a>

Cette section décrit en détail les entrées, les sorties et le traitement du fournisseur CMP encapsulé quand il reçoit une demande de matériaux de déchiffrement. 

**Entrée** (depuis l'application)
+ Clé d'encapsulation : facultative et ignorée.
+ Clé de désencapsulation : la même clé symétrique [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) ou la même clé privée [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem)) qui correspond à la clé publique RSA utilisée pour chiffrer. Obligatoire si les valeurs d'attribut sont chiffrées. Sinon, elle est facultative et ignorée.
+ Clé de signature

**Entrée** (depuis le chiffreur d'élément)
+ Copie du contexte de [chiffrement DynamoDB](concepts.md#encryption-context) qui contient le contenu de l'attribut de description du matériau.

**Sortie** (vers le chiffreur d'élément)
+ Clé de chiffrement d'élément en texte brut
+ Clé de signature (inchangée)

**Traitement**

Lorsque vous déchiffrez un élément, vous transmettez une clé de désencapsulation et une clé de signature. Une clé d'encapsulation est facultative et ignorée.

1. Le fournisseur CMP encapsulé obtient la clé de chiffrement d'élément encapsulé depuis l'attribut de description du matériau de l'élément.

1. Il utilise la clé et l'algorithme de désencapsulation pour désencapsuler la clé de chiffrement d'élément. 

1. Il retourne la clé de chiffrement de l'élément en texte brut, la clé de signature, et les algorithmes de chiffrement et de signature au chiffreur d'élément.

1. Le chiffreur d'élément utilise la clé de signature pour vérifier l'élément. S'il réussit, il utilise la clé de chiffrement d'élément pour déchiffrer l'élément. Puis, il supprime les clés en texte brut de la mémoire dès que possible.