針對 使用密碼編譯運算時的考量事項 Clean Rooms - AWS Clean Rooms

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

針對 使用密碼編譯運算時的考量事項 Clean Rooms

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

如需如何設定這些案例參數的詳細資訊,請參閱 密碼編譯運算參數

允許資料表中的混合cleartext和加密資料

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

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

如需此案例參數的詳細資訊,請參閱 允許cleartext資料欄參數

允許資料fingerprint欄中的重複值

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

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

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

如需此案例參數的詳細資訊,請參閱 允許重複參數

解除資料fingerprint欄命名方式的限制

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

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

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

如需此案例參數的詳細資訊,請參閱 允許具有不同名稱參數JOIN的資料欄

決定NULL值的呈現方式

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

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

如需此案例參數的詳細資訊,請參閱 保留NULL值參數