1个稳定版本

1.0.0 2023年7月4日

#1582 in 密码学

GPL-3.0许可协议

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