Phantomdrive USB – 開源隱藏加密金庫
Phantomdrive USB – 開源隱藏加密金庫
TL;DR
Phantomdrive 是一款完全開源的 USB 隨身碟,表面上顯示為一個 8 GB 的小容量磁碟;當寫入包含 password:YOUR_PASSWORD 行的文件時,設備會觸發卸載可見分區並重新掛載一個隱藏的 AES-256 加密卷,從而為應對強制性權威壓力提供「合理推諉性」(plausible deniability)。
Phantomdrive 的功能與重要性
Phantomdrive 會向作業系統隱藏加密存儲區域,直到特定的密碼觸發字串被寫入到可見的文件系統中。這種設計旨在讓用戶在面對強制解密或法律壓力時,僅展示無害的數據,同時秘密地訪問可以被謹慎存取的加密卷。
硬體設計概述
- 核心 MCU: CH569,這是一款與常見的 CH340 USB-to-Serial 轉換器同系列的低成本芯片。
- 記憶體: 使用 SD 卡(選擇原因是 eMMC 價格目前較高)。SD 卡採用環氧樹脂封裝,增加了物理篡改的難度。
- 介面: USB 3.0、SD/eMMC 控制器、內建 AES 模組與 SM4 模組(一種中國商用加密算法)。
- 電源: 使用兩個降壓轉換器(buck converters)為 MCU 和 SD 介面供電。
- 更新機制: 專用按鈕允許透過 ISP 庫進行韌體燒錄。
- 除錯: UART 測試點有助於開發。
電路圖與 PCB 圖像(正面與背面)顯示了極簡的佈局:CH569、USB 連接器、SD 插槽、降壓穩壓器、按鈕與被動元件。
加密選擇
金鑰衍生函數 (KDF)
- 鹽值 (Salt): 使用設備的 USB 序列號 (
ID_SERIAL_SHORT) 作為每個設備唯一的鹽值,以防止跨設備的預計算表攻擊。 - 迭代次數: 應用 100,000 次 SHA-256 迭代,在 CH569 上解鎖約需 3 秒。這在安全性與有限的 CPU 資源之間取得了平衡;像 Argon2 這樣的高記憶體消耗函數(memory-hard functions)並不適合此硬體。
- 可調性: 用戶可以增加迭代次數以提高安全性,但代價是解鎖時間變長。
"如果需要更高的安全性,你可以增加 KDF SHA256 的迭代次數,尋找另一種設備,或者使用軟體方案對此設備進行二次加密。" – 作者
AES 模式
- AES-CTR: 在 CH569 上提供約 9 MiB/s 的寫入與 20 MiB/s 的讀取速度。如果在多次寫入時使用相同的 nonce,則容易受到計數器重用攻擊(counter-reuse attacks)。
- AES-XTS: 磁碟加密的標準模式,消除了計數器重用問題,但將吞吐量降低至約 6 MiB/s 的寫入與 10 MiB/s 的讀取速度。
- AES-ECB: 僅作為不安全的基準模式進行討論。
"使用此設備,我透過 AES-CTR 獲得約 9 MB/s 的寫入與 20 MB/s 的讀取速度,透過 AES-XTS 獲得約 6 MB/s 的寫入與 10 MB/s 的讀讀速度。" – 作者
韌體機制
韌體運行在兩個開源庫之上:
- WCH-CH56x BSP – CH569 的硬體抽象層。
- WCH-CH56x ISP – 系統內編程 (in-system programming) 支持。
密碼嗅探邏輯
當磁碟被鎖定時,每個 USB WRITE10/READ10 命令都會被攔截。韌體會掃描傳入的緩衝區以尋找前綴 `