

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.

# Konzepte des Amazon DynamoDB DynamoDB-Verschlüsselungsclients
<a name="DDBEC-legacy-concepts"></a>

**Anmerkung**  
Unsere clientseitige Verschlüsselungsbibliothek wurde in Database Encryption SDK [umbenannt](DDBEC-rename.md). AWS 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).

In diesem Thema werden die Konzepte und die Terminologie erklärt, die im Amazon DynamoDB Encryption Client verwendet werden. 

Informationen zum Zusammenspiel der Komponenten des DynamoDB Encryption Client finden Sie unter. [So funktioniert der DynamoDB Encryption Client](DDBEC-legacy-how-it-works.md)

**Topics**
+ [Anbieter von kryptographischen Materialien (Cryptographic Materials Provider (CMP))](#concept-material-provider)
+ [Elementverschlüssler](#item-encryptor)
+ [Attributaktionen](#legacy-attribute-actions)
+ [Materialbeschreibung](#legacy-material-description)
+ [DynamoDB-Verschlüsselungsclient](#legacy-encryption-context)
+ [Provider-Store](#provider-store)

## Anbieter von kryptographischen Materialien (Cryptographic Materials Provider (CMP))
<a name="concept-material-provider"></a>

Bei der Implementierung des DynamoDB Encryption Client besteht eine Ihrer ersten Aufgaben darin, [einen Anbieter für kryptografisches Material (CMP) (auch bekannt als Anbieter von *Verschlüsselungsmaterialien*) auszuwählen](crypto-materials-providers.md). Ihre Wahl bestimmt einen Großteil der restlichen Implementierung. 

Ein *Anbieter von kryptographischem Material (Cryptographic Materials Provider, CMP)* erfasst und erstellt die kryptographischen Materialien und gibt sie zurück, die der [Elementverschlüssler](#item-encryptor) verwendet, um Ihre Tabellenelemente zu verschlüsseln und zu signieren. Der CMP bestimmt die zu verwendenden Verschlüsselungsalgorithmen, und wie Verschlüsselungs- und Signierschlüssel erzeugt und geschützt werden.

Der CMP interagiert mit dem Elementverschlüssler. Der Elementverschlüssler fordert vom CMP Ver- oder Entschlüsselungsmaterialien an, und der CMP gibt sie an den Elementverschlüsseler zurück. Dann verwendet der Elementverschlüssler die kryptographischen Materialien, um das Element zu verschlüsseln und zu signieren oder zu überprüfen und zu entschlüsseln.

Den CMP geben Sie bei der Konfiguration des Clients an. Sie können ein kompatibles benutzerdefiniertes CMP erstellen oder eines der vielen in der Bibliothek enthaltenen verwenden. CMPs Die meisten CMPs sind für mehrere Programmiersprachen verfügbar. 

## Elementverschlüssler
<a name="item-encryptor"></a>

Der *Elementverschlüsseler* ist eine untergeordnete Komponente, die kryptografische Operationen für den DynamoDB Encryption Client ausführt. Er fordert kryptographisches Material von einem [Anbieter von kryptographischem Material (Cryptographic Materials Provider, CMP)](#concept-material-provider) an und verwendet dann die vom CMP zurückgegebenen Materialien, um Ihr Tabellenelement zu verschlüsseln und zu signieren oder zu verifizieren und zu entschlüsseln.

Sie können direkt mit dem Elementverschlüsseler interagieren oder die Helferklassen verwenden, die Ihre Bibliothek zur Verfügung stellt. Der DynamoDB Encryption Client für Java enthält beispielsweise eine `AttributeEncryptor` Hilfsklasse, die Sie mit dem verwenden können`DynamoDBMapper`, anstatt direkt mit dem `DynamoDBEncryptor` Elementverschlüsseler zu interagieren. Die Python-Bibliothek enthält die Helferklassen `EncryptedTable`, `EncryptedClient` und `EncryptedResource`, die für Sie mit dem Elementverschlüssler interagieren.

## Attributaktionen
<a name="legacy-attribute-actions"></a>

*Attribut-Aktionen* teilen dem Elementverschlüsseler mit, welche Aktionen er auf jedes Attribut des Elements anwenden soll. 

Das Attribut-Aktionswerte können einer der folgenden sein:
+ **Verschlüsseln und signieren** — Verschlüsselt den Attributwert. Nehmen Sie das Attribut (Name und Wert) in die Elementsignatur auf.
+ **Nur signieren** — Schließt das Attribut in die Artikelsignatur ein.
+ **Nichts tun** — Verschlüsseln oder signieren Sie das Attribut nicht.

Verwenden Sie für jedes Attribut, das vertrauliche Daten speichern kann, **Verschlüsseln und signieren**. Für Primärschlüsselattribute (Partitionsschlüssel und Sortierschlüssel) verwenden Sie **Nur signieren**. Das [Materialverschlüsselungsattribut](#legacy-material-description) und das Signaturattribut werden wird nicht verschlüsselt oder signiert. Sie müssen für diese Attribute keine Attribut-Aktionen angeben.

Wählen Sie Ihre Attributaktionen sorgfältig aus. Verwenden Sie im Zweifelsfall **Verschlüsseln und signieren**. Sobald Sie den DynamoDB Encryption Client zum Schutz Ihrer Tabellenelemente verwendet haben, können Sie die Aktion für ein Attribut nicht mehr ändern, ohne einen Signaturvalidierungsfehler zu riskieren. Details hierzu finden Sie unter [Ändern Ihres Datenmodells](data-model.md).

**Warnung**  
Verschlüsseln Sie die primären Schlüsselattribute nicht. Sie müssen im Klartext bleiben, damit DynamoDB das Element finden kann, ohne einen vollständigen Tabellenscan ausführen zu müssen.

Wenn der [DynamoDB-Verschlüsselungskontext](concepts.md#encryption-context) Ihre Primärschlüsselattribute identifiziert, gibt der Client einen Fehler aus, wenn Sie versuchen, sie zu verschlüsseln.

Die Technik, mit der Sie die Attribut-Aktionen festlegen, ist für jede Programmiersprache unterschiedlich. Sie kann auch spezifisch für Helferklassen sein, die Sie verwenden.

Weitere Informationen finden Sie in der Dokumentation Ihrer Programmiersprache.
+ [Python](python-using.md#python-attribute-actions)
+ [Java](java-using.md#attribute-actions-java)

## Materialbeschreibung
<a name="legacy-material-description"></a>

Die *Materialbeschreibung* für ein verschlüsseltes Tabellenelement besteht aus Informationen, wie z. B. Verschlüsselungsalgorithmen, wie das Tabellenelement verschlüsselt und signiert wird. Ein [Anbieter von kryptographischem Material (Cryptographic Materials Provider, CMP)](#concept-material-provider) zeichnet die Materialbeschreibung auf, wenn er die kryptographischen Materialien für die Verschlüsselung und die Signatur zusammenstellt. Später, wenn er kryptographische Materialien zusammenstellen muss, um das Element zu verifizieren und zu entschlüsseln, verwendet er die Materialbeschreibung als seinen Leitfaden. 

Im DynamoDB Encryption Client bezieht sich die Materialbeschreibung auf drei verwandte Elemente:

**Angeforderte Materialbeschreibung**  
Bei einigen [Anbietern von kryptografischem Material](#concept-material-provider) (CMPs) können Sie erweiterte Optionen angeben, z. B. einen Verschlüsselungsalgorithmus. Um Ihre Auswahlmöglichkeiten anzugeben, fügen Sie der Materialbeschreibungseigenschaft des [DynamoDB-Verschlüsselungskontextes in Ihrer Anforderung zur Verschlüsselung](concepts.md#encryption-context) eines Tabellenelements Name-Wert-Paare hinzu. Dieses Element wird als die *angeforderte Materialbeschreibung* bezeichnet. Die gültigen Werte in der angeforderten Materialbeschreibung werden durch den von Ihnen gewählten CMP definiert.   
Da die Materialbeschreibung sichere Standardwerte überschreiben kann, empfehlen wir Ihnen, die angeforderte Materialbeschreibung wegzulassen, es sei denn, Sie haben einen zwingenden Grund, sie zu verwenden.

**Tatsächliche Materialbeschreibung**  
*Die Materialbeschreibung, die von den [Anbietern kryptografischer Materialien](#concept-material-provider) (CMPs) zurückgegeben wird, wird als eigentliche Materialbeschreibung bezeichnet.* Sie beschreibt die tatsächlichen Werte, die der CMP bei der Zusammenstellung der kryptographischen Materialien verwendet hat. Sie besteht in der Regel aus der angeforderten Materialbeschreibung, falls vorhanden, mit Ergänzungen und Änderungen.

**Materialbeschreibungsattribut**  
Der Client speichert die tatsächliche Materialbeschreibung in dem *Materialbeschreibungsattribut* des verschlüsselten Elements. Der Name des Materialbeschreibungsattributs ist `amzn-ddb-map-desc`, der Wert ist die tatsächliche Materialbeschreibung. Der Client verwendet die Werte im Materialbeschreibungsattribut, um das Element zu überprüfen und zu entschlüsseln.

## DynamoDB-Verschlüsselungsclient
<a name="legacy-encryption-context"></a>

Der *DynamoDB-Verschlüsselungskontext* liefert Informationen über die Tabelle und das Element an den [Cryptographic Materials Provider](#concept-material-provider) (CMP). In fortgeschrittenen Implementierungen kann der DynamoDB-Verschlüsselungskontext eine [angeforderte](#legacy-material-description) Materialbeschreibung enthalten.

Wenn Sie Tabellenelemente verschlüsseln, ist der DynamoDB-Verschlüsselungskontext kryptografisch an die verschlüsselten Attributwerte gebunden. Wenn beim Entschlüsseln der DynamoDB-Verschlüsselungskontext nicht exakt und unter Berücksichtigung der Groß- und Kleinschreibung mit dem DynamoDB-Verschlüsselungskontext übereinstimmt, der für die Verschlüsselung verwendet wurde, schlägt der Entschlüsselungsvorgang fehl. Wenn Sie direkt mit dem [Elementverschlüsseler](#item-encryptor) interagieren, müssen Sie beim Aufrufen einer Verschlüsselungs- oder Entschlüsselungsmethode einen DynamoDB-Verschlüsselungskontext angeben. Die meisten Helfer erstellen den DynamoDB-Verschlüsselungskontext für Sie.

**Anmerkung**  
Der *DynamoDB-Verschlüsselungskontext* im DynamoDB Encryption Client hat nichts mit dem *Verschlüsselungskontext* in AWS Key Management Service ()AWS KMS und dem zu tun. AWS Encryption SDK

Der DynamoDB-Verschlüsselungskontext kann die folgenden Felder enthalten. Alle Felder und Werte sind optional.
+ Name der Tabelle
+ Partitionsschlüsselname
+ Sortierschlüsselname
+ Attribut-Namen-Wert-Paare
+ [Angeforderte Materialbeschreibung](#legacy-material-description)

## Provider-Store
<a name="provider-store"></a>

Ein *Provider-Store* ist eine Komponente, die [Anbieter von kryptografischem Material](#concept-material-provider) (CMPs) zurückgibt. Der Anbieterspeicher kann sie aus einer anderen Quelle erstellen CMPs oder aus einer anderen Quelle abrufen, z. B. aus einem anderen Anbieterspeicher. Der Provider-Speicher speichert Versionen von CMPs , die er erstellt, im persistenten Speicher, in dem jede gespeicherte CMP durch den Materialnamen des Anforderers und die Versionsnummer identifiziert wird. 

Der [neueste Anbieter](most-recent-provider.md) im DynamoDB Encryption Client bezieht seine Daten CMPs aus einem Provider-Store, aber Sie können den Provider-Speicher für die Bereitstellung CMPs an jede Komponente verwenden. Jeder aktuelle Anbieter ist einem Provider-Store zugeordnet, aber ein Provider-Store kann viele Anforderer CMPs auf mehreren Hosts beliefern.

Der Provider-Store erstellt neue Versionen von CMPs On Demand und gibt neue und bestehende Versionen zurück. Außerdem gibt er die neueste Versionsnummer für einen bestimmten Materialnamen zurück. Daran erkennt der Anforderer, dass der Provider-Store eine neue Version seines CMP hat, die er anfordern kann.

Der DynamoDB Encryption Client umfasst einen [ MetaStore](most-recent-provider.md#about-metastore), bei dem es sich um einen Provider-Speicher handelt, der Wrapped CMPs mit Schlüsseln erstellt, die in DynamoDB gespeichert und mit einem internen DynamoDB Encryption Client verschlüsselt werden. 

**Weitere Informationen:**
+ Provider-Store: [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)