1个稳定版本
1.0.0 | 2023年7月4日 |
---|
#1582 in 密码学
700KB
4K SLoC
CRYSTALS-Dilithium
CRYSTALS-Dilithium数字签名方案的纯RUST实现,包含3种变体
- dilithium2
- dilithium3
- dilithuim5.
代码是从算法作者提供的原始参考源代码移植过来的。
实现利用了RUST干净且安全的内存管理。代码比原始版本更干净、更短。实现通过两种方式进行了验证
- 交叉验证,与参考实现进行交叉验证,其中由RUST实现生成的签名被参考C实现成功验证,而由参考实现生成的签名被RUST实现验证。
- 自我验证,由RUST实现本身验证由RUST实现生成的签名。验证使用蒙特卡洛方法针对随机密钥和随机消息进行。
自行承担风险
此CRYSTALS-Dilithium加密算法实现尚未经过公认权威机构进行正式的安全审计。因此,代码中可能存在未知的安全漏洞、弱点或潜在缺陷。用户在使用或实施此代码时请谨慎行事。
构建
cargo build --release
如何使用
use dilithium2::Keypair;
let keypair = Keypair::generate(Some(&seed));
let signature = keypair.sign(&msg);
let is_verified = keypair.public.verify(&msg, &signature);
测试
cargo test
基准测试
基准测试使用criterion.rs运行
cargo bench
在2.6 GHz 6核Intel Core i7上运行
基准测试 | 时间 |
---|---|
密钥对生成 | 83.548 µs |
签名 | 137.19 µs |
签名验证 | 57.331 µs |
文档
cargo doc --open
贡献者协议
通过向此仓库贡献,您同意您的贡献将根据GPLv3许可证进行许可。
依赖项
~520KB