Konzepte in der AWS Encryption SDK - AWS Encryption SDK

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 in der AWS Encryption SDK

In diesem Abschnitt werden die in der AWS Encryption SDK verwendeten Konzepte vorgestellt und ein Glossar sowie eine Referenz bereitgestellt. Es soll Ihnen helfen, zu verstehen, wie das AWS Encryption SDK funktioniert und mit welchen Begriffen wir es beschreiben.

Benötigen Sie Hilfe?

Umschlagverschlüsselung

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, der als Schlüsselverschlüsselungsschlüssel oder Wrapping-Schlüssel bezeichnet wird. Die Praxis, Datenschlüssel mit einem Wrapping-Schlüssel zu verschlüsseln, wird als Envelope-Verschlüsselung bezeichnet.

Schutz von Datenschlüsseln

Die AWS Encryption SDK verschlüsselt jede Nachricht mit einem eindeutigen Datenschlüssel. Anschließend verschlüsselt es den Datenschlüssel unter dem von Ihnen angegebenen Wrapping-Schlüssel. Es speichert den verschlüsselten Datenschlüssel zusammen mit den verschlüsselten Daten in der verschlüsselten Nachricht, die es zurückgibt.

Um Ihren Wrapping-Schlüssel anzugeben, verwenden Sie einen Schlüsselbund oder einen Master-Key-Anbieter.

Umschlagverschlüsselung mit dem AWS Encryption SDK
Verschlüsseln derselben Daten unter mehreren Wrapping-Schlüsseln

Sie können den Datenschlüssel unter 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. Der AWS Encryption SDK speichert alle verschlüsselten Datenschlüssel zusammen mit den verschlüsselten Daten in der verschlüsselten Nachricht.

Um die Daten zu entschlüsseln, müssen Sie einen Umschließungsschlüssel angeben, mit dem einer der verschlüsselten Datenschlüssel entschlüsselt werden kann.

Jeder Umschließungsschlüssel verschlüsselt denselben Datenschlüssel, sodass für jeden Umhüllungsschlüssel ein verschlüsselter Datenschlüssel entsteht
Kombination der Stärken mehrerer Algorithmen

Um Ihre Daten zu verschlüsseln, AWS Encryption SDK verwendet der standardmäßig eine ausgeklügelte AESAlgorithmus-Suite mit GCM symmetrischer Verschlüsselung, einer Schlüsselableitungsfunktion (HKDF) und Signierung. Um den Datenschlüssel zu verschlüsseln, können Sie einen symmetrischen oder asymmetrischen Verschlüsselungsalgorithmus angeben, der Ihrem Wrapping-Schlüssel entspricht.

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 öffentlichem Schlüssel unterstützen jedoch eine inhärente Rollentrennung und eine einfachere Schlüsselverwaltung. Um beide Stärken zu kombinieren, können Sie Ihre Daten mit symmetrischer Schlüsselverschlüsselung verschlüsseln und anschließend den Datenschlüssel mit Public-Key-Verschlüsselung verschlüsseln.

Datenschlüssel

Ein Datenschlüssel ist ein Verschlüsselungsschlüssel, den das AWS Encryption SDK verwendet, um Ihre Daten zu verschlüsseln. Jeder Datenschlüssel ist ein Byte-Array, das die Anforderungen für kryptografische Schlüssel erfüllt. Sofern Sie nicht das Zwischenspeichern von Datenschlüsseln verwenden, AWS Encryption SDK verwendet der einen eindeutigen Datenschlüssel, um jede Nachricht zu verschlüsseln.

Sie müssen Datenschlüssel nicht spezifizieren, generieren, implementieren, erweitern, schützen oder verwenden. Das AWS Encryption SDK übernimmt diese Aufgabe für Sie, wenn Sie die Ver- und Entschlüsselungsoperationen aufrufen.

Um Ihre Datenschlüssel zu schützen, werden sie mit einem oder mehreren AWS Encryption SDK Schlüsselschlüsseln verschlüsselt, die als Wrapping Keys oder Master Keys bezeichnet werden. Nachdem der Ihre Klartext-Datenschlüssel AWS Encryption SDK verwendet hat, um Ihre Daten zu verschlüsseln, werden sie so schnell wie möglich aus dem Speicher entfernt. Die verschlüsselten Datenschlüssel werden dann mit den verschlüsselten Daten in der verschlüsselten Nachricht gespeichert, die die Verschlüsselungsoperationen zurückgibt. Details hierzu finden Sie unter Funktionsweise des AWS Encryption SDK.

Tipp

In der AWS Encryption SDK unterscheiden wir Datenschlüssel von Datenverschlüsselungsschlüsseln. Mehrere der unterstützten Algorithmen-Pakete, einschließlich des Standardpakets, verwenden eine Schlüsselableitungsfunktion, die verhindert, dass der Datenschlüssel seine kryptografische Grenze erreicht. Die Schlüsselableitungsfunktion nimmt den Datenschlüssel als Eingabe entgegen und gibt einen Datenverschlüsselungsschlüssel zurück, mit dem die Daten letztlich verschlüsselt 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 erleichtern es den, gültige Wrapping-Schlüssel beim Entschlüsseln AWS Encryption SDK zu identifizieren.

Schlüssel zum Umschließen

Ein Wrapping Key ist ein Schlüssel zur AWS Encryption SDK Verschlüsselung des Datenschlüssels, mit dem Ihre Daten verschlüsselt werden. Jeder Klartext-Datenschlüssel kann mit einem oder mehreren Umschließungsschlüsseln verschlüsselt werden. Sie legen fest, welche Umschließungsschlüssel zum Schutz Ihrer Daten verwendet werden, wenn Sie einen Schlüsselbund oder einen Hauptschlüsselanbieter konfigurieren.

Anmerkung

Wrapping Key bezieht sich auf die Schlüssel in einem Schlüsselbund oder einem Hauptschlüsselanbieter. Der Hauptschlüssel ist normalerweise der MasterKey Klasse zugeordnet, die Sie instanziieren, wenn Sie einen Hauptschlüsselanbieter verwenden.

Der AWS Encryption SDK unterstützt mehrere häufig verwendete Schlüssel zum Umschließen von Schlüsseln, wie z. B. AWS Key Management Service (AWS KMS) symmetrische Schlüssel AWS KMS keys(einschließlich Schlüssel mit mehreren Regionen), rohe KMS Schlüssel GCM (Advanced Encryption Standard/Galois Counter Mode) und AES Rohschlüssel. RSA Sie können auch Ihre eigenen Wrapping Keys erweitern oder implementieren.

Wenn Sie die Envelope-Verschlüsselung verwenden, müssen Sie Ihre Wrapping-Schlüssel vor unbefugtem Zugriff schützen. Sie können dies auf eine der folgenden Arten tun:

Wenn Sie kein Schlüsselverwaltungssystem haben, empfehlen wir AWS KMS. Das AWS Encryption SDK lässt sich integrieren AWS KMS , um Ihnen zu helfen, Ihre Verpackungsschlüssel zu schützen und zu verwenden. Für das AWS Encryption SDK ist jedoch kein AWS Service erforderlich AWS .

Schlüsselanhänger und Hauptschlüsselanbieter

Um die Wrapping-Schlüssel anzugeben, die Sie für die Verschlüsselung und Entschlüsselung verwenden, verwenden Sie einen Schlüsselbund oder einen Hauptschlüsselanbieter. Sie können die von ihm bereitgestellten Schlüsselringe und Hauptschlüsselanbieter verwenden oder Ihre AWS Encryption SDK eigenen Implementierungen entwerfen. Der AWS Encryption SDK stellt Schlüsselringe und Hauptschlüsselanbieter bereit, die je nach Spracheinschränkungen miteinander kompatibel sind. Details hierzu finden Sie unter Schlüsselbund-Kompatibilität.

Ein Schlüsselbund generiert, verschlüsselt und entschlüsselt Datenschlüssel. Wenn Sie einen Schlüsselbund definieren, können Sie die Umschließungsschlüssel angeben, mit denen Ihre Datenschlüssel 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. Sie können auch einen Schlüsselbund ohne Umschließungsschlüssel oder einen komplexeren Schlüsselbund mit zusätzlichen Konfigurationsoptionen definieren. Hilfe bei der Auswahl und Verwendung der von definierten Schlüsselbunden AWS Encryption SDK finden Sie unter. Verwenden von Schlüsselbunden

Schlüsselringe werden in den folgenden Programmiersprachen unterstützt:

  • AWS-Verschlüsselungs-SDK for C

  • AWS-Verschlüsselungs-SDK for JavaScript

  • AWS Encryption SDK für. NET

  • Ausführung 3. x der AWS-Verschlüsselungs-SDK for Java

  • Ausführung 4. x von AWS-Verschlüsselungs-SDK for Python, wenn es mit der optionalen Abhängigkeit von Cryptographic Material Providers Library (MPL) verwendet wird.

Ein Hauptschlüsselanbieter ist eine Alternative zu einem Schlüsselbund. Der Hauptschlüsselanbieter gibt die von Ihnen angegebenen Wrapping-Schlüssel (oder Hauptschlüssel) zurück. Jeder Masterschlüssel ist einem Masterschlüssel-Anbieter zugeordnet, aber ein Masterschlüssel-Anbieter stellt in der Regel mehrere Masterschlüssel bereit. Master-Key-Anbieter werden in Java, Python und der AWS Verschlüsselung unterstütztCLI.

Sie müssen einen Schlüsselbund (oder einen Hauptschlüsselanbieter) für die Verschlüsselung angeben. Sie können denselben Schlüsselbund (oder Hauptschlüsselanbieter) oder einen anderen für die Entschlüsselung angeben. Bei der Verschlüsselung AWS Encryption SDK verwendet der alle von Ihnen angegebenen Umschließungsschlüssel, um den Datenschlüssel zu verschlüsseln. Beim Entschlüsseln AWS Encryption SDK verwendet der nur die von Ihnen angegebenen Umschließungsschlüssel, um einen verschlüsselten Datenschlüssel zu entschlüsseln. Die Angabe von Umschließungsschlüsseln für die Entschlüsselung ist optional, hat sich aber bewährt. AWS Encryption SDK

Einzelheiten zum Angeben von Schlüsseln zum Umschließen von Schlüsseln finden Sie unterAuswahl von Schlüsseln zum Umbrechen.

Verschlüsselungskontext

Um die Sicherheit Ihrer kryptographischen Operationen zu verbessern, fügen Sie einen Verschlüsselungskontext in alle Anfragen zur Verschlüsselung von Daten ein. Die Verwendung eines Verschlüsselungskontexts ist optional, aber wir empfehlen dies als bewährte Methode für die Kryptografie.

Ein Verschlüsselungskontext ist eine Gruppe von Name-Wert-Paaren mit willkürlichen, nicht geheimen, zusätzlich authentifizierten Daten. Der Verschlüsselungskontext kann beliebige Daten enthalten, aber er besteht in der Regel aus Daten, die für die Protokollierung und Verfolgung nützlich sind, wie z. B. Daten über den Dateityp, den Zweck oder das Eigentum. Wenn Sie Daten verschlüsseln, wird der Verschlüsselungskontext kryptografisch an die verschlüsselten Daten gebunden, sodass derselbe Verschlüsselungskontext zur Entschlüsselung der Daten benötigt wird. Das AWS Encryption SDK enthält den Verschlüsselungskontext als Klartext im Header der verschlüsselten Nachricht, die es zurückgibt.

Der Verschlüsselungskontext, den der AWS Encryption SDK verwendet, besteht aus dem Verschlüsselungskontext, den Sie angeben, und einem öffentlichen key pair, das der Cryptographic Materials Manager (CMM) hinzufügt. Insbesondere wenn Sie einen Verschlüsselungsalgorithmus mit Signatur verwenden, CMM fügt der dem Verschlüsselungskontext ein Name-Wert-Paar hinzu, das aus einem reservierten Namen und einem Wert bestehtaws-crypto-public-key, der den öffentlichen Bestätigungsschlüssel darstellt. Der aws-crypto-public-key Name im Verschlüsselungskontext ist für den reserviert AWS Encryption SDK und kann nicht als Name in einem anderen Paar im Verschlüsselungskontext verwendet werden. Einzelheiten finden Sie AADin der Referenz zum Nachrichtenformat.

Der folgende Beispielverschlüsselungskontext besteht aus zwei Verschlüsselungskontextpaaren, die in der Anfrage angegeben sind, und dem öffentlichen key pair, das der CMM hinzufügt.

"Purpose"="Test", "Department"="IT", aws-crypto-public-key=<public key>

Zum Entschlüsseln der Daten übergeben Sie die verschlüsselte Nachricht. Da der den Verschlüsselungskontext aus dem verschlüsselten Nachrichtenheader extrahieren AWS Encryption SDK kann, müssen Sie den Verschlüsselungskontext nicht separat angeben. Der Verschlüsselungskontext kann jedoch helfen zu bestätigen, dass Sie die richtige verschlüsselte Nachricht entschlüsselt wurde.

  • Wenn Sie in der AWS Encryption SDK Befehlszeilenschnittstelle (CLI) einen Verschlüsselungskontext in einem Entschlüsselungsbefehl angeben, CLI wird überprüft, ob die Werte im Verschlüsselungskontext der verschlüsselten Nachricht vorhanden sind, bevor die Klartextdaten zurückgegeben werden.

  • In anderen Programmiersprachenimplementierungen umfasst die Entschlüsselungsantwort den Verschlüsselungskontext und die Klartextdaten. Die Entschlüsselungsfunktion in Ihrer Anwendung sollte immer überprüfen, ob der Verschlüsselungskontext in der decrypt-Antwort den Verschlüsselungskontext in der Verschlüsselungsanfrage (oder einer Teilmenge) enthält, bevor sie die Klartextdaten zurückgibt.

Anmerkung

Mit Version 4. x der AWS Encryption SDK Form. NETund Version 3. x von AWS-Verschlüsselungs-SDK for Java, Sie können für alle Verschlüsselungsanfragen mit dem erforderlichen Verschlüsselungskontext einen Verschlüsselungskontext CMM angeben.

Wenn Sie einen Verschlüsselungskontext wählen, denken Sie daran, dass dies kein Geheimnis ist. Der Verschlüsselungskontext wird im Klartext im Header der verschlüsselten Nachricht angezeigt, die zurückgegeben wird AWS Encryption SDK . Wenn Sie verwenden AWS Key Management Service, kann der Verschlüsselungskontext auch im Klartext in Prüfaufzeichnungen und Protokollen erscheinen, z. B. AWS CloudTrail

Beispiele für das Einreichen und Überprüfen eines Verschlüsselungskontextes in Ihrem Code finden Sie in den Beispielen für Ihre bevorzugte Programmiersprache.

Verschlüsselte Nachricht

Wenn Sie Daten mit dem verschlüsseln AWS Encryption SDK, wird eine verschlüsselte Nachricht zurückgegeben.

Eine verschlüsselte Nachricht ist eine übertragbare, formatierte Datenstruktur, die die verschlüsselten Daten zusammen mit verschlüsselten Kopien der Datenschlüssel, der Algorithmus-ID und optional einem Verschlüsselungskontext und einer digitalen Signatur enthält. Verschlüsselungsoperationen im AWS Encryption SDK geben eine verschlüsselte Nachricht zurück, und Entschlüsselungsoperationen nehmen eine verschlüsselte Nachricht als Eingabe entgegen.

Die Kombination der verschlüsselten Daten und ihrer verschlüsselten Datenschlüssel rationalisiert den Entschlüsselungsvorgang und befreit Sie von der Notwendigkeit, verschlüsselte Datenschlüssel unabhängig von den verschlüsselten Daten zu speichern und zu verwalten.

Technische Informationen über die verschlüsselte Nachricht finden Sie unter Verschlüsseltes Nachrichtenformat.

Algorithmen-Paket

Der AWS Encryption SDK verwendet eine Algorithmus-Suite, um die Daten in der verschlüsselten Nachricht zu verschlüsseln und zu signieren, die bei den Verschlüsselungs- und Entschlüsselungsvorgängen zurückgegeben werden. Das AWS Encryption SDK unterstützt mehrere Algorithmen-Pakete. Alle unterstützten Suiten verwenden Advanced Encryption Standard (AES) als primären Algorithmus und kombinieren ihn mit anderen Algorithmen und Werten.

Die AWS Encryption SDK legt eine empfohlene Algorithmus-Suite als Standard für alle Verschlüsselungsvorgänge fest. Die Vorgabe kann sich ändern, wenn sich Standards und bewährte Methoden verbessern. Sie können bei Anfragen zur Verschlüsselung von Daten oder bei der Erstellung eines Cryptographic Materials Managers (CMM) eine alternative Algorithmus-Suite angeben. Sofern für Ihre Situation jedoch keine Alternative erforderlich ist, empfiehlt es sich, die Standardeinstellung zu verwenden. Die aktuelle Standardeinstellung ist AES - GCM mit einer HMAC basierten extract-and-expand Schlüsselableitungsfunktion (HKDF), einer Schlüsselzusage, einer Signatur mit einem Algorithmus für digitale Signaturen mit elliptischen Kurven (ECDSA) und einem 256-Bit-Verschlüsselungsschlüssel.

Wenn Ihre Anwendung eine hohe Leistung erfordert und die Benutzer, die Daten verschlüsseln, und die Benutzer, die Daten entschlüsseln, gleichermaßen vertrauenswürdig sind, sollten Sie erwägen, eine Algorithmus-Suite ohne digitale Signatur anzugeben. Wir empfehlen jedoch dringend eine Algorithmussuite, die Schlüsselzusage und eine Schlüsselableitungsfunktion umfasst. Algorithmus-Suiten ohne diese Funktionen werden nur aus Gründen der Abwärtskompatibilität unterstützt.

Manager von kryptographischen Materialien

Der Cryptographic Materials Manager (CMM) stellt die kryptografischen Materialien zusammen, die zum Verschlüsseln und Entschlüsseln von Daten verwendet werden. Die kryptografischen Materialien umfassen Klartext- und verschlüsselte Datenschlüssel und einen optionalen Nachrichten-Signaturschlüssel. Sie interagieren nie direkt mit dem. CMM Die Ver- und Entschlüsselungsmethoden übernehmen das für Sie.

Sie können die Standardeinstellung CMM oder das vom bereitgestellte Caching CMM verwenden oder ein benutzerdefiniertes CMM Caching schreiben. AWS Encryption SDK Und Sie können eine angebenCMM, aber das ist nicht erforderlich. Wenn Sie einen Schlüsselbund oder einen Hauptschlüsselanbieter angeben, AWS Encryption SDK erstellt dieser einen Standard CMM für Sie. Die Standardeinstellung CMM bezieht die Ver- oder Entschlüsselungsmaterialien von dem Schlüsselbund oder Hauptschlüsselanbieter, den Sie angeben. Dabei könnte es sich um einen Aufruf eines kryptographischen Dienstes handeln, z. B. AWS Key Management Service (AWS KMS).

Da der als Bindeglied zwischen dem AWS Encryption SDK und einem Schlüsselbund (oder Hauptschlüsselanbieter) CMM fungiert, ist er ein idealer Ort für Anpassungen und Erweiterungen, z. B. zur Unterstützung von Richtliniendurchsetzung und Zwischenspeicherung. Das AWS Encryption SDK bietet eine Zwischenspeicherung zur Unterstützung der Zwischenspeicherung CMM von Datenschlüsseln.

Symmetrische und asymmetrische Verschlüsselung

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.

Der AWS Encryption SDK verwendet die Envelope-Verschlüsselung. 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 gibt eine verschlüsselte Nachricht zurück, die die verschlüsselten Daten und mindestens eine verschlüsselte Kopie des Datenschlüssels enthält.

Verschlüsseln Ihrer Daten (symmetrische Verschlüsselung)

Um Ihre Daten zu verschlüsseln, AWS Encryption SDK verwendet der einen symmetrischen Datenschlüssel und eine Algorithmussuite, die einen symmetrischen Verschlüsselungsalgorithmus enthält. Um die Daten zu entschlüsseln, AWS Encryption SDK verwendet der denselben Datenschlüssel und dieselbe Algorithmussuite.

Verschlüsselung Ihres Datenschlüssels (symmetrische oder asymmetrische Verschlüsselung)

Der Schlüsselbund oder Hauptschlüsselanbieter, 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- oder Hauptschlüsselanbieter wählen, der symmetrische Verschlüsselung verwendet, z. B. einen AWS KMS Schlüsselbund, oder einen Anbieter, der asymmetrische Verschlüsselung verwendet, z. B. einen Rohschlüsselbund oder. RSA JceMasterKey

Wichtiges Engagement

Das AWS Encryption SDK unterstützt Key Commitment (manchmal auch als Robustheit bezeichnet), eine Sicherheitseigenschaft, die garantiert, dass jeder Chiffretext nur in einen einzigen Klartext entschlüsselt werden kann. Zu diesem Zweck garantiert Key Commitment, dass nur der Datenschlüssel, mit dem Ihre Nachricht verschlüsselt wurde, zur Entschlüsselung verwendet wird. Das Verschlüsseln und Entschlüsseln mit Key Commitment ist eine AWS Encryption SDK bewährte Methode.

Die meisten modernen symmetrischen Chiffren (einschließlichAES) verschlüsseln Klartext unter einem einzigen geheimen Schlüssel, z. B. dem eindeutigen Datenschlüssel, mit dem jede Klartextnachricht verschlüsselt wird AWS Encryption SDK . Beim Entschlüsseln dieser Daten 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. Es ist jedoch 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 einige Byte Chiffretext in einen anderen, aber dennoch verständlichen Klartext entschlüsseln kann.

Der verschlüsselt AWS Encryption SDK immer jede Klartext-Nachricht unter einem eindeutigen Datenschlüssel. Es kann diesen Datenschlüssel unter mehreren Umschließungsschlüsseln (oder Hauptschlüsseln) verschlüsseln, aber die Umschließungsschlüssel verschlüsseln immer denselben Datenschlüssel. Dennoch kann eine ausgeklügelte, manuell erstellte verschlüsselte Nachricht tatsächlich unterschiedliche Datenschlüssel enthalten, von denen jeder mit einem anderen Umschließungsschlüssel verschlüsselt ist. Entschlüsselt beispielsweise ein Benutzer die verschlüsselte Nachricht, wird 0x0 (falsch) zurückgegeben, während ein anderer Benutzer, der dieselbe verschlüsselte Nachricht entschlüsselt, 0x1 (wahr) erhält.

Um dieses Szenario zu verhindern, AWS Encryption SDK unterstützt der Key Commitment beim Verschlüsseln und Entschlüsseln. Beim AWS Encryption SDK Verschlüsseln einer Nachricht mit Schlüsselzusage wird der eindeutige Datenschlüssel, der den Chiffretext erzeugt hat, kryptografisch an die Schlüsselverbindungszeichenfolge gebunden, eine nicht geheime Datenschlüssel-ID. Anschließend speichert es die Schlüsselbestätigungszeichenfolge in den Metadaten der verschlüsselten Nachricht. Beim Entschlüsseln einer Nachricht mit Schlüsselzusage wird AWS Encryption SDK überprüft, ob der Datenschlüssel der einzige Schlüssel für diese verschlüsselte Nachricht ist. Wenn die Überprüfung des Datenschlüssels fehlschlägt, schlägt der Entschlüsselungsvorgang fehl.

Die Support für Key Commitment wurde in Version 1.7 eingeführt. x, das Nachrichten mit Key Commitment entschlüsseln kann, aber nicht mit Key Commitment verschlüsselt. Sie können diese Version verwenden, um die Fähigkeit zur Entschlüsselung von Chiffretext mit Schlüsselbindung vollständig auszuschöpfen. Version 2.0. x beinhaltet volle Unterstützung für Key Commitment. Standardmäßig verschlüsselt und entschlüsselt es nur mit Key Commitment. Dies ist eine ideale Konfiguration für Anwendungen, die keinen Chiffretext entschlüsseln müssen, der mit früheren Versionen von verschlüsselt wurde. AWS Encryption SDK

Obwohl das Verschlüsseln und Entschlüsseln mit Schlüsselbindung eine bewährte Methode ist, überlassen wir Ihnen die Entscheidung, wann es verwendet wird, und Sie können das Tempo, in dem Sie es einführen, anpassen. Ab Version 1.7. x AWS Encryption SDK unterstützt eine Commitment-Richtlinie, die die standardmäßige Algorithmussuite festlegt und die Anzahl der Algorithmus-Suiten einschränkt, die verwendet werden können. Diese Richtlinie legt fest, ob Ihre Daten mit Schlüsselbindung ver- oder entschlüsselt werden.

Key Commitment führt zu einer etwas größeren (+ 30 Byte) verschlüsselten Nachricht und die Verarbeitung nimmt mehr Zeit in Anspruch. Wenn Ihre Anwendung sehr empfindlich auf Größe oder Leistung reagiert, können Sie sich dafür entscheiden, die Schlüsselzuweisung zu deaktivieren. Aber tun Sie das nur, wenn Sie müssen.

Weitere Informationen zur Migration auf Versionen 1.7. x und 2.0. x, einschließlich ihrer wichtigsten Commitment-Funktionen, sieheMigrieren Sie IhreAWS Encryption SDK. Technische Informationen zu den wichtigsten Verpflichtungen finden Sie unter AWS Encryption SDK Referenz zu Algorithmen undAWS Encryption SDK Referenz zum Nachrichtenformat.

Verpflichtungspolitik

Eine Commitment-Richtlinie ist eine Konfigurationseinstellung, die bestimmt, ob Ihre Anwendung mit Key Commitment ver- oder entschlüsselt wird. Das Verschlüsseln und Entschlüsseln mit Key Commitment ist eine bewährte Methode.AWS Encryption SDK

Die Verpflichtungspolitik hat drei Werte.

Anmerkung

Möglicherweise müssen Sie horizontal oder vertikal scrollen, um die gesamte Tabelle zu sehen.

Verbindungspolitische Werte
Wert Verschlüsselt mit Schlüsselzusage Verschlüsselt ohne Schlüsselbindung Entschlüsselt mit Schlüsselbindung Entschlüsselt ohne Schlüsselbindung
ForbidEncryptAllowDecrypt Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation.
RequireEncryptAllowDecrypt Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation.
RequireEncryptRequireDecrypt Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation.

Die Richtlinieneinstellung für Verpflichtungen wurde in AWS Encryption SDK Version 1.7 eingeführt. x. Es ist in allen unterstützten Programmiersprachen gültig.

  • ForbidEncryptAllowDecryptentschlüsselt mit oder ohne Key Commitment, verschlüsselt aber nicht mit Key Commitment. Dieser Wert wurde in Version 1.7 eingeführt. x wurde entwickelt, um alle Hosts, auf denen Ihre Anwendung ausgeführt wird, darauf vorzubereiten, mit Key Commitment zu entschlüsseln, bevor sie jemals auf einen mit Key Commitment verschlüsselten Chiffretext stoßen.

  • RequireEncryptAllowDecryptverschlüsselt immer mit Key Commitment. Es kann mit oder ohne Schlüsselbindung entschlüsselt werden. Dieser Wert wurde in Version 2.0 eingeführt. x, ermöglicht es Ihnen, mit der Verschlüsselung mit Schlüsselzusage zu beginnen, ältere Chiffretexte aber trotzdem ohne Schlüsselbindung zu entschlüsseln.

  • RequireEncryptRequireDecryptverschlüsselt und entschlüsselt nur mit Schlüsselzusage. Dieser Wert ist der Standardwert für Version 2.0. x. Verwenden Sie diesen Wert, wenn Sie sicher sind, dass alle Ihre Chiffretexte mit Schlüsselbindung verschlüsselt sind.

Die Richtlinieneinstellung „Commitment“ bestimmt, welche Algorithmus-Suites Sie verwenden können. Ab Version 1.7. x, der AWS Encryption SDK unterstützt Algorithmus-Suites für Key Commitment; mit und ohne Signierung. Wenn Sie eine Algorithmus-Suite angeben, die mit Ihrer Commitment-Richtlinie in Konflikt steht, wird ein Fehler AWS Encryption SDK zurückgegeben.

Hilfe bei der Festlegung Ihrer Verpflichtungsrichtlinie finden Sie unterFestlegung Ihrer Verpflichtungspolitik.

Digitale Signaturen

Der AWS 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 - jedoch symmetrische Schlüssel GCM 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 kann. Wenn Sie beispielsweise einen AWS KMS key als Umschließungsschlüssel verwenden, könnte ein Benutzer mit kms:Decrypt entsprechenden Berechtigungen verschlüsselte Chiffretexte erstellen, ohne ihn anzurufen. kms:Encrypt

Um dieses Problem zu vermeiden, AWS Encryption SDK unterstützt der das Hinzufügen einer Signatur mit dem Elliptic Curve Digital Signature Algorithm (ECDSA) am Ende verschlüsselter Nachrichten. Wenn eine Signaturalgorithmus-Suite verwendet wird, AWS Encryption SDK generiert sie für jede verschlüsselte Nachricht ein temporäres Paar aus privatem Schlüssel und öffentlichem Schlüssel. Der AWS Encryption SDK speichert den öffentlichen Schlüssel im Verschlüsselungskontext des Datenschlüssels 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 im Nachrichtenkopf an den verschlüsselten Datenschlüssel und verhindert so, dass Benutzer, die nur Nachrichten entschlüsseln können, den öffentlichen Schlüssel ändern oder die Signaturüberprüfung beeinträchtigen.

Die Signaturüberprüfung führt zu erheblichen Leistungseinbußen bei der Entschlüsselung. Wenn die Benutzer, die Daten verschlüsseln, und die Benutzer, die Daten entschlüsseln, gleichermaßen vertrauenswürdig sind, sollten Sie erwägen, eine Algorithmussuite zu verwenden, die das Signieren nicht beinhaltet.

Anmerkung

Wenn der Schlüsselbund oder der Zugriff auf das kryptografische Umhüllungsmaterial nicht zwischen Verschlüsselern und Entschlüsselern unterscheidet, bieten digitale Signaturen keinen kryptografischen Wert.

AWS KMS Schlüsselbunde, einschließlich des asymmetrischen RSA AWS KMS Schlüsselbunds, können auf der Grundlage wichtiger Richtlinien und Richtlinien zwischen Verschlüsselern und Entschlüsselern unterscheiden. AWS KMS IAM

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 ECDHSchlüsselbund

  • Roher Schlüsselbund AES

  • RSARoher Schlüsselring

  • ECDHRoher Schlüsselring