

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 針對 使用密碼編譯運算時的考量事項 Clean Rooms
<a name="crypto-computing-considerations"></a>

適用於 Clean Rooms(C3R) 的加密運算力力求將資料保護最大化。不過，某些使用案例可能受益於較低層級的資料保護，以換取額外的功能。您可以從最安全的組態修改 C3R，藉此做出這些特定的權衡。身為客戶，您應該了解這些權衡，並判斷它們是否適合您的使用案例。要考慮的權衡包括下列項目：

**Topics**
+ [允許資料表中的混合cleartext和加密資料](#allow-mixed-plaintext-and-encrypted-data)
+ [允許資料fingerprint欄中的重複值](#allow-repeated-values)
+ [解除資料fingerprint欄命名方式的限制](#loose-restrictions-on-join-column-names)
+ [決定NULL值的呈現方式](#determine-null-values)

如需如何設定這些案例參數的詳細資訊，請參閱 [密碼編譯運算參數](crypto-computing-parameters.md)。

## 允許資料表中的混合cleartext和加密資料
<a name="allow-mixed-plaintext-and-encrypted-data"></a>

所有資料都經過用戶端加密，可提供最大的資料保護。不過，這會限制特定類型的查詢 （例如SUM彙總函數）。允許cleartext資料的風險是，任何有權存取加密資料表的人都可以推斷一些有關加密值的資訊。這可以透過對 cleartext和相關聯的資料執行統計分析來完成。

例如，假設您有 `City`和 的資料欄`State`。資料`City`欄為 cleartext，且資料`State`欄已加密。當您`Chicago`在 `City`欄中看到 值時，這可協助您以高機率判斷 `State`為 `Illinois`。相反地，如果一個資料欄是 `City`，另一個資料欄是 `EmailAddress`，則 cleartext `City` 不太可能顯示有關加密 的任何內容`EmailAddress`。

如需此案例參數的詳細資訊，請參閱 [允許cleartext資料欄參數](crypto-computing-parameters.md#parameter-allowcleartext)。

## 允許資料fingerprint欄中的重複值
<a name="allow-repeated-values"></a>

為了最安全的方法，我們假設任何fingerprint資料欄只包含一個變數的執行個體。fingerprint 欄中不可重複任何項目。C3R 加密用戶端會將這些cleartext值映射到與隨機值不區分的唯一值。因此，無法cleartext從這些隨機值推斷有關 的資訊。

資料fingerprint欄中重複值的風險是重複值將導致重複的隨機顯示值。因此，任何有權存取加密資料表的人，理論上都可以對可能顯示cleartext值資訊的fingerprint欄執行統計分析。

同樣地，假設資料fingerprint欄是 `State`，且資料表的每一列都對應至美國家庭。透過執行頻率分析，可以推斷哪個狀態為 `California` ，以及哪個狀態`Wyoming`為高機率。這種推論是可能的，因為 `California` 的居民比 多`Wyoming`。相反地，假設資料fingerprint欄位於家庭識別符上，而且每個家庭在數百萬個項目的資料庫中出現 1 到 4 次。頻率分析不太可能顯示任何有用的資訊。

如需此案例參數的詳細資訊，請參閱 [允許重複參數](crypto-computing-parameters.md#parameter-allowduplicates)。

## 解除資料fingerprint欄命名方式的限制
<a name="loose-restrictions-on-join-column-names"></a>

根據預設，我們假設當兩個資料表使用加密資料fingerprint欄聯結時，這些資料欄在每個資料表中具有相同的名稱。此結果的技術原因是，根據預設，我們會衍生不同的密碼編譯金鑰來加密每個fingerprint資料欄。該金鑰衍生自協同合作的共用私密金鑰和資料欄名稱的組合。如果我們嘗試使用不同的資料欄名稱聯結兩個資料欄，我們會衍生不同的金鑰，而且無法計算有效的聯結。

若要解決此問題，您可以關閉從每個資料欄名稱衍生索引鍵的功能。然後，C3R 加密用戶端對所有fingerprint資料欄使用單一衍生金鑰。風險是可以進行另一種可能顯示資訊的頻率分析。

讓我們再次使用 `City`和 `State` 範例。如果我們為每個fingerprint資料欄衍生相同的隨機值 （透過不合併資料欄名稱）。 在 `City`和 資料`State`欄中`New York`具有相同的隨機值。紐約是美國少數幾個城市之一，其`City`名稱與`State`名稱相同。相反地，如果您的資料集在每個資料欄中具有完全不同的值，則不會洩漏任何資訊。

如需此案例參數的詳細資訊，請參閱 [允許具有不同名稱參數JOIN的資料欄](crypto-computing-parameters.md#parameter-allowjoin)。

## 決定NULL值的呈現方式
<a name="determine-null-values"></a>

您可用的選項是是否像任何其他NULL值一樣，以密碼編譯方式處理 （加密和 HMAC) 值。如果您不像任何其他NULL值一樣處理值，可能會顯示資訊。

例如，假設 NULL 的 `Middle Name`欄中的 cleartext表示沒有中間名的人員。如果您不加密這些值，則會洩漏加密資料表中哪些資料列用於沒有中間名的人員。該資訊可能是某些人口中某些人的識別訊號。但是，如果您以密碼編譯方式處理NULL值，某些 SQL 查詢的運作方式會有所不同。例如，GROUP BY子句不會將fingerprint資料欄中fingerprintNULL的值分組在一起。

如需此案例參數的詳細資訊，請參閱 [保留NULL值參數](crypto-computing-parameters.md#parameter-preservenulls)。