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 im AWS Encryption SDK
In diesem Abschnitt werden die im AWS Encryption SDK verwendeten Konzepte vorgestellt und ein Glossar sowie eine Referenz bereitgestellt. Es soll Ihnen helfen, die AWS Encryption SDK Funktionsweise und die Begriffe, mit denen wir sie beschreiben, zu verstehen.
Benötigen Sie Hilfe?
-
Erfahren Sie, wie die Umschlagverschlüsselung AWS Encryption SDK verwendet, um Ihre Daten zu schützen.
-
Erfahren Sie mehr über die Elemente der Umschlagverschlüsselung: die Datenschlüssel, die Ihre Daten schützen, und die Umhüllungsschlüssel, die Ihre Datenschlüssel schützen.
-
Erfahren Sie mehr über die Schlüsselanhänger und Hauptschlüsselanbieter, die bestimmen, welche Wrap-Schlüssel Sie verwenden.
-
Erfahren Sie mehr über den Verschlüsselungskontext, der Ihrem Verschlüsselungsprozess Integrität verleiht. Es ist optional, aber es ist eine bewährte Methode, die wir empfehlen.
-
Erfahren Sie mehr über die verschlüsselte Nachricht, die von den Verschlüsselungsmethoden zurückgegeben wird.
-
Dann sind Sie bereit, das AWS Encryption SDK in Ihrer bevorzugten Programmiersprache zu verwenden.
Themen
- Envelope-Verschlüsselung
- Datenschlüssel
- Schlüssel zum Umschließen
- Schlüsselanhänger und Hauptschlüsselanbieter
- Verschlüsselungskontext
- Verschlüsselte Nachricht
- Algorithmen-Paket
- Manager von kryptographischen Materialien
- Symmetrische und asymmetrische Verschlüsselung
- Wichtiges Engagement
- Verpflichtungspolitik
- Digitale Signaturen
Envelope-Verschlü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.
- 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 Wrapping-Schlüssel angeben, der einen der verschlüsselten Datenschlüssel entschlüsseln kann.
- Kombination der Stärken mehrerer Algorithmen
-
Um Ihre Daten zu verschlüsseln, AWS Encryption SDK verwendet der standardmäßig eine ausgeklügelte Algorithmussuite mit symmetrischer AES-GCM-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. Wenn Sie nicht Datenschlüssel-Caching nutzen, verwendet das AWS Encryption SDK einen eindeutigen Datenschlüssel zum Verschlüsseln der einzelnen Nachrichten.
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 das AWS Encryption SDK Ihre Klartext-Datenschlüssel zum Verschlüsseln Ihrer Daten verwendet, entfernt es sie schnellstmöglich aus dem Arbeitsspeicher. 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
Im AWS Encryption SDK unterscheiden wir Datenschlüssel und Datenverschlüsselungsschlüssel. Mehrere der unterstützten Algorithmen-Pakete, einschließlich des Standardpakets, verwenden eine Schlüsselableitungsfunktion
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 Wrapping-Schlüssel, wie z. B. AWS Key Management Service (AWS KMS) symmetrische Schlüssel AWS KMS keys(einschließlich KMS-Schlüssel für mehrere Regionen), AES-GCM-Rohschlüssel (Advanced Encryption Standard/Galois Counter Mode) und RSA-Rohschlüssel. Sie können auch Ihre eigenen Wrapping-Schlüssel 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:
-
Verwenden Sie einen Webservice, der für diesen Zweck vorgesehen ist, wie z. B. AWS Key Management Service (AWS KMS)
. -
Verwenden Sie ein Hardwaresicherheitsmodul (HSM)
, wie z. B. die Angebote von AWS CloudHSM . -
Verwenden Sie andere wichtige Verwaltungstools und -dienste.
Wenn Sie kein Schlüsselverwaltungssystem haben, empfehlen wir AWS KMS. Das AWS Encryption SDK lässt sich integrierenAWS KMS, um Ihnen zu helfen, Ihre Wrapping Keys zu schützen und zu verwenden. Für das AWS Encryption SDK ist jedoch kein AWS Service erforderlichAWS.
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 (C, C# /.NET und JavaScript) oder einen Hauptschlüsselanbieter (Java, Python, CLI). Sie können die von ihm bereitgestellten Schlüsselringe und Hauptschlüsselanbieter verwenden oder Ihre eigenen AWS Encryption SDK 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 C, C# /.NET und Version 3 JavaScript unterstützt. x von. AWS-Verschlüsselungs-SDK for Java
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 Encryption CLI unterstützt.
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 verwendete Verschlüsselungskontext besteht aus dem von Ihnen angegebenen Verschlüsselungskontext und einem öffentlichen key pair, das der Cryptographic Materials Manager (CMM) hinzufügt. AWS Encryption SDK Genauer gesagt: Wann immer Sie einen Verschlüsselungsalgorithmus mit Signatur verwenden, fügt der CMM ein Name-Wert-Paar zum Verschlüsselungskontext hinzu, der aus einem reservierten Namen, aws-crypto-public-key
und einem Wert besteht, der den öffentlichen Verifizierungsschlüssel darstellt. Der aws-crypto-public-key
-Name im Verschlüsselungskontext ist vom AWS Encryption SDK reserviert und kann nicht als Name in einem anderen Paar im Verschlüsselungskontext verwendet werden. Weitere Informationen finden Sie unter AAD in Nachrichtenformat – Referenz.
Der folgende Beispiel-Verschlüsselungskontext besteht aus zwei Verschlüsselungskontext-Paaren, die in der Anfrage angegeben werden, und dem öffentlichen Schlüsselpaar, 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 das AWS Encryption SDK den Verschlüsselungskontext aus dem Header der verschlüsselten Nachricht extrahieren 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 einen Verschlüsselungskontext in einem Entschlüsselungsbefehl angeben, überprüft die CLI, dass die Werte im Verschlüsselungskontext der verschlüsselten Nachricht vorhanden sind, bevor sie die Klartextdaten zurückgibt.
-
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 von AWS Encryption SDK für .NET und Version 3. x von AWS-Verschlüsselungs-SDK for Java, Sie können für alle Verschlüsselungsanforderungen mit dem erforderlichen Verschlüsselungskontext CMM einen Verschlüsselungskontext 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 AWS Key Management Service verwenden, kann der Verschlüsselungskontext auch im Klartext in Audit-Datensätzen und Protokollen wie AWS CloudTrail erscheinen.
Beispiele für das Senden 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 AWS Encryption SDK verschlüsseln, 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 Pakete verwenden Advanced Encryption Standard (AES) als primären Algorithmus und kombinieren ihn mit anderen Algorithmen und Werten.
Das AWS Encryption SDK richtet ein empfohlenes Algorithmen-Paket als Standard für alle Verschlüsselungsoperationen ein. 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 Manager (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
Wenn Ihre Anwendung eine hohe Leistung erfordert und die Benutzer, die Daten verschlüsseln, und diejenigen, 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 Funktion zur Schlüsselableitung 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 das Standard-CMM oder das von ihm bereitgestellte Cache-CMM verwenden oder ein AWS Encryption SDK benutzerdefiniertes CMM schreiben. Und Sie können ein CMM angeben, das ist jedoch nicht erforderlich. Wenn Sie einen Schlüsselbund oder einen Hauptschlüsselanbieter angeben, AWS Encryption SDK erstellt dieser ein Standard-CMM für Sie. Das Standard-CMM ruft die Ver- oder Entschlüsselungsmaterialien von dem Schlüsselbund oder Hauptschlüsselanbieter ab, den Sie angeben. Dabei könnte es sich um einen Aufruf eines kryptographischen Dienstes handeln, z. B. AWS Key Management Service (AWS KMS).
Da das CMM als Bindeglied zwischen dem AWS Encryption SDK und einem Schlüsselbund (oder Hauptschlüsselanbieter) fungiert, ist es ein idealer Ort für Anpassungen und Erweiterungen, z. B. zur Unterstützung der Richtliniendurchsetzung und Zwischenspeicherung. Das AWS Encryption SDK bietet einen Caching-CMM zur Unterstützung des Datenschlüssel-Cachings.
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. Einzelheiten finden Sie unter Kryptografische Algorithmen im AWSCryptographic Services and Tools Guide.
Der AWS Encryption SDK verwendet 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 RSA-Rohschlüsselbund oder.
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ßlich AES) verschlüsseln Klartext unter einem einzigen geheimen Schlüssel, z. B. dem eindeutigen Datenschlüssel, mit dem jede Klartextnachricht verschlüsselt wirdAWS 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 für 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 | ![]() |
![]() |
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RequireEncryptAllowDecrypt | ![]() |
![]() |
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RequireEncryptRequireDecrypt | ![]() |
![]() |
![]() |
![]() |
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.
ForbidEncryptAllowDecrypt
entschlüsselt mit oder ohne Key Commitment, verschlüsselt aber nicht mit Key Commitment. Dies ist der einzig gültige Wert für die Commitment-Richtlinie in Version 1.7. x und es wird für alle Verschlüsselungs- und Entschlüsselungsvorgänge verwendet. Es 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.-
RequireEncryptAllowDecrypt
verschlü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. -
RequireEncryptRequireDecrypt
verschlüsselt und entschlüsselt nur mit Schlüsselbindung. 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
Um die Integrität einer digitalen Nachricht bei der Übertragung zwischen Systemen sicherzustellen, können Sie eine digitale Signatur auf die Nachricht anwenden. Digitale Signaturen sind immer asymmetrisch. Sie verwenden Ihren privaten Schlüssel, um die Signatur zu erstellen, und hängen sie an die ursprüngliche Nachricht an. Ihr Empfänger verwendet einen öffentlichen Schlüssel, um sicherzustellen, dass die Nachricht seit dem Signieren nicht geändert wurde.
Der AWS Encryption SDK verschlüsselt Ihre Daten mithilfe eines 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 Schlüssel als Umschließungsschlüssel verwenden, bedeutet dies, dass ein Benutzer mit KMS Decrypt-Berechtigungen verschlüsselte Chiffretexte erstellen kann, ohne KMS Encrypt aufrufen zu müssen.
Um dieses Problem zu vermeiden, AWS Encryption SDK unterstützt der das Hinzufügen einer ECDSA-Signatur (Elliptic Curve Digital Signature Algorithm) 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, sodass niemand eine weitere Signatur erstellen kann, die mit dem öffentlichen Schlüssel verifiziert wird. Da der Algorithmus den öffentlichen Schlüssel als zusätzliche authentifizierte Daten im Nachrichtenkopf an den verschlüsselten Datenschlüssel bindet, kann ein Benutzer, der nur Nachrichten entschlüsseln kann, den öffentlichen Schlüssel nicht ändern.
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.