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日 |
在密码学类目中排名第935
55KB
885 行
Bessie
docs.rs — crates.io 库 — crates.io 二进制文件
Bessie是一个基于BLAKE3
的认证、分块密码。目前处于早期设计阶段。请参阅design.md
。此设计的高性能实现由于需要在扩展输出中添加SIMD优化,因此受限于一些上游的重构工作。
功能和设计目标
- 通用认证加密
- 消息数量或大小的实际限制
- 内部随机nonce生成,以防止错误
- 大消息的流式加密和解密
- 大消息的可寻址解密
- 小消息的低开销
- 密钥承诺
非功能和非目标
- 非正式/强误用抵抗。内部生成随机nonce避免了许多常见的错误,将认证标签混合到流中使得nonce重用变得不那么灾难性。但nonce重用仍然允许攻击者混合不同消息的块,而分块/流结构也像AES-SIV这样的全一次构造一样,天生容易受到nonce重用攻击。
- 没有内置的关联数据参数。需要关联数据的调用者可以使用KDF或密钥散列将其与密钥混合。
尽管Bessie密码及其库实现最终旨在用于生产环境,但bessie
CLI工具将始终仅用于测试和演示目的。针对真实用户的通用加密CLI需要支持公钥加密以及各种编码和管理密钥的方式,这两者都不在本项目的范围之内。如果您是真实用户且需要通用加密CLI,请考虑age
。
用法
要安装仅用于测试和演示的bessie
CLI工具
cargo install bessie_bin
或者从本仓库构建和安装
cargo install --path rust/bin
使用全零密钥加密和解密1MB的文件(认真地说,仅用于测试和演示目的)
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
依赖项
~4MB
~83K SLoC