App 中的合理否認性:是什麼及為何重要

App 中的合理否認性:是什麼及為何重要

合理否認性意味著隱藏資料的存在無法被證明。


加密中的合理否認性是一種儲存屬性,它允許使用者公開一個資料集,而不會留下證明另一個資料集存在的結構工件。該聲明必須命名其威脅模型:正確填充的加密儲存的靜態影像不同於即時的、受損的裝置、雲端服務元資料或其他地方保存的副本。這不僅僅是一個隱藏功能。這取決於加密、佈局、填充和操作設計的協同工作。

本指南說明合理否認性在 App 中的運作方式、真正密碼學否認性與表面上的誘餌模式的區別、它重要的真實世界情境,以及如何評估否認性主張。

加密中的合理否認性是什麼意思

在日常用語中,合理的否認意味著你可以可信地否認某件事。在儲存密碼學中,有用的目標更窄:加密儲存的檢查者不應該能夠將隱藏內容與所聲明的威脅模型中未使用的填充空間區分開來。沒有任何應用程式可以將此承諾擴展到已開啟的保管庫、記錄的輸入、外部副本或各種形式的設備妥協。

這個概念起源於磁碟加密。TrueCrypt(及其後繼者 VeraCrypt)首創了隱藏卷:加密卷內的另一個加密卷。一個密碼揭示包含無害檔案的外層卷,另一個密碼揭示包含敏感檔案的內層隱藏卷。鑑識檢查員無法確定隱藏卷是否存在,因為外層卷中未使用的空間被隨機資料填充,與加密資料無法區分。

對於 App,合理否認性意味著不同的憑證(密碼、PIN、圖案)開啟不同的資料集,且沒有元資料、登錄表、設定標誌或揭示額外資料集存在的結構性產物。

真正的否認性 vs. 表面上的誘餌模式

這是大多數 App 犯錯的關鍵區別。

表面上的誘餌模式(非真正的否認性)

許多保險庫 App 提供「誘餌」或「假 PIN」功能,您設定一個開啟不同空間的副 PIN,其中包含不同的照片。問題在於:這些 App 通常儲存一個布林標誌、一個資料庫條目或一個設定檔,表明誘餌模式存在且已配置。

了解該 App 的鑑識檢查員可以找到這個標誌。找到配置的誘餌模式就能證明隱藏資料存在,否認性只是表面上的,對輕度窺探者有效,但在鑑識檢查下失敗。

表面否認性的跡象:

  • App 在設定中有「誘餌模式」切換
  • 設定檔儲存誘餌模式是否已啟用
  • 資料庫表列出帶有類型指示(主要/誘餌)的保險庫 ID
  • 開啟誘餌模式後 App 的儲存結構發生變化
  • 解除安裝並重新安裝 App 後,配置誘餌模式時的行為不同

真正的密碼學否認性

真正的否認性是一種架構屬性,而非功能切換。加密儲存的設計必須使得:

  1. 備用憑證僅公開他們自己的資料集。 系統不會保留將一個憑證標識為偽裝的單獨誘餌標誌。無效的憑證可能會失敗,但該失敗不得揭示是否存在未公開的資料集。

  2. 不存在保險庫登錄表。App 無法列舉存在多少個保險庫,沒有計數、沒有索引、沒有保險庫 ID 清單。檢查 App 儲存空間的鑑識檢查員找到的是無差別的加密資料池。

  3. 沒有設定標誌揭示隱藏保險庫。沒有布林值、沒有資料庫條目、沒有偏好設定檔顯示是否有額外的保險庫存在。

  4. 儲存空間被填充。無論保險庫數量或檔案數量,消耗的總儲存空間不變。沒有填充,檢查員可以從總加密資料大小與可見內容比較中估計保險庫數量。

  5. 加密資料與隨機雜訊無法區分。沒有文件邊界、沒有標頭、沒有揭示一個保險庫資料在哪裡結束另一個開始的結構標記。

屬性 表面誘餌 真正否認性
每個憑證有獨立資料
無保險庫登錄表 否(資料庫追蹤保險庫)
無設定標誌 否(誘餌切換已儲存)
儲存填充 很少
在靜態影像中隱藏備用存儲 是的,在規定的儲存威脅模型內
架構 vs. 功能 功能切換 架構屬性

這很重要的真實世界情境

合理否認性不是理論上的擔憂,它針對的是有據可查、反覆出現的真實世界情況。

邊境過境

在過境點,檢查員可能會檢查設備並要求提供憑證。如果設計實際上提供了儲存層級可否認性,則憑證可以洩露無害的資料集,而靜態影像則缺乏區分隱藏內容和填充內容的結構標記。 Vaultaire 目前的每個 Vault 一個索引檔案的佈局無法為具有應用程式容器存取權限的審查員提供此保證。

家暴和強迫關係

處於虐待關係中的人可能需要在施暴者監控的設備上儲存證據(傷害照片、威脅訊息、法律文件)。若施暴者要求查看保險庫,用戶可以開啟包含非敏感內容的保險庫。沒有真正的否認性,App 設定中的「誘餌模式」標誌就會揭示隱藏內容的存在。

設備被竊

具有技術技能的小偷可能會嘗試從被盜手機中提取資料。適當填充的可拒絕儲存旨在隱藏佔用池的資料集數量,儘管總分配、設備狀態、備份和操作追蹤仍然屬於威脅模型。 Vaultaire 目前對內容進行加密,但為每個配置的保管庫公開一個可計數的本機索引。

法律和新聞保護

保護消息來源的記者、保護客戶檔案的律師以及威權政體中的活動人士,面臨設備內容可能被強制的情境。真正的否認性為資料沒收提供了可信的防禦。

Vaultaire 今天實施了什麼

Vaultaire 提供以不同圖形分隔的存取方式,正常介面也不顯示保險庫清單。這些設計能減少日常使用時介面洩漏的資訊,但並不構成真正的密碼學合理否認性;能存取 App 容器的人仍可列舉每個保險庫各自的加密索引檔:

配置的模式開啟單獨的加密保管庫。 PBKDF2 從模式和設備範圍的鹽中派生出保管庫金鑰。配置的密鑰驗證其加密索引並解包隨機主密鑰。未配置的模式顯示空狀態而不是“不正確的模式”訊息。

本地格式是可枚舉的。 Vaultaire 存放了一個 vault_index_<fingerprint>.bin 每個保管庫的文件。指紋不會顯示模式或保管庫名稱,但具有應用程式容器存取權限的人員可以對索引檔案進行計數。 AES-GCM 身份驗證和確定性文件名稱還為候選保管庫密鑰提供離線測試。

本地存儲的大小不是恆定的。 檔案內容和元資料被加密,雲端備份區塊使用大小填充和誘餌記錄。本機應用程式容器不保留真實和虛擬保管庫插槽的固定池,因此總儲存和索引計數可以公開結構。

存在恢復和脅迫狀態。 Vaultaire 將恢復資訊保存在 AES-GCM 加密的 Keychain 資料庫。 脅迫模式 刪除非脅迫保管庫的本機索引和復原映射,並將該裝置與同步隔離。它不會刪除雲端備份、對等設備上的副本或每個共享的加密 blob,並且完成時間取決於執行的本地工作。

因此,Vaultaire 提供了介面劃分和加密存儲,而不是證明不存在額外保管庫的資訊理論證明。未來的固定容量目錄需要具有無法區分的真實插槽和虛擬插槽,以隱藏離線應用程式容器快照中的本機保管庫計數。

如何評估否認性主張

當 App 聲稱具有合理否認性時,詢問:

  1. 有「誘餌模式」切換嗎?若有,那是表面上的,鑑識檢查員可以找到切換。
  2. App 有保險庫清單或資料庫嗎?若有,保險庫的存在是可證明的。
  3. 猜測可以離線驗證嗎? 經過身份驗證的密文可以驗證候選金鑰,而無需單獨的密碼雜湊。詢問是什麼限制了猜測成本以及儲存佈局是否提供了更便宜的密鑰指紋。
  4. 儲存消耗量會隨保險庫數量變化嗎?若有,磁碟分析可以估計保險庫數量。
  5. App 可以列舉保險庫嗎?若 App 可以顯示您的保險庫清單,該清單就存在於設備上並可被發現。

常見問題

合理否認性合法嗎?

在大多數民主國家,使用具有合理否認性的加密是合法的。沒有法律禁止在設備上存在無法證明其存在的加密資料。在某些司法管轄區(英國依 RIPA、澳大利亞依《協助與存取法》),當局可以強制披露加密金鑰。法律問題在於強制披露無法證明其存在的資料的金鑰是否可執行,這仍是一個發展中的法律領域。

鑑識工具能偵測合理否認性嗎?

獲得 Vaultaire 應用程式容器的審查員可以檢測加密儲存併計數 vault_index_*.bin 文件。這些文件不會洩漏保管庫名稱或純文字內容,但它們的計數顯示了本機加密索引的數量。因此,目前的設計將金庫隱藏起來,使其無法正常導航,而不是每次法醫儲存檢查。

合理否認性和隱藏保險庫有什麼區別?

隱藏保險庫不會出現在 App 的鎖定介面。密碼學上的合理否認性要求更嚴格:可觀察的儲存結構不能證明另有受保護內容。Vaultaire 不顯示跨保險庫清單,每個有效圖形只導向所屬保險庫;但目前每個本機保險庫仍有一個可列舉的加密索引,因此提供的是介面分隔,而不是讓檔案系統檢查無法證明其他本機索引存在。

我可以在雲端備份中使用合理否認性嗎?

隱藏保管庫是在應用程式的正常介面中不可見的保管庫。強加密可否認性是隱藏資料無法與未使用的填充儲存區分開的單獨屬性。 Vaultaire 目前提供第一個房產。它的「每個庫一個索引檔案」格式不提供具有應用程式容器存取權限的審查員的第二個格式。

總結

Vaultaire 將加密的備份清單和填充的加密檔案區塊寫入使用者的私有空間 CloudKit 資料庫。隨機記錄名稱、統一記錄類型、10 MB 區塊填充和誘餌記錄可減少直接內容外洩。記錄計數、總量、時間和更新模式仍然可見的服務元數據,因此雲端備份不會創建大小恆定、資訊理論上可否認的儲存。

華爾泰爾 使用配置的模式來分離加密的保管庫,並使保管庫名稱和內容遠離鎖定介面。其目前的儲存佈局仍然向應用程式容器檢查公開加密的索引計數。將其視為由經過身份驗證的加密支援的介面級隱藏,而不是作為不存在其他保險庫的證據。