沒有可見保險庫清單的隱藏保險庫
Vaultaire 打開後不會出現一份列出各個保險庫名稱的目錄。你畫出圖形,App 只會找出與衍生金鑰對應的那一個加密保險庫索引。從你背後偷看的人,只會看到你打開的那個保險庫,而不是一份列出其他所有保險庫的選單。
Vaultaire 的隱藏保險庫是介面與金鑰路由層面的特性:App 不會顯示明文的跨保險庫清單,而且只有在從圖形衍生出金鑰後才會開啟保險庫。在磁碟上,根檔案放在補足過的池中,儲存檔案也使用隨機檔名,但鑑識人員仍能估計有多少保險庫存有檔案,因此這個設計無法讓保險庫數量在鑑識下隱形。
「隱藏保險庫」實際上是什麼意思?
多數保險庫 App 的運作方式就像檔案櫃。打開 App,你會看到一份保險庫清單,可能有名稱,可能顯示數量,也可能每個旁邊都有個小鎖頭圖示。App 清楚知道你有幾個保險庫,任何打開 App 或檢查裝置的人也都看得到。
Vaultaire 的介面不是這樣運作。沒有任何畫面列出你的保險庫名稱,也不會問你要解鎖哪一個。你畫出圖形時,App 會用 PBKDF2 衍生一把 256 位元的保險庫金鑰,將這把金鑰雜湊成預期的索引檔名,再嘗試對該加密索引進行驗證解密。如果索引存在且 AES-GCM 標籤驗證通過,Vaultaire 就會解開隨機主金鑰並開啟檔案。否則只會顯示空白狀態。
這種路由方式是儲存架構的一部分,但保護有其限度。Vaultaire 不會保留一份把保險庫對應到圖形或標籤的明文總登記表。它把每個保險庫的加密根索引放在一個以 64 個槽位為一組、並用隨機掩護檔補足的池中。所有保險庫的頁面和 arena 共用一個儲存資料夾,檔名都是隨機的,因此從檔名看不出檔案屬於哪個保險庫。掩護用的 arena 讓 arena 數量維持在固定級距,但每個存有檔案的保險庫至少會用到一個 arena。因此,檢查檔案系統的人即使沒有金鑰、讀不到索引內容,仍能估計有多少保險庫存有檔案。
Vaultaire 是在一般使用者介面中隱藏跨保險庫目錄。圖形只會選出一個加密索引,不會透露其他索引的圖形、標籤或內容。這能減少對正在使用 App 的人意外洩漏,但這不等於能對 iOS 或鑑識工具隱藏每一個保險庫的痕跡。
這不是「隱藏資料夾」
「隱藏保險庫」這個詞,可能讓你想到那些把資料夾藏在不易看見之處的 App。也許資料夾名稱以點開頭,所以不會出現在檔案瀏覽器裡;也許 App 偽裝成「計算機」來掩飾真正用途。這些都是偽裝手法,而且都有同一個致命缺陷:被藏起來的資料仍然在那裡,放在已知的位置,等著被找到。
能存取你裝置的鑑識人員,可以輕易找到隱藏資料夾。檔案系統工具會列出每一個目錄,儲存空間分析工具會顯示磁碟空間分配在哪裡。即使是有點技術背景的朋友,給他五分鐘和搜尋引擎,也能找到大多數「隱藏」的資料夾。
Vaultaire 不靠偽裝的資料夾,也不靠計算機外殼。它在 App 容器內儲存加密的保險庫索引和加密的資料塊檔案。索引內容以 AES-256-GCM 保護,藏住使用者的檔名、MIME 類型、日期、檔案對應表和被封裝的主金鑰。在正確的圖形衍生金鑰通過索引驗證之前,這些內容都無法讀取。
實際差別在於:一邊是名稱一目了然的秘密資料夾,另一邊是由金鑰衍生檔名選出、經過驗證的加密容器。檢查裝置的人看得到容器存在,但沒有正確的憑證,就拿不到可讀的檔案對應表或內容。
儲存配置會透露什麼
即使沒有保險庫清單,精明的對手也可能換個方法:分析磁碟用量。如果 Vaultaire 今天用了 500 MB,明天變成 800 MB,也許你新增了一個保險庫。如果從某個保險庫刪除照片後,儲存空間剛好少了 200 MB,也許就有可以利用的關聯。
Vaultaire 不會讓本機儲存用量維持固定。新增檔案會佔用空間,刪除保險庫可以釋放空間,而且儲存檔案的數量會隨保險庫存入的內容增加。加密能保護內容和完整性,但無法抹去檔案系統中所有關於大小、數量和時間的資訊。
能存取 App 容器的觀察者,可能把檔案數量、大小和修改時間與你的活動對應起來。iOS 資料保護可以在裝置鎖定時限制存取,沒有金鑰的加密內容也仍然保密,但 Vaultaire 並不宣稱能抵禦本機的流量分析。
哪些地方有使用填充
Vaultaire 確實在特定格式中使用填充。加密檔頭保留固定大小,因此一般檔名和 MIME 類型不會以明文暴露。加密 iCloud 備份使用固定 10 MB 的記錄,再加上誘餌區塊。這些措施不應與固定大小的本機儲存池混為一談。
本機的根檔案仍帶有可辨識的 App 層級檔名,每個 arena 檔案的大小也都相同,因此一看就知道是 Vaultaire 的儲存檔案。AES-GCM 會隱藏明文並偵測竄改,但無法讓每個位元組或檔案系統痕跡都和隨機的磁碟區段無從分辨。
抵禦鑑識:當你的手機被拿走時
我們具體說明威脅模型。隨手翻看 App 的人看不到任何保險庫目錄。透過已遭入侵或已解鎖的裝置取得 App 容器存取權的人,則看得更多,可以檢查檔名、數量、大小、時間戳記、Keychain 是否可用,以及加密的內容。
鑑識工具可以看到的
鑑識人員可能看得到:Vaultaire 已安裝、它用了多少儲存空間、有幾個「vault_index_*.bin」根檔案和儲存檔案(根檔案以掩護檔補足,儲存檔案使用隨機檔名),以及修改相關的中繼資料。從 arena 數量、檔案時間和總用量,鑑識人員可以估計有多少保險庫存有檔案。鑑識人員也可以複製密文,離線猜測圖形。
加密仍然保護什麼
- 可讀的保險庫標籤和檔案對應表。 加密索引保護檔案記錄和被封裝的隨機主金鑰。
- 原始檔名和 MIME 類型。 這些欄位存放在經過驗證的加密檔頭內,而不是明文的目錄名稱中。
- 照片、影片和文件內容。 檔案內容以隨機的保險庫主金鑰搭配 AES-256-GCM 加密。
- 圖形本身。 Vaultaire 不會把圖形以明文偏好設定儲存,不過裝置正常使用時,加密的本機復原資料庫中含有圖形和片語資料。
- 繞過猜測的捷徑。 PBKDF2 提高了每次嘗試的成本,但複製出來的索引檔名和 AES-GCM 標籤,仍能讓攻擊者離線驗證猜測是否正確。
加密資料本身,仍會留下「這裡有加密資料」的證據。Vaultaire 目前的儲存配置仍讓鑑識人員能估計存有檔案的保險庫數量,但不會透露它們的圖形、標籤、檔案對應表或明文。隱藏保險庫保護的是介面和內容,並不保證資訊理論層級的可否認性。
隱藏保險庫如何實現合理否認
Vaultaire 的合理否認功能,靠的就是隱藏保險庫提供的介面區隔。評估這項宣稱時,必須了解兩者之間的關聯,以及它在檔案系統檢查下的限制。
在 Vaultaire 的介面中,不同的有效圖形可以開啟不同的真實保險庫。你可以為敏感資料設定一個圖形,為較不敏感的保險庫設定另一個。只看到解鎖畫面的觀察者,不會看到任何標示哪個保險庫是「真的」或「誘餌」的標籤。
這能減少隨手檢查或背後偷看時的洩漏,但不符合鑑識上最嚴格的合理否認定義。能存取 App 容器的鑑識人員仍能估計你有幾個保險庫。請把這項功能當作介面區隔,而不是「沒有其他保險庫」的證明。
完整流程
- 步驟 1:你用不同的圖形建立多個保險庫,一個放真正的檔案,一個放誘餌,要建幾個都可以。
- 步驟 2:受到逼迫時,你畫出誘餌圖形。觀察者看到的是一個只有無聊照片的保險庫。
- 步驟 3:解鎖後的介面不會顯示跨保險庫清單,也不會出現提到其他保險庫名稱的提示。
- 步驟 4:請記得另一條威脅界線:即使觀察者無法解密內容,存取檔案系統仍能讓人估計有多少保險庫存有檔案。
結果是在 App 內做到實用的區隔,並以加密保護內容。但這不是數學上的保證,無法確保檢查裝置的人偵測不到其他加密容器。
為何這很重要
你可能覺得抵禦鑑識聽起來很極端。多數人不會遇到裝置被扣押或法院命令。但隱藏保險庫背後的原則,在日常情境中也能保護你。
看到 Vaultaire 鎖定畫面的人,不會拿到一份可以鎖定目標的保險庫名稱清單。借用你裝置的同事,也無法透過選單在各個保險庫之間切換瀏覽。小偷仍知道 Vaultaire 已安裝,也可能針對這個 App 或裝置下手,但加密內容仍受到圖形、PBKDF2 運算成本、AES-GCM 以及 iOS 本身安全邊界的保護。
隱藏保險庫回答的是一個範圍較窄的隱私問題:打開一個保險庫,會不會洩漏其他保險庫的目錄?在一般介面中,答案是不會。能力更強的鑑識人員能否偵測到加密容器,取決於裝置狀態和存取層級,Vaultaire 也直接說明了這項限制。
常見問題
Vaultaire 如何在不顯示保險庫清單的情況下找到保險庫?
Vaultaire 從圖形衍生保險庫金鑰,計算這把金鑰的 128 位元指紋,再尋找對應的加密索引檔。如果檔案存在且 AES-GCM 驗證成功,App 就會開啟該保險庫並解開它的隨機主金鑰。否則介面只會顯示空白狀態,不會透露其他保險庫。
有人可以透過查看儲存空間使用量來判斷我有幾個保險庫嗎?
儲存空間用量不會洩漏可讀的檔名或內容,但會透露 Vaultaire 存有加密資料,以及這些資料佔用多少空間。根索引檔放在一個有 64 個槽位的池中,並以隨機掩護檔補足,所有保險庫也共用一個儲存資料夾,檔名都是隨機的。能存取 App 容器的鑑識人員仍能估計有多少保險庫存有檔案,但無法從各保險庫專屬的資料夾讀出確切數量。Vaultaire 並未宣稱儲存用量能隱藏保險庫數量。
刪除保險庫後儲存空間會縮小嗎?
刪除保險庫會移除它的加密索引,以及只屬於該保險庫的加密資料塊檔案,因此儲存空間可能會減少。快閃記憶體、檔案系統快照、備份和其他系統層可能留下 App 無法控制的殘留資料,所以我們不把刪除描述為保證徹底的鑑識級清除。
這與僅僅加密一個資料夾有何不同?
Vaultaire 的介面不會顯示使用者命名的保險庫資料夾,也不會顯示明文的保險庫清單。不過它確實會在 App 容器內建立加密的根檔案和儲存檔案。這些檔名不會透露你的圖形、保險庫標籤、原始檔名或內容,也看不出某個檔案屬於哪個保險庫。它們的存在無法隱藏,檢查檔案系統的人仍能據此估計有多少保險庫存有檔案。
未來的 Vaultaire 更新會不會破壞隱藏保險庫?
任何閉源用戶端的未來版本,都可能改變 App 記錄或顯示的內容。Vaultaire 目前的設計避免在使用者介面中出現明文的跨保險庫登記表,但軟體更新仍是信任模型的一部分。在高風險情境下,安裝更新前請先查看版本說明和安全文件。
隱藏保險庫是否與 iCloud 備份相容?
可以。Vaultaire 會在裝置上用另一把由圖形衍生的備份金鑰加密備份元件,將它們補足成固定 10 MB 的 CloudKit 記錄,加密結構標籤,並加入誘餌記錄。私人 CloudKit 資料庫仍會讓 Apple 看到記錄數量和傳輸中繼資料,但看不到可讀的保險庫檔名、內容或記錄的角色。