#文件加密 #数据 #认证 #单文件 #加密器 #加密解密 #认证

app scromble

一款简单实用的单文件加密器,具有数据认证功能

1 个稳定版本

2.0.1 2023年2月16日

#2000密码学 分类中

AGPL-3.0 或更高版本

290KB
1.5K SLoC

have your datums been scrombled?

scromble,一个简单的认证文件加密器。

你有没有想过使用对称加密来加密一个文件?

你有没有想过这种加密是随机的?

你有没有想过这个文件要和随机噪声无法区分?

你有没有想过这种加密要有认证功能?

我确实有这些想法!显然,没有现有的工具能做所有这些事情。所以我做了一个。

构建

运行 nix-shell --command 'cargo build --release' 应该可以工作。可执行文件将在 ./target/release/scromble 中。如果不起作用,请提交一个问题!

如果您想使用 AVX2 后端进行 XChaCha20,请使用以下命令构建:nix-shell --command 'RUSTFLAGS="-Ctarget-cpu=haswell -Ctarget-feature=+sse2" cargo build --release'。其他所有内容都相同。最快的结果是使用 RUSTFLAGS="-Ctarget-cpu=native" 得到的。

针对 Windows 用户的说明

scromble 是在 Linux 上设计和测试的,因此将输出写入 stdout 是一个完全合理且明智的想法。然而,显然在 Windows 上,将非 Unicode 数据写入 stdout 会使程序崩溃,并且如果将 stdout 重定向到文件,则会将字节解释为 UTF-8,然后转换为带有字节顺序标记和一些额外数据的 UTF-16le。我正在努力了解如何处理这个问题,但到目前为止,请使用 scromble encrypt <infile> <outfile>scromble decrypt <infile> <outfile>

示例用法

$ scromble -h
$ echo mypassword | scromble encrypt mydata.txt >mydata.enc1
$ echo mypassword | scromble encrypt mydata.txt >mydata.enc2
$ echo mypassword | scromble decrypt mydata.enc1 >mydata1.txt
$ echo mypassword | scromble decrypt mydata.enc2 >mydata2.txt
# should be empty
$ diff mydata{,1}.txt
$ diff mydata{,2}.txt
# should be different
$ diff -b mydata.enc*
# should fail, leaving mydata3.txt empty
$ echo notmypassword | scromble decrypt mydata.enc2 >mydata3.txt
Error: Ciphertext has an incorrect HMAC

这个使用了哪些密码学?

有关整体设计的详细信息,请参阅 DESIGN.md 或运行 scromble explain-design

这个快吗?

在我的机器上,通过 iotop 测量,加密和解密速度为 150-180MB/s(默认 sse2 后端)和 200-240MB/s(《code>avx2 后端)——尽管,解密需要读取整个文件两次。使用 RUSTFLAGS="-Ctarget-cpu=native",我观察到 ~300-330MB/s。这可能会通过简单的优化或通过多线程来提高速度。

这个可靠吗?

我原本是一天内制作的,还没有被独立审计(目前还没有)。它是使用相当有信誉的基于 Rust 的加密原语实现构建的,并且足够简单,以至于不太可能有多种微妙的方式来实现错误。我愿意为自己的需求使用它,但正如他们所说

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

依赖项

~5MB
~86K SLoC