

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Wrapped Materials Provider
<a name="wrapped-provider"></a>

**Anmerkung**  
[Unsere clientseitige Verschlüsselungsbibliothek wurde in Database Encryption SDK umbenannt. AWS](DDBEC-rename.md) Das folgende Thema enthält Informationen zu Versionen 1. *x* —2. *x* des DynamoDB Encryption Client für Java und Versionen 1. *x —3*. *x* des DynamoDB Encryption Client für Python. Weitere Informationen finden Sie unter [AWS Database Encryption SDK für DynamoDB-Versionsunterstützung](legacy-dynamodb-encryption-client.md#legacy-support).

Mit dem *Wrapped Materials Provider* (Wrapped CMP) können Sie Schlüssel aus beliebigen Quellen mit dem DynamoDB Encryption Client verpacken und signieren. Das Wrapped CMP ist von keinem Dienst abhängig. AWS Sie müssen jedoch Ihre Wrapping- und Signierschlüssel außerhalb des Clients generieren und verwalten, einschließlich der Bereitstellung der richtigen Schlüssel zur Verifizierung und Entschlüsselung des Elements. 

Der Wrapped CMP generiert einen eindeutigen Verschlüsselungsschlüssel für jedes Element. Er verpackt den Verschlüsselungsschlüssel des Elements mit dem von Ihnen bereitgestellten Wrapping-Schlüssel und speichert den verpackten Elementverschlüsselungsschlüssel im [Materialbeschreibungsattribut](DDBEC-legacy-concepts.md#legacy-material-description) des Elements. Da Sie die Wrapping- und Signierschlüssel bereitstellen, bestimmen Sie, wie die Wrapping- und Signierschlüssel erzeugt werden und ob sie für jedes Element eindeutig sind oder wiederverwendet werden. 

Der Wrapped CMP ist eine sichere Implementierung und eine gute Wahl für Anwendungen, die kryptographische Materialien verwalten können.

Der Wrapped CMP ist einer von mehreren [Anbietern von kryptografischem Material](DDBEC-legacy-concepts.md#concept-material-provider) (CMPs), die der DynamoDB Encryption Client unterstützt. Hinweise zum anderen finden Sie unter. CMPs [Anbieter von kryptografischem Material](crypto-materials-providers.md)

**Beispielcode finden Sie unter:**
+ 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**
+ [Verwendung](#wrapped-cmp-how-to-use)
+ [Funktionsweise](#wrapped-cmp-how-it-works)

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

Um einen Wrapped CMP zu erstellen, geben Sie einen Wrapping-Schlüssel (beim Verschlüsseln erforderlich), einen Unwrapping-Schlüssel (beim Entschlüsseln erforderlich) und einen Signierschlüssel an. Sie müssen beim Ver- und Entschlüsseln von Elementen Schlüssel bereitstellen.

Die Wrapping-, Unwrapping- und Signierschlüssel können symmetrische Schlüssel oder asymmetrische Schlüsselpaare sein. 

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

------

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

Der Wrapped CMP generiert einen neuen Verschlüsselungsschlüssel für jedes Element. Es verwendet die von Ihnen bereitgestellten Wrapping-, Unwrapping- und Signierschlüssel, wie in der folgenden Abbildung gezeigt.

![\[Die Eingabe, Verarbeitung und Ausgabe des Wrapped Materials Provider im DynamoDB Encryption Client\]](http://docs.aws.amazon.com/de_de/database-encryption-sdk/latest/devguide/images/wrappedCMP.png)


### Verschlüsselungsmaterialien abrufen
<a name="wrapped-cmp-get-encryption-materials"></a>

Dieser Abschnitt beschreibt detailliert die Ein- und Ausgänge und die Verarbeitung des Wrapped Materials Providers (Wrapped CMP), wenn er eine Anfrage für Verschlüsselungsmaterialien erhält. 

**Eingabe** (von der Anwendung)
+ Wrapping-Schlüssel: Ein symmetrischer [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES)-Schlüssel oder ein öffentlicher [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem))-Schlüssel. Erforderlich, wenn Attributwerte verschlüsselt sind. Andernfalls ist er optional und wird ignoriert.
+ Unwrapping-Schlüssel: Optional und wird ignoriert. 
+ Signierschlüssel

**Eingabe** (vom Elementverschlüssler)
+ [DynamoDB-Verschlüsselungskontext](concepts.md#encryption-context)

**Ausgabe** (an den Elementverschlüssler):
+ Klartext-Element-Verschlüsselungsschlüssel
+ Signierschlüssel (unverändert)
+ [Tatsächliche Materialbeschreibung](DDBEC-legacy-concepts.md#legacy-material-description): Diese Werte werden im [Materialbeschreibungsattribut](DDBEC-legacy-concepts.md#legacy-material-description) gespeichert, das der Client dem Element hinzufügt. 
  + `amzn-ddb-env-key`: Base64-codierter Wrapped-Element-Verschlüsselungsschlüssel
  + `amzn-ddb-env-alg`: Verschlüsselungsalgorithmus, der zur Verschlüsselung des Elements verwendet wird. Der Standardwert ist AES-256-CBC.
  + `amzn-ddb-wrap-alg`: Der Wrapping-Algorithmus, den der Wrapped CMP verwendet hat, um den Elementverschlüsselungsschlüssel zu verpacken. Wenn es sich bei dem Wrapping-Schlüssel um einen AES-Schlüssel handelt, wird der Schlüssel mit nicht aufgefülltem `AES-Keywrap` verpackt, wie in [RFC 3394](https://tools.ietf.org/html/rfc3394.html) definiert. Wenn der Wrapping-Schlüssel ein RSA-Schlüssel ist, wird der Schlüssel mithilfe von RSA OAEP mit Auffüllung verschlüsselt. MGF1 

**Verarbeitung**

Wenn Sie ein Element verschlüsseln, übergeben Sie einen Wrapping-Schlüssel und einen Signierschlüssel. Ein Unwrapping-Schlüssel ist optional und wird ignoriert.

1. Der Wrapped CMP generiert einen symmetrischen Elementverschlüsselungsschlüssel für das Tabellenelement. 

1. Er verwendet den Wrapping-Schlüssel, den Sie angeben, um den Elementverschlüsselungsschlüssel zu verpacken. Anschließend entfernt er ihn so schnell wie möglich aus dem Speicher.

1. Es gibt den Klartextelementverschlüsselungsschlüssel zurück, den von Ihnen angegebenen Signierschlüssel und eine [tatsächliche Materialbeschreibung](DDBEC-legacy-concepts.md#legacy-material-description), die den Verschlüsselungsschlüssel des verpackten Elements und die Verschlüsselungs- und Wrapping-Algorithmen enthält.

1. Der Elementverschlüssler verwendet den Klartext-Verschlüsselungsschlüssel, um das Element zu verschlüsseln. Es verwendet den von Ihnen bereitgestellten Signierschlüssel, um das Element zu signieren. Anschließend entfernt er die Klartextschlüssel so schnell wie möglich aus dem Speicher. Es kopiert die Felder in der tatsächlichen Materialbeschreibung, einschließlich des verpackten Verschlüsselungsschlüssels (`amzn-ddb-env-key`), in das Materialbeschreibungsattribut des Elements.

### Entschlüsselungsmaterialien abrufen
<a name="wrapped-cmp-get-decryption-materials"></a>

Dieser Abschnitt beschreibt detailliert die Ein- und Ausgänge und die Verarbeitung des Wrapped Materials Providers (Wrapped CMP), wenn er eine Anfrage für Entschlüsselungsmaterialien erhält. 

**Eingabe** (von der Anwendung)
+ Wrapping-Schlüssel: Optional und wird ignoriert.
+ Unwrapping-Schlüssel: Derselbe symmetrische [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES)-Schlüssel oder private [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem))-Schlüssel, der dem zum Verschlüsseln verwendeten öffentlichen RSA-Schlüssel entspricht. Erforderlich, wenn Attributwerte verschlüsselt sind. Andernfalls ist er optional und wird ignoriert.
+ Signierschlüssel

**Eingabe** (vom Elementverschlüssler)
+ Eine Kopie des [DynamoDB-Verschlüsselungskontextes](concepts.md#encryption-context), der den Inhalt des Materialbeschreibungsattributs enthält.

**Ausgabe** (an den Elementverschlüssler)
+ Klartext-Element-Verschlüsselungsschlüssel
+ Signierschlüssel (unverändert)

**Verarbeitung**

Wenn Sie ein Element entschlüsseln, übergeben Sie einen Unwrapping-Schlüssel und einen Signierschlüssel. Ein Wrapping-Schlüssel ist optional und wird ignoriert.

1. Der Wrapped CMP erhält den Verschlüsselungsschlüssel des verpackten Elements aus dem Materialbeschreibungsattribut des Elements.

1. Er verwendet den Unwrapping-Schlüssel und den Algorithmus, um den Verschlüsselungsschlüssel des Elements zu entpacken. 

1. Es gibt den Klartextelementverschlüsselungsschlüssel, den Signierschlüssel sowie Verschlüsselungs- und Signieralgorithmen an den Elementverschlüsseler zurück.

1. Der Elementverschlüssler verwendet den Signierschlüssel, um das Element zu verifizieren. Wenn dies erfolgreich ist, verwendet er den Verschlüsselungsschlüssel des Elements, um das Element zu entschlüsseln. Anschließend entfernt er die Klartextschlüssel so schnell wie möglich aus dem Speicher.