4个版本
新版本 0.0.3 | 2024年8月19日 |
---|---|
0.0.2 | 2024年3月4日 |
0.0.1 | 2022年1月4日 |
0.0.0 | 2022年1月2日 |
#478 in 加密学
在 2 crates中使用
47KB
751 代码行
Bessie
docs.rs — crates.io 库 — crates.io 二进制文件
Bessie是一个基于BLAKE3的认证分块密码。目前处于早期设计阶段。请参阅design.md
。该设计的高性能实现因需要对blake3
进行上游重构以添加对扩展输出的SIMD优化而被阻塞。
特性和设计目标
- 通用认证加密
- 对消息数量或大小的数量没有实际限制
- 内部随机nonce生成,以防止错误
- 大消息的流式加密和解密
- 大消息的可搜索解密
- 小消息的低开销
- 密钥承诺
非特性和非目标
- 不是正式/强误用抵抗的。内部生成随机nonce避免了许多常见错误,将认证标签混合到流中使nonce重用不那么灾难性。但是,nonce重用仍然允许攻击者混合匹配来自不同消息的块,而分块/流式构造也易于受到nonce重用漏洞的影响,这种漏洞在一次性构造如AES-SIV中是不存在的。
- 没有内置的关联数据参数。需要关联数据的调用者可以使用KDF或密钥散列将其与密钥混合。
尽管Bessie密码及其库实现最终旨在用于生产,但bessie
CLI工具将始终仅用于测试和演示目的。需要支持公钥加密和多种编码和管理密钥方式的通用加密CLI,这些都不在本项目范围内。如果您是真实的人并且需要通用加密CLI,请考虑age
。
用法
安装仅用于测试和演示的 bessie
CLI 工具
cargo install bessie_bin
或从本仓库构建和安装
cargo install --path rust/bin
使用全零密钥加密和解密 1 MB 的文件(认真地说,仅限测试和演示用途)
head -c 1000000 /dev/urandom > myfile
bessie encrypt zero myfile myfile_enc
bessie decrypt zero myfile_enc myfile_copy
cmp myfile myfile_copy
仅解密加密文件的最后一个字节
bessie decrypt zero myfile_enc myfile_last --seek=999999
运行整个项目的测试
./test.py
依赖项
约 2MB
约 47K SLoC