View a markdown version of this page

Weitere Informationen zum Datenschlüssel-Caching - 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.

Weitere Informationen zum Datenschlüssel-Caching

Für die meisten Anwendungen ist die Standard-Implementierung des Datenschlüssel-Cachings ausreichend, ohne dass benutzerdefinierter Code geschrieben werden muss. Dieser Abschnitt beschreibt die Standard-Implementierung und einige Details zu Optionen.

Wie das Datenschlüssel-Caching funktioniert

Wenn Sie Datenschlüssel-Caching in einer Anfrage verwenden, um Daten zu verschlüsseln oder zu entschlüsseln, sucht das AWS Encryption SDK zuerst im Cache nach einem Datenschlüssel, der der Anfrage entspricht. Wenn es eine gültige Übereinstimmung findet, verwendet es den zwischengespeicherten Datenschlüssel, um die Daten zu verschlüsseln. Andernfalls erzeugt es einen neuen Datenschlüssel, genau wie ohne den Cache.

Das Datenschlüssel-Caching wird nicht für Daten unbekannter Größe verwendet, wie z. B. gestreamte Daten. Dadurch kann das Caching-CMM den Schwellenwert für die maximale Byteanzahl ordnungsgemäß durchsetzen. Um dieses Verhalten zu vermeiden, fügen Sie der Verschlüsselungsanfrage die Nachrichtengröße hinzu.

Zusätzlich zu einem Cache verwendet das Zwischenspeichern von Datenschlüsseln einen Caching-Manager für kryptografische Materialien (Caching CMM). Das Caching-CMM ist ein spezialisierter Manager für kryptografische Materialien (CMM), der mit einem Cache und einem zugrunde liegenden CMM interagiert. Erstellen eines Cache für kryptografische Materialien Manager von kryptographischen Materialien (Wenn Sie einen Master-Key-Anbieter oder einen Schlüsselbund angeben, wird ein Standard-CMM für Sie AWS Encryption SDK erstellt.) Das Caching-CMM speichert die Datenschlüssel, die das zugrunde liegende CMM zurückgibt, im Cache. Das Cache-CMM setzt auch die von Ihnen festgelegten Cache-Sicherheitsgrenzwerte durch.

Um zu verhindern, dass der falsche Datenschlüssel aus dem Cache ausgewählt wird, erfordern alle kompatiblen Caching-CMMs, dass die folgenden Eigenschaften der im Cache gespeicherten kryptographischen Materialien mit der Materialanforderung übereinstimmen.

Anmerkung

Der AWS Encryption SDK speichert Datenschlüssel nur dann im Cache, wenn die Algorithmus-Suite eine Schlüsselableitungsfunktion verwendet.

Die folgenden Workflows zeigen, wie eine Anforderung zum Verschlüsseln von Daten mit und ohne Datenschlüssel-Caching verarbeitet wird. Sie zeigen, wie die von Ihnen erstellten Caching-Komponenten, einschließlich des Caches und des Caching-CMM, in dem Prozess verwendet werden.

Verschlüsseln von Daten ohne Caching

So rufen Sie Verschlüsselungsmaterialien ohne Caching ab:

  1. Eine Anwendung fordert sie auf, Daten AWS Encryption SDK zu verschlüsseln.

    Die Anfrage gibt einen Masterkey-Anbieter oder einen Schlüsselbund an. Das AWS Encryption SDK erstellt ein Standard-CMM, das mit Ihrem Masterkey-Anbieter oder Ihrem Schlüsselbund interagiert.

  2. Das AWS Encryption SDK fragt das CMM nach Verschlüsselungsmaterial (besorgen Sie sich kryptografisches Material).

  3. Das CMM fragt seinen Schlüsselbund (C und JavaScript) oder seinen Master-Key-Anbieter (Java und Python) nach kryptografischem Material. Dies kann einen Aufruf eines kryptografischen Dienstes wie () beinhalten. AWS Key Management Service AWS KMS Das CMM gibt die Verschlüsselungsmaterialien an den zurück. AWS Encryption SDK

  4. Das AWS Encryption SDK verwendet den Klartext-Datenschlüssel, um die Daten zu verschlüsseln. Es speichert die verschlüsselten Daten und verschlüsselten Datenschlüssel in einer verschlüsselten Nachricht, die an den Benutzer zurückgegeben wird.

Verschlüsseln von Daten ohne Caching

Verschlüsseln von Daten mit Caching

So rufen Sie Verschlüsselungsmaterialien mit Datenschlüssel-Caching ab:

  1. Eine Anwendung fordert sie auf, Daten AWS Encryption SDK zu verschlüsseln.

    Die Anforderung gibt einen Manager für kryptografische Materialien für das Zwischenspeichern (Caching-CMM) an, der einem zugrunde liegenden Manager für kryptografische Materialien (CMM) zugeordnet ist. Wenn Sie einen Masterkey-Anbieter oder einen Schlüsselbund angeben, wird ein Standard-CMM für Sie erstellt. AWS Encryption SDK

  2. Das SDK fragt das angegebene Caching-CMM nach Verschlüsselungsmaterial.

  3. Das Caching-CMM fordert Verschlüsselungsmaterial aus dem Cache an.

    1. Findet der Cache eine Übereinstimmung, aktualisiert er die Alters- und Nutzungswerte des entsprechenden Cacheeintrags und gibt das zwischengespeicherte Verschlüsselungsmaterial an das Cache-CMM zurück.

      Wenn der Cache-Eintrag seinen Sicherheitsschwellenwerten entspricht, gibt ihn das Caching-CMM an das SDK zurück. Andernfalls weist es den Cache an, den Eintrag zu entfernen, und geht so vor, als gäbe es keine Übereinstimmung.

    2. Wenn der Cache keine gültige Übereinstimmung findet, fordert das zwischenspeichernde CMM das zugrundeliegende CMM auf, einen neuen Datenschlüssel zu generieren.

      Das zugrunde liegende CMM bezieht das kryptografische Material aus seinem Schlüsselbund (C und JavaScript) oder dem Hauptschlüsselanbieter (Java und Python). Dabei könnte es sich um einen Aufruf eines Dienstes handeln, z. B. AWS Key Management Service. Das zugrunde liegende CMM gibt die Klartext-Kopien und die verschlüsselten Kopien des Datenschlüssels an das zwischengespeicherte CMM zurück.

      Das Caching-CMM speichert das neue Verschlüsselungsmaterial im Cache.

  4. Das Caching-CMM gibt die Verschlüsselungsmaterialien an den zurück. AWS Encryption SDK

  5. Das AWS Encryption SDK verwendet den Klartext-Datenschlüssel, um die Daten zu verschlüsseln. Es speichert die verschlüsselten Daten und verschlüsselten Datenschlüssel in einer verschlüsselten Nachricht, die an den Benutzer zurückgegeben wird.

Verschlüsseln von Daten mit Datenschlüssel-Caching

Erstellen eines Cache für kryptografische Materialien

Das AWS Encryption SDK definiert die Anforderungen an einen Cache für kryptografische Materialien, der beim Zwischenspeichern von Datenschlüsseln verwendet wird. Es bietet auch einen lokalen Cache, bei dem es sich um einen konfigurierbaren, speicherinternen, am wenigsten zuletzt verwendeten Cache (LRU) handelt. Um eine Instanz des lokalen Caches zu erstellen, verwenden Sie den LocalCryptoMaterialsCache Konstruktor in Java und Python, die LocalCryptographicMaterialsCache Get-Funktion in JavaScript oder den aws_cryptosdk_materials_cache_local_new Konstruktor in C.

Der lokale Cache enthält Logik für die grundlegende Cacheverwaltung, einschließlich des Hinzufügens, Entfernens und Abgleichens zwischengespeicherter Einträge sowie der Verwaltung des Caches. Sie müssen keine benutzerdefinierte Cache-Verwaltungslogik schreiben. Sie können den lokalen Cache unverändert verwenden, ihn anpassen oder durch einen beliebigen kompatiblen Cache ersetzen.

Wenn Sie einen lokalen Cache erstellen, legen Sie dessen Kapazität fest, d. h. die maximale Anzahl von Einträgen, die der Cache aufnehmen kann. Diese Einstellung hilft Ihnen, einen effizienten Cache mit begrenzter Wiederverwendung von Datenschlüsseln zu entwerfen.

Die AWS-Verschlüsselungs-SDK for Java und die bieten AWS-Verschlüsselungs-SDK for Python außerdem einen Null-Cache für kryptografische Materialien (NullCryptoMaterialsCache). Der NullCryptoMaterialsCache gibt einen Fehlschlag für alle GET Operationen zurück und reagiert nicht auf PUT Operationen. Sie können das NullCryptoMaterialsCache beim Testen verwenden oder um das Caching in einer Anwendung, die Caching-Code enthält, vorübergehend zu deaktivieren.

In der AWS Encryption SDK ist jeder Cache für kryptografische Materialien einem Caching-Manager für kryptografische Materialien (Caching CMM) zugeordnet. Das Caching-CMM ruft Datenschlüssel aus dem Cache ab, legt Datenschlüssel in den Cache und setzt die von Ihnen festgelegten Sicherheitsgrenzwerte durch. Festlegen von Cache-Sicherheitsschwellenwerten Wenn Sie ein Caching-CMM erstellen, geben Sie den Cache an, den es verwendet, und das zugrundeliegende CMM oder den Masterkey-Provider, der die zwischengespeicherten Datenschlüssel generiert.

Erstellen eines Managers von kryptographischen Materialien, der Caching verwendet

Um das Zwischenspeichern von Datenschlüsseln zu aktivieren, erstellen Sie einen Cache und einen Caching-Manager für kryptografische Materialien (Caching-CMM). Anschließend geben Sie in Ihren Anforderungen zum Verschlüsseln oder Entschlüsseln von Daten ein CMM für das Zwischenspeichern an und nicht einen Standardmanager für kryptografische Materialien (CMM), einen Masterkey-Anbieter oder einen Schlüsselbund. Schlüsselanhänger und Hauptschlüsselanbieter

Es gibt zwei Arten von CMMs. Beide rufen Datenschlüssel (und verwandtes kryptografisches Material) ab, aber auf unterschiedliche Weise, wie folgt:

  • Ein CMM ist einem Schlüsselbund (C oder JavaScript) oder einem Masterkey-Provider (Java und Python) zugeordnet. Wenn das SDK das CMM nach Verschlüsselungs- oder Entschlüsselungsmaterial fragt, erhält das CMM das Material von seinem Schlüsselbund oder Masterkey-Anbieter. In Java und Python verwendet der CMM die Masterschlüssel zum Generieren, Verschlüsseln oder Entschlüsseln der Datenschlüssel. In C und generiert und JavaScript verschlüsselt der Schlüsselbund das kryptografische Material und gibt es zurück.

  • Ein Caching-CMM ist einem Cache, z. B. einem lokalen Cache, und einem zugrunde liegenden CMM zugeordnet. Wenn das SDK das Caching-CMM nach kryptografischem Material fragt, versucht das Caching-CMM, es aus dem Cache abzurufen. Wenn es keine Übereinstimmung findet, fragt das Caching-CMM das zugrundeliegende CMM nach den Materialien. Anschließend speichert er die neuen kryptografischen Materialien im Cache, bevor er sie an den Aufrufer zurückgibt.

Das Caching-CMM erzwingt auch Sicherheitsschwellenwerte, die Sie für jeden Cache-Eintrag festlegen. Da die Sicherheitsschwellenwerte im Caching-CMM festgelegt und von diesem durchgesetzt werden, können Sie jeden kompatiblen Cache verwenden, auch wenn der Cache nicht für vertrauliches Material konzipiert ist.

Was befinde sich in einem Datenschlüssel-Cache-Eintrag?

Das Datenschlüssel-Caching speichert Datenschlüssel und zugehörige kryptographische Materialien in einem Cache. Jeder Eintrag enthält die folgenden Elemente. Es gibt separate Caches für Verschlüsselung und Entschlüsselung, sodass beim Verschlüsseln einer Nachricht kein Cacheeintrag für die Entschlüsselung vorgewärmt wird. Diese Informationen könnten hilfreich sein, wenn Sie entscheiden, ob Sie die Funktion zum Zwischenspeichern von Datenschlüsseln verwenden möchten, und wenn Sie Sicherheitsschwellenwerte für einen Caching Cryptographic Materials Manager (CMM) festlegen.

Im Cache gespeicherte Einträge für Verschlüsselungsanfragen

Die Einträge, die einem Datenschlüssel-Cache durch eine Verschlüsselungsoperation hinzugefügt werden, umfassen folgende Elemente:

  • Klartext-Datenschlüssel

  • Verschlüsselte Datenschlüssel (einen oder mehrere)

  • Verschlüsselungskontext

  • Nachrichtensignaturschlüssel (falls verwendet)

  • Algorithmen-Paket

  • Metadaten, einschließlich Nutzungszähler für die Durchsetzung von Sicherheitsschwellenwerten

Im Cache gespeicherte Einträge für Entschlüsselungsanfragen

Die Einträge, die einem Datenschlüssel-Cache durch eine Entschlüsselungsoperation hinzugefügt werden, umfassen folgende Elemente:

  • Klartext-Datenschlüssel

  • Signaturverifizierungsschlüssel (falls verwendet)

  • Metadaten, einschließlich Nutzungszähler für die Durchsetzung von Sicherheitsschwellenwerten

Verschlüsselungskontext: Wie Cache-Einträge ausgewählt werden

Sie können in jeder Anfrage zur Verschlüsselung von Daten einen Verschlüsselungskontext angeben. Der Verschlüsselungskontext spielt eine spezielle Rolle beim Datenschlüssel-Caching. Damit können Sie Untergruppen von Datenschlüsseln in Ihrem Cache erstellen, auch wenn die Datenschlüssel aus demselben Caching-CMM stammen.

Ein Verschlüsselungskontext ist eine Gruppe von Schlüssel/Wert-Paaren mit zufälligen, nicht geheimen Daten. Bei der Entschlüsselung wird der Verschlüsselungskontext kryptographisch an die verschlüsselten Daten, sodass derselbe Verschlüsselungskontext zur Entschlüsselung der Daten benötigt wird. In der AWS Encryption SDK wird der Verschlüsselungskontext in der verschlüsselten Nachricht mit den verschlüsselten Daten und Datenschlüsseln gespeichert.

Wenn Sie einen Datenschlüssel-Cache verwenden, können Sie auch den Verschlüsselungskontext verwenden, um bestimmte im Cache gespeicherte Datenschlüssel für Ihre Verschlüsselungsvorgänge auszuwählen. Der Verschlüsselungskontext wird im Cache-Eintrag mit dem Datenschlüssel gespeichert (er ist Teil der Cache-Eintrag-ID). Im Cache gespeicherte Datenschlüssel werden nur wiederverwendet, wenn ihre Verschlüsselungskontexte übereinstimmen. Wenn Sie bestimmte Datenschlüssel für eine Verschlüsselungsanfrage wiederverwenden möchten, geben Sie den gleichen Verschlüsselungskontext an. Wenn Sie diese Datenschlüssel vermeiden möchten, geben Sie einen anderen Verschlüsselungskontext an.

Der Verschlüsselungskontext ist immer optional, wird aber empfohlen. Wenn Sie in Ihrer Anfrage keinen Verschlüsselungskontext angeben, wird ein leerer Verschlüsselungskontext in die Cache-Eintrag-ID aufgenommen und jeder Anfrage zugeordnet.

Benutzt meine Anwendung zwischengespeicherte Datenschlüssel?

Das Datenschlüssel-Caching ist eine Optimierungsstrategie, die für bestimmte Anwendungen und Workloads sehr effektiv ist. Da es jedoch ein gewisses Risiko mit sich bringt, ist es wichtig zu bestimmen, wie effektiv es für Ihre Situation ist, und dann zu entscheiden, ob der Nutzen die Risiken überwiegt.

Da das Datenschlüssel-Caching Datenschlüssel wiederverwendet, ist der offensichtlichste Effekt die Verringerung der Anzahl der Aufrufe, um neue Datenschlüssel zu generieren. Wenn das Zwischenspeichern von Datenschlüsseln implementiert ist, AWS Encryption SDK ruft der AWS KMS GenerateDataKey Vorgang nur auf, um den ursprünglichen Datenschlüssel zu erstellen, und wenn der Cache fehlschlägt. Das Caching verbessert jedoch die Leistung nur in Anwendungen, die zahlreiche Datenschlüssel mit den gleichen Eigenschaften generieren, einschließlich des gleichen Verschlüsselungskontexts und des gleichen Algorithmen-Pakets.

Probieren Sie die AWS Encryption SDK folgenden Techniken aus, um festzustellen, ob Ihre Implementierung von tatsächlich Datenschlüssel aus dem Cache verwendet.

  • Überprüfen Sie in den Protokollen Ihrer Masterkey-Infrastruktur die Häufigkeit der Aufrufe zur Erstellung neuer Datenschlüssel. Wenn das Datenschlüssel-Caching wirksam ist, sollte die Anzahl der Aufrufe zum Erstellen neuer Schlüssel spürbar fallen. Wenn Sie beispielsweise einen AWS KMS Masterkey-Anbieter oder einen Schlüsselbund verwenden, suchen Sie in den CloudTrail Protokollen nach GenerateDataKey Anrufen.

  • Vergleichen Sie die verschlüsselten Nachrichten, die das AWS Encryption SDK als Antwort auf verschiedene Verschlüsselungsanforderungen zurückgibt. Wenn Sie beispielsweise den verwenden AWS-Verschlüsselungs-SDK for Java, vergleichen Sie das ParsedCiphertext Objekt aus verschiedenen Verschlüsselungsaufrufen. Vergleichen Sie in der AWS-Verschlüsselungs-SDK for JavaScript den Inhalt der encryptedDataKeys Eigenschaft von. MessageHeader Wenn Datenschlüssel wiederverwendet werden, sind die verschlüsselten Datenschlüssel in der verschlüsselten Nachricht identisch.