Phantomdrive USB – 开源隐藏加密保险库
Phantomdrive USB – 开源隐藏加密保险库
TL;DR
Phantomdrive 是一个完全开源的 USB 闪存盘;通过写入包含 password:YOUR_PASSWORD 行的文件,会触发设备卸载可见分区并重新挂载一个隐藏的、AES-256 加密的卷,从而在面对强制性审查时提供合理的推诿性(plausible deniability)。
Phantomdrive 的功能及其重要性
Phantomdrive 在特定的密码触发器被写入可见文件系统之前,会向操作系统隐藏加密存储区域。这种设计旨在让用户通过仅展示无害数据,同时保留一个可以谨慎访问的秘密卷,从而规避强制解密或法律压力。
硬件设计概述
- 核心 MCU: CH569,一款来自与普及的 CH340 USB 转串口转换器同系列的低成本芯片。
- 内存: 使用 SD 卡(选择原因是 eMMC 价格暂时较高)。SD 卡采用环氧树脂封装,增加了物理篡改的难度。
- 接口: USB 3.0、SD/eMMC 控制器、内置 AES 模块和 SM4 模块(一种中国商用密码)。
- 电源: 两个降压转换器为 MCU 和 SD 接口供电。
- 更新机制: 专用按钮允许通过 ISP 库进行固件刷写。
- 调试: UART 测试点辅助开发。
原理图和 PCB 图像(正面和背面)展示了一个极简的布局:CH569、USB 连接器、SD 插槽、降压稳压器、按钮和被动元件。
加密算法选择
密钥派生函数 (KDF)
- 盐值 (Salt): 使用设备的 USB 序列号 (
ID_SERIAL_SHORT) 作为每个设备唯一的盐值,防止跨设备预计算表攻击。 - 迭代次数: 应用了 100,000 轮 SHA-256,在 CH569 上解锁需要约 3 秒。这在安全性与有限的 CPU 资源之间取得了平衡;像 Argon2 这样内存密集型的函数对于该硬件并不合适。
- 可调节性: 用户可以增加迭代次数以获得更高的安全性,但代价是更长的解锁时间。
"如果需要更高的安全性,你可以增加 KDF SHA256 的轮数,寻找另一个设备,或者使用软件方案对该设备进行二次加密。" – 作者
AES 模式
- AES-CTR: 在 CH569 上提供约 9 MiB/s 的写入速度和 20 MiB/s 的读取速度。如果在多次写入中使用了相同的 nonce,则容易受到计数器重用攻击。
- 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 – 系统内编程支持。
密码嗅探逻辑
当驱动器器被锁定状态时,每一个 USB WRITE10/READ10 命令都会被拦截。固件会扫描输入缓冲区中的前缀 `