相關資料的確定性驗證加密 (確定性 AEAD)

確定性驗證加密法 (Deterministic AEAD) 原始碼可提供具有確定性的加密功能:加密相同資料時,一律會產生相同的密文。這類加密方式可用於金鑰包裝,或用於某些用於搜尋加密資料的方案 (詳情請參閱 RFC 5297,第 1.3 節)。由於這個原始碼具有決定性,因此實作這個原始碼可能會導致機密性遭到破壞,因為攻擊者只需要找出特定訊息的密文,就能識別該訊息的其他例項。

決定論式 AEAD 具有下列屬性:

  • Secrecy:除了明文的長度和重複的明文是否相等之外,其他資訊皆不公開。
  • 真實性:系統會偵測出加密文字底層的加密明文是否遭到竄改。
  • 對稱:使用相同的金鑰加密明文和解密密文。
  • 決定論:只要主鍵未變更,使用相同參數加密明文兩次,就會產生相同的密文。

相關資料

決定性 AEAD 也可用於將密文繫結至特定關聯資料。舉例來說,如果您有一個包含 user-idencrypted-medical-history 欄位的資料庫:在這種情況下,user-id 可用於加密 encrypted-medical-history 時的關聯資料。這可防止攻擊者將醫療記錄從一位使用者轉移至另一位使用者。

選擇金鑰類型

我們建議您在所有用途中使用 AES256_SIV 金鑰類型。

安全性保證

  • 至少 80 位元驗證強度。
  • 明文和相關資料的長度可任意調整 (介於 0..232 個位元組之間)。
  • 128 位元安全層級可防範金鑰復原攻擊,也適用於最多 232 個金鑰的多使用者攻擊,也就是說,如果對手取得 232 個金鑰,並用這些金鑰加密相同訊息的 232 個密文,就需要進行 2128 次運算才能取得單一金鑰。
  • 可安全地加密 238 則訊息,前提是每則訊息的長度均小於 1 MB。

用途範例

請注意,我想要以確定性方式加密資料,並將密文繫結至其內容