Durchsuchbare Verschlüsselung - AWS Datenbankverschlüsselung 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.

Durchsuchbare Verschlüsselung

Unsere clientseitige Verschlüsselungsbibliothek wurde in Database Encryption umbenannt. AWS SDK Dieses Entwicklerhandbuch enthält weiterhin Informationen zum DynamoDB Encryption Client.

Mit der durchsuchbaren Verschlüsselung können Sie verschlüsselte Datensätze durchsuchen, ohne die gesamte Datenbank entschlüsseln zu müssen. Dies wird mithilfe von Beacons erreicht, die eine Zuordnung zwischen dem Klartextwert, der in ein Feld geschrieben wird, und dem verschlüsselten Wert, der tatsächlich in Ihrer Datenbank gespeichert ist, erstellen. Die AWS Datenbankverschlüsselung SDK speichert den Beacon in einem neuen Feld, das sie dem Datensatz hinzufügt. Je nach verwendetem Beacontyp können Sie nach Ihren verschlüsselten Daten exakte Übereinstimmungen oder individuellere komplexe Abfragen durchführen.

Ein Beacon ist ein gekürzter Hash-Based Message Authentication Code (HMAC) -Tag, der eine Zuordnung zwischen Klartext- und verschlüsselten Werten eines Felds erstellt. Wenn Sie einen neuen Wert in ein verschlüsseltes Feld schreiben, das für durchsuchbare Verschlüsselung konfiguriert ist, SDK berechnet die AWS Datenbankverschlüsselung einen Wert über dem Klartext-Wert. HMAC Bei dieser HMAC Ausgabe handelt es sich um eine Eins-zu-Eins-Übereinstimmung (1:1) für den Klartextwert dieses Felds. Die HMAC Ausgabe wird gekürzt, sodass mehrere unterschiedliche Klartextwerte demselben gekürzten Tag zugeordnet werden. HMAC Diese Fehlalarme schränken die Fähigkeit eines nicht autorisierten Benutzers ein, charakteristische Informationen über den Klartext-Wert zu identifizieren. Wenn Sie einen Beacon abfragen, filtert AWS Database Encryption diese Fehlalarme SDK automatisch heraus und gibt das Klartextergebnis Ihrer Abfrage zurück.

Die durchschnittliche Anzahl der für jeden Beacon generierten Fehlalarme wird durch die Länge des Beacons bestimmt, die nach der Kürzung noch übrig ist. Hilfe zur Bestimmung der geeigneten Beacon-Länge für Ihre Implementierung finden Sie unter Bestimmung der Beacon-Länge.

Anmerkung

Die durchsuchbare Verschlüsselung ist so konzipiert, dass sie in neuen, nicht aufgefüllten Datenbanken implementiert werden kann. Jedes Beacon, das in einer vorhandenen Datenbank konfiguriert ist, ordnet nur neue Datensätze zu, die in die Datenbank hochgeladen wurden. Es gibt keine Möglichkeit für ein Beacon, bestehende Daten zuzuordnen.

Sind Beacons das Richtige für meinen Datensatz?

Die Verwendung von Beacons zur Durchführung von Abfragen verschlüsselter Daten reduziert die Leistungskosten, die mit clientseitig verschlüsselten Datenbanken verbunden sind. Wenn Sie Beacons verwenden, gibt es einen inhärenten Kompromiss zwischen der Effizienz Ihrer Abfragen und der Menge an Informationen, die über die Verteilung Ihrer Daten preisgegeben werden. Der Beacon verändert den verschlüsselten Zustand des Feldes nicht. Wenn Sie ein Feld mit AWS Database Encryption verschlüsseln und signierenSDK, wird der Klartextwert des Felds niemals der Datenbank zugänglich gemacht. Die Datenbank speichert den zufälligen, verschlüsselten Wert des Felds.

Beacons werden zusammen mit den verschlüsselten Feldern gespeichert, aus denen sie berechnet werden. Das heißt, selbst wenn ein nicht autorisierter Benutzer die Klartextwerte eines verschlüsselten Felds nicht einsehen kann, kann er möglicherweise statistische Analysen der Beacons durchführen, um mehr über die Verteilung Ihres Datensatzes zu erfahren und im Extremfall die Klartextwerte zu identifizieren, denen ein Beacon zugeordnet ist. Die Art und Weise, wie Sie Ihre Beacons konfigurieren, kann diese Risiken mindern. Insbesondere die Wahl der richtigen Beacon-Länge kann Ihnen helfen, die Vertraulichkeit Ihres Datensatzes zu wahren.

Sicherheit versus Leistung
  • Je kürzer die Länge des Beacons, desto besser ist die Sicherheit gewährleistet.

  • Je länger die Länge des Beacons ist, desto mehr Leistung bleibt erhalten.

Eine durchsuchbare Verschlüsselung kann möglicherweise nicht das gewünschte Leistungs- und Sicherheitsniveau für alle Datensätze bieten. Überprüfen Sie Ihr Bedrohungsmodell, Ihre Sicherheits- und Leistungsanforderungen, bevor Sie Beacons konfigurieren.

Beachten Sie die folgenden Anforderungen an die Eindeutigkeit von Datensätzen, wenn Sie entscheiden, ob eine durchsuchbare Verschlüsselung für Ihren Datensatz geeignet ist.

Verteilung

Wie viel Sicherheit durch ein Beacon gewährleistet wird, hängt von der Verteilung Ihres Datensatzes ab. Wenn Sie ein verschlüsseltes Feld für durchsuchbare Verschlüsselung konfigurieren, SDK berechnet AWS Database Encryption die Klartextwerte, die in dieses Feld geschrieben wurden. HMAC Alle für ein bestimmtes Feld berechneten Beacons werden mit demselben Schlüssel berechnet, mit Ausnahme von Multitenant-Datenbanken, die für jeden Mandanten einen eigenen Schlüssel verwenden. Das heißt, wenn derselbe Klartext-Wert mehrmals in das Feld geschrieben wird, wird für jede Instanz dieses Klartext-Werts derselbe HMAC Tag erstellt.

Sie sollten vermeiden, Beacons aus Feldern zu erstellen, die sehr häufig vorkommende Werte enthalten. Stellen Sie sich zum Beispiel eine Datenbank vor, in der die Adressen aller Einwohner des Bundesstaates Illinois gespeichert sind. Wenn Sie aus dem verschlüsselten City Feld einen Beacon konstruieren, wird der über „Chicago“ berechnete Beacon aufgrund des hohen Prozentsatzes der Bevölkerung von Illinois, der in Chicago lebt, überrepräsentiert sein. Selbst wenn ein nicht autorisierter Benutzer nur die verschlüsselten Werte und Beacon-Werte lesen kann, kann er möglicherweise feststellen, welche Datensätze Daten für Einwohner von Chicago enthalten, wenn das Beacon diese Verteilung beibehält. Um die Menge an identifizierenden Informationen, die über Ihre Verteilung preisgegeben werden, zu minimieren, müssen Sie Ihr Beacon ausreichend kürzen. Die Länge des Beacons, die erforderlich ist, um diese ungleichmäßige Verteilung zu verbergen, ist mit erheblichen Leistungseinbußen verbunden, die möglicherweise nicht den Anforderungen Ihrer Anwendung entsprechen.

Sie müssen die Verteilung Ihres Datensatzes sorgfältig analysieren, um festzustellen, wie stark Ihre Beacons gekürzt werden müssen. Die Länge der Beacons, die nach der Kürzung noch übrig ist, steht in direktem Zusammenhang mit der Menge an statistischen Informationen, die über Ihre Verteilung ermittelt werden können. Möglicherweise müssen Sie kürzere Beacon-Längen wählen, um die Menge an Unterscheidungsinformationen, die über Ihren Datensatz preisgegeben werden, ausreichend zu minimieren.

In extremen Fällen können Sie keine Beacon-Länge für einen ungleichmäßig verteilten Datensatz berechnen, der ein effektives Gleichgewicht zwischen Leistung und Sicherheit gewährleistet. Sie sollten beispielsweise keinen Beacon aus einem Feld erstellen, in dem das Ergebnis eines medizinischen Tests für eine seltene Krankheit gespeichert ist. Da davon ausgegangen wird, dass NEGATIVE Ergebnisse innerhalb des Datensatzes deutlich häufiger vorkommen, können POSITIVE Ergebnisse leicht anhand ihrer Seltenheit identifiziert werden. Es ist sehr schwierig, die Verteilung zu verbergen, wenn das Feld nur zwei mögliche Werte hat. Wenn Sie eine Beacon-Länge verwenden, die kurz genug ist, um die Verteilung zu verbergen, werden alle Klartextwerte demselben HMAC Tag zugeordnet. Wenn Sie eine längere Beacon-Länge verwenden, ist es offensichtlich, welche Beacons Klartext-Werten zugeordnet werden. POSITIVE

Korrelation

Wir empfehlen dringend, dass Sie vermeiden, unterschiedliche Beacons aus Feldern mit korrelierten Werten zu erstellen. Beacons, die aus korrelierten Feldern erstellt wurden, erfordern kürzere Beacon-Längen, um die Menge an Informationen, die über die Verteilung der einzelnen Datensätze an einen nicht autorisierten Benutzer preisgegeben werden, ausreichend zu minimieren. Sie müssen Ihren Datensatz sorgfältig analysieren, einschließlich seiner Entropie und der gemeinsamen Verteilung der korrelierten Werte, um festzustellen, wie stark Ihre Beacons gekürzt werden müssen. Wenn die resultierende Beacon-Länge nicht Ihren Leistungsanforderungen entspricht, sind Beacons möglicherweise nicht für Ihren Datensatz geeignet.

Sie sollten beispielsweise nicht zwei separate Beacons aus ZIPCode Feldern City und erstellen, da der ZIP Code wahrscheinlich nur einer Stadt zugeordnet sein wird. In der Regel schränken die von einem Beacon generierten Fehlalarme die Fähigkeit eines nicht autorisierten Benutzers ein, charakteristische Informationen über Ihren Datensatz zu identifizieren. Die Korrelation zwischen den ZIPCode Feldern City und bedeutet jedoch, dass ein nicht autorisierter Benutzer leicht erkennen kann, welche Ergebnisse falsch positive Ergebnisse sind, und die verschiedenen ZIP Codes unterscheiden kann.

Sie sollten auch vermeiden, Beacons aus Feldern zu erstellen, die dieselben Klartextwerte enthalten. Beispielsweise sollten Sie kein Beacon aus preferredPhone Feldern mobilePhone und erstellen, da diese wahrscheinlich dieselben Werte enthalten. Wenn Sie unterschiedliche Beacons aus beiden Feldern erstellen, SDK erstellt die AWS Datenbankverschlüsselung die Beacons für jedes Feld unter unterschiedlichen Schlüsseln. Dies führt zu zwei verschiedenen HMAC Tags für denselben Klartext-Wert. Es ist unwahrscheinlich, dass die beiden unterschiedlichen Beacons dieselben Fehlalarme haben, und ein nicht autorisierter Benutzer kann möglicherweise verschiedene Telefonnummern unterscheiden.

Selbst wenn Ihr Datensatz korrelierte Felder enthält oder eine ungleichmäßige Verteilung aufweist, können Sie möglicherweise Beacons erstellen, die die Vertraulichkeit Ihres Datensatzes wahren, indem Sie kürzere Beacon-Längen verwenden. Die Beacon-Länge garantiert jedoch nicht, dass jeder eindeutige Wert in Ihrem Datensatz zu einer Reihe von Fehlalarmen führt, wodurch die Menge an Unterscheidungsinformationen, die über Ihren Datensatz preisgegeben werden, effektiv minimiert wird. Mit der Beacon-Länge wird lediglich die durchschnittliche Anzahl der generierten Fehlalarme geschätzt. Je ungleichmäßiger Ihr Datensatz verteilt ist, desto weniger effektiv ist die Beacon-Länge bei der Bestimmung der durchschnittlichen Anzahl der erzeugten Fehlalarme.

Berücksichtigen Sie sorgfältig die Verteilung der Felder, aus denen Sie Beacons erstellen, und überlegen Sie, um wie viel Sie die Beacon-Länge kürzen müssen, um Ihre Sicherheitsanforderungen zu erfüllen. Bei den folgenden Themen in diesem Kapitel wird davon ausgegangen, dass Ihre Beacons gleichmäßig verteilt sind und keine korrelierten Daten enthalten.

Durchsuchbares Verschlüsselungsszenario

Das folgende Beispiel zeigt eine einfache durchsuchbare Verschlüsselungslösung. In der Anwendung entsprechen die in diesem Beispiel verwendeten Beispielfelder möglicherweise nicht den Empfehlungen zur Verteilung und Korrelation zur Eindeutigkeit von Beacons. Sie können dieses Beispiel als Referenz verwenden, wenn Sie in diesem Kapitel mehr über die Konzepte der durchsuchbaren Verschlüsselung lesen.

Stellen Sie sich eine Datenbank mit dem Namen vorEmployees, die Mitarbeiterdaten eines Unternehmens verfolgt. Jeder Datensatz in der Datenbank enthält Felder namens EmployeeID, LastNameFirstName, und Address. Jedes Feld in der Employees Datenbank wird durch den Primärschlüssel EmployeeID identifiziert.

Im Folgenden finden Sie ein Beispiel für einen Klartext-Datensatz in der Datenbank.

{ "EmployeeID": 101, "LastName": "Jones", "FirstName": "Mary", "Address": { "Street": "123 Main", "City": "Anytown", "State": "OH", "ZIPCode": 12345 } }

Wenn Sie ENCRYPT_AND_SIGN in Ihren kryptografischen Aktionen die FirstName Felder LastName und als markiert haben, werden die Werte in diesen Feldern lokal verschlüsselt, bevor sie in die Datenbank hochgeladen werden. Die verschlüsselten Daten, die hochgeladen werden, sind vollständig randomisiert. Die Datenbank erkennt diese Daten nicht als geschützt. Sie erkennt nur typische Dateneinträge. Das bedeutet, dass der Datensatz, der tatsächlich in der Datenbank gespeichert ist, wie folgt aussehen könnte.

{ "PersonID": 101, "LastName": "1d76e94a2063578637d51371b363c9682bad926cbd", "FirstName": "21d6d54b0aaabc411e9f9b34b6d53aa4ef3b0a35", "Address": { "Street": "123 Main", "City": "Anytown", "State": "OH", "ZIPCode": 12345 } }

Wenn Sie die Datenbank nach exakten Übereinstimmungen im LastName Feld abfragen müssen, konfigurieren Sie einen Standard-Beacon, der so benannt ist, LastNamedass er die in das LastName Feld geschriebenen Klartextwerte den in der Datenbank gespeicherten verschlüsselten Werten zuordnet.

Dieser Beacon berechnet anhand HMACs der Klartextwerte im Feld. LastName Jede HMAC Ausgabe wird gekürzt, sodass sie nicht mehr exakt dem Klartext-Wert entspricht. Der vollständige Hash und der gekürzte Hash für Jones könnten beispielsweise wie folgt aussehen.

Vollständiger Hash

2aa4e9b404c68182562b6ec761fcca5306de527826a69468885e59dc36d0c3f824bdd44cab45526f70a2a18322000264f5451acf75f9f817e2b35099d408c833

Verkürzter Hash

b35099d408c833

Nachdem der Standard-Beacon konfiguriert wurde, können Sie Gleichheitssuchen für das LastName Feld durchführen. Wenn Sie beispielsweise nach suchen möchtenJones, verwenden Sie den LastNameBeacon, um die folgende Abfrage durchzuführen.

LastName = Jones

Die AWS Datenbankverschlüsselung filtert SDK automatisch die Fehlalarme heraus und gibt das Klartextergebnis Ihrer Abfrage zurück.