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中使用

CC0-1.0 OR Apache-2.0

47KB
751 代码行

Bessie

docs.rscrates.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