aszepieniec/falcon-rust

GitHub: aszepieniec/falcon-rust

一个用 Rust 实现的后量子签名算法 Falcon,提供抗量子计算的签名与验证能力。

Stars: 27 | Forks: 7

# Falcon-Rust Falcon 的非官方 Rust 实现。 Falcon 已提交至 [NIST PQC](https://csrc.nist.gov/projects/post-quantum-cryptography) 标准化项目,并已被 [选中](https://csrc.nist.gov/Projects/post-quantum-cryptography/selected-algorithms-2022) 用于标准化。最终标准尚未公布。我们预期标准与提交版本之间会有细微差异,这些差异可能会破坏兼容性。 Falcon 有两个变体。Falcon512 声称至少提供 108 位的安全性, Falcon1024 声称至少提供 252 位的安全性,两者均针对量子计算机。 本实现遵循 [规范](https://falcon-sign.info/falcon.pdf)。它最初是根据官方的 [Python 实现](https://github.com/tprest/falcon.py) 编写,但此后已有所偏离。 ## 示例 ``` use rand::rng; use falcon_rust::falcon512; let mut rng = rng(); let mut msg : [u8; 5] = rng.random(); let (sk, pk) = falcon512::keygen(rng.random()); let sig = falcon512::sign(&msg, &sk); assert!(falcon512::verify(&msg, &sig, &pk)); ``` ## 性能 如果你追求性能,你可能更适合使用发明者之一的实现,要么是使用优化 C 代码的外交函数接口(FFI)([`pqcrypto-falcon`](https://crates.io/crates/pqcrypto-falcon)),要么是优化的 Rust crate([`fn-dsa`](https://crates.io/crates/fn-dsa))。以下基准测试在我的 12 代英特尔酷睿 i9-12900K(支持 AVX2)上生成。你可以运行 `cargo bench` 来生成自己的测试结果。 | | 密钥生成 | 签名 | 验证 | |----------------------|-----------------|-----------|-----------| | falcon-rust 512 | 226.84 ms | 329.26 µs | 20.277 µs | | falcon-rust 1024 | 1.3106 **s** | 665.00 µs | 41.933 µs | | C FFI 512 | 4.0688 ms | 129.49 µs | 25.555 µs | | C FFI 1024 | 12.048 ms | 255.59 µs | 50.142 µs | | FN DSA 512 | 2.0587 ms | 143.86 µs | 10.486 µs | | FN DSA 1024 | 9.0216 ms | 278.71 µs | 20.793 µs | ## 功能特性 - [x] 密钥生成 - [x] 签名生成 - [x] 签名验证 - [x] 去随机化算法 - [x] (去)序列化 - [ ] 更优算法(例如 RNS) - [ ] 未压缩签名格式 - [ ] 签名消息接口 - [ ] 硬件优化 - [ ] 消息恢复模式 - [ ] 常时性(?) ## 待办事项 - [ ] NIST KATs - [ ] 使 LdlTree 更直接明了 - [ ] 优化秘密密钥、签名和公钥的表示 - [ ] 与参考实现测试互操作性 - [ ] 负向测试 - [ ] 性能分析并修复瓶颈 - [ ] 域元素的 Montgomery 表示 - [ ] 大整数运算的剩余数系统(RNS) - [ ] 流式(去)序列化 - [ ] 调查秘密依赖的时间可变性 ## 贡献 欢迎贡献!如果被接受,贡献将采用相同的 许可证发布。
标签:CVE, Falcon, Falcon1024, Falcon512, NIST PQC, NIST 标准化, Post-Quantum Cryptography, Rust crypto, Rust 实现, Rust 密码库, 代码实现, 兼容性问题, 可视化界面, 后量子密码, 安全协议, 密码协议, 密码学, 密钥生成, 开源密码, 手动系统调用, 抗量子计算机, 数字签名, 签名算法, 签名验证, 通知系统, 量子安全, 高性能密码