

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.

# Kryptografisches Rechnen für Clean Rooms
<a name="crypto-computing"></a>

Kryptografisches Rechnen für Clean Rooms (C3R) ist eine Funktion AWS Clean Rooms , die zusätzlich zu [Analyseregeln](analysis-rules.md) verwendet werden kann. Mit C3R können Unternehmen sensible Daten zusammenführen, um neue Erkenntnisse aus der Datenanalyse zu gewinnen, und gleichzeitig kryptografisch einschränken, was von jeder Partei im Prozess gelernt werden kann. C3R kann von zwei oder mehr Parteien verwendet werden, die mit ihren sensiblen Daten zusammenarbeiten möchten, aber nur verschlüsselte Daten in der Cloud verwenden müssen. 

Der C3R-Verschlüsselungsclient ist ein clientseitiges Verschlüsselungstool, mit dem Sie Ihre Daten für die Verwendung mit [verschlüsseln](glossary.md#glossary-encryption) können. AWS Clean Rooms Wenn Sie den C3R-Verschlüsselungsclient verwenden, bleiben Daten während der Verwendung in einer Zusammenarbeit kryptografisch geschützt. AWS Clean Rooms Wie bei einer normalen AWS Clean Rooms Zusammenarbeit handelt es sich bei den Eingabedaten um relationale Datenbanktabellen, und die Berechnung wird als SQL-Abfrage ausgedrückt. C3R unterstützt jedoch nur eine begrenzte Teilmenge von SQL-Abfragen für verschlüsselte Daten.

Insbesondere unterstützt C3R SQL JOIN and SELECT Aussagen zu kryptografisch geschützten Daten. Jede Spalte in der Eingabetabelle kann in genau einem der folgenden SQL-Anweisungstypen verwendet werden: 
+ Spalten, die kryptografisch geschützt sind für die Verwendung in JOIN Anweisungen werden aufgerufen **fingerprint Spalten**. 
+ Spalten, die kryptografisch geschützt sind für die Verwendung in SELECT Anweisungen werden aufgerufen **sealed Spalten**. 
+ Spalten, die nicht kryptografisch geschützt sind, für die Verwendung in JOIN or SELECT Anweisungen werden aufgerufen **cleartext Spalten**.

In einigen Fällen GROUP BY Aussagen werden gestützt auf fingerprint Spalten. Weitere Informationen finden Sie unter [FingerprintSpalten](crypto-computing-column-types.md#fingerprint-columns). Derzeit unterstützt C3R nicht die Verwendung anderer SQL-Konstrukte für verschlüsselte Daten, wie z. B. WHERE Klauseln oder Aggregatfunktionen wie SUM and AVERAGE, auch wenn sie sonst nach den entsprechenden Analyseregeln zulässig wären.

C3R wurde entwickelt, um Daten in einzelnen Zellen einer Tabelle zu schützen. Bei Verwendung der Standardkonfiguration für C3R bleiben die zugrunde liegenden Daten, die ein Kunde im Rahmen einer Zusammenarbeit Dritten zur Verfügung stellt, verschlüsselt, während der Inhalt darin verwendet wird. AWS Clean Rooms C3R verwendet die branchenübliche AES-GCM-Verschlüsselung für alle sealed Spalten und eine dem Industriestandard entsprechende Pseudozufallsfunktion, bekannt als Hash-Based Message Authentication Code (HMAC), zum Schutz fingerprint Spalten.

Obwohl C3R die Daten in Ihren Tabellen verschlüsselt, können die folgenden Informationen möglicherweise dennoch abgeleitet werden:
+ Informationen zu den Tabellen selbst, einschließlich der Anzahl der Spalten, der Spaltennamen und der Anzahl der Zeilen in Ihrer Tabelle.
+ Wie bei den meisten Standardverschlüsselungsformen versucht C3R nicht, die Länge der verschlüsselten Werte zu verbergen. C3R bietet die Möglichkeit, verschlüsselte Werte aufzufüllen, um die genaue Länge von Klartexten zu verbergen. Eine Obergrenze für die Länge der Klartexte in jeder Spalte könnte jedoch immer noch einer anderen Partei offengelegt werden.
+ Informationen auf Protokollebene, z. B. wann eine bestimmte Zeile zu einer verschlüsselten C3R-Tabelle hinzugefügt wurde.

Weitere Informationen zu C3R finden Sie in den folgenden Themen. 

**Topics**
+ [Überlegungen zur Verwendung von Cryptographic Computing für Clean Rooms](crypto-computing-considerations.md)
+ [Unterstützte Datei- und Datentypen in Cryptographic Computing für Clean Rooms](crypto-computing-file-types.md)
+ [Spaltennamen in Cryptographic Computing für Clean Rooms](crypto-computing-column-names.md)
+ [Spaltentypen in Cryptographic Computing für Clean Rooms](crypto-computing-column-types.md)
+ [Kryptografische Rechenparameter](crypto-computing-parameters.md)
+ [Optionale Flags in Cryptographic Computing für Clean Rooms](crypto-computing-optional-flags.md)
+ [Abfragen mit Cryptographic Computing für Clean Rooms](crypto-computing-queries.md)
+ [Richtlinien für den C3R-Verschlüsselungsclient](crypto-computing-guidelines.md)

# Überlegungen zur Verwendung von Cryptographic Computing für Clean Rooms
<a name="crypto-computing-considerations"></a>

Cryptographic Computing for Clean Rooms (C3R) zielt darauf ab, den Datenschutz zu maximieren. Einige Anwendungsfälle könnten jedoch von einem geringeren Datenschutzniveau im Austausch für zusätzliche Funktionen profitieren. Sie können diese spezifischen Kompromisse eingehen, indem Sie C3R von der sichersten Konfiguration aus ändern. Als Kunde sollten Sie sich dieser Kompromisse bewusst sein und entscheiden, ob sie für Ihren Anwendungsfall geeignet sind. Zu den Kompromissen, die es zu berücksichtigen gilt, gehören: 

**Topics**
+ [Zulassen gemischter cleartext und verschlüsselter Daten in Ihren Tabellen](#allow-mixed-plaintext-and-encrypted-data)
+ [Wiederholte Werte in fingerprint Spalten zulassen](#allow-repeated-values)
+ [Lockerung der Beschränkungen für die Benennung von fingerprint Spalten](#loose-restrictions-on-join-column-names)
+ [Bestimmen, wie NULL Werte dargestellt werden](#determine-null-values)

Weitere Informationen zum Einstellen von Parametern für diese Szenarien finden Sie unter. [Kryptografische Rechenparameter](crypto-computing-parameters.md)

## Zulassen gemischter cleartext und verschlüsselter Daten in Ihren Tabellen
<a name="allow-mixed-plaintext-and-encrypted-data"></a>

Die clientseitige Verschlüsselung aller Daten bietet maximalen Datenschutz. Dadurch werden jedoch bestimmte Arten von Abfragen eingeschränkt (z. B. die SUM Aggregatfunktion). Das Risiko, cleartext Daten zuzulassen, besteht darin, dass es möglich ist, dass jeder, der Zugriff auf die verschlüsselten Tabellen hat, Informationen über verschlüsselte Werte ableiten kann. Dies könnte durch eine statistische Analyse der Daten cleartext und der zugehörigen Daten geschehen. 

Stellen Sie sich zum Beispiel vor, Sie hätten die Spalten `City` und`State`. Die `City` Spalte ist cleartext und die `State` Spalte ist verschlüsselt. Wenn Sie den Wert `Chicago` in der `City` Spalte sehen, können Sie mit hoher Wahrscheinlichkeit feststellen, `State` dass der`Illinois`. Im Gegensatz dazu, wenn eine Spalte `City` und die andere Spalte ist`EmailAddress`, ist es unwahrscheinlich, dass a cleartext `City` etwas über eine verschlüsselte Spalte aussagt`EmailAddress`. 

Weitere Informationen zu dem Parameter für dieses Szenario finden Sie unter[Parameter „Spalten zulassencleartext“](crypto-computing-parameters.md#parameter-allowcleartext).

## Wiederholte Werte in fingerprint Spalten zulassen
<a name="allow-repeated-values"></a>

Für den sichersten Ansatz gehen wir davon aus, dass jede fingerprint Spalte genau eine Instanz einer Variablen enthält. Kein Element kann in einer fingerprint Spalte wiederholt werden. Der C3R-Verschlüsselungsclient ordnet diese cleartext Werte eindeutigen Werten zu, die nicht von Zufallswerten zu unterscheiden sind. Daher ist es unmöglich, aus diesen Zufallswerten Informationen über die abzuleiten. cleartext

Das Risiko wiederholter Werte in einer fingerprint Spalte besteht darin, dass wiederholte Werte zu wiederholten zufällig aussehenden Werten führen. Somit könnte theoretisch jeder, der Zugriff auf die verschlüsselten Tabellen hat, eine statistische Analyse der fingerprint Spalten durchführen, die Informationen über cleartext Werte liefern könnte. 

Nehmen wir erneut an`State`, die fingerprint Spalte entspricht einem US-Haushalt und jede Zeile der Tabelle entspricht. Durch eine Frequenzanalyse könnte man ableiten, um welchen Bundesstaat es sich handelt `California` und welcher `Wyoming` mit hoher Wahrscheinlichkeit. Diese Schlussfolgerung ist möglich, weil es viel mehr Einwohner `California` hat als. `Wyoming` Nehmen wir dagegen an, die fingerprint Spalte bezieht sich auf eine Haushalts-ID und jeder Haushalt tauchte in der Datenbank ein- bis viermal in einer Datenbank mit Millionen von Einträgen auf. Es ist unwahrscheinlich, dass eine Frequenzanalyse nützliche Informationen liefern würde.

Weitere Informationen zu den Parametern für dieses Szenario finden Sie unter[Parameter „Duplikate zulassen“](crypto-computing-parameters.md#parameter-allowduplicates).

## Lockerung der Beschränkungen für die Benennung von fingerprint Spalten
<a name="loose-restrictions-on-join-column-names"></a>

Standardmäßig gehen wir davon aus, dass, wenn zwei Tabellen mithilfe verschlüsselter fingerprint Spalten verknüpft werden, diese Spalten in jeder Tabelle denselben Namen haben. Der technische Grund für dieses Ergebnis ist, dass wir standardmäßig einen anderen kryptografischen Schlüssel für die Verschlüsselung jeder Spalte ableiten. fingerprint Dieser Schlüssel wird aus einer Kombination aus dem gemeinsamen geheimen Schlüssel für die Zusammenarbeit und dem Spaltennamen abgeleitet. Wenn wir versuchen, zwei Spalten mit unterschiedlichen Spaltennamen zu verbinden, leiten wir unterschiedliche Schlüssel ab und können keinen gültigen Join berechnen. 

Um dieses Problem zu beheben, können Sie die Funktion deaktivieren, die Schlüssel aus jedem Spaltennamen ableitet. Anschließend verwendet der C3R-Verschlüsselungsclient einen einzigen abgeleiteten Schlüssel für alle fingerprint Spalten. Das Risiko besteht darin, dass eine andere Art der Frequenzanalyse durchgeführt werden kann, die Informationen preisgeben könnte. 

Lassen Sie uns das `State` Beispiel `City` und noch einmal verwenden. Wenn wir für jede fingerprint Spalte dieselben Zufallswerte ableiten (indem wir den Spaltennamen nicht einbeziehen). `New York`hat den gleichen Zufallswert in den Spalten `City` und`State`. New York ist eine der wenigen Städte in den USA, in denen der `City` Name mit dem `State` Namen identisch ist. Wenn Ihr Datensatz dagegen in jeder Spalte völlig unterschiedliche Werte enthält, werden keine Informationen durchgesickert.

Weitere Informationen zum Parameter für dieses Szenario finden Sie unter[Parameter „Zulassen JOIN von Spalten mit unterschiedlichen Namen“](crypto-computing-parameters.md#parameter-allowjoin).

## Bestimmen, wie NULL Werte dargestellt werden
<a name="determine-null-values"></a>

Sie haben die Wahl, ob Sie Werte wie alle anderen NULL Werte kryptografisch (verschlüsseln und HMAC) verarbeiten möchten. Wenn Sie Werte nicht wie alle anderen NULL Werte verarbeiten, können Informationen preisgegeben werden. 

Nehmen wir zum Beispiel an, dass NULL in der `Middle Name` Spalte in der Personen ohne zweiten Vornamen cleartext angegeben werden. Wenn Sie diese Werte nicht verschlüsseln, können Sie durchsickern lassen, welche Zeilen in der verschlüsselten Tabelle für Personen ohne zweiten Vornamen verwendet werden. Diese Informationen könnten für einige Menschen in bestimmten Bevölkerungsgruppen ein Identifikationssignal sein. Wenn Sie NULL Werte jedoch kryptografisch verarbeiten, verhalten sich bestimmte SQL-Abfragen anders. Beispielsweise gruppieren GROUP BY Klauseln fingerprint NULL Werte in fingerprint Spalten nicht zusammen. 

Weitere Informationen zum Parameter für dieses Szenario finden Sie unter[Parameter „NULLWerte beibehalten“](crypto-computing-parameters.md#parameter-preservenulls).

# Unterstützte Datei- und Datentypen in Cryptographic Computing für Clean Rooms
<a name="crypto-computing-file-types"></a>

Der C3R-Verschlüsselungsclient erkennt die folgenden Dateitypen: 
+ CSV-Dateien
+ ParquetDateien

Sie können das `--fileFormat` Flag im C3R-Verschlüsselungsclient verwenden, um ein Dateiformat explizit anzugeben. Wenn das Dateiformat explizit angegeben wird, wird es nicht durch die Dateierweiterung bestimmt.

**Topics**
+ [CSV-Dateien](#csv-file-type)
+ [ParquetDateien](#parquet-file-type)
+ [Verschlüsseln von Werten, die keine Zeichenfolge sind](#encrypt-non-string-values)

## CSV-Dateien
<a name="csv-file-type"></a>

Es wird davon ausgegangen, dass eine Datei mit der Erweiterung.csv im CSV-Format ist und UTF-8-codierten Text enthält. Der C3R-Verschlüsselungsclient behandelt alle Werte als Zeichenketten.

### Unterstützte Eigenschaften in CSV-Dateien
<a name="csv-properties"></a>

Der C3R-Verschlüsselungsclient erfordert, dass CSV-Dateien die folgenden Eigenschaften haben:
+ Kann eine erste Kopfzeile enthalten, die jede Spalte eindeutig benennt, oder auch nicht.
+ Durch Kommas getrennt. (Derzeit werden benutzerdefinierte Trennzeichen nicht unterstützt.)
+ UTF-8-codierter Text.

#### Löschen von Leerzeichen aus CSV-Einträgen
<a name="whitespace-trimming"></a>

Sowohl führende als auch nachfolgende Leerzeichen werden aus CSV-Einträgen entfernt.

#### Benutzerdefinierte NULL Kodierung für eine CSV-Datei
<a name="custom-null-encoding"></a>

Eine CSV-Datei kann eine benutzerdefinierte NULL Kodierung verwenden.

Mit dem C3R-Verschlüsselungsclient können Sie mithilfe des Flags benutzerdefinierte Kodierungen für NULL Einträge in den Eingabedaten angeben. `--csvInputNULLValue=<csv-input-null>` Der C3R-Verschlüsselungsclient kann mithilfe des Flags benutzerdefinierte Kodierungen in der generierten Ausgabedatei für NULL-Einträge verwenden. `--csvOutputNULLValue=<csv-output-null>`

**Anmerkung**  
Es wird NULL davon ausgegangen, dass es einem Eintrag *an Inhalt mangelt*, insbesondere im Zusammenhang mit einem umfangreicheren Tabellenformat wie einer SQL-Tabelle. Obwohl .csv diese Charakterisierung aus historischen Gründen nicht ausdrücklich unterstützt, ist es üblich, einen leeren Eintrag, der nur Leerraum enthält, als solche zu betrachten. NULL Daher ist dies das Standardverhalten des C3R-Verschlüsselungsclients und kann nach Bedarf angepasst werden.

### Wie werden CSV-Einträge von C3R interpretiert
<a name="interpretation-csv-entries"></a>

Die folgende Tabelle enthält Beispiele dafür, wie .csv-Einträge auf der Grundlage der Werte (falls vorhanden)cleartext, die cleartext für die Flags und angegeben wurden, zusammengefasst werden (aus Gründen der Übersichtlichkeit). `--csvInputNULLValue=<csv-input-null>` `--csvOutputNULLValue=<csv-output-null>` Leerzeichen am Anfang und am Ende von Anführungszeichen werden gekürzt, bevor C3R die Bedeutung eines Werts interpretiert.


| `<csv-input-null>` | `<csv-output-null>` | Eingabeeintrag | Ausgangseintrag | 
| --- |--- |--- |--- |
| Keine | Keine | ,AnyProduct, | ,AnyProduct, | 
| Keine | Keine | , AnyProduct , | ,AnyProduct, | 
| Keine | Keine | ,"AnyProduct", | ,AnyProduct, | 
| Keine | Keine | , "AnyProduct" , | ,AnyProduct, | 
| Keine | Keine | ,, | ,, | 
| Keine | Keine | , , | ,, | 
| Keine | Keine | ,"", | ,, | 
| Keine | Keine | ," ", | ," ", | 
| Keine | Keine | , " " , | ," ", | 
| "AnyProduct" | "NULL" | ,AnyProduct, | ,NULL, | 
| "AnyProduct" | "NULL" | , AnyProduct , | ,NULL, | 
| "AnyProduct" | "NULL" | ,"AnyProduct", | ,NULL, | 
| "AnyProduct" | "NULL" | , "AnyProduct" , | ,NULL, | 
| Keine | "NULL" | ,, | ,NULL, | 
| Keine | "NULL" | , , | ,NULL, | 
| Keine | "NULL" | ,"", | ,NULL, | 
| Keine | "NULL" | ," ", | ," ", | 
| Keine | "NULL" | , " " , | ," ", | 
| "" | "NULL" | ,, | ,NULL, | 
| "" | "NULL" | , , | ,NULL, | 
| "" | "NULL" | ,"", | ,"", | 
| "" | "NULL" | ," ", | ," ", | 
| "" | "NULL" | , " " , | ," ", | 
| "\$1"\$1"" | "NULL" | ,, | ,, | 
| "\$1"\$1"" | "NULL" | , , | ,, | 
| "\$1"\$1"" | "NULL" | ,"", | ,NULL, | 
| "\$1"\$1"" | "NULL" | ," ", | ," ", | 
| "\$1"\$1"" | "NULL" | , " " , | ," ", | 

### CSV-Datei ohne Header
<a name="csv-file-no-headers"></a>

Die CSV-Quelldatei muss keine Kopfzeilen in der ersten Zeile haben, die jede Spalte eindeutig benennen. Für eine CSV-Datei ohne Kopfzeile ist jedoch ein positionsbezogenes Verschlüsselungsschema erforderlich. Das Positionsverschlüsselungsschema ist anstelle des typischen Mapping-Schemas erforderlich, das sowohl für CSV-Dateien mit einer Kopfzeile als auch für Dateien verwendet wird. Parquet

Ein positionsabhängiges Verschlüsselungsschema spezifiziert Ausgabespalten nach Position statt nach Namen. Ein zugeordnetes Verschlüsselungsschema ordnet Quellspaltennamen Zielspaltennamen zu. Weitere Informationen, einschließlich einer ausführlichen Erläuterung und Beispielen für beide Schemaformate, finden Sie unter[Schemas für zugeordnete und positionierte Tabellen](create-schema.md#mapped-and-positional-schemas).

## ParquetDateien
<a name="parquet-file-type"></a>

Es wird davon ausgegangen, dass eine Datei mit einer .parquet Erweiterung das Apache Parquet Format hat.

### Unterstützte Parquet Datentypen
<a name="supported-parquet-data-types"></a>

Der C3R-Verschlüsselungsclient kann alle nicht komplexen (d. h. primitiven Datentypen) Daten in einer Parquet Datei verarbeiten, die einen Datentyp darstellt, der von unterstützt wird. AWS Clean Rooms

Für Spalten können jedoch nur Zeichenkettenspalten verwendet werden. sealed

Die folgenden Parquet-Datentypen werden unterstützt:
+ `Binary`primitiver Typ mit den folgenden logischen Anmerkungen:
  + Keine, wenn der gesetzt `--parquetBinaryAsString` ist (`STRING`Datentyp)
  + `Decimal(scale, precision)`(`DECIMAL`Datentyp)
  + `String`(`STRING`Datentyp)
+ `Boolean`primitiver Datentyp ohne logische Anmerkung (`BOOLEAN`Datentyp)
+ `Double`primitiver Datentyp ohne logische Anmerkung (`DOUBLE`Datentyp)
+ `Fixed_Len_Binary_Array`primitiver Typ mit der `Decimal(scale, precision)` logischen Anmerkung (`DECIMAL`Datentyp)
+ `Float`primitiver Datentyp ohne logische Anmerkung (`FLOAT`Datentyp)
+ `Int32`primitiver Typ mit den folgenden logischen Anmerkungen:
  + Keiner (`INT`Datentyp)
  + `Date`(`DATE`Datentyp)
  + `Decimal(scale, precision)`(`DECIMAL`Datentyp)
  + `Int(16, true)`(`SMALLINT`Datentyp)
  + `Int(32, true)`(`INT`Datentyp)
+ `Int64`primitiver Datentyp mit den folgenden logischen Anmerkungen:
  + Keiner (`BIGINT`Datentyp)
  + `Decimal(scale, precision)`(`DECIMAL`Datentyp)
  + `Int(64, true)`(`BIGINT`Datentyp)
  + `Timestamp(isUTCAdjusted, TimeUnit.MILLIS)`(`TIMESTAMP`Datentyp)
  + `Timestamp(isUTCAdjusted, TimeUnit.MICROS)`(`TIMESTAMP`Datentyp)
  + `Timestamp(isUTCAdjusted, TimeUnit.NANOS)`(`TIMESTAMP`Datentyp)

## Verschlüsseln von Werten, die keine Zeichenfolge sind
<a name="encrypt-non-string-values"></a>

Derzeit werden nur Zeichenkettenwerte für sealed Spalten unterstützt. 

Bei CSV-Dateien behandelt der C3R-Verschlüsselungsclient alle Werte als UTF-8-codierten Text und versucht nicht, sie vor der Verschlüsselung unterschiedlich zu interpretieren. 

Bei Fingerabdruckspalten werden die Typen in Äquivalenzklassen eingeteilt. Eine Äquivalenzklasse ist ein Satz von Datentypen, deren Gleichheit anhand eines repräsentativen Datentyps eindeutig verglichen werden kann.

Äquivalenzklassen ermöglichen es, identische Fingerabdrücke demselben semantischen Wert zuzuweisen, unabhängig von der ursprünglichen Darstellung. Derselbe Wert in zwei Äquivalenzklassen führt jedoch nicht zu derselben Fingerabdruckspalte.

Beispielsweise `42` wird dem `INTEGRAL` Wert derselbe Fingerabdruck zugewiesen, unabhängig davon, ob es sich ursprünglich um ein `SMALLINT``INT`, oder `BIGINT` handelte. Außerdem `0` wird der `INTEGRAL` Wert niemals mit dem `BOOLEAN` Wert `FALSE` (der durch den Wert repräsentiert wird`0`) übereinstimmen.

Die folgenden Äquivalenzklassen und die entsprechenden AWS Clean Rooms Datentypen werden von Fingerabdruckspalten unterstützt:


| Äquivalenzklasse | Unterstützter AWS Clean Rooms Datentyp | 
| --- | --- | 
| BOOLEAN | BOOLEAN | 
| DATE | DATE | 
| INTEGRAL | BIGINT, INT, SMALLINT | 
|  STRING | CHAR, STRING, VARCHAR | 

# Spaltennamen in Cryptographic Computing für Clean Rooms
<a name="crypto-computing-column-names"></a>

Standardmäßig sind die Namen von Spalten in Cryptographic Computing for wichtig. Clean Rooms

Wenn der Wert des Parameters **Spalten mit unterschiedlichen Namen zulassen JOIN** auf **False gesetzt** ist, werden bei der Verschlüsselung von fingerprint Spalten Spaltennamen verwendet. Aus diesem Grund müssen sich Mitarbeiter standardmäßig im Voraus abstimmen und dieselben Zielspaltennamen für Daten verwenden, für die JOIN Anweisungen in Abfragen verwendet werden. Standardmäßig können Spalten, für die unterschiedliche Namen verschlüsselt wurden, JOIN JOIN bei keinem Wert erfolgreich verwendet werden.

Wenn der Wert des Parameters **Spalten mit unterschiedlichen Namen zulassen JOIN** **wahr** ist, sind JOIN Anweisungen für alle als Spalten verschlüsselten fingerprint Spalten erfolgreich. Das Verschlüsseln von Daten mit diesem Parameter ermöglicht möglicherweise einige Rückschlüsse auf die cleartext Werte. Wenn eine Zeile beispielsweise denselben HMAC-Wert (Hash-Based Message Authentication Code) sowohl in der Spalte als auch in der `City` Spalte hat, könnte `State` der Wert lauten. `New York`

## Normalisierung der Namen der Spaltenüberschriften
<a name="column-header-names-normalization"></a>

Die Namen der Spaltenüberschriften werden vom C3R-Verschlüsselungsclient normalisiert. Alle Leerzeichen am Anfang und Ende werden entfernt, und der Spaltenname wird für die transformierte Ausgabe in Kleinbuchstaben geschrieben.

Die Normalisierung wird vor allen anderen Berechnungen, Berechnungen oder anderen Operationen angewendet, die möglicherweise durch Spaltennamen beeinflusst werden könnten. Die ausgegebene Ausgabedatei enthält nur die normalisierten Namen.

# Spaltentypen in Cryptographic Computing für Clean Rooms
<a name="crypto-computing-column-types"></a>

Dieses Thema enthält Informationen zu Spaltentypen in Cryptographic Computing for. Clean Rooms

**Topics**
+ [FingerprintSpalten](#fingerprint-columns)
+ [Versiegelte Spalten](#sealed-columns)
+ [CleartextSpalten](#cleartext-columns)

## FingerprintSpalten
<a name="fingerprint-columns"></a>

*FingerprintSpalten* sind Spalten, die kryptografisch für die Verwendung in JOIN Anweisungen geschützt sind.

Daten aus fingerprint Spalten können nicht entschlüsselt werden. Nur Daten aus versiegelten Spalten können entschlüsselt werden.

FingerprintSpalten dürfen nur in den folgenden SQL-Klauseln und Funktionen verwendet werden:
+ JOIN (INNER, OUTER, LEFT, RIGHT, or FULL)gegen andere fingerprint Spalten: 
  + Wenn der Wert des `allowJoinsOnColumnsWithDifferentNames` Parameters auf gesetzt ist`false`, JOIN müssen beide fingerprint Spalten von ebenfalls denselben Namen haben.
+ `SELECT COUNT()`
+ `SELECT COUNT(DISTINCT )`
+ `GROUP BY`(Nur verwenden, wenn die Kollaboration den Wert des `preserveNulls` Parameters auf festgelegt hat`true`.)

Abfragen, die gegen diese Einschränkungen verstoßen, können zu falschen Ergebnissen führen.

## Versiegelte Spalten
<a name="sealed-columns"></a>

*Versiegelte Spalten* sind Spalten, die kryptografisch für die Verwendung in SELECT Anweisungen geschützt sind. 

Versiegelte Spalten dürfen nur in den folgenden SQL-Klauseln und Funktionen verwendet werden:
+ `SELECT`
+ `SELECT ... AS`
+ `SELECT COUNT()`
**Anmerkung**  
`SELECT COUNT(DISTINCT )` wird nicht unterstützt.

Abfragen, die gegen diese Einschränkungen verstoßen, können zu falschen Ergebnissen führen.

### Daten für eine sealed Spalte vor der Verschlüsselung auffüllen
<a name="padding-data"></a>

Wenn Sie angeben, dass eine Spalte eine Spalte sein soll, fragt C3R Sie, welche Art von *Polsterung* Sie wählen sollen. sealed Das Auffüllen von Daten vor der Verschlüsselung ist optional. Ohne Auffüllung (ein Pad-Typ von`none`) gibt die Länge der verschlüsselten Daten die Größe des an. cleartext Unter bestimmten Umständen cleartext könnte die Größe von den Klartext offenlegen. Bei Padding (ein Pad-Typ von `fixed` oder`max`) werden alle Werte zunächst auf eine gemeinsame Größe aufgefüllt und dann verschlüsselt. Beim Padding gibt die Länge der verschlüsselten Daten keine Auskunft über die ursprüngliche cleartext Länge, es sei denn, es wird eine Obergrenze für die Größe angegeben.

Wenn Sie für eine Spalte eine Auffüllung wünschen und die maximale Bytelänge der Daten in dieser Spalte bekannt ist, verwenden Sie `fixed` Padding. Verwenden Sie einen `length` Wert, der mindestens so groß ist wie die Bytelänge des längsten Werts in dieser Spalte. 

**Anmerkung**  
Wenn ein Wert länger als der angegebene Wert ist, tritt ein Fehler auf und die Verschlüsselung schlägt fehl. `length`

Wenn Sie für eine Spalte eine Auffüllung wünschen und die maximale Bytelänge der Daten in dieser Spalte nicht bekannt ist, verwenden Sie `max` Padding. In diesem Auffüllmodus werden alle Daten auf die Länge des längsten Werts zuzüglich zusätzlicher Byte aufgefüllt. `length`

**Anmerkung**  
Möglicherweise möchten Sie Daten stapelweise verschlüsseln oder Ihre Tabellen regelmäßig mit neuen Daten aktualisieren. Beachten Sie, dass beim `max` Auffüllen die Einträge auf die Länge (plus `length` Byte) des längsten Klartexteintrags in einem bestimmten Stapel aufgefüllt werden. Das bedeutet, dass die Länge des Chiffretextes von Stapel zu Stapel variieren kann. Wenn Sie also die maximale Bytelänge für eine Spalte kennen, sollten Sie stattdessen die Option verwenden. `fixed` `max`

## CleartextSpalten
<a name="cleartext-columns"></a>

*CleartextSpalten* sind Spalten, die nicht kryptografisch für die Verwendung in JOIN Oder-Anweisungen geschützt sind. SELECT

CleartextSpalten können in jedem Teil der SQL-Abfrage verwendet werden.

# Kryptografische Rechenparameter
<a name="crypto-computing-parameters"></a>

[Kryptografische Rechenparameter sind für Kollaborationen verfügbar, bei denen Cryptographic Computing for Clean Rooms (C3R) beim Erstellen einer Kollaboration verwendet wird.](create-collaboration.md) Sie können eine Kollaboration entweder mithilfe der AWS Clean Rooms Konsole oder mithilfe der API-Operation erstellen. `CreateCollaboration` In der Konsole können Sie Werte für die Parameter unter Verschlüsselungsparameter festlegen, nachdem Sie die Option **Kryptografisches** **Rechnen Support aktiviert** haben. Weitere Informationen finden Sie unter den folgenden Themen.

**Topics**
+ [Parameter „Spalten zulassencleartext“](#parameter-allowcleartext)
+ [Parameter „Duplikate zulassen“](#parameter-allowduplicates)
+ [Parameter „Zulassen JOIN von Spalten mit unterschiedlichen Namen“](#parameter-allowjoin)
+ [Parameter „NULLWerte beibehalten“](#parameter-preservenulls)

## Parameter „Spalten zulassencleartext“
<a name="parameter-allowcleartext"></a>

In der Konsole können Sie beim [Erstellen einer Kollaboration](create-collaboration.md) den Parameter **cleartextSpalten zulassen** festlegen, um anzugeben, ob cleartext Daten in einer Tabelle mit verschlüsselten Daten zulässig sind.

In der folgenden Tabelle werden die Werte für den Parameter **Allow cleartext columns** beschrieben.


| Parameterwert | Description | 
| --- | --- | 
| Nein |  CleartextSpalten sind in der verschlüsselten Tabelle nicht zulässig. Alle Daten sind kryptografisch geschützt.  | 
| Ja |  CleartextSpalten sind in der verschlüsselten Tabelle zulässig. CleartextSpalten sind nicht kryptografisch geschützt und werden als aufgenommen. cleartext Sie sollten sich notieren, was die Daten Ihrer Zeilen über die anderen cleartext Daten in der Tabelle aussagen könnten. Um SUM oder AVG für bestimmte Spalten auszuführen, müssen sich die Spalten in cleartext befinden.  | 

Mithilfe der `CreateCollaboration` API-Operation können Sie für den `dataEncryptionMetadata` Parameter den Wert `allowCleartext` auf `true` oder festlegen`false`. Weitere Informationen zu API-Vorgängen finden Sie in der [AWS Clean Rooms API-Referenz](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

CleartextSpalten entsprechen Spalten, die cleartext im tabellenspezifischen Schema als Spalten klassifiziert sind. Die Daten in diesen Spalten sind nicht verschlüsselt und können auf beliebige Weise verwendet werden. CleartextSpalten können nützlich sein, wenn die Daten nicht sensibel sind, and/or wenn mehr Flexibilität erforderlich ist, als es eine verschlüsselte sealed Spalte oder fingerprint Spalte zulässt.

## Parameter „Duplikate zulassen“
<a name="parameter-allowduplicates"></a>

In der Konsole können Sie beim [Erstellen einer Kollaboration](create-collaboration.md) den Parameter **Duplikate zulassen** festlegen, um anzugeben, ob für JOIN Abfragen verschlüsselte Spalten doppelte Nichtwerte enthalten können. NULL

**Wichtig**  
Die Parameter „**Duplikate** [**zulassenJOIN“, „Spalten mit unterschiedlichen Namen**](#parameter-allowjoin) zulassen“ und „[**NULLWerte beibehalten**](#parameter-preservenulls)“ haben unterschiedliche, aber verwandte Auswirkungen.

In der folgenden Tabelle werden die Werte für den Parameter **Duplikate zulassen** beschrieben.


| Parameterwert | Description | 
| --- | --- | 
| Nein  |  Wiederholte Werte sind in einer fingerprint Spalte nicht zulässig. Alle Werte in einer einzelnen fingerprint Spalte müssen eindeutig sein.  | 
| Ja |  Wiederholte Werte sind in einer fingerprint Spalte zulässig.  Wenn Sie Spalten mit wiederholten Werten verbinden müssen, setzen Sie diesen Wert auf **Ja**. Wenn diese Option auf **Ja** gesetzt ist, können Häufigkeitsmuster, die in den fingerprint Spalten der C3R-Tabelle oder der Ergebnisse erscheinen, zusätzliche Informationen über die Struktur der cleartext Daten enthalten.   | 

Mithilfe der `CreateCollaboration` API-Operation können Sie für den `dataEncryptionMetadata` Parameter den Wert `allowDuplicates` auf `true` oder `false` festlegen. Weitere Informationen zu API-Vorgängen finden Sie in der [AWS Clean Rooms API-Referenz](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

Wenn verschlüsselte Daten in JOIN Abfragen verwendet werden müssen, verlangt der C3R-Verschlüsselungsclient standardmäßig, dass diese Spalten keine doppelten Werte enthalten. Diese Anforderung ist ein Versuch, den Datenschutz zu verbessern. Dieses Verhalten kann dazu beitragen, dass wiederholte Muster in den Daten nicht beobachtbar sind. Wenn Sie jedoch mit verschlüsselten Daten in JOIN Abfragen arbeiten möchten und sich keine Gedanken über doppelte Werte machen, kann der Parameter **Duplikate zulassen** diese konservative Prüfung deaktivieren.

## Parameter „Zulassen JOIN von Spalten mit unterschiedlichen Namen“
<a name="parameter-allowjoin"></a>

In der Konsole können Sie beim [Erstellen einer Kollaboration](create-collaboration.md) den Parameter **Spalten mit unterschiedlichen Namen zulassen JOIN** festlegen, um anzugeben, ob JOIN Anweisungen zwischen Spalten mit unterschiedlichen Namen unterstützt werden.

Weitere Informationen finden Sie unter [Normalisierung der Namen der Spaltenüberschriften](crypto-computing-column-names.md#column-header-names-normalization).

In der folgenden Tabelle werden die Werte für den Parameter **Zulassen JOIN von Spalten mit unterschiedlichen Namen** beschrieben.


| Parameterwert | Description | 
| --- | --- | 
| Nein  |  Verknüpfungen von fingerprint Spalten mit unterschiedlichen Namen werden nicht unterstützt. JOINAnweisungen liefern nur genaue Ergebnisse für Spalten mit demselben Namen.  Der Wert „**Nein**“ erhöht die Informationssicherheit, erfordert jedoch, dass sich die Kollaborationsteilnehmer zuvor über die Spaltennamen einigen. Wenn zwei Spalten unterschiedliche Namen haben, wenn sie als fingerprint Spalten verschlüsselt sind und **Spalten mit unterschiedlichen Namen zulassen JOIN** auf **Nein** gesetzt ist, führen JOIN Anweisungen zu diesen Spalten zu keinen Ergebnissen. Das liegt daran, dass sie nach der Verschlüsselung keine Werte gemeinsam nutzen.    | 
| Ja |  Verknüpfungen von fingerprint Spalten mit unterschiedlichen Namen werden unterstützt. Für zusätzliche Flexibilität können Benutzer diesen Wert auf **Ja** setzen, sodass JOIN Aussagen zu Spalten unabhängig von deren Spaltennamen möglich sind.  Wenn dieser Wert auf **Ja** gesetzt ist, berücksichtigt der C3R-Verschlüsselungsclient den Spaltennamen beim Schutz von fingerprint Spalten nicht. Daher sind gemeinsame Werte in verschiedenen fingerprint Spalten in der C3R-Tabelle beobachtbar.  Wenn eine Zeile beispielsweise denselben verschlüsselten JOIN Wert sowohl in einer Spalte als auch in einer `City` Spalte hat, kann es sinnvoll sein, daraus zu schließen, dass dieser Wert ist. `State` `New York`  | 

Mithilfe der `CreateCollaboration` API-Operation können Sie für den `dataEncryptionMetadata` Parameter den Wert `allowJoinsOnColumnsWithDifferentNames` auf `true` oder `false` festlegen. Weitere Informationen zu API-Vorgängen finden Sie in der [AWS Clean Rooms API-Referenz](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

Standardmäßig wird die fingerprint Spaltenverschlüsselung durch die `targetHeader` für diese Spalte eingestellte Einstellung beeinflusst[Schritt 4: Generieren Sie ein Verschlüsselungsschema für eine tabellarische Datei](gen-encryption-schema-csv.md). Daher hat derselbe cleartext Wert in jeder fingerprint Spalte, für die er verschlüsselt ist, unterschiedliche verschlüsselte Darstellungen.

Dieser Parameter kann in einigen Fällen nützlich sein, um die Inferenz von cleartext Werten zu verhindern. `State`Es kann beispielsweise verwendet werden, wenn derselbe verschlüsselte Wert in fingerprint Spalten angezeigt `City` wird, um vernünftigerweise auf den Wert schließen zu können. `New York` Die Verwendung dieses Parameters erfordert jedoch eine zusätzliche Abstimmung im Voraus, sodass alle Spalten, die in Abfragen verknüpft werden sollen, gemeinsame Namen haben.

Sie können den Parameter **Spalten mit unterschiedlichen Namen zulassen JOIN** verwenden, um diese Einschränkung zu lockern. Wenn der Parameterwert auf gesetzt ist`Yes`, können alle Spalten, für die verschlüsselt wurdeJOIN, unabhängig vom Namen zusammen verwendet werden.

## Parameter „NULLWerte beibehalten“
<a name="parameter-preservenulls"></a>

In der Konsole können Sie beim [Erstellen einer Kollaboration](create-collaboration.md) den Parameter **NULLWerte beibehalten** so einstellen, dass für diese Spalte kein Wert vorhanden ist.

In der folgenden Tabelle werden die Werte für den Parameter **NULLWerte beibehalten** beschrieben.


| Parameterwert | Description | 
| --- | --- | 
| Nein |  NULLWerte werden nicht beibehalten. NULLWerte werden nicht wie NULL in einer verschlüsselten Tabelle angezeigt. NULLWerte werden in einer C3R-Tabelle als eindeutige Zufallswerte angezeigt.   | 
| Ja | NULLWerte werden beibehalten. NULLWerte werden wie NULL in einer verschlüsselten Tabelle angezeigt. Wenn Sie die NULL SQL-Wertesemantik benötigen, können Sie diesen Wert auf Ja setzen. Daher werden NULL Einträge wie NULL in der C3R-Tabelle angezeigt, unabhängig davon, ob die Spalte verschlüsselt ist und unabhängig von der Parametereinstellung für Duplikate zulassen.  | 

Mithilfe der `CreateCollaboration` API-Operation können Sie für den `dataEncryptionMetadata` Parameter den Wert auf oder festlegen. `preserveNulls` `true` `false` Weitere Informationen zu API-Vorgängen finden Sie in der [AWS Clean Rooms API-Referenz](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

Wenn der Parameter **NULLWerte beibehalten** für die Zusammenarbeit auf **Nein** gesetzt ist:

1. NULLEinträge in `cleartext` Spalten sind unverändert.

1. NULLEinträge in verschlüsselten `fingerprint` Spalten werden als Zufallswerte verschlüsselt, um ihren Inhalt zu verbergen. Bei der Verknüpfung zu einer verschlüsselten Spalte mit NULL Einträgen in der cleartext Spalte ergeben sich keine Treffer für einen der NULL Einträge. Es werden keine Treffer erzielt, da sie jeweils ihren eigenen, eindeutigen zufälligen Inhalt erhalten.

1. NULLEinträge in verschlüsselten `sealed` Spalten sind verschlüsselt.

Wenn der Wert des Parameters **NULLWerte beibehalten** für die Kollaboration auf **Ja** gesetzt ist, bleiben die NULL Einträge aus allen Spalten unverändert, NULL unabhängig davon, ob die Spalte verschlüsselt ist.

Der Parameter **NULLWerte beibehalten** ist nützlich in Szenarien wie der Datenanreicherung, in denen Sie fehlende Informationen weitergeben möchten, ausgedrückt alsNULL. Der Parameter **NULLWerte beibehalten** ist auch im fingerprint oder HMAC-Format nützlich, wenn Sie NULL Werte in der gewünschten Spalte haben oder. JOIN GROUP BY

Wenn der Wert der Parameter **Duplikate zulassen** und **NULLWerte beibehalten** auf **Nein** gesetzt ist, führt das Vorhandensein von mehr als einem NULL Eintrag in einer fingerprint Spalte zu einem Fehler und die Verschlüsselung wird gestoppt. Wenn der Wert eines der beiden Parameter auf **Ja** gesetzt ist, tritt kein solcher Fehler auf.

# Optionale Flags in Cryptographic Computing für Clean Rooms
<a name="crypto-computing-optional-flags"></a>

In den folgenden Abschnitten werden die optionalen Flags beschrieben, die Sie festlegen können, wenn Sie [Daten mit dem C3R-Verschlüsselungsclient verschlüsseln](encrypt-data.md), um tabellarische Dateien anzupassen und zu testen.

**Topics**
+ [`--csvInputNULLValue`-Flag](#optional-flags-CSVinputNullValue)
+ [`--csvOutputNULLValue`-Flag](#optional-flags-CSVoutputNullValue)
+ [`--enableStackTraces`-Flag](#optional-flags-enablestacktraces)
+ [`--dryRun`-Flag](#optional-flags-dry-run)
+ [`--tempDir`-Flag](#optional-flags-working-dir)

## `--csvInputNULLValue`-Flag
<a name="optional-flags-CSVinputNullValue"></a>

Sie können das `--csvInputNULLValue` Flag verwenden, um benutzerdefinierte Kodierungen für NULL Einträge in den Eingabedaten anzugeben, wenn Sie Daten mit dem [C3R-Verschlüsselungsclient verschlüsseln](encrypt-data.md). 

In der folgenden Tabelle werden die Verwendung und die Parameter dieses Flags zusammengefasst.


| Usage | Parameters | 
| --- | --- | 
| Optional. Benutzer können benutzerdefinierte Kodierungen für NULL Einträge in den Eingabedaten angeben. | Benutzerdefinierte Kodierung von NULL Werten in der CSV-Eingabedatei | 

Ein NULL Eintrag ist ein Eintrag, der als inhaltslos angesehen wird, insbesondere im Zusammenhang mit einem umfangreicheren Tabellenformat wie einer SQL-Tabelle. Obwohl .csv diese Charakterisierung aus historischen Gründen nicht ausdrücklich unterstützt, ist es üblich, einen leeren Eintrag, der nur Leerraum enthält, als solche zu betrachten. NULL Daher ist dies das Standardverhalten des C3R-Verschlüsselungsclients und kann nach Bedarf angepasst werden.

## `--csvOutputNULLValue`-Flag
<a name="optional-flags-CSVoutputNullValue"></a>

Sie können das `--csvOutputNULLValue` Flag verwenden, um benutzerdefinierte Kodierungen für NULL Einträge in den Ausgabedaten anzugeben, wenn Sie [Daten mit dem C3R-Verschlüsselungsclient](encrypt-data.md) verschlüsseln. 

In der folgenden Tabelle werden die Verwendung und die Parameter dieses Flags zusammengefasst.


| Usage | Parameters | 
| --- | --- | 
| Optional. Benutzer können in der generierten Ausgabedatei für NULL Einträge benutzerdefinierte Kodierungen angeben.  | Benutzerdefinierte Kodierung von NULL Werten in der CSV-Ausgabedatei | 

Ein NULL Eintrag ist ein Eintrag, der als inhaltslos angesehen wird, insbesondere im Zusammenhang mit einem umfangreicheren Tabellenformat wie einer SQL-Tabelle. Obwohl .csv diese Charakterisierung aus historischen Gründen nicht ausdrücklich unterstützt, ist es üblich, einen leeren Eintrag, der nur Leerraum enthält, als solche zu betrachten. NULL Daher ist dies das Standardverhalten des C3R-Verschlüsselungsclients und kann nach Bedarf angepasst werden.

## `--enableStackTraces`-Flag
<a name="optional-flags-enablestacktraces"></a>

Wenn Sie [Daten mit dem C3R-Verschlüsselungsclient verschlüsseln](encrypt-data.md), verwenden Sie das `--enableStackTraces` Flag, um zusätzliche Kontextinformationen für die Fehlerberichterstattung bereitzustellen, wenn C3R auf einen Fehler stößt.

AWS sammelt keine Fehler. Wenn Sie auf einen Fehler stoßen, verwenden Sie den Stack-Trace, um den Fehler selbst zu beheben, oder senden Sie den Stack-Trace an, um Support Unterstützung zu erhalten. 

In der folgenden Tabelle werden die Verwendung und die Parameter dieses Flags zusammengefasst.


| Usage | Parameters | 
| --- | --- | 
| Optional. Wird verwendet, um zusätzliche Kontextinformationen für die Fehlerberichterstattung bereitzustellen, wenn der C3R-Verschlüsselungsclient auf einen Fehler stößt. | Keine | 

## `--dryRun`-Flag
<a name="optional-flags-dry-run"></a>

Die Befehle des [C3R-Verschlüsselungsclients verschlüsseln](encrypt-data.md) und [entschlüsseln](decrypt-data.md) enthalten ein optionales Flag. `--dryRun` Das Flag verwendet alle vom Benutzer angegebenen Argumente und überprüft sie auf Gültigkeit und Konsistenz.

Sie können das `--dryRun` Flag verwenden, um zu überprüfen, ob Ihre Schemadatei gültig ist und mit der entsprechenden Eingabedatei konsistent ist. 

In der folgenden Tabelle werden die Verwendung und die Parameter dieses Flags zusammengefasst.


| Usage | Parameters | 
| --- | --- | 
| Optional. Bewirkt, dass der C3R-Verschlüsselungsclient Parameter analysiert und Dateien überprüft, aber keine Verschlüsselung oder Entschlüsselung durchführt. | Keine | 

## `--tempDir`-Flag
<a name="optional-flags-working-dir"></a>

Möglicherweise möchten Sie ein temporäres Verzeichnis verwenden, da verschlüsselte Dateien je nach ihren Einstellungen manchmal größer sein können als unverschlüsselte Dateien. Datensätze müssen außerdem pro Kollaboration verschlüsselt werden, damit sie korrekt funktionieren.

Wenn Sie [Daten mit C3R verschlüsseln](encrypt-data.md), verwenden Sie das `--tempDir` Flag, um den Speicherort anzugeben, an dem temporäre Dateien während der Verarbeitung der Eingabe erstellt werden können.

In der folgenden Tabelle werden die Verwendung und die Parameter dieses Flags zusammengefasst.


| Usage | Parameters | 
| --- | --- | 
| Benutzer können den Speicherort angeben, an dem temporäre Dateien während der Verarbeitung der Eingabe erstellt werden können.  | Standardmäßig wird das temporäre Systemverzeichnis verwendet. | 

# Abfragen mit Cryptographic Computing für Clean Rooms
<a name="crypto-computing-queries"></a>

Dieses Thema enthält Informationen zum Schreiben von Abfragen, die Datentabellen verwenden, die mithilfe von Cryptographic Computing for verschlüsselt wurden. Clean Rooms

**Topics**
+ [Abfragen, die sich wie folgt verzweigen NULL](#queries-branch-on-null)
+ [Zuordnen einer Quellspalte zu mehreren Zielspalten](#queries-mapping)
+ [Verwenden Sie dieselben Daten für beide JOIN SELECT Abfragen](#queries-using-same-data)

## Abfragen, die sich wie folgt verzweigen NULL
<a name="queries-branch-on-null"></a>

Eine Abfrageverzweigung für eine NULL Anweisung zu haben, bedeutet, eine Syntax wie zu verwenden`IF x IS NULL THEN 0 ELSE 1`.

Abfragen können sich immer auf NULL Anweisungen in cleartext Spalten verzweigen. 

Abfragen können sich nur dann auf NULL Anweisungen in sealed Spalten und fingerprint Spalten stützen, wenn der Wert des Parameters **NULL-Werte beibehalten** (`preserveNulls`) auf gesetzt ist`true`.

Abfragen, die gegen diese Einschränkungen verstoßen, können zu falschen Ergebnissen führen.

## Zuordnen einer Quellspalte zu mehreren Zielspalten
<a name="queries-mapping"></a>

Eine Quellspalte kann mehreren Zielspalten zugeordnet werden. Beispielsweise möchten Sie vielleicht beides JOIN und SELECT eine Spalte gleichzeitig verwenden. 

Weitere Informationen finden Sie unter [Verwenden Sie dieselben Daten für beide JOIN SELECT Abfragen](#queries-using-same-data).

## Verwenden Sie dieselben Daten für beide JOIN SELECT Abfragen
<a name="queries-using-same-data"></a>

Wenn die Daten in einer Spalte nicht vertraulich sind, können sie in einer cleartext Zielspalte erscheinen, sodass sie für jeden Zweck verwendet werden können.

Wenn Daten in einer Spalte vertraulich sind JOIN und sowohl für SELECT Abfragen als auch verwendet werden müssen, ordnen Sie diese Quellspalte zwei Zielspalten in der Ausgabedatei zu. Eine Spalte ist mit der `type` als fingerprint Spalte verschlüsselt, und eine Spalte ist mit der `type` als versiegelte Spalte verschlüsselt. Die interaktive Schemagenerierung des C3R-Verschlüsselungsclients schlägt Header-Suffixe von und vor. `_fingerprint` `_sealed` Diese Header-Suffixe können eine nützliche Konvention sein, um solche Spalten schnell zu unterscheiden.

# Richtlinien für den C3R-Verschlüsselungsclient
<a name="crypto-computing-guidelines"></a>

Der C3R-Verschlüsselungsclient ist ein Tool, mit dem Unternehmen sensible Daten zusammenführen können, um aus Datenanalysen neue Erkenntnisse zu gewinnen. Das Tool schränkt kryptografisch ein, was von jeder Partei und AWS während des Prozesses gelernt werden kann. Dies ist zwar von entscheidender Bedeutung, aber der Prozess der kryptografischen Sicherung von Daten kann zu einem erheblichen Mehraufwand sowohl in Bezug auf Rechen- als auch Speicherressourcen führen. Daher ist es wichtig, die Kompromisse bei der Verwendung der einzelnen Einstellungen zu verstehen und zu verstehen, wie die Einstellungen optimiert und gleichzeitig die gewünschten kryptografischen Garantien beibehalten werden können. Dieses Thema konzentriert sich auf die Auswirkungen verschiedener Einstellungen im C3R-Verschlüsselungsclient und in den Schemas auf die Leistung. 

Alle Verschlüsselungseinstellungen des C3R-Verschlüsselungsclients bieten unterschiedliche kryptografische Garantien. Die Einstellungen auf Kollaborationsebene sind standardmäßig am sichersten. Durch die Aktivierung zusätzlicher Funktionen bei gleichzeitiger Schaffung einer Zusammenarbeit werden die Datenschutzgarantien geschwächt, sodass Aktivitäten wie Frequenzanalysen anhand des Chiffretextes durchgeführt werden können. Weitere Informationen darüber, wie diese Einstellungen verwendet werden und welche Auswirkungen sie haben, finden Sie unter. [Kryptografisches Rechnen für Clean Rooms](crypto-computing.md)

**Topics**
+ [Auswirkungen auf die Leistung von Spaltentypen](#performance-implications)
+ [Behebung unerwarteter Zunahmen der Chiffretext-Größe](#troubleshooting-ciphertext-size)

## Auswirkungen auf die Leistung von Spaltentypen
<a name="performance-implications"></a>

C3R verwendet drei Spaltentypen: cleartextfingerprint, undsealed. Jeder dieser Spaltentypen bietet unterschiedliche kryptografische Garantien und hat unterschiedliche Verwendungszwecke. In den folgenden Abschnitten werden die Auswirkungen des Spaltentyps auf die Leistung sowie die Auswirkungen der einzelnen Einstellungen auf die Leistung erörtert.

**Topics**
+ [CleartextSpalten](#cleartext-columns)
+ [FingerprintSpalten](#guidelines-fingerprint-columns)
+ [SealedSpalten](#guidelines-sealed-columns)

### CleartextSpalten
<a name="cleartext-columns"></a>

CleartextSpalten werden gegenüber ihrem ursprünglichen Format nicht verändert und in keiner Weise kryptografisch verarbeitet. Dieser Spaltentyp kann nicht konfiguriert werden und beeinträchtigt weder die Speicher- noch die Rechenleistung.

### FingerprintSpalten
<a name="guidelines-fingerprint-columns"></a>

FingerprintSpalten sollen verwendet werden, um Daten aus mehreren Tabellen zu verbinden. Zu diesem Zweck muss die resultierende Chiffretextgröße immer dieselbe sein. Diese Spalten werden jedoch von den Einstellungen auf Kollaborationsebene beeinflusst. FingerprintSpalten können sich unterschiedlich stark auf die Größe der Ausgabedatei auswirken, je nachdem, was in der Eingabe cleartext enthalten ist.

**Topics**
+ [Basis-Overhead für fingerprint Spalten](#fingerprint-columns-base-overhead)
+ [Einstellungen für die Zusammenarbeit für fingerprint Spalten](#fingerprint-columns-collab-settings)
+ [Beispieldaten für eine fingerprint Spalte](#collab-set-sample-data)
+ [Problembehandlung bei fingerprint Spalten](#fingerprint-columns-troubleshooting)

#### Basis-Overhead für fingerprint Spalten
<a name="fingerprint-columns-base-overhead"></a>

Es gibt einen Basisgemeinkosten für fingerprint Spalten. Dieser Overhead ist konstant und ersetzt die Größe der cleartext Bytes.

Die Daten in den fingerprint Spalten werden mithilfe einer Hash-basierten HMAC-Funktion (Message Authentication Code) kryptografisch verarbeitet, die die Daten in einen 32-Byte-Nachrichtenauthentifizierungscode (MAC) umwandelt. Diese Daten werden dann über einen Base64-Encoder verarbeitet, wodurch die Bytegröße um etwa 33 Prozent erhöht wird. Ihm wird eine 8-Byte-C3R-Bezeichnung vorangestellt, um den Spaltentyp zu bezeichnen, zu dem die Daten gehören, und die Client-Version, die sie erzeugt hat. Das Endergebnis ist 52 Byte. Dieses Ergebnis wird dann mit der Zeilenanzahl multipliziert, um den gesamten Basis-Overhead zu erhalten (verwenden Sie die Anzahl der gesamten `null` Nichtwerte, wenn der Wert auf „true“ gesetzt `preserveNulls` ist).

Die folgende Abbildung zeigt, wie *`BASE_OVERHEAD = `*`C3R_DESIGNATION + `*`(MAC * 1.33)`***

![\[Der 52-Byte-Basisaufwand für eine fingerprint Spalte.\]](http://docs.aws.amazon.com/de_de/clean-rooms/latest/userguide/images/base-overhead-fingerprint.PNG)


Der ausgegebene Chiffretext in den fingerprint Spalten wird immer 52 Byte lang sein. Dies kann zu einer erheblichen Verringerung des Speicherplatzes führen, wenn die cleartext Eingabedaten im Durchschnitt mehr als 52 Byte umfassen (z. B. vollständige Straßenadressen). Dies kann eine erhebliche Speichererweiterung bedeuten, wenn die cleartext Eingabedaten im Durchschnitt weniger als 52 Byte enthalten (z. B. aufgrund des Alters des Kunden).

#### Einstellungen für die Zusammenarbeit für fingerprint Spalten
<a name="fingerprint-columns-collab-settings"></a>

##### `preserveNulls`-Einstellung
<a name="collab-set-preserve-nulls"></a>

Wenn die Einstellung `preserveNulls` auf Kollaborationsebene `false` (Standard) lautet, wird jeder `null` Wert durch eindeutige, zufällige 32 Byte ersetzt und so verarbeitet, als ob dies nicht der Fall wäre. `null` Das Ergebnis ist, dass jeder `null` Wert jetzt 52 Byte groß ist. Dies kann zu erheblichen Speicheranforderungen für Tabellen führen, die nur sehr wenige Daten enthalten, verglichen mit der Einstellung, bei der `null` Werte übergeben werden. `true` `null`

Wenn Sie die Datenschutzgarantien dieser Einstellung nicht benötigen und es vorziehen, `null` Werte in Ihren Datensätzen beizubehalten, aktivieren Sie die `preserveNulls` Einstellung bei der Erstellung der Kollaboration. Die `preserveNulls` Einstellung kann nach der Erstellung der Kollaboration nicht mehr geändert werden.

#### Beispieldaten für eine fingerprint Spalte
<a name="collab-set-sample-data"></a>

Im Folgenden finden Sie ein Beispiel für Eingabe- und Ausgabedaten für eine fingerprint Spalte mit Einstellungen zur Reproduktion. Andere Einstellungen auf Kollaborationsebene wirken sich wie `allowCleartext` und `allowDuplicates` nicht auf die Ergebnisse aus und können so eingestellt werden, als `true` `false` ob versucht wird, lokal zu reproduzieren.

**Beispiel für ein geteiltes Geheimnis**: `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`

**Beispiel für eine Kollaborations-ID**: `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`

**allowJoinsOnColumnsWithDifferentNames**: `True` Diese Einstellung hat keinen Einfluss auf die Leistungs- oder Speicheranforderungen. Diese Einstellung macht die Wahl des Spaltennamens jedoch irrelevant, wenn die Werte in den folgenden Tabellen wiedergegeben werden.


**Beispiel 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Ausgabe | null | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 0 | 


**Beispiel 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Ausgabe | 01:hmac:3lkFjthvV3IUu6mMvFc1a\$1XAHwgw/ElmOq4p3Yg25kk= | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 52 | 


**Beispiel 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Ausgabe | 01:hmac:oKTgi3Gba\$1eUb3JteSz2EMgXUkF1WgM77UP0Ydw5kPQ= | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 52 | 


**Beispiel 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Ausgabe | 01:hmac:kU/IqwG7FMmzzshr0B9scomE0UJUEE7j9keTctplGww= | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 26 | 
| Ausgabe-Bytes | 52 | 


**Beispiel 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Ausgabe | 01:hmac:ks3htnQbw2vdhCRFF6JNzW5LMndJaHG57uvE26mBtSs= | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 62 | 
| Ausgabe-Bytes | 52 | 

#### Problembehandlung bei fingerprint Spalten
<a name="fingerprint-columns-troubleshooting"></a>

**Warum ist der Chiffretext in meinen fingerprint Spalten um ein Vielfaches größer als cleartext der Inhalt?**

Der Chiffretext in einer fingerprint Spalte ist immer 52 Byte lang. Wenn Ihre Eingabedaten klein waren (z. B. das Alter der Kunden), wurde sie deutlich größer. Dies kann auch passieren, wenn die `preserveNulls` Einstellung auf gesetzt ist`false`.

**Warum ist der Chiffretext in meinen fingerprint Spalten um ein Vielfaches kleiner als cleartext der Inhalt?**

Der Chiffretext in einer fingerprint Spalte ist immer 52 Byte lang. Wenn Ihre Eingabedaten umfangreich sind (z. B. die vollständigen Straßenadressen von Kunden), ist die Größe deutlich geringer.

**Woher weiß ich, ob ich die kryptografischen Garantien von benötige? `preserveNulls`**

Leider lautet die Antwort, dass es darauf ankommt. Zumindest [Kryptografische Rechenparameter](crypto-computing-parameters.md) sollte überprüft werden, wie die `preserveNulls` Einstellung Ihre Daten schützt. Wir empfehlen Ihnen jedoch, die Datenverarbeitungsanforderungen Ihres Unternehmens und alle Verträge, die für die jeweilige Zusammenarbeit gelten, zu beachten. 

**Warum muss ich den Overhead von Base64 auf mich nehmen?**

Um die Kompatibilität mit tabellarischen Dateiformaten wie CSV zu gewährleisten, ist eine Base64-Kodierung erforderlich. Zwar unterstützen einige Dateiformate wie z. Parquet B. binäre Darstellungen von Daten, es ist jedoch wichtig, dass alle Teilnehmer einer Zusammenarbeit Daten auf die gleiche Weise darstellen, um korrekte Abfrageergebnisse zu gewährleisten.

### SealedSpalten
<a name="guidelines-sealed-columns"></a>

SealedSpalten sollen für die Übertragung von Daten zwischen Mitgliedern einer Kollaboration verwendet werden. Der Geheimtext in diesen Spalten ist nicht deterministisch und hat je nach Konfiguration der Spalten erhebliche Auswirkungen sowohl auf die Leistung als auch auf den Speicherplatz. Diese Spalten können individuell konfiguriert werden und haben oft den größten Einfluss auf die Leistung des C3R-Verschlüsselungsclients und die daraus resultierende Größe der Ausgabedatei.

**Topics**
+ [Basis-Overhead für Spalten sealed](#sealed-columns-base-overhead)
+ [Einstellungen für die Zusammenarbeit für sealed Spalten](#sealed-columns-collab-settings)
+ [sealedSpalten mit Schemaeinstellungen: Polstertypen](#sealed-collab-pad-type)
+ [Beispieldaten für eine Spalte sealed](#sealed-collab-sample-data)
+ [sealedSpalten zur Problembehandlung](#troubleshooting-sealed-columns)

#### Basis-Overhead für Spalten sealed
<a name="sealed-columns-base-overhead"></a>

Es gibt einen Basisgemeinkosten für sealed Spalten. Dieser Overhead ist konstant und kommt zu der Größe der Byte cleartext und der Füllmenge (falls vorhanden) hinzu.

Vor jeder Verschlüsselung wird den Daten in den sealed Spalten ein 1-Byte-Zeichen vorangestellt, das angibt, welcher Datentyp enthalten ist. Wenn Padding ausgewählt ist, werden die Daten aufgefüllt und mit 2 Byte angehängt, die die Pad-Größe angeben. Nachdem diese Byte hinzugefügt wurden, werden die Daten mithilfe von AES-GCM kryptografisch verarbeitet und mit IV (12 Byte), (32 Byte) und nonce (16 Byte) gespeichert. Auth Tag Diese Daten werden dann durch einen Base64-Encoder verarbeitet, wodurch die Bytegröße um etwa 33 Prozent erhöht wird. Den Daten wird eine 7-Byte-C3R-Bezeichnung vorangestellt, um anzugeben, zu welchem Spaltentyp die Daten gehören und welche Client-Version verwendet wurde, um sie zu erzeugen. Das Ergebnis ist ein endgültiger Basisaufwand von 91 Byte. Dieses Ergebnis kann dann mit der Zeilenanzahl multipliziert werden, um den gesamten Basis-Overhead zu erhalten (verwenden Sie die Anzahl der Gesamtwerte ungleich Null, wenn der Wert auf true gesetzt `preserveNulls` ist).

Die folgende Abbildung zeigt, wie *`BASE_OVERHEAD = C3R_DESIGNATION + ((NONCE + IV + DATA_TYPE + PAD_SIZE + AUTH_TAG) * 1.33)`*

![\[Der Basis-Overhead von 91 Byte für eine sealed Spalte.\]](http://docs.aws.amazon.com/de_de/clean-rooms/latest/userguide/images/base-overhead-sealed.PNG)


#### Einstellungen für die Zusammenarbeit für sealed Spalten
<a name="sealed-columns-collab-settings"></a>

##### `preserveNulls`-Einstellung
<a name="sealed-collab-set-preserve-nulls"></a>

Wenn die Einstellung auf Kollaborationsebene auf `false` (Standard) gesetzt `preserveNulls` ist, ist jeder `null` Wert einmalig, hat 32 Byte Zufallswerte und wird so verarbeitet, als ob dies nicht der Fall wäre. `null` Das Ergebnis ist, dass jeder `null` Wert jetzt 91 Byte groß ist (mehr, wenn er aufgefüllt wird). Dies kann zu erheblichen Speicheranforderungen für Tabellen führen, die nur sehr wenige Daten enthalten, als wenn diese Einstellung aktiviert ist `true` und `null` Werte als `null` übergeben werden.

Wenn Sie die Datenschutzgarantien dieser Einstellung nicht benötigen und es vorziehen, `null` Werte in Ihren Datensätzen beizubehalten, aktivieren Sie die `preserveNulls` Einstellung bei der Erstellung der Kollaboration. Die `preserveNulls` Einstellung kann nach der Erstellung der Kollaboration nicht mehr geändert werden.

#### sealedSpalten mit Schemaeinstellungen: Polstertypen
<a name="sealed-collab-pad-type"></a>

**Topics**
+ [Pad-Typ von `none`](#pad-type-none)
+ [Pad-Typ von `fixed`](#pad-type-fixed)
+ [Pad-Typ von `max`](#pad-type-max)

##### Pad-Typ von `none`
<a name="pad-type-none"></a>

Durch die Auswahl des Padtyps von `none` wird dem zuvor beschriebenen Grund-Overhead keine Polsterung hinzugefügt cleartext und auch kein zusätzlicher Overhead hinzugefügt. Wenn keine Polsterung vorhanden ist, ergibt sich die platzsparendste Ausgabegröße. Es bietet jedoch nicht die gleichen Datenschutzgarantien wie die Polstertypen `fixed` und`max`. Das liegt daran, dass die Größe des Basistextes anhand der Größe des Chiffretextes erkennbar cleartext ist.

##### Pad-Typ von `fixed`
<a name="pad-type-fixed"></a>

Die Auswahl des Pad-Typs von `fixed` dient dem Schutz der Privatsphäre, um die Länge der in einer Spalte enthaltenen Daten zu verbergen. Dies wird erreicht, indem das gesamte Feld mit dem angegebenen Feld ausgefüllt wirdcleartext, `pad_length` bevor es verschlüsselt wird. Alle Daten, die diese Größe überschreiten, führen dazu, dass der C3R-Verschlüsselungsclient fehlschlägt.

Da das Padding cleartext vor der Verschlüsselung hinzugefügt wird, hat AES-GCM eine 1-zu-1-Zuordnung von Chiffretext-Bytes. cleartext Durch die Base64-Kodierung werden 33 Prozent hinzukommen. Der zusätzliche Speicheraufwand des Padding kann berechnet werden, indem die durchschnittliche Länge von vom Wert von subtrahiert `pad_length` und mit 1,33 multipliziert wird. cleartext Das Ergebnis ist der durchschnittliche Mehraufwand für das Auffüllen pro Datensatz. Dieses Ergebnis kann dann mit der Anzahl der Zeilen multipliziert werden, um den gesamten Auffüllaufwand zu erhalten (verwenden Sie die Anzahl der gesamten `null` Nichtwerte, falls `preserveNulls` auf gesetzt). `true`

 `PADDING_OVERHEAD = (PAD_LENGTH - AVG_CLEARTEXT_LENGTH) * 1.33 * ROW_COUNT`

Es wird empfohlen, das Minimum auszuwählen`pad_length`, das den größten Wert in einer Spalte umfasst. Wenn der größte Wert beispielsweise 50 Byte beträgt, ist ein Wert `pad_length` von 50 ausreichend. Ein höherer Wert erhöht nur zusätzlichen Speicheraufwand.

Eine feste Polsterung erhöht keinen nennenswerten Rechenaufwand.

##### Pad-Typ von `max`
<a name="pad-type-max"></a>

Die Auswahl des Pad-Typs von `max` dient dem Schutz der Privatsphäre, um die Länge der in einer Spalte enthaltenen Daten zu verbergen. Dies wird erreicht, indem der cleartext gesamte Wert mit dem größten Wert in der Spalte und dem zusätzlichen Wert aufgefüllt wird, `pad_length` bevor die Spalte verschlüsselt wird. Im Allgemeinen bietet `max` das Auffüllen die gleiche Sicherheit wie das Auffüllen `fixed` eines einzelnen Datensatzes, ermöglicht jedoch, dass der größte cleartext Wert in der Spalte nicht bekannt ist. Das Auffüllen `max` bietet jedoch möglicherweise nicht die gleichen Datenschutzgarantien wie `fixed` das Auffüllen bei Aktualisierungen, da der größte Wert in den einzelnen Datensätzen unterschiedlich sein kann.

Wir empfehlen, dass Sie bei der Verwendung von Padding einen zusätzlichen Wert `pad_length` von 0 wählen. `max` Bei dieser Länge werden alle Werte so aufgefüllt, dass sie dieselbe Größe wie der größte Wert in der Spalte haben. Ein höherer Wert erhöht nur zusätzlichen Speicheraufwand.

Wenn der größte cleartext Wert für eine bestimmte Spalte bekannt ist, empfehlen wir, stattdessen den `fixed` Pad-Typ zu verwenden. Die Verwendung von `fixed` Padding sorgt für Konsistenz zwischen aktualisierten Datensätzen. Die Verwendung `max` von Auffüllung führt dazu, dass jede Teilmenge der Daten mit dem größten Wert aufgefüllt wird, der in der Teilmenge enthalten war.

#### Beispieldaten für eine Spalte sealed
<a name="sealed-collab-sample-data"></a>

Im Folgenden finden Sie ein Beispiel für Eingabe- und Ausgabedaten für eine sealed Spalte mit Einstellungen zur Reproduktion. Andere Einstellungen auf Kollaborationsebene wie `allowCleartext``allowJoinsOnColumnsWithDifferentNames`, und wirken sich `allowDuplicates` nicht auf die Ergebnisse aus und können so eingestellt werden, als `true` `false` ob versucht wird, sich lokal zu reproduzieren. Dies sind zwar die Grundeinstellungen für die Reproduktion, aber die sealed Spalte ist nicht deterministisch und die Werte ändern sich jedes Mal. Das Ziel besteht darin, die eingehenden Byte im Vergleich zu den ausgehenden Bytes anzuzeigen. Die `pad_length` Beispielwerte wurden bewusst ausgewählt. Sie zeigen, dass beim `fixed` Auffüllen die gleichen Werte wie `max` beim Auffüllen mit den empfohlenen `pad_length` Mindesteinstellungen erzielt werden oder wenn zusätzliche Polsterung gewünscht wird.

**Beispiel für** einen gemeinsamen geheimen Schlüssel: `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`

**Beispiel für eine Kollaborations-ID**: `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`

**Topics**
+ [Pad-Typ von `none`](#sealed-pad-type-none)
+ [Pad-Typ von `fixed` (Beispiel 1)](#sealed-pad-type-fixed)
+ [Pad-Typ von `fixed` (Beispiel 2)](#sealed-pad-type-fixed-2)
+ [Pad-Typ von `max` (Beispiel 1)](#sealed-pad-type-max)
+ [Pad-Typ von `max` (Beispiel 2)](#sealed-pad-type-max-2)

##### Pad-Typ von `none`
<a name="sealed-pad-type-none"></a>


**Beispiel 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Ausgabe | null | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 0 | 


**Beispiel 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSPbNIJfG3iXmu6cbCUrizuV | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 91 | 


**Beispiel 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSPEM6qR8DWC2PB2GMlX41YK | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 91 | 


**Beispiel 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9sGL5VLDQeHzh6DmPpyWNuI= | 
| Deterministisch | No | 
| Eingabe-Bytes | 26 | 
| Ausgabe-Bytes | 127 | 


**Beispiel 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua\$11/JfcVjc= | 
| Deterministisch | No | 
| Eingabe-Bytes | 62 | 
| Ausgabe-Bytes | 175 | 

##### Pad-Typ von `fixed` (Beispiel 1)
<a name="sealed-pad-type-fixed"></a>

In diesem Beispiel `pad_length` ist es 62 und die größte Eingabe ist 62 Byte.


**Beispiel 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Ausgabe | null | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 0 | 


**Beispiel 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoNpATs0GzbnLkor4L\$1/aSuA= | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 175 | 


**Beispiel 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoLB53l07VZpA6OwkuXu29CA= | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 175 | 


**Beispiel 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcutBAcO\$1Mb9tuU2KIHH31AWg= | 
| Deterministisch | No | 
| Eingabe-Bytes | 26 | 
| Ausgabe-Bytes | 175 | 


**Beispiel 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua\$11/JfcVjc= | 
| Deterministisch | No | 
| Eingabe-Bytes | 62 | 
| Ausgabe-Bytes | 175 | 

##### Pad-Typ von `fixed` (Beispiel 2)
<a name="sealed-pad-type-fixed-2"></a>

In diesem Beispiel `pad_length` ist es 162 und die größte Eingabe ist 62 Byte.


**Beispiel 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Ausgabe | null | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 0 | 


**Beispiel 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv/xAySX\$1xcntotL703aBTBb | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 307 | 


**Beispiel 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv84lVaT9Yd\$16oQx65/\$1gdVT | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 307 | 


**Beispiel 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwtX5Hnl\$1WyfO6ks3QMaRDGSf | 
| Deterministisch | No | 
| Eingabe-Bytes | 26 | 
| Ausgabe-Bytes | 307 | 


**Beispiel 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwjkJXQZOgPdeFX9Yr/8alV5i | 
| Deterministisch | No | 
| Eingabe-Bytes | 62 | 
| Ausgabe-Bytes | 307 | 

##### Pad-Typ von `max` (Beispiel 1)
<a name="sealed-pad-type-max"></a>

In diesem Beispiel `pad_length` ist der Wert 0 und die größte Eingabe ist 62 Byte.


**Beispiel 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Ausgabe | null | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 0 | 
| Ausgangs-Bytes | 0 | 


**Beispiel 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoNpATs0GzbnLkor4L\$1/aSuA= | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 175 | 


**Beispiel 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoLB53l07VZpA6OwkuXu29CA= | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 175 | 


**Beispiel 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcutBAcO\$1Mb9tuU2KIHH31AWg= | 
| Deterministisch | No | 
| Eingabe-Bytes | 26 | 
| Ausgabe-Bytes | 175 | 


**Beispiel 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua\$11/JfcVjc= | 
| Deterministisch | No | 
| Eingabe-Bytes | 62 | 
| Ausgabe-Bytes | 175 | 

##### Pad-Typ von `max` (Beispiel 2)
<a name="sealed-pad-type-max-2"></a>

In diesem Beispiel `pad_length` ist es 100 und die größte Eingabe ist 62 Byte.


**Beispiel 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Ausgabe | null | 
| Deterministisch | Yes | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 0 | 


**Beispiel 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv/xAySX\$1xcntotL703aBTBb | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 307 | 


**Beispiel 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv84lVaT9Yd\$16oQx65/\$1gdVT | 
| Deterministisch | No | 
| Eingabe-Bytes | 0 | 
| Ausgabe-Bytes | 307 | 


**Beispiel 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwtX5Hnl\$1WyfO6ks3QMaRDGSf | 
| Deterministisch | No | 
| Eingabe-Bytes | 26 | 
| Ausgabe-Bytes | 307 | 


**Beispiel 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Ausgabe | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwjkJXQZOgPdeFX9Yr/8alV5i | 
| Deterministisch | No | 
| Eingabe-Bytes | 62 | 
| Ausgabe-Bytes | 307 | 

#### sealedSpalten zur Problembehandlung
<a name="troubleshooting-sealed-columns"></a>

**Warum ist der Chiffretext in meinen sealed Spalten um ein Vielfaches größer als cleartext der Inhalt?**

Das hängt von mehreren Faktoren ab. Zum einen ist der Chiffretext in einer Cleartext Spalte immer mindestens 91 Byte lang. Wenn Ihre Eingabedaten klein wären (z. B. das Alter der Kunden), würden sie deutlich an Größe zunehmen. Zweitens, wenn `preserveNulls` wir auf eingestellt sind `false` und Ihre Eingabedaten viele `null` Werte enthielten, wurde jeder dieser `null` Werte in 91 Byte Chiffretext umgewandelt. Und wenn Sie Padding verwenden, werden den cleartext Daten per Definition Byte hinzugefügt, bevor sie verschlüsselt werden.

**Die meisten meiner Daten in einer sealed Spalte sind sehr klein, und ich muss Padding verwenden. Kann ich einfach die großen Werte entfernen und sie separat verarbeiten, um Platz zu sparen?**

Wir empfehlen nicht, große Werte zu entfernen und separat zu verarbeiten. Dadurch ändern sich die Datenschutzgarantien, die der C3R-Verschlüsselungsclient bietet. Gehen Sie als Bedrohungsmodell davon aus, dass ein Beobachter beide verschlüsselten Datensätze sehen kann. Wenn der Beobachter feststellt, dass bei einer Teilmenge von Daten eine Spalte deutlich mehr oder weniger aufgefüllt ist als bei einer anderen Teilmenge, kann er Rückschlüsse auf die Größe der Daten in jeder Teilmenge ziehen. Nehmen wir beispielsweise an, dass eine `fullName` Spalte in einer Datei auf insgesamt 40 Byte aufgefüllt ist und in einer anderen Datei auf 800 Byte aufgefüllt wird. Ein Beobachter könnte davon ausgehen, dass ein Datensatz den längsten Namen der Welt (747 Byte) enthält.

**Muss ich zusätzliche Polsterung bereitstellen, wenn ich den `max` Padding-Typ verwende?**

Nein. Bei der Verwendung `max` von Innenabständen empfehlen wir`pad_length`, die auch als zusätzliche Polsterung bezeichnet wird, die *über den größten Wert in der Spalte hinausgeht*, auf 0 zu setzen.

**Kann ich `pad_length` bei der Verwendung von `fixed` Padding einfach einen Wert vom Typ L wählen, damit ich mir keine Gedanken darüber machen muss, ob der größte Wert passt?**

Ja, aber die große Länge des Pads ist ineffizient und beansprucht mehr Speicherplatz als nötig. Wir empfehlen Ihnen, zu überprüfen, wie groß der größte Wert ist, und den Wert `pad_length` auf diesen Wert einzustellen.

**Woher weiß ich, ob ich die kryptografischen Garantien von benötige? `preserveNulls`**

Leider lautet die Antwort, dass es darauf ankommt. Zumindest [Kryptografisches Rechnen für Clean Rooms](crypto-computing.md) sollte überprüft werden, wie die `preserveNulls` Einstellung Ihre Daten schützt. Wir empfehlen Ihnen jedoch, die Datenverarbeitungsanforderungen Ihres Unternehmens und alle Verträge, die für die jeweilige Zusammenarbeit gelten, zu beachten. 

**Warum muss ich den Overhead von Base64 auf mich nehmen?**

Um die Kompatibilität mit tabellarischen Dateiformaten wie CSV zu gewährleisten, ist eine Base64-Kodierung erforderlich. Obwohl einige Dateiformate, wie z. Parquet B., binäre Darstellungen von Daten unterstützen, ist es wichtig, dass alle Teilnehmer einer Zusammenarbeit Daten auf die gleiche Weise darstellen, um korrekte Abfrageergebnisse zu gewährleisten.

## Behebung unerwarteter Zunahmen der Chiffretext-Größe
<a name="troubleshooting-ciphertext-size"></a>

Nehmen wir an, Sie haben Ihre Daten verschlüsselt und die Größe der resultierenden Daten ist überraschend groß. Mithilfe der folgenden Schritte können Sie ermitteln, wo der Größenzuwachs stattgefunden hat und welche Maßnahmen Sie gegebenenfalls ergreifen können.

### Identifizieren Sie, wo die Größenzunahme stattgefunden hat
<a name="where-size-increase-occurred"></a>

Bevor Sie herausfinden können, warum Ihre verschlüsselten Daten deutlich größer sind als Ihre cleartext Daten, müssen Sie zunächst herausfinden, wo die Zunahme liegt. CleartextSpalten können bedenkenlos ignoriert werden, da sie unverändert sind. Sehen Sie sich die verbleibenden sealed Spalten fingerprint und die anderen an und wählen Sie eine aus, die aussagekräftig erscheint.

### Identifizieren Sie den Grund für die Größenzunahme
<a name="why-size-increase-occurred"></a>

Eine fingerprint Spalte oder eine sealed Spalte könnte zur Größenzunahme beitragen.

**Topics**
+ [Kommt die Größenzunahme von einer fingerprint Spalte?](#size-increase-from-fingerprint)
+ [Ist die Größenzunahme auf eine sealed Spalte zurückzuführen?](#size-increase-from-sealed)

#### Kommt die Größenzunahme von einer fingerprint Spalte?
<a name="size-increase-from-fingerprint"></a>

Wenn es sich bei der Spalte, die am meisten zur Speichererweiterung beiträgt, um eine fingerprint Spalte handelt, liegt das wahrscheinlich daran, dass die cleartext Daten klein sind (z. B. das Alter des Kunden). Jeder resultierende fingerprint Chiffretext hat eine Länge von 52 Byte. Leider kann gegen dieses Problem nichts auf der Grundlage unternommen werden. column-by-column Weitere Informationen zu dieser Spalte, einschließlich der Auswirkungen auf die Speicheranforderungen, finden Sie unter. [Basis-Overhead für fingerprint Spalten](#fingerprint-columns-base-overhead) 

Die andere mögliche Ursache für die Vergrößerung einer fingerprint Spalte ist die Einstellung für die Zusammenarbeit,`preserveNulls`. Wenn die Einstellung für die Zusammenarbeit deaktiviert `preserveNulls` ist (die Standardeinstellung), werden aus allen `null` Werten in fingerprint Spalten 52 Byte Chiffretext. In der aktuellen Zusammenarbeit kann dafür nichts unternommen werden. Die `preserveNulls` Einstellung wird bei der Erstellung einer Kollaboration festgelegt, und alle Mitarbeiter müssen dieselbe Einstellung verwenden, um korrekte Abfrageergebnisse sicherzustellen. Weitere Informationen zu dieser `preserveNulls` Einstellung und dazu, wie sich ihre Aktivierung auf die Datenschutzgarantien Ihrer Daten auswirkt, finden Sie unter. [Kryptografisches Rechnen für Clean Rooms](crypto-computing.md)

#### Ist die Größenzunahme auf eine sealed Spalte zurückzuführen?
<a name="size-increase-from-sealed"></a>

Wenn es sich bei der Spalte, die am meisten zur Erhöhung des Speicherplatzes beiträgt, um eine sealed Spalte handelt, gibt es einige Details, die zur Vergrößerung beitragen könnten. 

Wenn die cleartext Daten klein sind (z. B. das Alter des Kunden), ist jeder resultierende sealed Chiffretext mindestens 91 Byte lang. Leider kann nichts gegen dieses Problem unternommen werden. Weitere Informationen zu dieser Spalte, einschließlich der Auswirkungen auf die Speicheranforderungen, finden Sie unter. [Basis-Overhead für Spalten sealed](#sealed-columns-base-overhead)

Die zweite Hauptursache für die Erhöhung des Speicherplatzes in sealed Spalten ist die Polsterung. Beim Auffüllen werden zusätzliche Byte hinzugefügt, cleartext bevor es verschlüsselt wird, um die Größe einzelner Werte in einem Datensatz zu verbergen. Wir empfehlen Ihnen, das Padding auf den kleinstmöglichen Wert für Ihren Datensatz festzulegen. `pad_length`Für das `fixed` Padding muss mindestens so eingestellt werden, dass es den größtmöglichen Wert in der Spalte umfasst. Eine höhere Einstellung als diese bietet keine zusätzlichen Datenschutzgarantien. Wenn Sie beispielsweise wissen, dass der größtmögliche Wert in einer Spalte 50 Byte sein kann, empfehlen wir, den Wert `pad_length` auf 50 Byte festzulegen. Wenn in der sealed Spalte jedoch `max` Padding verwendet wird, empfehlen wir, den Wert `pad_length` auf 0 Byte zu setzen. Dies liegt daran, dass `max` sich das Auffüllen auf das *zusätzliche* Auffüllen bezieht, das über den größten Wert in der Spalte hinausgeht.

Die letzte mögliche Ursache für die Vergrößerung einer sealed Spalte ist die Einstellung für die Zusammenarbeit,. `preserveNulls` Wenn die Einstellung für die Zusammenarbeit deaktiviert `preserveNulls` ist (die Standardeinstellung), werden aus allen `null` Werten in sealed Spalten 91 Byte Chiffretext. In der aktuellen Zusammenarbeit kann dafür nichts unternommen werden. Die `preserveNulls` Einstellung wird bei der Erstellung einer Kollaboration festgelegt, und alle Mitarbeiter müssen dieselbe Einstellung verwenden, um korrekte Abfrageergebnisse sicherzustellen. Weitere Informationen zu dieser Einstellung und zu den Auswirkungen ihrer Aktivierung auf die Datenschutzgarantien Ihrer Daten finden Sie unter. [Kryptografisches Rechnen für Clean Rooms](crypto-computing.md)