1 个不稳定版本
0.2.0 | 2020年12月14日 |
---|
#1125 in 文件系统
74KB
2K SLoC
x79d8
便携式目录加密。
加密文件存储在宿主操作系统文件系统中。解密文件通过本地FTP服务提供。
功能
- 便携。使用FTP。大多数系统支持FTP。
- 动态大小。空间使用量根据使用情况增长或缩小。
- 行业级加密。使用AES256进行数据加密。使用scrypt进行密钥推导。
安装
cargo install x79d8
注意:按照aesni crate的说明启用硬件加速。简而言之,您可能需要设置RUSTFLAGS
为-C target-feature=+aes
,在安装期间。
用法
初始化新目录
在一个空目录中初始化x79d8配置
x79d8 init
提供目录。这将提示输入新密码
x79d8 serve
上传文件到ftp://127.0.0.2:2121
。按Ctrl+C将加密文件存储在磁盘上。
提供现有目录
提供目录。这将提示输入密码,并且只有密码正确时才会提供正确的内容
x79d8 serve
加密
x79d8使用AES256-CFB加密块。块有一个整数值block_id
,它是宿主操作系统文件系统中的文件名。块的头部有一个随机的128位整数count
。用于加密该块的IV是blake2s(key, count, block_id)
。每次写入块时,count
都会更改。如果删除并重新添加块,其count
将由操作系统rng重新初始化。在这种情况下,操作系统rng必须安全,以消除IV重用。
默认情况下,块大小为1MB。较小的文件将组合成一个块。较大的文件将跨越多个块。可以通过在--block-size-kb
选项中指定来更改此行为。
x79d8 使用scrypt从密码中计算密钥。其强度可以通过--scrypt-log-n
选项在init
期间进行更改。
x79d8 假设它是一个本地服务,并且没有不受信任的流量。例如,它不使用AEAD(带有关联数据的认证加密)。不要将x79d8功能暴露给不受信任的网络!不要允许不受信任的用户编辑加密文件(特别是,他们可以将一个块替换为其以前的版本以欺骗IV重用情况,如果操作系统随机数生成器也不安全)!
耐用性
x79d8 在5秒后开始将更改写入磁盘。它使用WAL来确保数据一致性。
背景
自从TrueCrypt停止开发以来,我一直寻找替代品。我希望这个替代品具有动态空间使用,值得信赖(开源、经过审计或足够简单以便审计),并且跨平台。不幸的是,很难找到一个好的替代品。RustCrypto库似乎足够认真,可以DIY解决方案,而libunftp大大简化了“跨平台”部分。
x79d8 只有大约2k行代码。主要的加密逻辑(enc.rs
)只有大约160行。
依赖项
~25–40MB
~706K SLoC