

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Komputasi Kriptografi untuk Clean Rooms
<a name="crypto-computing"></a>

Komputasi Kriptografi untuk Clean Rooms (C3R) adalah kemampuan AWS Clean Rooms yang dapat digunakan selain aturan [analisis](analysis-rules.md). Dengan C3R, organisasi dapat menyatukan data sensitif untuk memperoleh wawasan baru dari analitik data sementara secara kriptografis membatasi apa yang dapat dipelajari oleh pihak mana pun dalam prosesnya. C3R dapat digunakan oleh dua pihak atau lebih yang ingin berkolaborasi dengan data sensitif mereka tetapi diharuskan hanya menggunakan data terenkripsi di cloud. 

Klien enkripsi C3R adalah alat enkripsi sisi klien yang dapat Anda gunakan untuk [mengenkripsi data](glossary.md#glossary-encryption) Anda untuk digunakan. AWS Clean Rooms Saat Anda menggunakan klien enkripsi C3R, data tetap dilindungi secara kriptografis saat digunakan dalam kolaborasi. AWS Clean Rooms Seperti halnya AWS Clean Rooms kolaborasi reguler, data input adalah tabel database relasional, dan komputasi dinyatakan sebagai query SQL. Namun, C3R hanya mendukung subset terbatas dari kueri SQL pada data terenkripsi.

Secara khusus, C3R mendukung SQL JOIN and SELECT pernyataan tentang data yang dilindungi secara kriptografi. Setiap kolom dalam tabel input dapat digunakan tepat di salah satu jenis pernyataan SQL berikut: 
+ Kolom yang dilindungi secara kriptografi untuk digunakan JOIN Pernyataan disebut **fingerprint kolom**. 
+ Kolom yang dilindungi secara kriptografi untuk digunakan SELECT Pernyataan disebut **sealed kolom**. 
+ Kolom yang tidak dilindungi secara kriptografi untuk digunakan JOIN atau SELECT Pernyataan disebut **cleartext kolom**.

Dalam beberapa kasus, GROUP BY pernyataan didukung pada fingerprint kolom. Untuk informasi selengkapnya, lihat [Fingerprintkolom](crypto-computing-column-types.md#fingerprint-columns). Saat ini, C3R tidak mendukung penggunaan konstruksi SQL lainnya pada data terenkripsi, seperti WHERE klausa atau fungsi agregat seperti SUM and AVERAGE, bahkan jika mereka diizinkan oleh aturan analisis yang relevan.

C3R dirancang untuk melindungi data dalam sel individual tabel. Menggunakan konfigurasi default untuk C3R, data dasar yang disediakan pelanggan kepada pihak ketiga melalui kolaborasi tetap dienkripsi saat konten sedang digunakan di dalamnya. AWS Clean Rooms C3R menggunakan enkripsi AES-GCM standar industri untuk semua sealed kolom dan fungsi pseudorandom standar industri, yang dikenal sebagai Hash Based Message Authentication Code (HMAC), untuk melindungi fingerprint kolom.

Meskipun C3R mengenkripsi data dalam tabel Anda, informasi berikut mungkin masih dapat disimpulkan:
+ Informasi tentang tabel itu sendiri, termasuk jumlah kolom, nama kolom, dan jumlah baris dalam tabel Anda.
+ Seperti kebanyakan bentuk enkripsi standar, C3R tidak mencoba menyembunyikan panjang nilai terenkripsi. C3R memang menawarkan kemampuan untuk memasukkan nilai terenkripsi untuk menyembunyikan panjang teks yang tepat. Namun, batas atas pada panjang cleartext di setiap kolom masih bisa diungkapkan ke pihak lain.
+ Informasi tingkat pencatatan, seperti ketika baris tertentu ditambahkan ke tabel C3R terenkripsi.

Untuk informasi selengkapnya tentang C3R, lihat topik berikut. 

**Topics**
+ [Pertimbangan saat menggunakan Komputasi Kriptografi untuk Clean Rooms](crypto-computing-considerations.md)
+ [Jenis file dan data yang didukung dalam Komputasi Kriptografi untuk Clean Rooms](crypto-computing-file-types.md)
+ [Nama kolom dalam Komputasi Kriptografi untuk Clean Rooms](crypto-computing-column-names.md)
+ [Jenis kolom dalam Komputasi Kriptografi untuk Clean Rooms](crypto-computing-column-types.md)
+ [Parameter komputasi kriptografi](crypto-computing-parameters.md)
+ [Bendera opsional dalam Komputasi Kriptografi untuk Clean Rooms](crypto-computing-optional-flags.md)
+ [Kueri dengan Komputasi Kriptografi untuk Clean Rooms](crypto-computing-queries.md)
+ [Pedoman untuk klien enkripsi C3R](crypto-computing-guidelines.md)

# Pertimbangan saat menggunakan Komputasi Kriptografi untuk Clean Rooms
<a name="crypto-computing-considerations"></a>

Cryptographic Computing for Clean Rooms (C3R) berupaya memaksimalkan perlindungan data. Namun, beberapa kasus penggunaan mungkin mendapat manfaat dari tingkat perlindungan data yang lebih rendah dengan imbalan fungsionalitas tambahan. Anda dapat membuat pengorbanan khusus ini dengan memodifikasi C3R dari konfigurasi yang paling aman. Sebagai pelanggan, Anda harus menyadari pengorbanan ini dan menentukan apakah mereka sesuai untuk kasus penggunaan Anda. Pengorbanan untuk dipertimbangkan meliputi yang berikut: 

**Topics**
+ [Mengizinkan data campuran cleartext dan terenkripsi dalam tabel Anda](#allow-mixed-plaintext-and-encrypted-data)
+ [Mengizinkan nilai berulang dalam fingerprint kolom](#allow-repeated-values)
+ [Melonggarkan pembatasan tentang bagaimana fingerprint kolom diberi nama](#loose-restrictions-on-join-column-names)
+ [Menentukan bagaimana NULL nilai direpresentasikan](#determine-null-values)

Untuk informasi selengkapnya tentang cara mengatur parameter untuk skenario ini, lihat[Parameter komputasi kriptografi](crypto-computing-parameters.md).

## Mengizinkan data campuran cleartext dan terenkripsi dalam tabel Anda
<a name="allow-mixed-plaintext-and-encrypted-data"></a>

Memiliki semua data dienkripsi sisi klien memberikan perlindungan data maksimum. Namun, ini membatasi jenis kueri tertentu (misalnya, fungsi SUM agregat). Risiko mengizinkan cleartext data adalah layak bahwa siapa pun yang memiliki akses ke tabel terenkripsi dapat menyimpulkan beberapa informasi tentang nilai terenkripsi. Ini dapat dilakukan dengan melakukan analisis statistik pada cleartext dan data terkait. 

Misalnya, bayangkan Anda memiliki kolom `City` dan`State`. `City`Kolom adalah cleartext dan `State` kolom dienkripsi. Ketika Anda melihat nilai `Chicago` di `City` kolom, itu membantu Anda menentukan dengan probabilitas tinggi bahwa `State` itu`Illinois`. Sebaliknya, jika satu kolom `City` dan kolom lainnya`EmailAddress`, a cleartext `City` tidak mungkin mengungkapkan apa pun tentang terenkripsi`EmailAddress`. 

Untuk informasi selengkapnya tentang parameter untuk skenario ini, lihat[Izinkan parameter cleartext kolom](crypto-computing-parameters.md#parameter-allowcleartext).

## Mengizinkan nilai berulang dalam fingerprint kolom
<a name="allow-repeated-values"></a>

Untuk pendekatan yang paling aman, kami berasumsi bahwa fingerprint kolom apa pun berisi persis satu instance variabel. Tidak ada item yang dapat diulang dalam fingerprint kolom. Klien enkripsi C3R memetakan cleartext nilai-nilai ini menjadi nilai unik yang tidak dapat dibedakan dari nilai acak. Oleh karena itu, tidak mungkin untuk menyimpulkan informasi tentang cleartext dari nilai-nilai acak ini.

Risiko nilai berulang dalam fingerprint kolom adalah bahwa nilai berulang akan menghasilkan nilai yang tampak acak berulang. Dengan demikian, siapa pun yang memiliki akses ke tabel terenkripsi dapat, secara teori, melakukan analisis statistik fingerprint kolom yang mungkin mengungkapkan informasi tentang cleartext nilai. 

Sekali lagi, misalkan fingerprint kolomnya`State`, dan setiap baris tabel sesuai dengan rumah tangga AS. Dengan melakukan analisis frekuensi, seseorang dapat menyimpulkan keadaan mana `California` dan mana `Wyoming` dengan probabilitas tinggi. Kesimpulan ini dimungkinkan karena `California` memiliki lebih banyak penduduk daripada`Wyoming`. Sebaliknya, katakanlah fingerprint kolom berada pada pengidentifikasi rumah tangga dan setiap rumah tangga muncul dalam database antara 1 dan 4 kali dalam database jutaan entri. Tidak mungkin analisis frekuensi akan mengungkapkan informasi yang berguna.

Untuk informasi selengkapnya tentang parameter untuk skenario ini, lihat[Izinkan parameter duplikat](crypto-computing-parameters.md#parameter-allowduplicates).

## Melonggarkan pembatasan tentang bagaimana fingerprint kolom diberi nama
<a name="loose-restrictions-on-join-column-names"></a>

Secara default, kami berasumsi bahwa ketika dua tabel digabungkan menggunakan kolom terenkripsi, fingerprint kolom tersebut memiliki nama yang sama di setiap tabel. Alasan teknis untuk hasil ini adalah bahwa, secara default, kami memperoleh kunci kriptografi yang berbeda untuk mengenkripsi setiap kolom. fingerprint Kunci itu berasal dari kombinasi kunci rahasia bersama untuk kolaborasi dan nama kolom. Jika kami mencoba menggabungkan dua kolom dengan nama kolom yang berbeda, kami memperoleh kunci yang berbeda dan kami tidak dapat menghitung gabungan yang valid. 

Untuk mengatasi masalah ini, Anda dapat menonaktifkan fitur yang memperoleh kunci dari setiap nama kolom. Kemudian, klien enkripsi C3R menggunakan kunci turunan tunggal untuk semua fingerprint kolom. Risikonya adalah bahwa jenis lain dari analisis frekuensi dapat dilakukan yang mungkin mengungkapkan informasi. 

Mari kita gunakan `State` contoh `City` dan lagi. Jika kita memperoleh nilai acak yang sama untuk setiap fingerprint kolom (dengan tidak memasukkan nama kolom). `New York`memiliki nilai acak yang sama di `State` kolom `City` dan. New York adalah salah satu dari beberapa kota di AS di mana `City` namanya sama dengan `State` namanya. Sebaliknya, jika kumpulan data Anda memiliki nilai yang sama sekali berbeda di setiap kolom, tidak ada informasi yang bocor.

Untuk informasi selengkapnya tentang parameter untuk skenario ini, lihat[Izinkan JOIN kolom dengan parameter nama yang berbeda](crypto-computing-parameters.md#parameter-allowjoin).

## Menentukan bagaimana NULL nilai direpresentasikan
<a name="determine-null-values"></a>

Opsi yang tersedia untuk Anda adalah apakah akan memproses nilai kriptografi (enkripsi dan HMAC) seperti NULL nilai lainnya. Jika Anda tidak memproses NULL nilai seperti nilai lainnya, informasi mungkin akan terungkap. 

Misalnya, anggaplah bahwa NULL di `Middle Name` kolom di cleartext menunjukkan orang tanpa nama tengah. Jika Anda tidak mengenkripsi nilai-nilai tersebut, Anda membocorkan baris mana dalam tabel terenkripsi yang digunakan untuk orang tanpa nama tengah. Informasi itu mungkin menjadi sinyal pengenal bagi beberapa orang di beberapa populasi. Tetapi jika Anda memproses NULL nilai secara kriptografi, kueri SQL tertentu bertindak berbeda. Misalnya, GROUP BY klausa tidak akan mengelompokkan fingerprint NULL nilai dalam fingerprint kolom bersama-sama. 

Untuk informasi selengkapnya tentang parameter untuk skenario ini, lihat[Pertahankan parameter NULL nilai](crypto-computing-parameters.md#parameter-preservenulls).

# Jenis file dan data yang didukung dalam Komputasi Kriptografi untuk Clean Rooms
<a name="crypto-computing-file-types"></a>

Klien enkripsi C3R mengenali jenis file berikut: 
+ Berkas CSV
+ Parquetberkas

Anda dapat menggunakan `--fileFormat` bendera di klien enkripsi C3R untuk menentukan format file secara eksplisit. Ketika ditentukan secara eksplisit, format file tidak ditentukan oleh ekstensi file.

**Topics**
+ [Berkas CSV](#csv-file-type)
+ [Parquetberkas](#parquet-file-type)
+ [Mengenkripsi nilai non-string](#encrypt-non-string-values)

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

File dengan ekstensi.csv diasumsikan berformat CSV dan berisi teks yang dikodekan UTF-8. Klien enkripsi C3R memperlakukan semua nilai sebagai string.

### Properti yang didukung dalam file.csv
<a name="csv-properties"></a>

Klien enkripsi C3R mensyaratkan bahwa file.csv memiliki properti berikut:
+ Mungkin atau mungkin tidak berisi baris header awal yang secara unik menamai setiap kolom.
+ Dibatasi koma. (Saat ini, pembatas khusus tidak didukung.)
+ Teks yang dikodekan UTF-8.

#### Pemangkasan ruang putih dari entri .csv
<a name="whitespace-trimming"></a>

Spasi putih depan dan belakang dipangkas dari entri .csv.

#### NULLPengkodean khusus untuk file.csv
<a name="custom-null-encoding"></a>

File.csv dapat menggunakan pengkodean khususNULL.

Dengan klien enkripsi C3R, Anda dapat menentukan pengkodean kustom untuk NULL entri dalam data input dengan menggunakan bendera. `--csvInputNULLValue=<csv-input-null>` Klien enkripsi C3R dapat menggunakan pengkodean khusus dalam file keluaran yang dihasilkan untuk entri NULL dengan menggunakan bendera. `--csvOutputNULLValue=<csv-output-null>`

**catatan**  
NULLEntri dianggap *kurang* konten, khususnya dalam konteks format tabel yang lebih kaya seperti tabel SQL. Meskipun .csv tidak secara eksplisit mendukung karakterisasi ini karena alasan historis, itu adalah konvensi umum untuk mempertimbangkan entri kosong yang hanya berisi spasi putih. NULL Oleh karena itu, itulah perilaku default klien enkripsi C3R dan dapat disesuaikan sesuai kebutuhan.

### Bagaimana entri .csv ditafsirkan oleh C3R
<a name="interpretation-csv-entries"></a>

Tabel berikut memberikan contoh bagaimana entri .csv disusun (cleartextcleartextuntuk kejelasan) berdasarkan nilai (jika ada) yang disediakan untuk dan flag. `--csvInputNULLValue=<csv-input-null>` `--csvOutputNULLValue=<csv-output-null>` Memimpin dan membuntuti ruang putih di luar tanda kutip dipangkas sebelum C3R menafsirkan makna nilai apa pun.


| `<csv-input-null>` | `<csv-output-null>` | Masukan entri | Entri keluaran | 
| --- |--- |--- |--- |
| Tidak ada | Tidak ada | ,AnyProduct, | ,AnyProduct, | 
| Tidak ada | Tidak ada | , AnyProduct , | ,AnyProduct, | 
| Tidak ada | Tidak ada | ,"AnyProduct", | ,AnyProduct, | 
| Tidak ada | Tidak ada | , "AnyProduct" , | ,AnyProduct, | 
| Tidak ada | Tidak ada | ,, | ,, | 
| Tidak ada | Tidak ada | , , | ,, | 
| Tidak ada | Tidak ada | ,"", | ,, | 
| Tidak ada | Tidak ada | ," ", | ," ", | 
| Tidak ada | Tidak ada | , " " , | ," ", | 
| "AnyProduct" | "NULL" | ,AnyProduct, | ,NULL, | 
| "AnyProduct" | "NULL" | , AnyProduct , | ,NULL, | 
| "AnyProduct" | "NULL" | ,"AnyProduct", | ,NULL, | 
| "AnyProduct" | "NULL" | , "AnyProduct" , | ,NULL, | 
| Tidak ada | "NULL" | ,, | ,NULL, | 
| Tidak ada | "NULL" | , , | ,NULL, | 
| Tidak ada | "NULL" | ,"", | ,NULL, | 
| Tidak ada | "NULL" | ," ", | ," ", | 
| Tidak ada | "NULL" | , " " , | ," ", | 
| "" | "NULL" | ,, | ,NULL, | 
| "" | "NULL" | , , | ,NULL, | 
| "" | "NULL" | ,"", | ,"", | 
| "" | "NULL" | ," ", | ," ", | 
| "" | "NULL" | , " " , | ," ", | 
| "\$1"\$1"" | "NULL" | ,, | ,, | 
| "\$1"\$1"" | "NULL" | , , | ,, | 
| "\$1"\$1"" | "NULL" | ,"", | ,NULL, | 
| "\$1"\$1"" | "NULL" | ," ", | ," ", | 
| "\$1"\$1"" | "NULL" | , " " , | ," ", | 

### File CSV tanpa header
<a name="csv-file-no-headers"></a>

File sumber.csv tidak perlu memiliki header di baris pertama yang secara unik memberi nama setiap kolom. Namun, file.csv tanpa baris header memerlukan skema enkripsi posisi. Skema enkripsi posisi diperlukan alih-alih skema pemetaan khas yang digunakan untuk file.csv dengan baris header dan file. Parquet

Skema enkripsi posisi menentukan kolom keluaran berdasarkan posisi, bukan dengan nama. Skema enkripsi yang dipetakan memetakan nama kolom sumber untuk menargetkan nama kolom. Untuk informasi lebih lanjut, termasuk diskusi rinci dan contoh dari kedua format skema, lihat[Skema tabel yang dipetakan dan posisi](create-schema.md#mapped-and-positional-schemas).

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

File dengan .parquet ekstensi diasumsikan dalam Apache Parquet format.

### Tipe Parquet data yang didukung
<a name="supported-parquet-data-types"></a>

Klien enkripsi C3R dapat memproses data non-kompleks (yaitu tipe primitif) dalam Parquet file yang mewakili tipe data yang didukung oleh. AWS Clean Rooms

Namun, hanya kolom string yang dapat digunakan untuk sealed kolom.

Tipe data Parket berikut didukung:
+ `Binary`tipe primitif dengan anotasi logis berikut:
  + Tidak ada jika `--parquetBinaryAsString` diatur (tipe `STRING` data)
  + `Decimal(scale, precision)`(tipe `DECIMAL` data)
  + `String`(tipe `STRING` data)
+ `Boolean`tipe data primitif tanpa anotasi logis (tipe `BOOLEAN` data)
+ `Double`tipe data primitif tanpa anotasi logis (tipe `DOUBLE` data)
+ `Fixed_Len_Binary_Array`tipe primitif dengan anotasi `Decimal(scale, precision)` logis (tipe `DECIMAL` data)
+ `Float`tipe data primitif tanpa anotasi logis (tipe `FLOAT` data)
+ `Int32`tipe primitif dengan anotasi logis berikut:
  + Tidak ada (tipe `INT` data)
  + `Date`(tipe `DATE` data)
  + `Decimal(scale, precision)`(tipe `DECIMAL` data)
  + `Int(16, true)`(tipe `SMALLINT` data)
  + `Int(32, true)`(tipe `INT` data)
+ `Int64`tipe data primitif dengan anotasi logis berikut:
  + Tidak ada (tipe `BIGINT` data)
  + `Decimal(scale, precision)`(tipe `DECIMAL` data)
  + `Int(64, true)`(tipe `BIGINT` data)
  + `Timestamp(isUTCAdjusted, TimeUnit.MILLIS)`(tipe `TIMESTAMP` data)
  + `Timestamp(isUTCAdjusted, TimeUnit.MICROS)`(tipe `TIMESTAMP` data)
  + `Timestamp(isUTCAdjusted, TimeUnit.NANOS)`(tipe `TIMESTAMP` data)

## Mengenkripsi nilai non-string
<a name="encrypt-non-string-values"></a>

Saat ini, hanya nilai string yang didukung untuk sealed kolom. 

Untuk file.csv, klien enkripsi C3R memperlakukan semua nilai sebagai teks yang dikodekan UTF-8 dan tidak berusaha untuk menafsirkannya secara berbeda sebelum enkripsi. 

Untuk kolom sidik jari, jenis dikelompokkan ke dalam kelas ekivalensi. Kelas kesetaraan adalah sekumpulan tipe data yang dapat dibandingkan secara jelas untuk kesetaraan melalui tipe data yang representatif.

Kelas kesetaraan memungkinkan sidik jari identik untuk ditetapkan ke nilai semantik yang sama terlepas dari representasi aslinya. Namun, nilai yang sama dalam dua kelas ekivalensi tidak akan menghasilkan kolom sidik jari yang sama.

Misalnya, `INTEGRAL` nilai `42` akan diberikan sidik jari yang sama terlepas dari apakah itu awalnya`SMALLINT`,`INT`, atau`BIGINT`. Juga, `INTEGRAL` nilai tidak `0` akan pernah cocok dengan `BOOLEAN` nilai `FALSE` (yang diwakili oleh nilai`0`).

Kelas kesetaraan berikut dan tipe AWS Clean Rooms data yang sesuai didukung oleh kolom sidik jari:


| Kelas kesetaraan | Tipe AWS Clean Rooms data yang didukung | 
| --- | --- | 
| BOOLEAN | BOOLEAN | 
| DATE | DATE | 
| INTEGRAL | BIGINT, INT, SMALLINT | 
|  STRING | CHAR, STRING, VARCHAR | 

# Nama kolom dalam Komputasi Kriptografi untuk Clean Rooms
<a name="crypto-computing-column-names"></a>

Secara default, nama-nama kolom penting dalam Komputasi Kriptografi untukClean Rooms.

Jika nilai **Izinkan JOIN kolom dengan parameter nama yang berbeda** **salah**, nama kolom digunakan selama enkripsi fingerprint kolom. Untuk alasan ini, secara default, kolaborator harus berkoordinasi terlebih dahulu dan menggunakan nama kolom target yang sama untuk data yang akan menggunakan JOIN pernyataan dalam kueri. Secara default, kolom yang dienkripsi JOIN dengan nama berbeda tidak berhasil JOIN pada nilai apa pun.

Jika nilai **Izinkan JOIN kolom dengan parameter nama yang berbeda** **benar**, JOIN pernyataan di seluruh kolom dienkripsi sebagai fingerprint kolom berhasil. Mengenkripsi data dengan parameter ini mungkin memungkinkan beberapa inferensi nilai. cleartext Misalnya, jika baris memiliki nilai Kode Otentikasi Pesan (HMAC) berbasis Hash yang sama di `City` kolom dan `State` kolom, nilainya mungkin. `New York`

## Normalisasi nama header kolom
<a name="column-header-names-normalization"></a>

Nama header kolom dinormalisasi oleh klien enkripsi C3R. Setiap spasi putih depan dan belakang dihapus, dan nama kolom dibuat huruf kecil untuk output yang diubah.

Normalisasi diterapkan sebelum semua perhitungan, perhitungan, atau operasi lain yang mungkin dapat dipengaruhi oleh nama kolom. File keluaran yang dipancarkan hanya berisi nama yang dinormalisasi.

# Jenis kolom dalam Komputasi Kriptografi untuk Clean Rooms
<a name="crypto-computing-column-types"></a>

Topik ini memberikan informasi tentang jenis kolom dalam Komputasi Kriptografi untukClean Rooms.

**Topics**
+ [Fingerprintkolom](#fingerprint-columns)
+ [Kolom tertutup](#sealed-columns)
+ [Cleartextkolom](#cleartext-columns)

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

*Fingerprintkolom* adalah kolom yang dilindungi secara kriptografis untuk digunakan dalam JOIN pernyataan.

Data dari fingerprint kolom tidak dapat didekripsi. Hanya data dari kolom tertutup yang dapat didekripsi.

Fingerprintkolom hanya boleh digunakan dalam klausa dan fungsi SQL berikut:
+ JOIN (INNER, OUTER, LEFT, RIGHT, or FULL)terhadap fingerprint kolom lain: 
  + Jika nilai `allowJoinsOnColumnsWithDifferentNames` parameter diatur ke`false`, kedua fingerprint kolom juga JOIN harus memiliki nama yang sama.
+ `SELECT COUNT()`
+ `SELECT COUNT(DISTINCT )`
+ `GROUP BY`(Hanya gunakan jika kolaborasi telah menetapkan nilai `preserveNulls` parameter ke`true`.)

Kueri yang melanggar batasan ini mungkin menghasilkan hasil yang salah.

## Kolom tertutup
<a name="sealed-columns"></a>

*Kolom tertutup* adalah kolom yang dilindungi secara kriptografis untuk digunakan dalam SELECT pernyataan. 

Kolom tertutup hanya boleh digunakan dalam klausa dan fungsi SQL berikut:
+ `SELECT`
+ `SELECT ... AS`
+ `SELECT COUNT()`
**catatan**  
`SELECT COUNT(DISTINCT )` tidak didukung.

Kueri yang melanggar batasan ini mungkin menghasilkan hasil yang salah.

### Padding data untuk sealed kolom sebelum enkripsi
<a name="padding-data"></a>

Saat Anda menentukan bahwa kolom harus berupa sealed kolom, C3R menanyakan *padding* jenis apa yang harus dipilih. Padding data sebelum enkripsi adalah opsional. Tanpa padding (tipe pad`none`), panjang data terenkripsi menunjukkan ukuran. cleartext Dalam beberapa keadaan, ukuran cleartext dapat mengekspos plaintext. Dengan padding (tipe pad `fixed` atau`max`), semua nilai pertama-tama diempuk ke ukuran umum dan kemudian dienkripsi. Dengan padding, panjang data terenkripsi tidak memberikan informasi tentang cleartext panjang aslinya, selain memberikan batas atas pada ukurannya.

Jika Anda ingin padding untuk kolom dan panjang byte maksimal data di kolom itu diketahui, gunakan `fixed` padding. Gunakan `length` nilai yang setidaknya sebesar panjang byte dari nilai terpanjang di kolom itu. 

**catatan**  
Terjadi kesalahan dan enkripsi gagal jika nilai lebih panjang dari yang disediakan`length`.

Jika Anda ingin padding untuk kolom dan panjang byte maksimal data di kolom itu tidak diketahui, gunakan `max` padding. Mode padding ini membungkus semua data dengan panjang nilai terpanjang ditambah `length` byte tambahan.

**catatan**  
Anda mungkin ingin mengenkripsi data dalam batch, atau memperbarui tabel Anda dengan data baru secara berkala. Ketahuilah bahwa `max` padding akan memasukkan entri ke panjang (plus `length` byte) dari entri plaintext terpanjang dalam batch tertentu. Ini berarti bahwa panjang ciphertext dapat bervariasi dari batch ke batch. Oleh karena itu, jika Anda mengetahui panjang byte maksimum untuk kolom, maka Anda harus menggunakan `fixed` sebagai gantinya. `max`

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

*Cleartextkolom* adalah kolom yang tidak dilindungi secara kriptografis untuk digunakan dalam JOIN atau SELECT pernyataan.

Cleartextkolom dapat digunakan di bagian manapun dari query SQL.

# Parameter komputasi kriptografi
<a name="crypto-computing-parameters"></a>

[Parameter komputasi kriptografi tersedia untuk kolaborasi menggunakan Cryptographic Computing for Clean Rooms (C3R) saat membuat kolaborasi.](create-collaboration.md) Anda dapat membuat kolaborasi menggunakan AWS Clean Rooms konsol atau operasi `CreateCollaboration` API. Di konsol, Anda dapat mengatur nilai untuk parameter dalam **parameter komputasi kriptografi** setelah Anda mengaktifkan opsi **komputasi kriptografi Support**. Untuk informasi selengkapnya, lihat topik berikut.

**Topics**
+ [Izinkan parameter cleartext kolom](#parameter-allowcleartext)
+ [Izinkan parameter duplikat](#parameter-allowduplicates)
+ [Izinkan JOIN kolom dengan parameter nama yang berbeda](#parameter-allowjoin)
+ [Pertahankan parameter NULL nilai](#parameter-preservenulls)

## Izinkan parameter cleartext kolom
<a name="parameter-allowcleartext"></a>

Di konsol, Anda dapat mengatur parameter **Izinkan cleartext kolom** saat [membuat kolaborasi](create-collaboration.md) untuk menentukan apakah cleartext data diizinkan dalam tabel dengan data terenkripsi.

Tabel berikut menjelaskan nilai-nilai untuk parameter **Izinkan cleartext kolom**.


| Nilai parameter | Deskripsi | 
| --- | --- | 
| Tidak |  Cleartextkolom tidak diizinkan dalam tabel terenkripsi. Semua data dilindungi secara kriptografi.  | 
| Ya |  Cleartextkolom diperbolehkan dalam tabel terenkripsi. Cleartextkolom tidak dilindungi secara kriptografis dan disertakan sebagai. cleartext Anda harus mencatat apa yang mungkin diungkapkan oleh cleartext data baris Anda tentang data lain dalam tabel. Untuk menjalankan SUM atau AVG pada kolom tertentu, kolom harus masukcleartext.  | 

Menggunakan operasi `CreateCollaboration` API, untuk `dataEncryptionMetadata` parameter, Anda dapat mengatur nilai `allowCleartext` ke `true` atau`false`. Untuk informasi selengkapnya tentang operasi API, lihat [Referensi AWS Clean Rooms API](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

Cleartextkolom sesuai dengan kolom yang diklasifikasikan sebagai cleartext dalam skema khusus tabel. Data dalam kolom ini tidak dienkripsi dan dapat digunakan dengan cara apa pun. Cleartextkolom dapat berguna jika data tidak sensitif and/or jika lebih banyak fleksibilitas diperlukan daripada sealed kolom atau fingerprint kolom terenkripsi memungkinkan.

## Izinkan parameter duplikat
<a name="parameter-allowduplicates"></a>

Di konsol, Anda dapat mengatur parameter **Izinkan duplikat** saat [membuat kolaborasi untuk menentukan apakah kolom yang](create-collaboration.md) dienkripsi untuk JOIN kueri dapat berisi duplikat non-nilai. NULL

**penting**  
Parameter **Izinkan duplikat**, [**JOINIzinkan kolom dengan nama yang berbeda**](#parameter-allowjoin), dan [**Pertahankan NULL nilai**](#parameter-preservenulls) memiliki efek terpisah tetapi terkait.

Tabel berikut menjelaskan nilai untuk parameter **Izinkan duplikat**.


| Nilai parameter | Deskripsi | 
| --- | --- | 
| Tidak  |  Nilai berulang tidak diperbolehkan dalam fingerprint kolom. Semua nilai dalam satu fingerprint kolom harus unik.  | 
| Ya |  Nilai berulang diperbolehkan dalam fingerprint kolom.  Jika Anda perlu menggabungkan kolom dengan nilai berulang, atur nilai ini ke **Ya**. Ketika diatur ke **Ya**, pola frekuensi yang muncul dalam fingerprint kolom dalam tabel C3R atau hasil mungkin menyiratkan beberapa informasi tambahan tentang struktur data. cleartext   | 

Menggunakan operasi `CreateCollaboration` API, untuk `dataEncryptionMetadata` parameter Anda dapat mengatur nilai `allowDuplicates` ke `true` atau`false`. Untuk informasi selengkapnya tentang operasi API, lihat [Referensi AWS Clean Rooms API](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

Secara default, jika data terenkripsi harus digunakan dalam JOIN kueri, klien enkripsi C3R mengharuskan kolom tersebut tidak memiliki nilai duplikat. Persyaratan ini merupakan upaya untuk meningkatkan perlindungan data. Perilaku ini dapat membantu memastikan bahwa pola berulang dalam data tidak dapat diamati. Namun, jika Anda ingin bekerja dengan data terenkripsi dalam JOIN kueri dan tidak peduli tentang nilai duplikat, parameter **Izinkan duplikat dapat menonaktifkan pemeriksaan** konservatif ini.

## Izinkan JOIN kolom dengan parameter nama yang berbeda
<a name="parameter-allowjoin"></a>

Di konsol, Anda dapat mengatur parameter **Izinkan JOIN kolom dengan nama yang berbeda** saat [membuat kolaborasi](create-collaboration.md) untuk menentukan apakah JOIN pernyataan antara kolom dengan nama berbeda didukung.

Untuk informasi selengkapnya, lihat [Normalisasi nama header kolom](crypto-computing-column-names.md#column-header-names-normalization)

Tabel berikut menjelaskan nilai untuk **Izinkan JOIN kolom dengan parameter nama yang berbeda**.


| Nilai parameter | Deskripsi | 
| --- | --- | 
| Tidak  |  Gabungan fingerprint kolom dengan nama berbeda tidak didukung. JOINpernyataan hanya memberikan hasil yang akurat pada kolom yang memiliki nama yang sama.  Nilai **No** memberikan peningkatan keamanan informasi tetapi mengharuskan peserta kolaborasi untuk menyetujui sebelumnya tentang nama kolom. Jika dua kolom memiliki nama yang berbeda ketika dienkripsi sebagai fingerprint kolom dan **Izinkan JOIN kolom dengan nama yang berbeda** diatur ke **Tidak**, JOIN pernyataan pada kolom tersebut tidak menghasilkan hasil. Ini karena tidak ada nilai pasca-enkripsi yang dibagi di antara mereka.    | 
| Ya |  Gabungan fingerprint kolom dengan nama berbeda didukung. Untuk fleksibilitas tambahan, pengguna dapat mengatur nilai ini ke **Ya**, yang memungkinkan JOIN pernyataan pada kolom terlepas dari nama kolom mereka.  Jika disetel ke **Ya**, klien enkripsi C3R tidak mempertimbangkan nama kolom saat melindungi fingerprint kolom. Akibatnya, nilai umum di fingerprint kolom yang berbeda dapat diamati dalam tabel C3R.  Misalnya, jika baris memiliki JOIN nilai terenkripsi yang sama di `City` kolom dan `State` kolom, mungkin masuk akal untuk menyimpulkan bahwa nilainya adalah. `New York`  | 

Menggunakan operasi `CreateCollaboration` API, untuk `dataEncryptionMetadata` parameter, Anda dapat mengatur nilai `allowJoinsOnColumnsWithDifferentNames` ke `true` atau`false`. Untuk informasi selengkapnya tentang operasi API, lihat [Referensi AWS Clean Rooms API](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

Secara default, enkripsi fingerprint kolom dipengaruhi oleh kolom `targetHeader` untuk itu, diatur[Langkah 4: Buat skema enkripsi untuk file tabular](gen-encryption-schema-csv.md). Oleh karena itu, cleartext nilai yang sama memiliki representasi terenkripsi yang berbeda di setiap fingerprint kolom yang berbeda yang dienkripsi untuknya.

Parameter ini dapat berguna untuk mencegah inferensi cleartext nilai dalam beberapa kasus. Misalnya, melihat nilai terenkripsi yang sama di fingerprint kolom `City` dan `State` dapat digunakan untuk menyimpulkan nilainya secara wajar. `New York` Namun, penggunaan parameter ini memerlukan koordinasi tambahan terlebih dahulu, sehingga semua kolom yang akan digabungkan dalam kueri memiliki nama bersama.

Anda dapat menggunakan **Izinkan JOIN kolom dengan parameter nama yang berbeda** untuk melonggarkan batasan ini. Ketika nilai parameter disetel ke`Yes`, ini memungkinkan kolom apa pun yang dienkripsi JOIN untuk digunakan bersama terlepas dari nama.

## Pertahankan parameter NULL nilai
<a name="parameter-preservenulls"></a>

Di konsol, Anda dapat mengatur parameter **Pertahankan NULL nilai** saat [membuat kolaborasi](create-collaboration.md) untuk menunjukkan bahwa tidak ada nilai yang ada untuk kolom tersebut.

Tabel berikut menjelaskan nilai untuk parameter **Preserve NULL values**.


| Nilai parameter | Deskripsi | 
| --- | --- | 
| Tidak |  NULLnilai-nilai tidak dipertahankan. NULLnilai tidak muncul seperti NULL dalam tabel terenkripsi. NULLnilai muncul sebagai nilai acak unik dalam tabel C3R.   | 
| Ya | NULLnilai-nilai dipertahankan. NULLnilai muncul seperti NULL dalam tabel terenkripsi. Jika Anda memerlukan semantik SQL NULL nilai, Anda dapat mengatur nilai ini ke Ya. Akibatnya, NULL entri muncul seperti NULL pada tabel C3R, terlepas dari apakah kolom dienkripsi dan terlepas dari pengaturan parameter untuk Izinkan duplikat.  | 

Menggunakan operasi `CreateCollaboration` API, untuk `dataEncryptionMetadata` parameter, Anda dapat mengatur nilai `preserveNulls` ke `true` atau`false`. Untuk informasi selengkapnya tentang operasi API, lihat [Referensi AWS Clean Rooms API](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html).

Saat parameter **Pertahankan NULL nilai** disetel ke **Tidak** untuk kolaborasi:

1. NULLentri dalam `cleartext` kolom tidak berubah.

1. NULLentri dalam `fingerprint` kolom terenkripsi dienkripsi sebagai nilai acak untuk menyembunyikan isinya. Bergabung di kolom terenkripsi dengan NULL entri di cleartext kolom tidak menghasilkan kecocokan apa pun untuk entri mana pun. NULL Tidak ada kecocokan yang dibuat karena mereka masing-masing menerima konten acak unik mereka sendiri.

1. NULLentri dalam `sealed` kolom terenkripsi dienkripsi.

Ketika nilai parameter **Pertahankan NULL nilai** disetel ke **Ya** untuk kolaborasi, NULL entri dari semua kolom tetap sebagai NULL terlepas dari apakah kolom dienkripsi.

Parameter **Preserve NULL values** berguna dalam skenario seperti pengayaan data, di mana Anda ingin berbagi kekurangan informasi yang dinyatakan sebagai. NULL Parameter **Preserve NULL values** juga berguna dalam format fingerprint atau HMAC jika Anda memiliki NULL nilai di kolom yang Anda inginkan JOIN atauGROUP BY.

Jika nilai parameter **Izinkan duplikat** dan **Pertahankan NULL nilai** diatur ke **Tidak**, memiliki lebih dari satu NULL entri dalam fingerprint kolom menghasilkan kesalahan dan menghentikan enkripsi. Jika nilai salah satu parameter disetel ke **Ya**, tidak ada kesalahan seperti itu terjadi.

# Bendera opsional dalam Komputasi Kriptografi untuk Clean Rooms
<a name="crypto-computing-optional-flags"></a>

Bagian berikut menjelaskan flag opsional yang dapat Anda atur saat Anda [mengenkripsi data menggunakan klien enkripsi](encrypt-data.md) C3R untuk kustomisasi dan pengujian file tabular.

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

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

Anda dapat menggunakan `--csvInputNULLValue` bendera untuk menentukan pengkodean kustom untuk NULL entri dalam data input saat Anda [mengenkripsi data menggunakan klien enkripsi C3R](encrypt-data.md). 

Tabel berikut merangkum penggunaan dan parameter flag ini.


| Penggunaan | Parameter | 
| --- | --- | 
| Tidak wajib. Pengguna dapat menentukan pengkodean khusus untuk NULL entri dalam data input. | Pengkodean NULL nilai yang ditentukan pengguna dalam file CSV input | 

NULLEntri adalah entri yang dianggap kurang konten, khususnya dalam konteks format tabel yang lebih kaya seperti tabel SQL. Meskipun .csv tidak secara eksplisit mendukung karakterisasi ini karena alasan historis, itu adalah konvensi umum untuk mempertimbangkan entri kosong yang hanya berisi spasi putih. NULL Oleh karena itu, itulah perilaku default klien enkripsi C3R dan dapat disesuaikan sesuai kebutuhan.

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

Anda dapat menggunakan `--csvOutputNULLValue` bendera untuk menentukan pengkodean kustom untuk NULL entri dalam data keluaran saat Anda [mengenkripsi data menggunakan klien enkripsi C3R](encrypt-data.md). 

Tabel berikut merangkum penggunaan dan parameter flag ini.


| Penggunaan | Parameter | 
| --- | --- | 
| Tidak wajib. Pengguna dapat menentukan pengkodean khusus dalam file keluaran yang dihasilkan untuk NULL entri.  | Pengkodean NULL nilai yang ditentukan pengguna dalam file CSV keluaran | 

NULLEntri adalah entri yang dianggap kurang konten, khususnya dalam konteks format tabel yang lebih kaya seperti tabel SQL. Meskipun .csv tidak secara eksplisit mendukung karakterisasi ini karena alasan historis, itu adalah konvensi umum untuk mempertimbangkan entri kosong yang hanya berisi spasi putih. NULL Oleh karena itu, itulah perilaku default klien enkripsi C3R dan dapat disesuaikan sesuai kebutuhan.

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

Saat Anda [mengenkripsi data](encrypt-data.md) menggunakan klien enkripsi C3R, gunakan `--enableStackTraces` tanda untuk memberikan informasi kontekstual tambahan untuk pelaporan kesalahan saat C3R menemukan kesalahan.

AWS tidak mengumpulkan kesalahan. Jika Anda mengalami kesalahan, gunakan jejak tumpukan untuk memecahkan masalah kesalahan sendiri atau mengirim jejak tumpukan Dukungan untuk mendapatkan bantuan. 

Tabel berikut merangkum penggunaan dan parameter flag ini.


| Penggunaan | Parameter | 
| --- | --- | 
| Tidak wajib. Digunakan untuk memberikan informasi kontekstual tambahan untuk pelaporan kesalahan ketika klien enkripsi C3R mengalami kesalahan. | Tidak ada | 

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

[Enkripsi](encrypt-data.md) dan [dekripsi perintah klien enkripsi](decrypt-data.md) C3R menyertakan bendera opsional. `--dryRun` Bendera mengambil semua argumen yang disediakan pengguna dan memeriksa validitas dan konsistensi.

Anda dapat menggunakan `--dryRun` bendera untuk memeriksa apakah file skema Anda valid dan konsisten dengan file input yang sesuai. 

Tabel berikut merangkum penggunaan dan parameter flag ini.


| Penggunaan | Parameter | 
| --- | --- | 
| Tidak wajib. Menyebabkan klien enkripsi C3R mengurai parameter dan memeriksa file, tetapi tidak melakukan enkripsi atau dekripsi. | Tidak ada | 

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

Anda mungkin ingin menggunakan direktori sementara karena file terenkripsi terkadang bisa lebih besar dari file yang tidak dienkripsi, tergantung pada pengaturannya. Kumpulan data juga harus dienkripsi per kolaborasi agar berfungsi dengan benar.

Saat Anda [mengenkripsi data](encrypt-data.md) menggunakan C3R, gunakan `--tempDir` bendera untuk menentukan lokasi di mana file sementara dapat dibuat saat memproses input.

Tabel berikut merangkum penggunaan dan parameter flag ini.


| Penggunaan | Parameter | 
| --- | --- | 
| Pengguna dapat menentukan lokasi di mana file sementara dapat dibuat saat memproses input.  | Default ke direktori sementara sistem. | 

# Kueri dengan Komputasi Kriptografi untuk Clean Rooms
<a name="crypto-computing-queries"></a>

Topik ini memberikan informasi tentang menulis kueri yang menggunakan tabel data yang telah dienkripsi menggunakan Cryptographic Computing untuk. Clean Rooms

**Topics**
+ [Kueri yang bercabang di NULL](#queries-branch-on-null)
+ [Memetakan satu kolom sumber ke beberapa kolom target](#queries-mapping)
+ [Menggunakan data yang sama untuk keduanya JOIN dan SELECT kueri](#queries-using-same-data)

## Kueri yang bercabang di NULL
<a name="queries-branch-on-null"></a>

Untuk memiliki cabang kueri pada NULL pernyataan berarti menggunakan sintaks seperti`IF x IS NULL THEN 0 ELSE 1`.

Kueri selalu dapat bercabang pada NULL pernyataan di cleartext kolom. 

Kueri dapat bercabang pada NULL pernyataan di sealed kolom dan fingerprint kolom hanya jika nilai parameter **Preserve NULL values** (`preserveNulls`) diatur ke. `true`

Kueri yang melanggar batasan ini mungkin menghasilkan hasil yang salah.

## Memetakan satu kolom sumber ke beberapa kolom target
<a name="queries-mapping"></a>

Satu kolom sumber dapat dipetakan ke beberapa kolom target. Misalnya, Anda mungkin ingin keduanya JOIN dan SELECT pada kolom. 

Untuk informasi selengkapnya, lihat [Menggunakan data yang sama untuk keduanya JOIN dan SELECT kueri](#queries-using-same-data).

## Menggunakan data yang sama untuk keduanya JOIN dan SELECT kueri
<a name="queries-using-same-data"></a>

Jika data dalam kolom tidak sensitif, itu dapat muncul di kolom cleartext target, yang memungkinkannya digunakan untuk tujuan apa pun.

Jika data dalam kolom sensitif dan harus digunakan untuk keduanya JOIN dan SELECT kueri, petakan kolom sumber itu ke dua kolom target dalam file output. Satu kolom dienkripsi dengan `type` sebagai fingerprint kolom, dan satu kolom dienkripsi dengan kolom `type` sebagai tertutup. Pembuatan skema interaktif dari klien enkripsi C3R menyarankan sufiks header dan. `_fingerprint` `_sealed` Sufiks header ini dapat menjadi konvensi yang berguna untuk membedakan kolom tersebut dengan cepat.

# Pedoman untuk klien enkripsi C3R
<a name="crypto-computing-guidelines"></a>

Klien enkripsi C3R adalah alat yang memungkinkan organisasi untuk menyatukan data sensitif untuk mendapatkan wawasan baru dari analisis data. Alat ini secara kriptografis membatasi apa yang dapat dipelajari oleh pihak mana pun dan AWS dalam prosesnya. Meskipun ini sangat penting, proses pengamanan data secara kriptografis dapat menambah overhead yang signifikan baik dalam hal sumber daya komputasi maupun penyimpanan. Oleh karena itu, penting untuk memahami pengorbanan menggunakan setiap pengaturan dan cara mengoptimalkan pengaturan sambil tetap mempertahankan jaminan kriptografi yang diinginkan. Topik ini berfokus pada implikasi kinerja dari pengaturan yang berbeda dalam klien dan skema enkripsi C3R. 

Semua pengaturan enkripsi klien enkripsi C3R memberikan jaminan kriptografi yang berbeda. Pengaturan tingkat kolaborasi paling aman secara default. Mengaktifkan fungsionalitas tambahan sambil membuat kolaborasi melemahkan jaminan privasi, memungkinkan aktivitas seperti analisis frekuensi dilakukan pada ciphertext. Untuk informasi lebih lanjut tentang bagaimana pengaturan ini digunakan dan apa implikasinya, lihat[Komputasi Kriptografi untuk Clean Rooms](crypto-computing.md).

**Topics**
+ [Implikasi kinerja untuk jenis kolom](#performance-implications)
+ [Memecahkan masalah peningkatan ukuran ciphertext yang tidak terduga](#troubleshooting-ciphertext-size)

## Implikasi kinerja untuk jenis kolom
<a name="performance-implications"></a>

C3R menggunakan tiga jenis kolom:cleartext,fingerprint, dan. sealed Masing-masing jenis kolom ini memberikan jaminan kriptografi yang berbeda dan memiliki tujuan penggunaan yang berbeda. Pada bagian berikut, implikasi kinerja dari jenis kolom dibahas dan dampak kinerja dari setiap pengaturan.

**Topics**
+ [Cleartextkolom](#cleartext-columns)
+ [Fingerprintkolom](#guidelines-fingerprint-columns)
+ [Sealedkolom](#guidelines-sealed-columns)

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

Cleartextkolom tidak diubah dari format aslinya dan tidak diproses secara kriptografi dengan cara apa pun. Jenis kolom ini tidak dapat dikonfigurasi dan tidak memengaruhi kinerja penyimpanan atau komputasi.

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

Fingerprintkolom dimaksudkan untuk digunakan untuk menggabungkan data di beberapa tabel. Untuk tujuan ini, ukuran ciphertext yang dihasilkan harus selalu sama. Namun, kolom ini dipengaruhi oleh pengaturan tingkat kolaborasi. Fingerprintkolom mungkin memiliki berbagai tingkat dampak pada ukuran file output tergantung pada yang cleartext terkandung dalam input.

**Topics**
+ [Basis overhead untuk kolom fingerprint](#fingerprint-columns-base-overhead)
+ [Pengaturan kolaborasi untuk fingerprint kolom](#fingerprint-columns-collab-settings)
+ [Contoh data untuk fingerprint kolom](#collab-set-sample-data)
+ [Kolom pemecahan masalah fingerprint](#fingerprint-columns-troubleshooting)

#### Basis overhead untuk kolom fingerprint
<a name="fingerprint-columns-base-overhead"></a>

Ada overhead dasar untuk fingerprint kolom. Overhead ini konstan dan menggantikan ukuran cleartext byte.

Data dalam fingerprint kolom diproses secara kriptografis melalui fungsi Kode Otentikasi Pesan berbasis Hash (HMAC), yang mengubah data menjadi kode otentikasi pesan 32 byte (MAC). Data ini kemudian diproses melalui encoder base64, menambahkan sekitar 33 persen ke ukuran byte. Ini pra-penandaan dengan penunjukan C3R 8 byte untuk menunjuk jenis kolom yang dimiliki data dan versi klien yang menghasilkannya. Hasil akhirnya adalah 52 byte. Hasil ini kemudian dikalikan dengan jumlah baris untuk mendapatkan total overhead basis (gunakan jumlah total `null` non-nilai jika `preserveNulls` disetel ke true).

Gambar berikut menunjukkan bagaimana *`BASE_OVERHEAD = `*`C3R_DESIGNATION + `*`(MAC * 1.33)`***

![\[Basis overhead 52 byte untuk fingerprint kolom.\]](http://docs.aws.amazon.com/id_id/clean-rooms/latest/userguide/images/base-overhead-fingerprint.PNG)


Output ciphertext dalam fingerprint kolom akan selalu 52 byte. Ini bisa menjadi penurunan penyimpanan yang signifikan jika cleartext data input rata-rata lebih dari 52 byte (misalnya, alamat jalan lengkap). Ini bisa menjadi peningkatan penyimpanan yang signifikan jika cleartext data input rata-rata kurang dari 52 byte (misalnya, usia pelanggan).

#### Pengaturan kolaborasi untuk fingerprint kolom
<a name="fingerprint-columns-collab-settings"></a>

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

Ketika pengaturan `preserveNulls` tingkat kolaborasi `false` (default), setiap `null` nilai diganti dengan 32 byte acak yang unik dan diproses seolah-olah tidak. `null` Hasilnya adalah bahwa setiap `null` nilai sekarang 52 byte. Ini dapat menambahkan persyaratan penyimpanan yang signifikan untuk tabel yang berisi data yang sangat jarang dibandingkan dengan saat pengaturan ini `true` dan `null` nilai dilewatkan sebagai`null`.

Jika Anda tidak memerlukan jaminan privasi dari pengaturan ini dan lebih memilih untuk mempertahankan `null` nilai dalam kumpulan data Anda, aktifkan `preserveNulls` pengaturan pada saat kolaborasi dibuat. `preserveNulls`Pengaturan tidak dapat diubah setelah kolaborasi dibuat.

#### Contoh data untuk fingerprint kolom
<a name="collab-set-sample-data"></a>

Berikut ini adalah contoh kumpulan data input dan output untuk fingerprint kolom dengan pengaturan untuk mereproduksi. Pengaturan tingkat kolaborasi lainnya menyukai `allowCleartext` dan `allowDuplicates` tidak memengaruhi hasil dan dapat disetel sebagai `true` atau `false` jika mencoba mereproduksi secara lokal.

**Contoh rahasia bersama**: `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`

**Contoh ID kolaborasi**: `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`

**allowJoinsOnColumnsWithDifferentNames**: Pengaturan `True` ini tidak memengaruhi kinerja atau persyaratan penyimpanan. Namun, pengaturan ini membuat pilihan nama kolom tidak relevan saat mereproduksi nilai yang ditunjukkan dalam tabel berikut.


**Contoh 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Output | null | 
| Deterministik | Yes | 
| Byte masukan | 0 | 
| Byte keluaran | 0 | 


**Contoh 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Output | 01:hmac:3lkFjthvV3IUu6mMvFc1a\$1XAHwgw/ElmOq4p3Yg25kk= | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 52 | 


**Contoh 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Output | 01:hmac:oKTgi3Gba\$1eUb3JteSz2EMgXUkF1WgM77UP0Ydw5kPQ= | 
| Deterministik | Yes | 
| Byte masukan | 0 | 
| Byte keluaran | 52 | 


**Contoh 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Output | 01:hmac:kU/IqwG7FMmzzshr0B9scomE0UJUEE7j9keTctplGww= | 
| Deterministik | Yes | 
| Byte masukan | 26 | 
| Byte keluaran | 52 | 


**Contoh 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Output | 01:hmac:ks3htnQbw2vdhCRFF6JNzW5LMndJaHG57uvE26mBtSs= | 
| Deterministik | Yes | 
| Byte masukan | 62 | 
| Byte keluaran | 52 | 

#### Kolom pemecahan masalah fingerprint
<a name="fingerprint-columns-troubleshooting"></a>

**Mengapa ciphertext di fingerprint kolom saya beberapa kali lebih besar dari ukuran cleartext yang masuk ke dalamnya?**

Ciphertext dalam fingerprint kolom selalu 52 byte panjangnya. Jika data input Anda kecil (misalnya, usia pelanggan), itu akan menunjukkan peningkatan ukuran yang signifikan. Ini juga bisa terjadi jika `preserveNulls` pengaturan diatur ke`false`.

**Mengapa ciphertext di fingerprint kolom saya beberapa kali lebih kecil dari ukuran cleartext yang masuk ke dalamnya?**

Ciphertext dalam fingerprint kolom selalu 52 byte panjangnya. Jika data input Anda besar (misalnya, alamat jalan lengkap pelanggan), itu akan menunjukkan penurunan ukuran yang signifikan.

**Bagaimana saya tahu jika saya membutuhkan jaminan kriptografi yang disediakan oleh? `preserveNulls`**

Sayangnya, jawabannya adalah itu tergantung. Minimal, [Parameter komputasi kriptografi](crypto-computing-parameters.md) harus ditinjau untuk bagaimana `preserveNulls` pengaturan melindungi data Anda. Namun, kami menyarankan Anda untuk mereferensikan persyaratan penanganan data organisasi Anda dan kontrak apa pun yang berlaku untuk kolaborasi masing-masing. 

**Mengapa saya harus mengeluarkan biaya overhead base64?**

Untuk memungkinkan kompatibilitas dengan format file tabular seperti CSV, pengkodean base64 diperlukan. Meskipun beberapa format file seperti Parquet mungkin mendukung representasi biner data, penting bahwa semua peserta dalam kolaborasi mewakili data dengan cara yang sama untuk memastikan hasil kueri yang tepat.

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

Sealedkolom dimaksudkan untuk digunakan untuk mentransfer data antara anggota kolaborasi. Ciphertext dalam kolom ini bersifat non-deterministik dan memiliki dampak signifikan pada kinerja dan penyimpanan berdasarkan bagaimana kolom dikonfigurasi. Kolom ini dapat dikonfigurasi secara individual dan seringkali memiliki dampak terbesar pada kinerja klien enkripsi C3R dan ukuran file keluaran yang dihasilkan.

**Topics**
+ [Basis overhead untuk kolom sealed](#sealed-columns-base-overhead)
+ [Pengaturan kolaborasi untuk sealed kolom](#sealed-columns-collab-settings)
+ [sealedKolom pengaturan skema: jenis padding](#sealed-collab-pad-type)
+ [Contoh data untuk sealed kolom](#sealed-collab-sample-data)
+ [Kolom pemecahan masalah sealed](#troubleshooting-sealed-columns)

#### Basis overhead untuk kolom sealed
<a name="sealed-columns-base-overhead"></a>

Ada overhead dasar untuk sealed kolom. Overhead ini konstan dan selain ukuran byte cleartext dan padding (jika ada).

Sebelum enkripsi apa pun, data dalam sealed kolom pra-pended dengan karakter 1 byte yang menunjuk jenis data apa yang terkandung. Jika padding dipilih, data kemudian empuk dan ditambahkan dengan 2 byte yang menyatakan ukuran pad. Setelah byte ini ditambahkan, data diproses secara kriptografi dengan menggunakan AES-GCM dan disimpan dengan IV (12 byte), (32 byte), dan nonce (16 byte). Auth Tag Data ini kemudian diproses melalui encoder base64, menambahkan sekitar 33 persen ke ukuran byte. Data pra-penandaan dengan penunjukan C3R 7 byte untuk menentukan jenis kolom apa yang dimiliki data dan versi klien yang digunakan untuk memproduksinya. Hasilnya adalah overhead basis akhir 91 byte. Hasil ini kemudian dapat dikalikan dengan jumlah baris untuk mendapatkan total overhead basis (gunakan jumlah total nilai non-null jika `preserveNulls` disetel ke true).

Gambar berikut menunjukkan bagaimana *`BASE_OVERHEAD = C3R_DESIGNATION + ((NONCE + IV + DATA_TYPE + PAD_SIZE + AUTH_TAG) * 1.33)`*

![\[Overhead basis 91 byte untuk sealed kolom.\]](http://docs.aws.amazon.com/id_id/clean-rooms/latest/userguide/images/base-overhead-sealed.PNG)


#### Pengaturan kolaborasi untuk sealed kolom
<a name="sealed-columns-collab-settings"></a>

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

Ketika pengaturan `preserveNulls` tingkat kolaborasi `false` (default), setiap `null` nilai unik, acak 32 byte dan diproses seolah-olah tidak. `null` Hasilnya adalah bahwa setiap `null` nilai sekarang 91 byte (lebih jika empuk). Ini dapat menambahkan persyaratan penyimpanan yang signifikan untuk tabel yang berisi data yang sangat jarang dibandingkan dengan saat pengaturan ini `true` dan `null` nilai dilewatkan sebagai`null`.

Jika Anda tidak memerlukan jaminan privasi dari pengaturan ini dan lebih memilih untuk mempertahankan `null` nilai dalam kumpulan data Anda, aktifkan `preserveNulls` pengaturan pada saat kolaborasi dibuat. `preserveNulls`Pengaturan tidak dapat diubah setelah kolaborasi dibuat.

#### sealedKolom pengaturan skema: jenis padding
<a name="sealed-collab-pad-type"></a>

**Topics**
+ [Jenis pad `none`](#pad-type-none)
+ [Jenis pad `fixed`](#pad-type-fixed)
+ [Jenis pad `max`](#pad-type-max)

##### Jenis pad `none`
<a name="pad-type-none"></a>

Memilih jenis pad `none` tidak menambahkan padding apa pun ke cleartext dan tidak menambahkan overhead tambahan ke overhead dasar yang dijelaskan sebelumnya. Tidak ada padding yang menghasilkan ukuran output yang paling hemat ruang. Namun, itu tidak memberikan jaminan privasi yang sama dengan tipe `fixed` dan `max` padding. Ini karena ukuran yang mendasarinya cleartext dapat dilihat dari ukuran ciphertext.

##### Jenis pad `fixed`
<a name="pad-type-fixed"></a>

Memilih jenis pad `fixed` adalah ukuran pelestarian privasi untuk menyembunyikan panjang data yang terkandung dalam kolom. Hal ini dilakukan dengan padding semua cleartext ke yang disediakan `pad_length` sebelum dienkripsi. Setiap data yang melebihi ukuran itu menyebabkan klien enkripsi C3R gagal.

Mengingat bahwa padding ditambahkan ke cleartext sebelum dienkripsi, AES-GCM memiliki pemetaan 1-ke-1 untuk byte ciphertext. cleartext Pengkodean base64 akan menambah 33 persen. Overhead penyimpanan tambahan dari padding dapat dihitung dengan mengurangi panjang rata-rata dari cleartext dari nilai `pad_length` dan mengalikannya dengan 1,33. Hasilnya adalah overhead rata-rata padding per record. Hasil ini kemudian dapat dikalikan dengan jumlah baris untuk mendapatkan overhead padding total (gunakan jumlah total `null` non-nilai jika `preserveNulls` diatur ke). `true`

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

Kami menyarankan Anda memilih minimum `pad_length` yang mencakup nilai terbesar dalam kolom. Misalnya, jika nilai terbesar adalah 50 byte, a `pad_length` dari 50 sudah cukup. Nilai yang lebih besar dari itu hanya akan menambah overhead penyimpanan tambahan.

Padding tetap tidak menambahkan overhead komputasi yang signifikan.

##### Jenis pad `max`
<a name="pad-type-max"></a>

Memilih jenis pad `max` adalah ukuran pelestarian privasi untuk menyembunyikan panjang data yang terkandung dalam kolom. Hal ini dilakukan dengan padding semua cleartext ke nilai terbesar di kolom ditambah tambahan `pad_length` sebelum dienkripsi. Umumnya, `max` padding memberikan jaminan yang sama dengan `fixed` padding untuk satu kumpulan data sementara memungkinkan untuk tidak mengetahui nilai terbesar cleartext di kolom. Namun, `max` padding mungkin tidak memberikan jaminan privasi yang sama seperti `fixed` padding di seluruh pembaruan karena nilai terbesar dalam kumpulan data individu mungkin berbeda.

Kami menyarankan Anda memilih tambahan `pad_length` 0 saat menggunakan `max` padding. Panjang ini bantalan semua nilai menjadi ukuran yang sama dengan nilai terbesar di kolom. Nilai yang lebih besar dari itu hanya akan menambah overhead penyimpanan tambahan.

Jika cleartext nilai terbesar diketahui untuk kolom tertentu, kami sarankan Anda menggunakan jenis `fixed` pad sebagai gantinya. Menggunakan `fixed` padding menciptakan konsistensi di seluruh kumpulan data yang diperbarui. Menggunakan `max` padding menghasilkan setiap subset data yang diempuk ke nilai terbesar yang ada di subset.

#### Contoh data untuk sealed kolom
<a name="sealed-collab-sample-data"></a>

Berikut ini adalah contoh kumpulan data input dan output untuk sealed kolom dengan pengaturan untuk mereproduksi. Pengaturan tingkat kolaborasi lainnya seperti`allowCleartext`,`allowJoinsOnColumnsWithDifferentNames`, dan `allowDuplicates` tidak memengaruhi hasil dan dapat disetel sebagai `true` atau `false` jika mencoba mereproduksi secara lokal. Meskipun ini adalah pengaturan dasar untuk mereproduksi, sealed kolom tidak deterministik dan nilai akan berubah setiap saat. Tujuannya adalah untuk menunjukkan byte dalam dibandingkan dengan byte keluar. Contoh `pad_length` nilai dipilih dengan sengaja. Mereka menunjukkan bahwa `fixed` padding menghasilkan nilai yang sama dengan `max` padding dengan `pad_length` pengaturan minimum yang disarankan atau ketika padding tambahan diinginkan.

**Contoh rahasia bersama**: `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`

**Contoh ID kolaborasi**: `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`

**Topics**
+ [Jenis pad `none`](#sealed-pad-type-none)
+ [Jenis pad `fixed` (Contoh 1)](#sealed-pad-type-fixed)
+ [Jenis pad `fixed` (Contoh 2)](#sealed-pad-type-fixed-2)
+ [Jenis pad `max` (Contoh 1)](#sealed-pad-type-max)
+ [Jenis pad `max` (Contoh 2)](#sealed-pad-type-max-2)

##### Jenis pad `none`
<a name="sealed-pad-type-none"></a>


**Contoh 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Output | null | 
| Deterministik | Yes | 
| Byte masukan | 0 | 
| Byte keluaran | 0 | 


**Contoh 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSPbNIJfG3iXmu6cbCUrizuV | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 91 | 


**Contoh 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSPEM6qR8DWC2PB2GMlX41YK | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 91 | 


**Contoh 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9sGL5VLDQeHzh6DmPpyWNuI= | 
| Deterministik | No | 
| Byte masukan | 26 | 
| Byte keluaran | 127 | 


**Contoh 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua\$11/JfcVjc= | 
| Deterministik | No | 
| Byte masukan | 62 | 
| Byte keluaran | 175 | 

##### Jenis pad `fixed` (Contoh 1)
<a name="sealed-pad-type-fixed"></a>

Dalam contoh ini, `pad_length` adalah 62 dan masukan terbesar adalah 62 byte.


**Contoh 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Output | null | 
| Deterministik | Yes | 
| Byte masukan | 0 | 
| Byte keluaran | 0 | 


**Contoh 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoNpATs0GzbnLkor4L\$1/aSuA= | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 175 | 


**Contoh 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoLB53l07VZpA6OwkuXu29CA= | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 175 | 


**Contoh 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcutBAcO\$1Mb9tuU2KIHH31AWg= | 
| Deterministik | No | 
| Byte masukan | 26 | 
| Byte keluaran | 175 | 


**Contoh 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua\$11/JfcVjc= | 
| Deterministik | No | 
| Byte masukan | 62 | 
| Byte keluaran | 175 | 

##### Jenis pad `fixed` (Contoh 2)
<a name="sealed-pad-type-fixed-2"></a>

Dalam contoh ini, `pad_length` adalah 162 dan masukan terbesar adalah 62 byte.


**Contoh 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Output | null | 
| Deterministik | Yes | 
| Byte masukan | 0 | 
| Byte keluaran | 0 | 


**Contoh 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv/xAySX\$1xcntotL703aBTBb | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 307 | 


**Contoh 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv84lVaT9Yd\$16oQx65/\$1gdVT | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 307 | 


**Contoh 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwtX5Hnl\$1WyfO6ks3QMaRDGSf | 
| Deterministik | No | 
| Byte masukan | 26 | 
| Byte keluaran | 307 | 


**Contoh 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwjkJXQZOgPdeFX9Yr/8alV5i | 
| Deterministik | No | 
| Byte masukan | 62 | 
| Byte keluaran | 307 | 

##### Jenis pad `max` (Contoh 1)
<a name="sealed-pad-type-max"></a>

Dalam contoh ini, `pad_length` adalah 0 dan masukan terbesar adalah 62 byte.


**Contoh 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Output | null | 
| Deterministik | Yes | 
| Masukan Byte | 0 | 
| Byte Keluaran | 0 | 


**Contoh 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoNpATs0GzbnLkor4L\$1/aSuA= | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 175 | 


**Contoh 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoLB53l07VZpA6OwkuXu29CA= | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 175 | 


**Contoh 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcutBAcO\$1Mb9tuU2KIHH31AWg= | 
| Deterministik | No | 
| Byte masukan | 26 | 
| Byte keluaran | 175 | 


**Contoh 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua\$11/JfcVjc= | 
| Deterministik | No | 
| Byte masukan | 62 | 
| Byte keluaran | 175 | 

##### Jenis pad `max` (Contoh 2)
<a name="sealed-pad-type-max-2"></a>

Dalam contoh ini, `pad_length` adalah 100 dan masukan terbesar adalah 62 byte.


**Contoh 1**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | TRUE | 
| Output | null | 
| Deterministik | Yes | 
| Byte masukan | 0 | 
| Byte keluaran | 0 | 


**Contoh 2**  

|  |  | 
| --- |--- |
| Input | null | 
| preserveNulls | FALSE | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv/xAySX\$1xcntotL703aBTBb | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 307 | 


**Contoh 3**  

|  |  | 
| --- |--- |
| Input | empty string | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1\$17r75Tk\$1Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv84lVaT9Yd\$16oQx65/\$1gdVT | 
| Deterministik | No | 
| Byte masukan | 0 | 
| Byte keluaran | 307 | 


**Contoh 4**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyz | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwtX5Hnl\$1WyfO6ks3QMaRDGSf | 
| Deterministik | No | 
| Byte masukan | 26 | 
| Byte keluaran | 307 | 


**Contoh 5**  

|  |  | 
| --- |--- |
| Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | 
| preserveNulls | - | 
| Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4\$1n8GiRfJNmqdP4/QOQ3cXb/pbvPcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn\$18o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwjkJXQZOgPdeFX9Yr/8alV5i | 
| Deterministik | No | 
| Byte masukan | 62 | 
| Byte keluaran | 307 | 

#### Kolom pemecahan masalah sealed
<a name="troubleshooting-sealed-columns"></a>

**Mengapa ciphertext di sealed kolom saya beberapa kali lebih besar dari ukuran cleartext yang masuk ke dalamnya?**

Ini tergantung pada beberapa faktor. Untuk satu, ciphertext dalam Cleartext kolom selalu setidaknya 91 byte panjangnya. Jika data input Anda kecil (misalnya, usia pelanggan), itu akan menunjukkan peningkatan ukuran yang signifikan. Kedua, jika `preserveNulls` disetel ke `false` dan data input Anda berisi banyak `null` nilai, masing-masing `null` nilai tersebut akan berubah menjadi 91 byte ciphertext. Akhirnya, jika Anda menggunakan padding, menurut definisi byte ditambahkan ke cleartext data sebelum dienkripsi.

**Sebagian besar data saya di sealed kolom sangat kecil, dan saya perlu menggunakan padding. Bisakah saya menghapus nilai besar dan memprosesnya secara terpisah untuk menghemat ruang?**

Kami tidak menyarankan Anda menghapus nilai besar dan memprosesnya secara terpisah. Melakukan hal itu mengubah jaminan privasi yang disediakan oleh klien enkripsi C3R. Sebagai model ancaman, asumsikan bahwa pengamat dapat melihat kedua kumpulan data terenkripsi. Jika pengamat melihat bahwa satu subset data memiliki kolom yang dilapisi secara signifikan lebih atau kurang dari subset lain, mereka dapat membuat kesimpulan tentang ukuran data di setiap subset. Misalnya, asumsikan `fullName` kolom diempuk dengan total 40 byte dalam satu file dan diempuk hingga 800 byte di file lain. Seorang pengamat mungkin dapat berasumsi bahwa satu kumpulan data berisi nama terpanjang di dunia747 byte).

**Apakah saya perlu memberikan padding tambahan saat menggunakan tipe `max` padding?**

Tidak. Saat menggunakan `max` padding, kami merekomendasikan bahwa`pad_length`, juga dikenal sebagai padding tambahan *di luar* nilai terbesar di kolom, diatur ke 0.

**Bisakah saya memilih yang besar `pad_length` saat menggunakan `fixed` padding untuk menghindari kekhawatiran jika nilai terbesar akan cocok?**

Ya, tetapi panjang pad yang besar tidak efisien dan menggunakan lebih banyak penyimpanan dari yang diperlukan. Kami menyarankan Anda untuk memeriksa untuk melihat seberapa besar nilai terbesar dan menetapkan `pad_length` ke nilai itu.

**Bagaimana saya tahu jika saya membutuhkan jaminan kriptografi yang disediakan oleh? `preserveNulls`**

Sayangnya, jawabannya adalah itu tergantung. Minimal, [Komputasi Kriptografi untuk Clean Rooms](crypto-computing.md) harus ditinjau untuk bagaimana `preserveNulls` pengaturan melindungi data Anda. Namun, kami menyarankan Anda untuk mereferensikan persyaratan penanganan data organisasi Anda dan kontrak apa pun yang berlaku untuk kolaborasi masing-masing. 

**Mengapa saya harus mengeluarkan biaya overhead base64?**

Untuk memungkinkan kompatibilitas dengan format file tabular seperti CSV, pengkodean base64 diperlukan. Meskipun beberapa format file seperti Parquet mungkin mendukung representasi biner data, penting bahwa semua peserta dalam kolaborasi mewakili data dengan cara yang sama untuk memastikan hasil kueri yang tepat.

## Memecahkan masalah peningkatan ukuran ciphertext yang tidak terduga
<a name="troubleshooting-ciphertext-size"></a>

Katakanlah Anda mengenkripsi data Anda, dan ukuran data yang dihasilkan sangat besar. Langkah-langkah berikut dapat membantu Anda mengidentifikasi di mana peningkatan ukuran terjadi dan apa, jika ada, tindakan yang dapat Anda ambil.

### Mengidentifikasi di mana peningkatan ukuran terjadi
<a name="where-size-increase-occurred"></a>

Sebelum Anda dapat memecahkan masalah mengapa data terenkripsi Anda secara signifikan lebih besar daripada cleartext data Anda, Anda harus terlebih dahulu mengidentifikasi di mana peningkatan ukurannya. Cleartextkolom dapat diabaikan dengan aman karena tidak berubah. Lihatlah yang tersisa fingerprint dan sealed kolom, dan pilih salah satu yang tampak signifikan.

### Mengidentifikasi alasan peningkatan ukuran terjadi
<a name="why-size-increase-occurred"></a>

fingerprintKolom atau sealed kolom mungkin berkontribusi pada peningkatan ukuran.

**Topics**
+ [Apakah peningkatan ukuran berasal dari fingerprint kolom?](#size-increase-from-fingerprint)
+ [Apakah peningkatan ukuran berasal dari sealed kolom?](#size-increase-from-sealed)

#### Apakah peningkatan ukuran berasal dari fingerprint kolom?
<a name="size-increase-from-fingerprint"></a>

Jika kolom yang paling berkontribusi terhadap peningkatan penyimpanan adalah fingerprint kolom, ini mungkin karena cleartext datanya kecil (misalnya, usia pelanggan). Setiap fingerprint ciphertext yang dihasilkan panjangnya 52 byte. Sayangnya, tidak ada yang bisa dilakukan tentang masalah ini column-by-column atas dasar. Untuk informasi selengkapnya, lihat [Basis overhead untuk kolom fingerprint](#fingerprint-columns-base-overhead) detail tentang kolom ini, termasuk dampaknya terhadap persyaratan penyimpanan. 

Kemungkinan penyebab lain dari peningkatan ukuran dalam fingerprint kolom adalah pengaturan kolaborasi,`preserveNulls`. Jika pengaturan kolaborasi untuk `preserveNulls` dinonaktifkan (pengaturan default), semua `null` nilai dalam fingerprint kolom akan menjadi 52 byte ciphertext. Tidak ada yang bisa dilakukan untuk ini dalam kolaborasi saat ini. `preserveNulls`Pengaturan diatur pada saat kolaborasi dibuat dan semua kolaborator harus menggunakan pengaturan yang sama untuk memastikan hasil kueri yang benar. Untuk informasi selengkapnya tentang `preserveNulls` pengaturan dan bagaimana pengaktifannya memengaruhi jaminan privasi data Anda, lihat. [Komputasi Kriptografi untuk Clean Rooms](crypto-computing.md)

#### Apakah peningkatan ukuran berasal dari sealed kolom?
<a name="size-increase-from-sealed"></a>

Jika kolom yang paling berkontribusi terhadap peningkatan penyimpanan adalah sealed kolom, ada beberapa detail yang dapat berkontribusi pada peningkatan ukuran. 

Jika cleartext data kecil (misalnya, usia pelanggan), setiap sealed ciphertext yang dihasilkan setidaknya 91 byte panjangnya. Sayangnya, tidak ada yang bisa dilakukan tentang masalah ini. Untuk informasi selengkapnya, lihat [Basis overhead untuk kolom sealed](#sealed-columns-base-overhead) detail tentang kolom ini, termasuk dampaknya terhadap persyaratan penyimpanan.

Penyebab utama kedua untuk peningkatan penyimpanan sealed kolom adalah padding. Padding menambahkan byte ekstra ke cleartext sebelum dienkripsi untuk menyembunyikan ukuran nilai individual dalam kumpulan data. Kami menyarankan Anda mengatur padding ke nilai minimum yang mungkin untuk kumpulan data Anda. Minimal, `pad_length` untuk `fixed` padding harus diatur untuk mencakup nilai terbesar yang mungkin di kolom. Pengaturan yang lebih tinggi dari itu tidak menambahkan jaminan privasi tambahan. Misalnya, jika Anda tahu nilai terbesar yang mungkin dalam kolom bisa 50 byte, kami sarankan Anda menyetel `pad_length` ke 50 byte. Namun, jika sealed kolom menggunakan `max` padding, kami sarankan Anda mengatur `pad_length` ke 0 byte. Ini karena `max` padding mengacu pada padding *tambahan* di luar nilai terbesar di kolom.

Kemungkinan penyebab akhir dari peningkatan ukuran dalam sealed kolom adalah pengaturan kolaborasi,`preserveNulls`. Jika pengaturan kolaborasi untuk `preserveNulls` dinonaktifkan (pengaturan default), semua `null` nilai dalam sealed kolom akan menjadi 91 byte ciphertext. Tidak ada yang bisa dilakukan untuk ini dalam kolaborasi saat ini. `preserveNulls`Pengaturan diatur pada saat kolaborasi dibuat, dan semua kolaborator harus menggunakan pengaturan yang sama untuk memastikan hasil kueri yang benar. Untuk informasi selengkapnya tentang pengaturan ini dan bagaimana cara mengaktifkannya memengaruhi jaminan privasi data Anda, lihat. [Komputasi Kriptografi untuk Clean Rooms](crypto-computing.md)