2026 年可自我隐藏的安全 U 盘 Phantomdrive 诞生,多种加密技术保障数据安全!

1. 为何打造 Phantomdrive?

很多地方不尊重隐私法,人们可能被迫对存储设备解密,甚至被无端认定有罪。VeraCrypt 隐藏卷对前者有用,对后者却无能为力,这便是打造 Phantomdrive 的原因。

Phantomdrive 是一款完全开源的 U 盘,首次插入显示为 8GB 驱动器,操作系统无法检测剩余空间。若用户在磁盘编辑纯文本文件,内容为 `password:PUTYOURPASSWORDHERE`,它会自动卸载,挂载第二个隐藏分区,并进行 AES - 256 加密/解密操作,能帮助用户避开不尊重基本加密权利的人。

2. Phantomdrive 设计思路如何?

从固件、硬件到机械设计,一切完全开源,设计工具也是开源的。项目使用了 CH569 芯片,它和山寨 Arduino 上的 USB 转串口芯片 CH340 出自同一家公司。

项目利用了 USB3、SD/eMMC 和 AES 模块,因人工智能需求,eMMC 内存成本高,所以使用 SD 卡作为存储介质,且所有数据加密,还用环氧树脂粘外壳,攻击者打开设备需破坏它。等 eMMC 价格下降后,会推出使用 eMMC 的版本。

该设备主要由 CH569、USB 接口、两个降压电源、一个用于固件更新的按钮、SD 卡以及一些辅助组件组成,还有 UART 测试点,对固件开发有帮助。

3. Phantomdrive 采用了哪些加密技术?

开发者在 GitHub 仓库收到人工智能生成的问题未注意,Reddit 对此群起攻之。不过除 AES - XTS 问题外,多数问题不算问题。设备安全性已通过功能测试验证,还与 OpenSSL 的 AES 实现进行了比对。

3.1 密钥派生函数(KDF)

KDF 是用于生成加密密钥的函数。最糟糕的 AES 密钥派生方法是取密码后追加零到 32 字节得到密钥,易被暴力破解,引入盐值可解决查找表问题,每个设备盐值唯一,不能互换 SD 卡。

获取盐值可通过 `udevadm info --query=property --name=/dev/sdc | grep ID_SERIAL_SHORT` 命令,如得到 ID_SERIAL_SHORT = Phantomdrive:34FC1FA7145467F7,34FC1FA7145467F7 就是盐值,设备损坏恢复数据时需用到。还可修改固件更改“Phantomdrive”及 USB 的 PID/VID 提高隐蔽性。

为增加攻击者破解难度,在 KDF 中加入 100,000 轮的 SHA - 256 运算,选择 100,000 轮是因设备解锁约需 3 秒,轮数多解锁时间长,且不能使用对内存要求高的算法。若需更高安全性,可增加 SHA256 轮数、换设备、双重加密或仅用软件加密。

3.2 AES 模式

AES 是分组密码,可对固定长度数据加密和解密,有多种模式转换为流密码。

3.2.1 AES - ECB

AES - ECB 是将其转换为流密码的简单方法,但存在安全问题,相同明文块会产生相同密文块,扩散性不足,攻击者可删除密文数据,解密后明文会被可预测地修改,所以不是好方法。

3.2.2 AES - CTR

AES - CTR 是解决 AES - ECB 问题的方法,工作原理是对计数器进行 AES 加密,然后与明文异或运算。使用时需注意“计数器重用”的安全风险。该设备在 AES - CTR 模式下写入速度约 9MB/s,读取速度约 20MB/s;AES - XTS 模式下写入速度约 6MB/s,读取速度约 10MB/s。开发者认为与速度相比,AES - XTS 安全性提升不足以选择它,但用户情况可能不同。

3.2.3 AES - XTS

AES - XTS 是磁盘加密的标准模式,使用两个密钥,为每个磁盘扇区根据扇区号计算调整密钥,解决了计数器重用问题,但速度稍慢。

4. Phantomdrive 固件有何特点?

开发者参考了两个项目,芯片库和 ISP 编程库。固件中有密码监听部分,设备不识别文件系统,接收 USB WRITE10/READ10 命令并转换为 SD 卡的 CMDx 命令。为实现解锁功能,查看原始数据,锁定状态下每次写入前调用监听函数,与 `password:` 匹配。若磁盘非安全区域数据含 `password:` 可能意外触发匹配,不符合需求可修改或另选设备。

5. 结语

感谢阅读并支持项目,该项目有趣且引起社区关注,激励开发者继续此类工作。项目已开启预购页面。