View a markdown version of this page

Durchsuchbare Verschlüsselung - AWS SDK für Datenbankverschlüsselung

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 AWS Database Encryption SDK umbenannt. 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. Das AWS Database Encryption SDK speichert den Beacon in einem neuen Feld, das es dem Datensatz hinzufügt. Je nach verwendetem Beacontyp können Sie nach Ihren verschlüsselten Daten nach exakten Übereinstimmungen suchen oder individuellere komplexe Abfragen durchführen.

Ein Beacon ist ein gekürztes HMAC-Tag ( Hash-Based Message Authentication Code), das einen Klartext-Feldwert einer verschlüsselten, durchsuchbaren Kennung zuordnet. Wenn Sie einen Wert in ein verschlüsseltes Feld schreiben, das für durchsuchbare Verschlüsselung konfiguriert ist, berechnet das AWS Database Encryption SDK anhand des Klartext-Werts einen HMAC. Bei dieser HMAC-Ausgabe handelt es sich um eine 1:1 -Übereinstimmung mit dem Klartextwert dieses Felds. Das SDK kürzt die HMAC-Ausgabe absichtlich, sodass mehrere unterschiedliche Klartextwerte auf demselben Beacon kollidieren. Diese Kollisionen (Fehlalarme) schränken die Fähigkeit eines nicht autorisierten Benutzers ein, vertrauliche Informationen aus Frequenzmustern abzuleiten. Wenn Sie einen Beacon abfragen, filtert das AWS Database Encryption SDK diese Fehlalarme automatisch heraus und gibt das Klartextergebnis Ihrer Abfrage zurück. Um dieses Problem des Frequenzverlusts weiter zu lösen, werden Beacons partitioniert, sodass identische Klartextwerte partitionsübergreifend unterschiedliche Beacon-Werte erzeugen können. Wenn die Tabelle nur eine einzige Partition verwendet, entspricht dieses Verhalten natürlich herkömmlichen, nicht partitionierten Beacons.

Die durchschnittliche Anzahl von Fehlalarmen für jeden Beacon hängt von der verbleibenden Beacon-Länge nach der Kürzung und der Anzahl der Partitionen ab. Hilfe bei der 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 dem AWS Database Encryption SDK verschlüsseln und signieren, 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 richtige Konfiguration der Beacons ist unerlässlich, um diese Risiken zu minimieren. Durch die Auswahl einer geeigneten Beacon-Länge und eines geeigneten Partitionierungsschemas wird die Vertraulichkeit gewahrt, indem ausreichend Kollisionen gewährleistet und frequenzbasierte Angriffe durch die Begrenzung der Wertekonzentration in einem einzelnen Beacon abgeschwächt werden.

Sicherheit versus Leistung
  • Kürzere Beacon-Längen und höhere Partitionszahlen erhöhen die Sicherheit, da Kollisionen zunehmen und Frequenzverluste reduziert werden.

  • Längere Beacon-Längen und weniger Partitionen verbessern die Leistung, da Fehlalarme und Abfrage-Fan-Outs reduziert werden.

In vielen praktischen Szenarien kann eine gut gewählte Konfiguration diese konkurrierenden Ziele ausgleichen. Eine durchsuchbare Verschlüsselung kann jedoch möglicherweise nicht für jeden Datensatz das gewünschte Maß an Sicherheit und Leistung bieten.

Bevor Sie Beacons konfigurieren, sollten Sie Ihr Bedrohungsmodell, Ihre Sicherheits- und Leistungsanforderungen sorgfältig prüfen und die Einzigartigkeitsmerkmale Ihres Datensatzes berücksichtigen, um festzustellen, ob eine durchsuchbare Verschlüsselung die richtige Wahl ist.

Vertrieb

Die Sicherheitseigenschaften eines Beacons hängen sowohl von der Verteilung der zugrunde liegenden Daten als auch von der Konfiguration des Beacons ab, einschließlich der Anzahl der verwendeten Partitionen. Wenn Sie ein verschlüsseltes Feld für durchsuchbare Verschlüsselung konfigurieren, berechnet das AWS Database Encryption SDK für jeden Klartextwert, der in dieses Feld geschrieben wird, einen HMAC und leitet den Beacon mithilfe eines kryptografischen Schlüssels ab. Beacons werden im Kontext einer Partition berechnet, sodass identische Klartextwerte partitionsübergreifend unterschiedliche Beacon-Werte erzeugen können. Wenn die Tabelle nur eine einzige Partition verwendet, werden identische Klartextwerte immer demselben gekürzten HMAC-Tag zugeordnet, wodurch Frequenzmuster aus dem ursprünglichen Datensatz beibehalten werden können.

Felder mit stark schiefen Verteilungen erfordern besondere Sorgfalt. Stellen Sie sich zum Beispiel eine Datenbank vor, in der der Wohnort aller Einwohner von Illinois gespeichert ist. Wenn Sie aus dem verschlüsselten City Feld einen Beacon erstellen, kommt der Wert „Chicago“ weitaus häufiger vor als in anderen Städten. Selbst wenn ein nicht autorisierter Benutzer nur auf verschlüsselte Objekte und Beacon-Werte zugreifen kann, kann er aufgrund dieses Ungleichgewichts möglicherweise anhand der Beobachtung überrepräsentierter Beacons ableiten, welche Datensätze den Einwohnern von Chicago entsprechen. Durch das Kürzen des Beacons kann diese Leckage reduziert werden, da mehr Kollisionen erzwungen werden. Die Länge des Beacons, die erforderlich ist, um starke Verzerrungen ausreichend zu verbergen, kann jedoch zu erheblichen Leistungseinbußen führen, die durch vermehrte Fehlalarme verursacht werden.

Um Beacons sicher zu konfigurieren, sollten Sie die Häufigkeitsverteilung Ihrer Daten analysieren und verstehen, wie Kürzung und Partitionierung interagieren. Die Anzahl der in einem Beacon gespeicherten Bits bestimmt, wie viele statistische Informationen offengelegt werden, während die Anzahl der Partitionen begrenzt, wie konzentriert ein einzelner Beacon-Wert werden kann. Kürzere Beacon-Längen und mehr Partitionen reduzieren den Frequenzverlust, erhöhen aber auch die Anzahl der Fehlalarme und das Auffangen von Abfragen. Längere Beacon-Längen und weniger Partitionen verbessern die Effizienz von Abfragen, bieten aber mehr Informationen über die zugrunde liegende Verteilung.

In einigen Extremfällen sind Workloads nicht praktikabel, wenn die Tabelle nur eine einzige Partition verwendet. Attribute mit sehr kleinen Grundgesamtheiten oder stark unausgewogenen binären Ergebnissen — wie z. B. medizinische Testergebnisse, bei denen NEGATIVE Werte dominieren — können nicht allein durch Kürzung geschützt werden. Bei einer Partition fasst ein Beacon, das kurz genug ist, um die Verteilung zu verbergen, alle Werte zu einem einzigen Tag zusammen, während ein längeres Beacon die Identifizierung seltener Werte erleichtert. In diesen Fällen sind partitionierte Beacons erforderlich, um eine durchsuchbare Verschlüsselung zu ermöglichen. Durch die Verteilung überrepräsentierter Werte auf mehrere Partitionen reduziert dieser Ansatz die Größe der Äquivalenzklassen und begrenzt Frequenzverluste auf eine Weise, die bei Verwendung einer einzelnen Partition nicht möglich ist.

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 City und ZIPCode -Feldern erstellen, da die Postleitzahl wahrscheinlich nur einer Stadt zugeordnet ist. 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 Postleitzahlen 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 aus beiden Feldern unterschiedliche Beacons erstellen, erstellt das AWS Database Encryption SDK 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.

Prüfen Sie sorgfältig die Verteilung der Felder, die Sie als Beaconizer verwenden möchten, und ermitteln Sie, wie stark die Kürzung erforderlich ist, um Ihre Sicherheitsanforderungen zu erfüllen. Bei den folgenden Themen in diesem Kapitel wird davon ausgegangen, dass die Beacon-Werte innerhalb jeder Partition gleichmäßig verteilt sind und dass die zugrunde liegenden Daten keine Korrelationen enthalten, die diese Annahmen schwächen würden.

Durchsuchbares Verschlüsselungsszenario

Das folgende Beispiel zeigt eine durchsuchbare Verschlüsselungslösung und veranschaulicht die in diesem Kapitel erörterten Kernkonzepte. In diesem Szenario kommen bestimmte Feldwerte sehr häufig vor, was zu großen Äquivalenzklassen und vermehrten Frequenzverlusten führen würde, wenn eine einzelne Partition verwendet würde. Um diesem Problem zu begegnen, werden in der Konfiguration mehrere Partitionen verwendet, sodass häufig vorkommende Werte gleichmäßiger verteilt werden, wodurch Datenverlust reduziert wird und gleichzeitig die Möglichkeit erhalten bleibt, effiziente Gleichheitssuchen durchzuführen.

Stellen Sie sich eine Datenbank mit dem Namen vorEmployees, in der Mitarbeiterdaten eines Unternehmens erfasst werden. 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 HMACs anhand der Klartextwerte im Feld. LastName Jede HMAC-Ausgabe wird gekürzt, sodass sie nicht mehr exakt mit dem Klartext-Wert übereinstimmt. 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

In einem Datensatz mit vielen Mitarbeitern kommen bestimmte Nachnamen wie Jones, Smith oder Johnson möglicherweise weitaus häufiger vor als andere. Um Frequenzverluste zu reduzieren und die Größe der Beacon-Äquivalenzklassen zu begrenzen, sollten Sie den LastNameBeacon so konfigurieren, dass er mehr als eine Partition verwendet.

Wenn Partitionen aktiviert sind, wird jedes Element beim Schreiben einer Partition zugewiesen, und die Partitionsnummer wird in die Beacon-Ableitung übernommen. Das hat zur Folge, dass Mitarbeiter mit demselben Nachnamen partitionsübergreifend unterschiedlichen Beacon-Werten zugeordnet werden. Dadurch werden häufig verwendete Namen auf mehrere Partitionen verteilt, wodurch die Überrepräsentation einzelner Beacon-Werte reduziert wird.

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

LastName = Jones

Bei der Abfrage nach einem bestimmten häufig verwendeten Nachnamen, z. B. Jones, sollte die Anwendung mithilfe des Beacons eine Abfrage pro Partition ausgeben. LastName Das AWS Database Encryption SDK entschlüsselt dann die Ergebnisse und filtert automatisch alle Fehlalarme heraus, sodass die korrekten Klartext-Datensätze zurückgegeben werden.