選擇信標長度 - AWS 資料庫加密 SDK

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

選擇信標長度

我們的客戶端加密庫被重命名為AWS數據庫加密 SDK。本開發人員指南仍提供 DynamoDB 加密用戶端的相關資訊。

當您將新值寫入設定為可搜尋加密的加密欄位時,AWS資料庫加密 SDK 會透過純文字值計算 HMAC。此 HMAC 輸出是該欄位的純文字值的一對一 (1:1) 相符項目。HMAC 輸出會被截斷,以便多個不同的明文值對應到相同的截斷 HMAC 標籤。這些衝突或誤報會限制未經授權的使用者識別明文值相關資訊的能力。

針對每個信標產生的平均誤判數,取決於截斷後剩餘的信標長度。您只需在設定標準信標時定義信標長度。複合信標使用其構造的標準信標的信標長度。

信標不會改變欄位的加密狀態。但是,當您使用信標時,在查詢的效率和披露有關數據分佈的信息量之間存在固有的權衡。

可搜尋加密的目標是透過使用信標對加密資料執行查詢,以降低與用戶端加密資料庫相關的效能成本。信標與計算它們的加密字段一起存儲。這意味著它們可以顯示有關數據集分佈的區別信息。在極端情況下,未經授權的使用者可能能夠分析您發佈的相關資訊,並使用它來識別欄位的純文字值。選擇正確的信標長度有助於減輕這些風險,並保持分配的機密性。

檢閱您的威脅模型,以判斷所需的安全層級。例如,擁有資料庫存取權但無法存取純文字資料的人越多,您就越想要保護資料集散發的機密性。為了提高機密性,信標需要產生更多誤報。增加機密性會降低查詢效能。

安全性與效能
  • 信標長度太長會產生太少誤報,並且可能會顯示有關資料集分佈的區別資訊。

  • 信標長度太短會產生太多誤判,並增加查詢的效能成本,因為它需要對資料庫進行更廣泛的掃描。

在決定解決方案的適當信標長度時,您必須找到能夠充分保留資料安全性的長度,而不會影響查詢效能,超過絕對必要的範圍。Beacon 保留的安全性程度取決於資料集的分佈情況,以及建構信標所使用之欄位的關聯性。下列主題假設您的信標均勻分佈,且不包含相關資料。

計算信標長度

信標長度以定義,並指的是截斷後保留的 HMAC 標籤的位數。建議的信標長度會根據資料集分佈、相關值的存在,以及您的特定安全性和效能需求而有所不同。如果您的資料集均勻分佈,您可以使用下列方程式和程序來協助識別實作的最佳信標長度。這些方程式只會估計信標產生的誤報平均數量,並不保證資料集中的每個唯一值都會產生特定數量的誤報。

注意

這些方程式的有效性取決於資料集的分佈。如果您的資料集未均勻分佈,請參閱。信標是否適合我的數據集?

一般而言,您的資料集越是來自統一分佈,您就越需要縮短信標長度。

  1. 估計人口

    人口是建構標準信標之欄位中預期的唯一值數目,而不是預期儲存在欄位中的值總數。例如,考慮一個識別員工會議位置的加密Room欄位。該Room欄位預計會儲存 100,000 個總值,但是員工只能預留 50 個不同的會議室供會議使用。這意味著人口是 50,因為只有 50 個可能的唯一值可以存儲在Room字段中。

    注意

    如果您的標準信標是從虛擬欄位建構,用來計算信標長度的填入量就是虛擬欄位所建立的唯一組合數目。

    估計人口時,請務必考慮資料集的預計增長情況。使用信標寫入新記錄之後,就無法更新信標長度。檢閱您的威脅模型和任何現有的資料庫解決方案,以建立預期此欄位在未來五年內儲存的唯一值數量的估算值。

    您的人口不需要精確。首先,識別目前資料庫中唯一值的數目,或估計您預期在第一年儲存的唯一值數目。接下來,使用以下問題來幫助您確定未來五年內獨特價值的預計增長情況。

    • 您是否希望唯一值乘以 10?

    • 您是否希望唯一值乘以 100?

    • 您是否希望唯一值乘以 1000?

    50,000 和 60,000 個唯一值之間的差異並不重要,它們都會產生相同的建議信標長度。但是,50,000 到 500,000 個唯一值之間的差異將會對建議的信標長度產生重大影響。

    請考慮檢閱一般資料類型頻率的公開資料,例如郵遞區號或姓氏。例如,在美國有 41,707 個郵遞區號。您使用的人口應與您自己的數據庫成正比。如果資料庫中的ZIPCode欄位包含來自整個美國的資料,則您可以將人口定義為 41,707,即使該ZIPCode欄位目前沒有 41,707 個唯一值。如果資料庫中的ZIPCode欄位只包含來自單一狀態的資料,而且只會包含單一州的資料,則您可以將人口定義為該州的郵遞區號總數,而不是 41,704。

  2. 計算預期衝突次數的建議範圍

    若要判斷指定欄位的適當信標長度,您必須先找出預期衝突次數的適當範圍。預期的衝突次數代表映射到特定 HMAC 標籤的唯一純文本值的平均預期數。一個唯一純文字值的預期誤判數目比預期的衝突數少一個。

    我們建議預期的衝突次數大於或等於 2,且小於人口的平方根。只有當您的人口具有 16 個或更多唯一值時,以下方程式才有效。

    2 ≤ number of collisions < √(Population)

    如果碰撞次數少於兩個,信標會產生太少誤判。我們建議使用兩個作為預期衝突的最小數量,因為這意味著,平均而言,欄位中的每個唯一值都會透過對應到另一個唯一值來產生至少一個誤報。

  3. 計算信標長度的建議範圍

    在確定預期衝突的最小和最大數量之後,請使用下列方程式來識別適當的信標長度範圍。

    number of collisions = Population * 2-(beacon length)

    首先,求解預期衝突次數等於 2 的信標長度(建議的預期衝突次數下限)。

    2 = Population * 2-(beacon length)

    然後,解決信標長度,其中預期的衝突次數等於人口的平方根(建議的預期衝突次數上限)。

    √(Population) = Population * 2-(beacon length)

    我們建議將此方程式產生的輸出四捨五入到較短的信標長度。例如,如果方程式產生 15.6 的信標長度,我們建議將該值四捨五入為 15 位元,而不是四捨五入至 16 位元。

  4. 選擇信標長度

    這些方程式只會為您的欄位識別建議的信標長度範圍。我們建議盡可能使用較短的信標長度來保護資料集的安全性。不過,您實際使用的信標長度取決於您的威脅模型。在檢閱威脅模型以判斷欄位的最佳信標長度時,請考慮效能需求。

    使用較短的信標長度可降低查詢效能,而使用較長的信標長度會降低安全性。一般而言,如果您的資料集佈不均勻,或者您是從相關欄位建構不同的信標,您必須使用較短的信標長度,將資料集分佈的相關資訊量降到最低。

    如果您檢閱您的威脅模型,並決定顯示的任何有關欄位分佈的區別資訊不會對您的整體安全性構成威脅,您可能會選擇使用比您計算的建議範圍長度還長的信標長度。例如,如果您將欄位的建議信標長度範圍計算為 9—16 位元,您可以選擇使用 24 位元的信標長度,以避免任何效能損失。

    仔細選擇您的信標長度。使用信標寫入新記錄之後,就無法更新信標長度。

範例

考慮將該unit字段標記為ENCRYPT_AND_SIGN密碼編譯操作的數據庫。若要設定unit欄位的標準信標,我們需要判斷unit欄位的預期誤判數和信標長度。

  1. 估計人口

    在審查了我們的威脅模型和當前的數據庫解決方案之後,我們預計該unit領域最終具有 100,000 個唯一值。

    這意味著人口 = 10 萬

  2. 計算預期衝突次數的建議範圍。

    在此範例中,預期的衝突次數應介於 2—316 之間。

    2 ≤ number of collisions < √(Population)
    1. 2 ≤ number of collisions < √(100,000)
    2. 2 ≤ number of collisions < 316
  3. 計算建議的信標長度範圍。

    在此範例中,信標長度應介於 9—16 位元之間。

    number of collisions = Population * 2-(beacon length)
    1. 計算信標長度,其中預期的衝突次數等於步驟 2 中識別的最小值。

      2 = 100,000 * 2-(beacon length)

      信標長度 = 15.6 或 15 位元

    2. 計算信標長度,其中預期的衝突次數等於步驟 2 中識別的最大值。

      316 = 100,000 * 2-(beacon length)

      信標長度 = 8.3 或 8 位元

  4. 決定適合您安全性和效能需求的信標長度。

    對於每一位低於 15,性能成本和安全性翻倍。

    • 16 位元

      • 平均而言,每個唯一值將映射到另外 1.5 個單位。

      • 安全性:具有相同截斷 HMAC 標籤的兩個記錄有 66% 可能具有相同的純文本值。

      • 效能:查詢會針對您實際要求的每 10 筆記錄擷取 15 筆記錄。

    • 十四位元

      • 平均而言,每個唯一值將映射到其他 6.1 個單位。

      • 安全性:具有相同截斷 HMAC 標籤的兩個記錄 33% 可能具有相同的純文本值。

      • 性能:查詢將為您實際請求的每 10 條記錄檢索 30 條記錄。