3个版本
0.1.2 | 2024年1月31日 |
---|---|
0.1.1 | 2024年1月21日 |
0.1.0 | 2023年12月31日 |
#1708 in 密码学
465KB
10K SLoC
飞鹰-Rust
飞鹰后量子数字签名方案的非官方Rust实现。
飞鹰已提交给NIST PQC标准化项目,并被选中进行标准化。最终标准尚未公布。我们预计标准与提交之间可能存在细微差异,这些差异可能会导致兼容性问题。
飞鹰有两种变体。Falcon512声称至少提供108位的安全性,而Falcon1024声称至少提供252位的安全性,都是针对量子计算机的。
此实现遵循规范。最初是根据官方的Python实现编写的,但后来有所偏离。
示例
let mut rng = thread_rng();
let mut msg : [u8; 5] = rng.gen();
let (sk, pk) = falcon512::keygen(rng.gen());
let sig = falcon512::sign(&msg, &sk);
assert!(falcon512::verify(&msg, &sig, &pk));
性能
性能仍然低于通过rust的外部函数接口 "pqcrypto-falcon
"可访问的优化C代码。这些测量是在我的Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz(支持AVX2)上进行的。你可以通过运行cargo bench
来自定义。
密钥生成 | 签名 | 验证 | |
---|---|---|---|
falcon-rust 512 | 419.18 ms | 692.68 µs | 41.668 µs |
falcon-rust 1024 | 2.4038 s | 1.3891 ms | 86.385 µs |
pqcrypto-falcon 512 | 7.5356 ms | 253.44 µs | 48.065 µs |
pqcrypto-falcon 1024 | 21.454 ms | 510.43 µs | 94.669 µs |
特性
- 密钥生成
- 签名生成
- 签名验证
- 去随机化算法
- 序列化和反序列化
- 更好的算法(例如RNS)
- 非压缩签名格式
- 签名消息接口
- 硬件优化
- 消息恢复模式
- 恒等时间(?)
待办事项
- NIST KATs
- 使LdlTree更直观
- 优化密钥、签名、公钥的表示
- 测试与参考实现的互操作性
- 负面测试
- 性能分析,并解决瓶颈
- 字段元素的Montgomery表示
- 大整数算术的余数数制(RNS)
- 流式(反)序列化
- 研究基于密钥的时间变化性
贡献
欢迎贡献!如果被接受,贡献将根据相同的许可证发布。
依赖关系
~5MB
~79K SLoC