

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.

# AWS SDK-Konzepte für Datenbankverschlüsselung
<a name="concepts"></a>


****  

|  | 
| --- |
| Unsere clientseitige Verschlüsselungsbibliothek wurde in AWS Database Encryption SDK umbenannt. Dieses Entwicklerhandbuch enthält weiterhin Informationen zum [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md). | 

In diesem Thema werden die im AWS Database Encryption SDK verwendeten Konzepte und Terminologie erläutert. 

Informationen zum Zusammenspiel der Komponenten des AWS Database Encryption SDK finden Sie unter[So funktioniert das AWS Database Encryption SDK](how-it-works.md).

Weitere Informationen zum AWS Database Encryption SDK finden Sie in den folgenden Themen.
+ Erfahren Sie, wie das AWS Database Encryption SDK [Umschlagverschlüsselung](#envelope-encryption) verwendet, um Ihre Daten zu schützen.
+ Erfahren Sie mehr über die Elemente der Umschlagverschlüsselung: die [Datenschlüssel](#data-key), die Ihre Datensätze schützen, und die [Umhüllungsschlüssel](#wrapping-key), die Ihre Datenschlüssel schützen. 
+ Erfahren Sie mehr über die [Schlüsselanhänger](#keyring-concept), die bestimmen, welche Verpackungsschlüssel Sie verwenden.
+ Erfahren Sie mehr über den [Verschlüsselungskontext](#encryption-context), der Ihrem Verschlüsselungsprozess Integrität verleiht.
+ Erfahren Sie mehr über die [Materialbeschreibung](#material-description), die die Verschlüsselungsmethoden Ihrem Datensatz hinzufügen.
+ Erfahren Sie mehr über die [kryptografischen Aktionen](#crypt-actions), die dem AWS Database Encryption SDK mitteilen, welche Felder verschlüsselt und signiert werden sollen.

**Topics**
+ [

## Umschlagverschlüsselung
](#envelope-encryption)
+ [

## Datenschlüssel
](#data-key)
+ [

## Schlüssel zum Umschließen
](#wrapping-key)
+ [

## Schlüsselanhänger
](#keyring-concept)
+ [

## Kryptografische Aktionen
](#crypt-actions)
+ [

## Materialbeschreibung
](#material-description)
+ [

## Verschlüsselungskontext
](#encryption-context)
+ [

## Manager von kryptographischen Materialien
](#crypt-materials-manager)
+ [

## Symmetrische und asymmetrische Verschlüsselung
](#symmetric-key-encryption)
+ [

## Wichtiges Engagement
](#key-commitment)
+ [

## Digitale Signaturen
](#digital-sigs)

## Umschlagverschlüsselung
<a name="envelope-encryption"></a>

Die Sicherheit Ihrer verschlüsselten Daten hängt teilweise vom Schutz des Datenschlüssels ab, der sie entschlüsseln kann. Eine akzeptierte bewährte Methode zum Schutz des Datenschlüssels ist seine Verschlüsselung. [Dazu benötigen Sie einen weiteren Verschlüsselungsschlüssel, einen sogenannten Schlüsselverschlüsselungsschlüssel oder *Wrapping-Schlüssel*.](#wrapping-key) *Die Praxis, Datenschlüssel mit einem Wrapping-Schlüssel zu verschlüsseln, wird als Envelope-Verschlüsselung bezeichnet.*

**Schutz von Datenschlüsseln**  
Das AWS Database Encryption SDK verschlüsselt jedes Feld mit einem eindeutigen Datenschlüssel. Anschließend verschlüsselt es jeden Datenschlüssel unter dem von Ihnen angegebenen Wrapping-Schlüssel. Es speichert die verschlüsselten Datenschlüssel in der [Materialbeschreibung](#material-description).  
Um Ihren Verpackungsschlüssel anzugeben, verwenden Sie einen [Schlüsselbund](#keyring-concept).  

![\[Umschlagverschlüsselung mit dem AWS Database Encryption SDK\]](http://docs.aws.amazon.com/de_de/database-encryption-sdk/latest/devguide/images/dbesdk-envelope.png)


**Verschlüsseln derselben Daten unter mehreren Wrapping-Schlüsseln**  
Sie können den Datenschlüssel mit mehreren Umschließungsschlüsseln verschlüsseln. Möglicherweise möchten Sie unterschiedliche Umschließungsschlüssel für verschiedene Benutzer oder Umschließungsschlüssel unterschiedlichen Typs oder an verschiedenen Speicherorten bereitstellen. Jeder der Umschließungsschlüssel verschlüsselt denselben Datenschlüssel. Das AWS Database Encryption SDK speichert alle verschlüsselten Datenschlüssel zusammen mit den verschlüsselten Feldern in der [Materialbeschreibung](#material-description).  
Um die Daten zu entschlüsseln, müssen Sie mindestens einen Wrapping-Schlüssel angeben, mit dem die verschlüsselten Datenschlüssel entschlüsselt werden können.

**Kombination der Stärken mehrerer Algorithmen**  
[Um Ihre Daten zu verschlüsseln, verwendet das AWS Database Encryption SDK standardmäßig eine [Algorithmussuite](supported-algorithms.md) mit symmetrischer AES-GCM-Verschlüsselung, einer HMAC-basierten Schlüsselableitungsfunktion (HKDF) und ECDSA-Signatur.](#digital-sigs) [Um den Datenschlüssel zu verschlüsseln, können Sie einen symmetrischen oder asymmetrischen Verschlüsselungsalgorithmus angeben, der zu Ihrem Wrapping-Schlüssel passt.](#symmetric-key-encryption)  
Im Allgemeinen sind symmetrische Schlüsselverschlüsselungsalgorithmen schneller und erzeugen kleinere Verschlüsselungstexte als eine asymmetrische Verschlüsselung oder eine *Verschlüsselung mit öffentlichem Schlüssel*. Algorithmen mit öffentlichen Schlüsseln bieten jedoch eine inhärente Rollentrennung. Um die Stärken der beiden zu kombinieren, können Sie den Datenschlüssel mit einer Verschlüsselung mit öffentlichen Schlüsseln verschlüsseln.  
Wir empfehlen, wann immer möglich einen der AWS KMS Schlüsselringe zu verwenden. Wenn Sie den [AWS KMS Schlüsselbund](use-kms-keyring.md) verwenden, können Sie die Stärken mehrerer Algorithmen kombinieren, indem Sie einen asymmetrischen RSA AWS KMS key als Umschließungsschlüssel angeben. Sie können auch einen KMS-Schlüssel für die symmetrische Verschlüsselung verwenden.

## Datenschlüssel
<a name="data-key"></a>

Ein *Datenschlüssel* ist ein Verschlüsselungsschlüssel, den das AWS Database Encryption SDK verwendet, um die Felder in einem Datensatz zu verschlüsseln, die `ENCRYPT_AND_SIGN` in den [kryptografischen](#crypt-actions) Aktionen markiert sind. Jeder Datenschlüssel ist ein Byte-Array, das die Anforderungen für kryptografische Schlüssel erfüllt. Das AWS Database Encryption SDK verwendet einen eindeutigen Datenschlüssel, um jedes Attribut zu verschlüsseln.

Sie müssen Datenschlüssel nicht spezifizieren, generieren, implementieren, erweitern, schützen oder verwenden. Das AWS Database Encryption SDK erledigt das für Sie, wenn Sie die Verschlüsselungs- und Entschlüsselungsvorgänge aufrufen. 

[Um Ihre Datenschlüssel zu schützen, verschlüsselt das AWS Database Encryption SDK sie mit einem oder mehreren *Schlüsselverschlüsselungsschlüsseln, den sogenannten Wrapping Keys*.](#wrapping-key) Nachdem das AWS Database Encryption SDK Ihre Klartext-Datenschlüssel verwendet hat, um Ihre Daten zu verschlüsseln, werden sie so schnell wie möglich aus dem Speicher entfernt. Speichert dann den verschlüsselten Datenschlüssel in der [Materialbeschreibung](#material-description). Details hierzu finden Sie unter [So funktioniert das AWS Database Encryption SDK](how-it-works.md).

**Tipp**  
Im AWS Database Encryption SDK unterscheiden wir *Datenschlüssel* von *Datenverschlüsselungsschlüsseln*. Als bewährte Methode verwenden alle unterstützten [Algorithmus-Suiten](supported-algorithms.md) eine [Funktion zur Schlüsselableitung](https://en.wikipedia.org/wiki/Key_derivation_function). Die Schlüsselableitungsfunktion verwendet einen Datenschlüssel als Eingabe und gibt die Datenverschlüsselungsschlüssel zurück, die tatsächlich zur Verschlüsselung Ihrer Datensätze verwendet werden. Aus diesem Grund sagen wir oft, dass die Daten „unter“ einem Datenschlüssel verschlüsselt werden, statt „von“ dem Datenschlüssel.

Jeder verschlüsselte Datenschlüssel enthält Metadaten, einschließlich der Kennung des Wrapping-Schlüssels, mit dem er verschlüsselt wurde. Diese Metadaten ermöglichen es dem AWS Database Encryption SDK, beim Entschlüsseln gültige Wrapping-Schlüssel zu identifizieren.

## Schlüssel zum Umschließen
<a name="wrapping-key"></a>

Ein *Wrapping Key* ist ein Schlüssel zur Verschlüsselung, den das AWS Database Encryption SDK verwendet, um den [Datenschlüssel](#data-key) zu verschlüsseln, der Ihre Datensätze verschlüsselt. Jeder Datenschlüssel kann mit einem oder mehreren Umschließungsschlüsseln verschlüsselt werden. Bei der Konfiguration eines Schlüsselbunds legen Sie fest, welche [Umschließungsschlüssel](#keyring-concept) zum Schutz Ihrer Daten verwendet werden.

![\[Verschlüsseln Sie einen Datenschlüssel mit mehreren Umschließungsschlüsseln\]](http://docs.aws.amazon.com/de_de/database-encryption-sdk/latest/devguide/images/dbesdk-wrapping-key.png)


Das AWS Database Encryption SDK unterstützt mehrere häufig verwendete Wrapping-Schlüssel, wie z. B. [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)(AWS KMS) KMS-Schlüssel mit symmetrischer Verschlüsselung (einschließlich Schlüssel für [mehrere Regionen) und asymmetrische AWS KMS RSA-KMS-Schlüssel](use-kms-keyring.md#config-mrks)[, AES-GCM-Rohschlüssel (Advanced Encryption Standard/Galois Counter Mode) und RSA-Rohschlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-rsa). Wir empfehlen, wann immer möglich KMS-Schlüssel zu verwenden. Informationen zur Entscheidung, welchen Wrapping-Schlüssel Sie verwenden sollten, finden Sie unter [Auswählen von Wrapping-Schlüsseln](configure.md#config-keys).

Wenn Sie die Envelope-Verschlüsselung verwenden, müssen Sie Ihre Wrapping Keys vor unberechtigtem Zugriff schützen. Sie können dies auf eine der folgenden Arten tun:
+ Verwenden Sie einen Dienst, der für diesen Zweck entwickelt wurde, z. B. [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/).
+ Verwenden Sie ein [Hardwaresicherheitsmodul (HSM)](https://en.wikipedia.org/wiki/Hardware_security_module), wie z. B. die Angebote von [AWS CloudHSM](https://aws.amazon.com/cloudhsm/).
+ Verwenden Sie andere wichtige Verwaltungstools und -dienste.

Wenn Sie kein Schlüsselverwaltungssystem haben, empfehlen wir AWS KMS. Das AWS Database Encryption SDK lässt sich integrieren AWS KMS , damit Sie Ihre Wrapping-Schlüssel schützen und verwenden können.

## Schlüsselanhänger
<a name="keyring-concept"></a>

Um die Wrapping-Schlüssel anzugeben, die Sie für die Verschlüsselung und Entschlüsselung verwenden, verwenden Sie einen Schlüsselbund. Sie können die Schlüsselbunde verwenden, die das AWS Database Encryption SDK bereitstellt, oder Ihre eigenen Implementierungen entwerfen.

Ein *Schlüsselbund* generiert, verschlüsselt und entschlüsselt Datenschlüssel. Es generiert auch die MAC-Schlüssel, die zur Berechnung der Hash-Based Message Authentication Codes (HMACs) in der Signatur verwendet werden. Wenn Sie einen Schlüsselbund definieren, können Sie die [Wrapping-Schlüssel angeben, mit denen Ihre Datenschlüssel](#wrapping-key) verschlüsselt werden. Die meisten Schlüsselbunde spezifizieren mindestens einen Umschließungsschlüssel oder einen Dienst, der Schlüssel zum Umschließen bereitstellt und schützt. Bei der Verschlüsselung verwendet das AWS Database Encryption SDK alle im Schlüsselbund angegebenen Umschließungsschlüssel, um den Datenschlüssel zu verschlüsseln. [Hilfe zur Auswahl und Verwendung der Schlüsselbunde, die das AWS Database Encryption SDK definiert, finden Sie unter Schlüsselbunde verwenden.](keyrings.md)

## Kryptografische Aktionen
<a name="crypt-actions"></a>

*Kryptografische Aktionen* teilen dem Verschlüsseler mit, welche Aktionen für jedes Feld in einem Datensatz ausgeführt werden sollen. 

Bei den kryptografischen Aktionswerten kann es sich um einen der folgenden Werte handeln:
+ **Verschlüsseln und signieren** — Verschlüsseln Sie das Feld. Schließt das verschlüsselte Feld in die Signatur ein.
+ **Nur signieren** — Schließt das Feld in die Signatur ein.
+ **Signieren und in den Verschlüsselungskontext** aufnehmen — Schließt das Feld in den Signatur- und [Verschlüsselungskontext](#encryption-context) ein.

  Standardmäßig sind die Partitions- und Sortierschlüssel das einzige Attribut, das im Verschlüsselungskontext enthalten ist. Sie könnten erwägen, zusätzliche Felder zu definieren, `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` damit der Anbieter der Branch-Schlüssel-ID für Ihren [AWS KMS hierarchischen Schlüsselbund](use-hierarchical-keyring.md) ermitteln kann, welcher Filialschlüssel für die Entschlüsselung aus dem Verschlüsselungskontext erforderlich ist. Weitere Informationen finden Sie unter Lieferant für die [Filialschlüssel-ID](use-hierarchical-keyring.md#branch-key-id-supplier).
**Anmerkung**  
Um die `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` kryptografische Aktion verwenden zu können, müssen Sie Version 3.3 oder höher des AWS Database Encryption SDK verwenden. Stellen Sie die neue Version für alle Lesegeräte bereit, bevor [Sie Ihr Datenmodell so aktualisieren](ddb-update-data-model.md), dass es diese enthält`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.
+ **Nichts tun** — Verschlüsseln Sie das Feld nicht und nehmen Sie es nicht in die Signatur auf.

Verwenden Sie für jedes Feld, in dem vertrauliche Daten gespeichert werden können, die Option **Verschlüsseln und Signieren**. Verwenden Sie für Primärschlüsselwerte (z. B. einen Partitionsschlüssel und einen Sortierschlüssel in einer DynamoDB-Tabelle) im **Verschlüsselungskontext **nur signieren** oder Signieren und einschließen**. Wenn Sie Attribute vom Typ „**Signieren“ und „Im Verschlüsselungskontext einschließen**“ angeben, müssen auch die Partitions- und Sortierattribute „**Im Verschlüsselungskontext signieren und einbeziehen**“ lauten. Sie müssen keine kryptografischen Aktionen für die [Materialbeschreibung](#material-description) angeben. Das AWS Database Encryption SDK signiert automatisch das Feld, in dem die Materialbeschreibung gespeichert ist.

Wählen Sie Ihre kryptografischen Aktionen sorgfältig aus. Verwenden Sie im Zweifelsfall **Verschlüsseln und signieren**. Nachdem Sie das AWS Database Encryption SDK zum Schutz Ihrer Datensätze verwendet haben, können Sie weder ein vorhandenes `ENCRYPT_AND_SIGN` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Feld noch die einem vorhandenen `DO_NOTHING` Feld zugewiesene kryptografische Aktion ändern. `SIGN_ONLY` `DO_NOTHING` Sie können jedoch weiterhin [andere Änderungen an Ihrem Datenmodell](ddb-update-data-model.md) vornehmen. Sie können beispielsweise verschlüsselte Felder in einer einzigen Bereitstellung hinzufügen oder entfernen.

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

Die Materialbeschreibung dient als Header für einen verschlüsselten Datensatz. Wenn Sie Felder mit dem AWS Database Encryption SDK verschlüsseln und signieren, zeichnet der Verschlüsseler die Materialbeschreibung auf, während er die kryptografischen Materialien zusammenstellt, und speichert die Materialbeschreibung in einem neuen Feld (`aws_dbe_head`), das der Verschlüsseler Ihrem Datensatz hinzufügt.

Bei der Materialbeschreibung handelt es sich um eine übertragbare, [formatierte Datenstruktur](reference.md#material-description-format), die verschlüsselte Kopien der Datenschlüssel und andere Informationen wie Verschlüsselungsalgorithmen, [Verschlüsselungskontext](#encryption-context) sowie Verschlüsselungs- und Signieranweisungen enthält. Der Verschlüsseler zeichnet die Materialbeschreibung auf, während er die kryptografischen Materialien für die Verschlüsselung und Signierung zusammenstellt. Wenn er später kryptografisches Material zusammenstellen muss, um ein Feld zu verifizieren und zu entschlüsseln, verwendet er die Materialbeschreibung als Leitfaden.

Wenn Sie die verschlüsselten Datenschlüssel zusammen mit dem verschlüsselten Feld speichern, wird der Entschlüsselungsvorgang optimiert und Sie müssen keine verschlüsselten Datenschlüssel unabhängig von den Daten, die sie verschlüsseln, speichern und verwalten.

Technische Informationen zur Materialbeschreibung finden Sie unter. [Format der Materialbeschreibung](reference.md#material-description-format)

## Verschlüsselungskontext
<a name="encryption-context"></a>

Um die Sicherheit Ihrer kryptografischen Operationen zu verbessern, enthält das AWS Database Encryption SDK in allen Anfragen zum Verschlüsseln und Signieren eines Datensatzes einen Verschlüsselungskontext.

Ein *Verschlüsselungskontext* ist eine Gruppe von Name-Wert-Paaren mit willkürlichen, nicht geheimen, zusätzlich authentifizierten Daten. Das AWS Database Encryption SDK enthält den logischen Namen für Ihre Datenbank und Primärschlüsselwerte (z. B. einen Partitionsschlüssel und einen Sortierschlüssel in einer DynamoDB-Tabelle) im Verschlüsselungskontext. Wenn Sie ein Feld verschlüsseln und signieren, ist der Verschlüsselungskontext kryptografisch an den verschlüsselten Datensatz gebunden, sodass derselbe Verschlüsselungskontext erforderlich ist, um das Feld zu entschlüsseln.

Wenn Sie einen AWS KMS Schlüsselbund verwenden, verwendet das AWS Database Encryption SDK auch den Verschlüsselungskontext, um zusätzliche authentifizierte Daten (AAD) in den Aufrufen des Schlüsselbunds bereitzustellen. AWS KMS

Immer wenn Sie die [Standard-Algorithmus-Suite](supported-algorithms.md#recommended-algorithms) verwenden, fügt der [Cryptographic Materials Manager](#crypt-materials-manager) (CMM) dem Verschlüsselungskontext ein Name-Wert-Paar hinzu, das aus einem reservierten Namen und einem Wert besteht`aws-crypto-public-key`, der den öffentlichen Bestätigungsschlüssel darstellt. [Der öffentliche Bestätigungsschlüssel wird in der Materialbeschreibung gespeichert.](#material-description)

## Manager von kryptographischen Materialien
<a name="crypt-materials-manager"></a>

Der Cryptographic Materials Manager (CMM) stellt die kryptografischen Materialien zusammen, die zum Verschlüsseln, Entschlüsseln und Signieren Ihrer Daten verwendet werden. Wann immer Sie die [Standardalgorithmussuite](supported-algorithms.md#recommended-algorithms) verwenden, umfassen die *kryptografischen Materialien* Klartext- und verschlüsselte Datenschlüssel, symmetrische Signaturschlüssel und einen asymmetrischen Signaturschlüssel. Sie interagieren nie direkt mit dem CMM. Die Ver- und Entschlüsselungsmethoden übernehmen das für Sie.

Da das CMM als Bindeglied zwischen dem AWS Database Encryption SDK und einem Schlüsselbund fungiert, ist es ein idealer Ort für Anpassungen und Erweiterungen, z. B. zur Unterstützung der Richtliniendurchsetzung. Sie können ein CMM explizit angeben, dies ist jedoch nicht erforderlich. Wenn Sie einen Schlüsselbund angeben, erstellt das AWS Database Encryption SDK ein Standard-CMM für Sie. Das Standard-CMM ruft die Ver- oder Entschlüsselungsmaterialien aus dem von Ihnen angegebenen Schlüsselbund ab. Dabei könnte es sich um einen Aufruf eines kryptographischen Dienstes handeln, z. B. [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) (AWS KMS).

## Symmetrische und asymmetrische Verschlüsselung
<a name="symmetric-key-encryption"></a>

Bei der *symmetrischen Verschlüsselung* wird derselbe Schlüssel zum Verschlüsseln und Entschlüsseln von Daten verwendet. 

*Asymmetrische Verschlüsselung* verwendet ein mathematisch verwandtes Datenschlüsselpaar. Ein Schlüssel des Paares verschlüsselt die Daten; nur der andere Schlüssel im Paar kann die Daten entschlüsseln.

Das AWS Database Encryption SDK verwendet [Umschlagverschlüsselung](#envelope-encryption). Es verschlüsselt Ihre Daten mit einem symmetrischen Datenschlüssel. Es verschlüsselt den symmetrischen Datenschlüssel mit einem oder mehreren symmetrischen oder asymmetrischen Wrapping-Schlüsseln. Es fügt dem Datensatz eine [Materialbeschreibung](#material-description) hinzu, die mindestens eine verschlüsselte Kopie des Datenschlüssels enthält.

**Verschlüsselung Ihrer Daten (symmetrische Verschlüsselung)**  
Um Ihre Daten zu verschlüsseln, verwendet das AWS Database Encryption SDK einen symmetrischen [Datenschlüssel](#data-key) und eine [Algorithmussuite, die einen symmetrischen Verschlüsselungsalgorithmus](supported-algorithms.md) enthält. Um die Daten zu entschlüsseln, verwendet das AWS Database Encryption SDK denselben Datenschlüssel und dieselbe Algorithmus-Suite.

**Verschlüsselung Ihres Datenschlüssels (symmetrische oder asymmetrische Verschlüsselung)**  
Der [Schlüsselbund](#keyring-concept), den Sie für einen Verschlüsselungs- und Entschlüsselungsvorgang angeben, bestimmt, wie der symmetrische Datenschlüssel ver- und entschlüsselt wird. Sie können einen Schlüsselbund wählen, der symmetrische Verschlüsselung verwendet, z. B. einen AWS KMS Schlüsselbund mit einem symmetrischen Verschlüsselungs-KMS-Schlüssel, oder einen Schlüsselbund, der asymmetrische Verschlüsselung verwendet, z. B. einen Schlüsselbund mit einem asymmetrischen RSA-KMS-Schlüssel. AWS KMS 

## Wichtiges Engagement
<a name="key-commitment"></a>

Das AWS Database Encryption SDK unterstützt *Key Commitment* (manchmal auch als *Robustheit* bezeichnet), eine Sicherheitseigenschaft, die sicherstellt, dass jeder Chiffretext nur in einen einzigen Klartext entschlüsselt werden kann. Zu diesem Zweck stellt Key Commitment sicher, dass nur der Datenschlüssel, mit dem Ihr Datensatz verschlüsselt wurde, zum Entschlüsseln verwendet wird. Das AWS Database Encryption SDK beinhaltet Key Commitment für alle Verschlüsselungs- und Entschlüsselungsvorgänge.

Die meisten modernen symmetrischen Chiffren (einschließlich AES) verschlüsseln Klartext unter einem einzigen geheimen Schlüssel, wie dem [eindeutigen Datenschlüssel](#data-key), den das AWS Database Encryption SDK verwendet, um jedes in einem Datensatz markierte Klartextfeld zu verschlüsseln. `ENCRYPT_AND_SIGN` Beim Entschlüsseln dieses Datensatzes mit demselben Datenschlüssel wird ein Klartext zurückgegeben, der mit dem Original identisch ist. Die Entschlüsselung mit einem anderen Schlüssel schlägt normalerweise fehl. Obwohl schwierig, ist es technisch möglich, einen Chiffretext unter zwei verschiedenen Schlüsseln zu entschlüsseln. In seltenen Fällen ist es möglich, einen Schlüssel zu finden, der Chiffretext teilweise in einen anderen, aber dennoch verständlichen Klartext entschlüsseln kann.

Das AWS Database Encryption SDK verschlüsselt jedes Attribut immer unter einem eindeutigen Datenschlüssel. Es kann diesen Datenschlüssel unter mehreren Umschließungsschlüsseln verschlüsseln, aber die Umschließungsschlüssel verschlüsseln immer denselben Datenschlüssel. Dennoch kann ein ausgeklügelter, manuell erstellter verschlüsselter Datensatz tatsächlich unterschiedliche Datenschlüssel enthalten, von denen jeder mit einem anderen Umschließungsschlüssel verschlüsselt ist. Wenn beispielsweise ein Benutzer den verschlüsselten Datensatz entschlüsselt, gibt er 0x0 (falsch) zurück, während ein anderer Benutzer, der denselben verschlüsselten Datensatz entschlüsselt, 0x1 (wahr) erhält.

Um dieses Szenario zu verhindern, beinhaltet das AWS Database Encryption SDK wichtige Verpflichtungen beim Verschlüsseln und Entschlüsseln. Bei der Verschlüsselungsmethode wird der eindeutige Datenschlüssel, der den Chiffretext erzeugt hat, kryptografisch mit der *Schlüsselzusage* verknüpft. Dabei handelt es sich um einen Hash-Based Message Authentication Code (HMAC), der anhand der Materialbeschreibung anhand einer Ableitung des Datenschlüssels berechnet wird. [Anschließend wird die Schlüsselzusage in der Materialbeschreibung gespeichert.](#material-description) Wenn es einen Datensatz mit Schlüsselzusage entschlüsselt, überprüft das AWS Database Encryption SDK, ob der Datenschlüssel der einzige Schlüssel für diesen verschlüsselten Datensatz ist. Wenn die Überprüfung des Datenschlüssels fehlschlägt, schlägt der Entschlüsselungsvorgang fehl.

## Digitale Signaturen
<a name="digital-sigs"></a>

Das AWS Database Encryption SDK verschlüsselt Ihre Daten mit einem authentifizierten Verschlüsselungsalgorithmus, AES-GCM, und der Entschlüsselungsprozess überprüft die Integrität und Authentizität einer verschlüsselten Nachricht ohne Verwendung einer digitalen Signatur. Da AES-GCM jedoch symmetrische Schlüssel verwendet, könnte jeder, der den zur Entschlüsselung des Chiffretextes verwendeten Datenschlüssel entschlüsseln kann, auch manuell einen neuen verschlüsselten Chiffretext erstellen, was zu potenziellen Sicherheitsbedenken führen könnte. Wenn Sie beispielsweise einen AWS KMS key als Umschließungsschlüssel verwenden, könnte ein Benutzer mit entsprechenden Berechtigungen verschlüsselte Chiffretexte erstellen, ohne ihn anzurufen. `kms:Decrypt` `kms:Encrypt`

Um dieses Problem zu vermeiden, fügt die [Standard-Algorithmus-Suite verschlüsselten Datensätzen](supported-algorithms.md#recommended-algorithms) eine ECDSA-Signatur (Elliptic Curve Digital Signature Algorithm) hinzu. Die Standard-Algorithmus-Suite verschlüsselt die Felder in Ihrem Datensatz, die mit einem authentifizierten Verschlüsselungsalgorithmus, `ENCRYPT_AND_SIGN` AES-GCM, markiert sind. Anschließend berechnet sie sowohl Hash-basierte Nachrichtenauthentifizierungscodes (HMACs) als auch asymmetrische ECDSA-Signaturen für die mit, und markierten Felder in Ihrem Datensatz. `ENCRYPT_AND_SIGN` `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Bei der Entschlüsselung wird anhand der Signaturen überprüft, ob ein autorisierter Benutzer den Datensatz verschlüsselt hat.

Wenn die Standard-Algorithmus-Suite verwendet wird, generiert das AWS Database Encryption SDK für jeden verschlüsselten Datensatz ein temporäres Paar aus privatem Schlüssel und öffentlichem Schlüssel. Das AWS Database Encryption SDK speichert den öffentlichen Schlüssel in der [Materialbeschreibung](#material-description) und verwirft den privaten Schlüssel. Dadurch wird sichergestellt, dass niemand eine weitere Signatur erstellen kann, die mit dem öffentlichen Schlüssel verifiziert wird. Der Algorithmus bindet den öffentlichen Schlüssel als zusätzliche authentifizierte Daten in der Materialbeschreibung an den verschlüsselten Datenschlüssel und verhindert so, dass Benutzer, die nur Felder entschlüsseln können, den öffentlichen Schlüssel ändern oder die Signaturüberprüfung beeinträchtigen.

Das AWS Database Encryption SDK beinhaltet immer die HMAC-Verifizierung. Digitale ECDSA-Signaturen sind standardmäßig aktiviert, aber nicht erforderlich. Wenn die Benutzer, die Daten verschlüsseln, und die Benutzer, die Daten entschlüsseln, gleichermaßen vertrauenswürdig sind, sollten Sie die Verwendung einer Algorithmussuite in Betracht ziehen, die keine digitalen Signaturen enthält, um Ihre Leistung zu verbessern. Weitere Informationen zur Auswahl alternativer Algorithmus-Suiten finden Sie unter [Auswahl einer Algorithmus-Suite](ddb-java-using.md#config-algorithm).

**Anmerkung**  
Wenn ein Schlüsselbund nicht zwischen Verschlüsselern und Entschlüsselern unterscheidet, bieten digitale Signaturen keinen kryptografischen Wert.

[AWS KMS Schlüsselbunde,](use-kms-keyring.md) einschließlich des asymmetrischen RSA-Schlüsselbunds, können auf der Grundlage von AWS KMS Schlüssel- und IAM-Richtlinien zwischen Verschlüsselern und Entschlüsselern unterscheiden. AWS KMS 

Aufgrund ihres kryptografischen Charakters können die folgenden Schlüsselbunde nicht zwischen Verschlüsselern und Entschlüsselern unterscheiden:
+ AWS KMS Hierarchischer Schlüsselbund
+ AWS KMS ECDH-Schlüsselanhänger
+ Unformatierter AES-Schlüsselbund
+ Unformatierter RSA-Schlüsselbund
+ Roher ECDH-Schlüsselanhänger