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. Auf diese Weise kann der Caching-CMM den ordnungsgemäß erzwingenmaximaler Byte-Schwellenwertaus. Um dieses Verhalten zu vermeiden, fügen Sie der Verschlüsselungsanfrage die Nachrichtengröße hinzu.

Zusätzlich zu einem Cache verwendet das Datenschlüssel-Caching einenManager von kryptographischen Materialien(CMM zwischenspeichern). Das Caching CMM ist ein spezialisiertesManager von kryptographischen Materialien (CMM)das interagiert mit einemZwischenspeicherund ein BasiswertCMMaus. (Wenn Sie ein-Masterschlüsselanbieteroder Schlüsselbund, derAWS Encryption SDKerstellt ein Standard-CMM für Sie.) Der Caching-CMM speichert die Datenschlüssel, die sein zugrunde liegender CMM zurückgibt, im Caching Der Caching-CMM erzwingt auch die Sicherheitsschwellenwerte, die Sie festgelegt haben.

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

Das AWS Encryption SDK speichert Datenschlüssel nur im Cache, wenn das Algorithmen-Paket 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 Caching-Komponenten, die Sie erstellen, einschließlich des Caches und des Caching-CMM dabei verwendet werden.

Verschlüsseln von Daten ohne Caching

So rufen Sie Verschlüsselungsmaterialien ohne Caching ab:

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

    Die Anforderung gibt einen Masterschlüssel-Anbieter oder Schlüsselbund an. DieAWS Encryption SDKDer erstellt ein standardmäßiges CMM, das mit Ihrem Masterschlüssel-Anbieter oder Schlüsselbund interagiert.

  2. DieAWS Encryption SDKDer fordert vom CMM Verschlüsselungsmaterialien an (Rufen Sie kryptografische Materialien ab).

  3. Das CMM fragtSchlüsselring(C undJavaScript) oder-Masterschlüsselanbieter(Java und Python) für kryptografische Materialien. Dabei könnte es sich um einen Aufruf eines kryptographischen Dienstes handeln, z. B. AWS Key Management Service (AWS KMS). Der CMM gibt die Verschlüsselungsmaterialien an das zurückAWS Encryption SDKaus.

  4. Das AWS Encryption SDK verschlüsselt die Daten mithilfe des Klartext-Datenschlüssels. 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 das AWS Encryption SDK auf, Daten zu verschlüsseln.

    Die Anfrage gibt einenManager von kryptographischen Materialien (Caching Caching)Der ist einem zugrundeliegenden Manager von kryptographischen Materialien (CMM) zugeordnet. Wenn Sie einen Masterschlüssel-Anbieter oder Schlüsselbund angeben, wird derAWS Encryption SDKerstellt ein Standard-CMM für Sie.

  2. Das SDK fordert vom angegebenen Caching-CMM nach Verschlüsselungsmaterialien an.

  3. Der Caching-CMM fordert Verschlüsselungsmaterialien aus dem Cache an.

    1. Wenn der Cache eine Übereinstimmung findet, aktualisiert er das Alter und verwendet Werte des übereinstimmenden Cache-Eintrags, und gibt die im Cache gespeicherten Verschlüsselungsmaterialien an den Caching-CMM zurück.

      Wenn der Cache-Eintrag seinem entsprichtSicherheitsschwellenwerteDer Caching-CMM gibt es 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 Caching-CMM seinen zugrundeliegenden CMM auf, einen neuen Datenschlüssel zu generieren.

      Der zugrundeliegende CMM ruft die kryptografischen Materialien aus seinem Schlüsselbund (C undJavaScript) oder Masterschlüssel-Anbieter (Java und Python). Dabei könnte es sich um einen Aufruf eines Dienstes handeln, z. B. AWS Key Management Service. Der zugrundeliegende CMM gibt eine Klartextkopie und eine verschlüsselte Kopie des Datenschlüssels an das Caching-CMM zurück.

      Der Caching-CMM speichert die neuen Verschlüsselungsmaterialien im Cache.

  4. Der Caching-CMM gibt die Verschlüsselungsmaterialien an das zurückAWS Encryption SDKaus.

  5. Das AWS Encryption SDK verschlüsselt die Daten mithilfe des Klartext-Datenschlüssels. 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 für einen Cache für kryptografische Materialien, der für das Datenschlüssel-Caching verwendet wird. Es stellt auch einen lokalen Cache bereit, der einen konfigurierbaren In-Memory-In-Memory-istDer am wenigsten verwendete (LRU) Cacheaus. Um eine Instanz des lokalen Caches zu erstellen, verwenden Sie dieLocalCryptoMaterialsCacheKonstruktor in Java und PythongetLocalCryptographicMaterialsCacheFunktion inJavaScriptoder dasaws_cryptosdk_materials_cache_local_newKonstruktor in C.

Der lokale Cache enthält eine Logik für die grundlegende Cache-Verwaltung, einschließlich des Hinzufügen, Bereinigens und Vergleichen von Cache-Einträgen und der Wartung des Caches. Sie müssen keine benutzerdefinierte Cache-Verwaltungslogik schreiben. Sie können den lokalen Cache unverändert einsetzen oder ihn anpassen oder durch einen beliebigen kompatiblen Cache ersetzen.

Wenn Sie einen lokalen Cache erstellen, legen Sie dessen festKapazität, 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.

DieAWS-Verschlüsselungs-SDK for Javaund dieAWS-Verschlüsselungs-SDK for Pythonstellen Sie auch eineCache für kryptografische Materialien(NullCryptoMaterialsCache) enthalten. Die NullCryptoMaterialsCache gibt einen Fehler für alle GET-Operationen zurück und reagiert nicht auf PUT-Operationen. Sie können die NullCryptoMaterialsCache beim Testen verwenden oder damit das Caching in einer Anwendung, die Caching-Code enthält, vorübergehend deaktivieren.

In derAWS Encryption SDKist jeder kryptographische Material-Cache einem zugeordnetManager von kryptographischen Materialien(CMM zwischenspeichern). Der Caching-CMM ruft Datenschlüssel aus dem Cache ab, fügt Datenschlüssel in den Cache ein und erzwingtSicherheitsschwellenwertedas du eingestellt hast. Beim Anlegen eines Caching-CMM geben Sie den verwendeten Cache und den zugrunde liegenden CMM- oder Masterschlüssel-Anbieter an, der die von ihm gecachten Datenschlüssel erzeugt.

Erstellen eines Managers von kryptographischen Materialien, der Caching verwendet

Um das Datenschlüssel-Caching zu aktivieren, erstellen Sie einenZwischenspeicherund einManager von kryptographischen Materialien(CMM zwischenspeichern). Dann geben Sie in Ihren Anfragen zum Verschlüsseln oder Entschlüsseln von Daten einen Caching-CMM an, statt eines standardmäßigenManager von kryptographischen Materialien (CMM), oder-MasterschlüsselanbieteroderSchlüsselringaus.

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

  • Ein CMM ist mit einem Schlüsselbund verbunden (C oderJavaScript) oder einen Masterschlüssel-Anbieter (Java und Python). Wenn das SDK vom CMM Verschlüsselungs- oder Entschlüsselungsmaterialien anfordert, ruft das CMM die Materialien von seinem Schlüsselbund oder von seinem Masterschlüssel-Anbieter ab. In Java und Python verwendet der CMM die Masterschlüssel zum Generieren, Verschlüsseln oder Entschlüsseln der Datenschlüssel. In C und JavaScript generiert und verschlüsselt der Schlüsselbund die kryptografischen Materialien und gibt sie zurück.

  • Ein Caching-CMM ist einem Cache zugeordnet, wie z. B.Lokaler Cacheund ein zugrunde liegendes CMM. Wenn das SDK vom Caching-CMM kryptografische Materialien anfordert, versucht das Caching-CMM diese aus dem Cache zu holen. Wenn keine Übereinstimmung gefunden werden kann, fragt das Caching-CMM seinen zugrundeliegenden 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 auchSicherheitsschwellenwerteDie Sie für einen einzelnen Cache-Eintrag festgelegt haben. Da die Sicherheitsschwellen durch den Cache gespeicherten CMM gesetzt und durchgesetzt werden, können Sie jeden kompatiblen Cache verwenden, auch wenn der Cache nicht für empfindliches Material ausgelegt 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. Sie finden diese Informationen möglicherweise nützlich, wenn Sie entscheiden, ob Sie die Datenschlüssel-Caching-Funktion verwenden möchten und wenn Sie Sicherheitsschwellenwerte für einen cachenden kryptografischen Materialmanager (Caching-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. Sie können Untergruppen aus Datenschlüsseln in Ihrem Cache anlegen, 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. Im AWS Encryption SDK wird der Verschlüsselungskontext in der verschlüsselten Nachricht mit den verschlüsselten Daten und den 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 Datenschlüssel-Caching implementiert ist, ruft das AWS Encryption SDK die AWS KMS-Operation GenerateDataKey nur auf, um den ursprünglichen Datenschlüssel zu erstellen und wenn der Cache fehlt. 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.

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

  • Überprüfen Sie in den Protokollen Ihrer Masterschlüssel-Infrastruktur die Häufigkeit von Aufrufen, um neue Datenschlüssel zu erstellen. Wenn das Datenschlüssel-Caching wirksam ist, sollte die Anzahl der Aufrufe zum Erstellen neuer Schlüssel spürbar fallen. Zum Beispiel, wenn Sie einen verwendenAWS KMSHauptschlüsselanbieter oder Schlüsselbund, suchen Sie dieCloudTrail-Protokolle fürGenerateDataSchlüsselRufe aus.

  • Vergleichen Sie die verschlüsselten Nachrichten, die das AWS Encryption SDK als Antwort auf verschiedene Verschlüsselungsanforderungen zurückgibt. Zum Beispiel, wenn Sie denAWS-Verschlüsselungs-SDK for JavaVergleichen Sie denParsedCiphertextObjekt aus verschiedenen Encrypt-Aufrufen. In derAWS-Verschlüsselungs-SDK for JavaScriptVergleichen Sie den Inhalt desencryptedDataKeysEigentum derMessageHeaderaus. Wenn Datenschlüssel wiederverwendet werden, sind die verschlüsselten Datenschlüssel in der verschlüsselten Nachricht identisch.