App 中的合理否認性:是什麼及為何重要
合理否認性意味著隱藏資料的存在無法被證明。
加密中的合理否認性是允許用戶可信地否認某些加密資料存在的屬性。加密儲存看起來只包含用戶選擇揭示的資料,鑑識檢查員、脅迫方或任何有設備實體存取權的人都無法證明額外的隱藏資料存在。這不是隱藏功能,而是加密方案本身的數學屬性。
本指南說明合理否認性在 App 中的運作方式、真正密碼學否認性與表面上的誘餌模式的區別、它重要的真實世界情境,以及如何評估否認性主張。
加密中的合理否認性是什麼意思
在日常語言中,合理否認性意味著您可以可信地否認某事。在密碼學中,它意味著即使是擁有無限時間和鑑識工具的專家也無法證明隱藏資料的存在。
這個概念起源於磁碟加密。TrueCrypt(及其後繼者 VeraCrypt)首創了隱藏卷:加密卷內的另一個加密卷。一個密碼揭示包含無害檔案的外層卷,另一個密碼揭示包含敏感檔案的內層隱藏卷。鑑識檢查員無法確定隱藏卷是否存在,因為外層卷中未使用的空間被隨機資料填充,與加密資料無法區分。
對於 App,合理否認性意味著不同的憑證(密碼、PIN、圖案)開啟不同的資料集,且沒有元資料、登錄表、設定標誌或揭示額外資料集存在的結構性產物。
真正的否認性 vs. 表面上的誘餌模式
這是大多數 App 犯錯的關鍵區別。
表面上的誘餌模式(非真正的否認性)
許多保險庫 App 提供「誘餌」或「假 PIN」功能,您設定一個開啟不同空間的副 PIN,其中包含不同的照片。問題在於:這些 App 通常儲存一個布林標誌、一個資料庫條目或一個設定檔,表明誘餌模式存在且已配置。
了解該 App 的鑑識檢查員可以找到這個標誌。找到配置的誘餌模式就能證明隱藏資料存在,否認性只是表面上的,對輕度窺探者有效,但在鑑識檢查下失敗。
表面否認性的跡象:
- App 在設定中有「誘餌模式」切換
- 設定檔儲存誘餌模式是否已啟用
- 資料庫表列出帶有類型指示(主要/誘餌)的保險庫 ID
- 開啟誘餌模式後 App 的儲存結構發生變化
- 解除安裝並重新安裝 App 後,配置誘餌模式時的行為不同
真正的密碼學否認性
真正的否認性是一種架構屬性,而非功能切換。加密儲存的設計必須使得:
每個憑證都開啟有效的資料集。對於開啟隱藏保險庫的憑證,沒有「密碼錯誤」的錯誤,任何有效的圖案/密碼組合都產生解密某些內容的金鑰。
不存在保險庫登錄表。App 無法列舉存在多少個保險庫,沒有計數、沒有索引、沒有保險庫 ID 清單。檢查 App 儲存空間的鑑識檢查員找到的是無差別的加密資料池。
沒有設定標誌揭示隱藏保險庫。沒有布林值、沒有資料庫條目、沒有偏好設定檔顯示是否有額外的保險庫存在。
儲存空間被填充。無論保險庫數量或檔案數量,消耗的總儲存空間不變。沒有填充,檢查員可以從總加密資料大小與可見內容比較中估計保險庫數量。
加密資料與隨機雜訊無法區分。沒有文件邊界、沒有標頭、沒有揭示一個保險庫資料在哪裡結束另一個開始的結構標記。
| 屬性 | 表面誘餌 | 真正否認性 |
|---|---|---|
| 每個憑證有獨立資料 | 是 | 是 |
| 無保險庫登錄表 | 否(資料庫追蹤保險庫) | 是 |
| 無設定標誌 | 否(誘餌切換已儲存) | 是 |
| 儲存填充 | 很少 | 是 |
| 可抵抗鑑識檢查 | 否 | 是 |
| 架構 vs. 功能 | 功能切換 | 架構屬性 |
這很重要的真實世界情境
合理否認性不是理論上的擔憂,它針對的是有據可查、反覆出現的真實世界情況。
邊境過境
在美國,海關和邊境保護局可以在邊境合法強制設備存取。法院裁定邊境人員可以要求設備檢查的密碼。在這種情況下,具有真正合理否認性的用戶可以提供開啟包含無害內容的保險庫的圖案/密碼。檢查員無法證明其他保險庫存在。
家暴和強迫關係
處於虐待關係中的人可能需要在施暴者監控的設備上儲存證據(傷害照片、威脅訊息、法律文件)。若施暴者要求查看保險庫,用戶可以開啟包含非敏感內容的保險庫。沒有真正的否認性,App 設定中的「誘餌模式」標誌就會揭示隱藏內容的存在。
設備被竊
擁有技術能力的竊賊可能試圖從被竊手機中提取資料。有了真正的否認性,加密資料池對保險庫數量、內容和用途什麼都不揭露。
法律和新聞保護
保護消息來源的記者、保護客戶檔案的律師以及威權政體中的活動人士,面臨設備內容可能被強制的情境。真正的否認性為資料沒收提供了可信的防禦。
Vaultaire 如何實現合理否認性
Vaultaire 透過架構設計實現真正的密碼學合理否認性:
每個圖案開啟不同的保險庫。5x5 格點透過 PBKDF2 產生金鑰,不同的圖案產生不同的金鑰。沒有主金鑰、沒有保險庫清單,App 也無法列舉現有的保險庫。繪製沒有關聯保險庫的圖案只是開啟一個空的保險庫空間,沒有「圖案錯誤」的錯誤。
無保險庫登錄表。App 沒有列出保險庫、保險庫名稱或保險庫數量的資料庫。所有加密資料存在於一個無差別的儲存池中。擁有設備檔案系統無限存取權的鑑識檢查員,找到的是沒有結構標記顯示保險庫邊界的加密區塊。
儲存填充。無論保險庫數量或檔案數量,總儲存大小保持不變,從而防止磁碟使用分析。
無設定標誌。沒有設定檔、沒有偏好設定條目、沒有資料庫記錄揭示存在多少個保險庫,或是否有特定圖案被使用過。
脅迫模式。用戶可以將一個保險庫指定為脅迫保險庫,繪製該圖案正常開啟保險庫,同時不動聲色地立即銷毀所有其他保險庫的密碼學鹽值。銷毀是不可逆的,不留下鑑識痕跡,只需不到一秒鐘。
如何評估否認性主張
當 App 聲稱具有合理否認性時,詢問:
- 有「誘餌模式」切換嗎?若有,那是表面上的,鑑識檢查員可以找到切換。
- App 有保險庫清單或資料庫嗎?若有,保險庫的存在是可證明的。
- 有「密碼錯誤」訊息嗎?若有,App 可以區分有效和無效憑證,這意味著它儲存了驗證憑證的某些東西。
- 儲存消耗量會隨保險庫數量變化嗎?若有,磁碟分析可以估計保險庫數量。
- App 可以列舉保險庫嗎?若 App 可以顯示您的保險庫清單,該清單就存在於設備上並可被發現。
常見問題
合理否認性合法嗎?
在大多數民主國家,使用具有合理否認性的加密是合法的。沒有法律禁止在設備上存在無法證明其存在的加密資料。在某些司法管轄區(英國依 RIPA、澳大利亞依《協助與存取法》),當局可以強制披露加密金鑰。法律問題在於強制披露無法證明其存在的資料的金鑰是否可執行,這仍是一個發展中的法律領域。
鑑識工具能偵測合理否認性嗎?
專業鑑識工具(Cellebrite、GrayKey、Magnet AXIOM)可以偵測到 Vaultaire 已安裝及加密資料存在。他們無法確定存在多少個保險庫、它們包含什麼,或除已揭示的保險庫外是否還有其他保險庫。加密資料與隨機雜訊無法區分,這是透過設計驗證的,而非政策聲明。
合理否認性和隱藏保險庫有什麼區別?
隱藏保險庫是在 App 介面中不可見的保險庫。合理否認性是隱藏保險庫的存在無法被證明的屬性。若有保險庫登錄表或設定標誌揭示它們,App 可以有隱藏保險庫但沒有合理否認性。Vaultaire 兩者都提供:保險庫預設是隱藏的,且其存在按設計無法被證明。
我可以在雲端備份中使用合理否認性嗎?
在 Vaultaire 中,加密的 iCloud 備份包含整個加密儲存池,備份是一個加密的區塊,保留了合理否認性,因為備份本身沒有保險庫層級結構,它與設備上的儲存一樣,是同樣無差別的加密池。
總結
加密中的合理否認性意味著即使在鑑識檢查下,隱藏資料的存在也無法被證明。大多數聲稱此功能的 App 提供具有可發現設定標誌的表面誘餌模式,真正的否認性需要無保險庫登錄表、無設定標誌、儲存填充和在架構上無法區分的加密資料。
Vaultaire 將真正的合理否認性作為架構屬性實現:每個圖案開啟不同的保險庫,沒有保險庫清單,儲存空間被填充,且沒有其他加密保險庫 App 做到這一點。