Schlüsselringe - 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.

Schlüsselringe

Unterstützte Programmiersprachenimplementierungen verwenden Schlüsselringe zur Verschlüsselung von Umschlägen. Schlüsselbunde generieren, verschlüsseln und entschlüsseln Datenschlüssel. Schlüsselringe bestimmen die Quelle der eindeutigen Datenschlüssel, die jede Nachricht schützen, und der Umschließungsschlüssel, die diesen Datenschlüssel verschlüsseln. Sie geben bei der Verschlüsselung einen Schlüsselbund und bei der Entschlüsselung denselben oder einen anderen Schlüsselbund an. Sie können die vom SDK bereitgestellten Schlüsselbunde verwenden oder Ihren eigenen kompatiblen, benutzerdefinierten Schlüsselbunde schreiben.

Sie können jeden Schlüsselbund einzeln verwenden oder Schlüsselbunde in einen Multi-Schlüsselbund kombinieren. Obwohl die meisten Schlüsselbunde Datenschlüssel generieren, verschlüsseln und entschlüsseln können, können Sie einen Schlüsselbund erstellen, der nur eine bestimmte Operation ausführt, wie z. B. einen Schlüsselbund, der nur Datenschlüssel generiert. Dieser Schlüsselbund kann dann in Kombination mit anderen verwendet werden.

Wir empfehlen Ihnen, einen Schlüsselbund zu verwenden, der Ihre Wrapping-Schlüssel schützt und kryptografische Operationen innerhalb einer sicheren Grenze ausführt, wie z. B. den AWS KMS Schlüsselbund, der diesen Never Never Leave () AWS KMS keys unverschlüsselt verwendet. AWS Key Management ServiceAWS KMS Sie können auch einen Schlüsselbund schreiben, bei dem Schlüssel zum Umschließen von Schlüsseln verwendet werden, die in Ihren Hardware-Sicherheitsmodulen (HSMs) gespeichert oder durch andere Master-Key-Dienste geschützt sind. Weitere Informationen finden Sie im Thema Schlüsselbundschnittstelle in der AWS Encryption SDK -Spezifikation.

Schlüsselringe spielen die Rolle der Hauptschlüssel und Hauptschlüsselanbieter, die in anderen Programmiersprachenimplementierungen verwendet werden. Wenn Sie unterschiedliche Sprachimplementierungen von verwenden, um Ihre Daten AWS Encryption SDK zu verschlüsseln und zu entschlüsseln, stellen Sie sicher, dass Sie kompatible Schlüsselringe und Hauptschlüsselanbieter verwenden. Details hierzu finden Sie unter Schlüsselbund-Kompatibilität.

In diesem Thema wird erklärt, wie Sie die Schlüsselbundfunktion von verwenden AWS Encryption SDK und wie Sie einen Schlüsselbund auswählen.

Funktionsweise von Schlüsselbunden

Wenn Sie Daten verschlüsseln, AWS Encryption SDK fragt der den Schlüsselbund nach Verschlüsselungsmaterial. Der Schlüsselbund gibt einen Klartext-Datenschlüssel und eine Kopie des Datenschlüssels zurück, der durch die einzelnen Schlüssel im Schlüsselbund verschlüsselt wird. Der AWS Encryption SDK verwendet den Klartext-Schlüssel, um die Daten zu verschlüsseln, und zerstört dann den Klartext-Datenschlüssel. Anschließend wird eine verschlüsselte Nachricht AWS Encryption SDK zurückgegeben, die die verschlüsselten Datenschlüssel und die verschlüsselten Daten enthält.

Verschlüsselung mit einem Schlüsselbund mit mehreren Wrapping-Schlüsseln.

Wenn Sie Daten entschlüsseln, können Sie denselben Schlüsselbund verwenden, den Sie zum Verschlüsseln der Daten verwendet haben, oder einen anderen. Um die Daten zu entschlüsseln, muss ein Entschlüsselungsschlüsselbund mindestens einen Umschließungsschlüssel im Schlüsselbund enthalten (oder Zugriff darauf haben).

Der AWS Encryption SDK übergibt die verschlüsselten Datenschlüssel aus der verschlüsselten Nachricht an den Schlüsselbund und fordert den Schlüsselbund auf, einen davon zu entschlüsseln. Der Schlüsselbund verwendet seine Umhüllungsschlüssel zum Entschlüsseln eines der verschlüsselten Datenschlüssel und gibt einen Klartext-Datenschlüssel zurück. Das AWS Encryption SDK entschlüsselt die Daten mithilfe des Klartext-Datenschlüssels. Wenn keiner der Umhüllungsschlüssel im Schlüsselbund einen der verschlüsselten Datenschlüssel entschlüsseln kann, schlägt der Entschlüsselungsvorgang fehl.

Entschlüsseln mit einem Schlüsselbund.

Sie können einen einzelnen Schlüsselbund verwenden oder Schlüsselbunde desselben Typs oder eines anderen Typs in einem Multi-Schlüsselbund kombinieren. Wenn Sie Daten verschlüsseln, gibt der Multi-Schlüsselbund eine Kopie des Datenschlüssels zurück, der von allen Umhüllungsschlüsseln in allen Schlüsselbunden verschlüsselt wurde, aus denen der Multi-Schlüsselbund besteht. Sie können die Daten mithilfe eines Schlüsselbundes entschlüsseln, wobei jeder der Schlüssel im Mehrfachschlüsselbund eingeschlossen ist.

Schlüsselbund-Kompatibilität

Obwohl die verschiedenen Sprachimplementierungen von einige architektonische Unterschiede AWS Encryption SDK aufweisen, sind sie vollständig kompatibel und unterliegen sprachlichen Einschränkungen. Sie können Ihre Daten mit einer Sprachimplementierung verschlüsseln und mit jeder anderen Sprachimplementierung entschlüsseln. Sie müssen jedoch dieselben oder entsprechende Wrapping-Schlüssel verwenden, um Ihre Datenschlüssel zu verschlüsseln und zu entschlüsseln. Informationen zu Spracheinschränkungen finden Sie im Thema zu den einzelnen Sprachimplementierungen, z. B. Kompatibilität der AWS-Verschlüsselungs-SDK for JavaScript im AWS-Verschlüsselungs-SDK for JavaScript Thema.

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

  • Version 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 der Cryptographic Material Providers Library (MPL) verwendet wird.

  • AWS Encryption SDK für Rust

  • AWS Encryption SDK für Go

Unterschiedliche Anforderungen für Verschlüsselungsschlüsselringe

In anderen AWS Encryption SDK Sprachimplementierungen als dem AWS-Verschlüsselungs-SDK for C müssen alle Schlüssel in einem Verschlüsselungsschlüsselbund (oder einem Masterschlüsselbund) oder einem Masterschlüsselanbieter in der Lage sein, den Datenschlüssel zu verschlüsseln. Wenn ein Umschließungsschlüssel nicht verschlüsselt werden kann, schlägt die Verschlüsselungsmethode fehl. Daher muss der Anrufer über die erforderlichen Berechtigungen für alle Schlüssel im Schlüsselbund verfügen. Wenn Sie einen Discovery-Schlüsselbund verwenden, um Daten allein oder in einem Mehrfachschlüsselbund zu verschlüsseln, schlägt der Verschlüsselungsvorgang fehl.

Die Ausnahme ist der AWS-Verschlüsselungs-SDK for C, bei dem der Verschlüsselungsvorgang einen standardmäßigen Erkennungsschlüsselbund ignoriert, aber fehlschlägt, wenn Sie einen Erkennungsschlüsselbund mit mehreren Regionen angeben, allein oder in einem Schlüsselbund mit mehreren Schlüsselbunden.

Kompatible Schlüsselbunde und Masterschlüssel-Anbieter

Die folgende Tabelle zeigt, welche Hauptschlüssel und Hauptschlüsselanbieter mit den mitgelieferten Schlüsselbunden kompatibel sind. AWS Encryption SDK Geringfügige Inkompatibilitäten aufgrund von Spracheinschränkungen werden im Thema über die Sprachimplementierung beschrieben.

Schlüsselbund: Hauptschlüsselanbieter:
AWS KMS Schlüsselring

KMSMasterSchlüssel (Java)

KMSMasterKeyProvider (Java)

KMSMasterSchlüssel (Python)

KMSMasterKeyProvider (Python)

Anmerkung

Die AWS-Verschlüsselungs-SDK for Python und enthalten AWS-Verschlüsselungs-SDK for Java keinen Hauptschlüssel oder Hauptschlüsselanbieter, was dem AWS KMS regionalen Discovery-Schlüsselbund entspricht.

AWS KMS Hierarchischer Schlüsselbund

Wird von den folgenden Programmiersprachen und Versionen unterstützt:

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

  • Ausführung 4. x von AWS Encryption SDK für .NET

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

  • Version 1. x von der AWS Encryption SDK für Rust

  • Version 0.1. x oder höher von AWS Encryption SDK for Go

AWS KMS ECDH-Schlüsselanhänger

Wird von den folgenden Programmiersprachen und Versionen unterstützt:

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

  • Ausführung 4. x von AWS Encryption SDK für .NET

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

  • Version 1. x von der AWS Encryption SDK für Rust

  • Version 0.1. x oder höher von AWS Encryption SDK for Go

Unformatierter AES-Schlüsselbund

Wenn sie mit symmetrischen Verschlüsselungsschlüsseln verwendet werden:

JceMasterKey(Java)

RawMasterKey(Python)

Unformatierter RSA-Schlüsselbund

Wenn sie mit asymmetrischen Verschlüsselungsschlüsseln verwendet werden:

JceMasterKey(Java)

RawMasterKey(Python)

Anmerkung

Der Raw RSA-Schlüsselbund unterstützt keine asymmetrischen KMS-Schlüssel. Wenn Sie asymmetrische RSA-KMS-Schlüssel verwenden möchten, Version 4. x of the AWS Encryption SDK für .NET unterstützt AWS KMS Schlüsselringe, die symmetrische Verschlüsselung (SYMMETRIC_DEFAULT) oder asymmetrisches RSA verwenden. AWS KMS keys

Roher ECDH-Schlüsselbund

Wird von den folgenden Programmiersprachen und Versionen unterstützt:

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

  • Ausführung 4. x von AWS Encryption SDK für .NET

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

  • Version 1. x von der AWS Encryption SDK für Rust

  • Version 0.1. x oder höher von AWS Encryption SDK for Go