1个不稳定版本
0.0.1 | 2022年8月1日 |
---|
#19 in #minimize
150KB
3.5K SLoC
纯Rust,便携,安全且高效的CRYSTALS-Kyber和CRYSTALS-Dilithium实现。
目标
- 安全性和安全性
- 利用Rust的内存安全性功能
- 简单的API,便于安全集成
- 最小化使用不安全代码,并完全文档和验证所有不安全代码
- 广泛的测试和验证
- 与C参考实现和扩展KATs进行验证
- 可移植性
- 针对32位和64位架构
- 支持:ARMv8, ARMv9, RISC-V, 和 x86_64
- 在嵌入式平台上可用,有无操作系统
no_std
- 无堆分配
- 应考虑平台特定的优化
- 针对32位和64位架构
- 效率
- 性能(延迟,吞吐量)是主要目标
- 最小化内存(RAM)占用
- 最小化可执行文件大小(ROM)
Kyber
Kyber是一种IND-CCA2-安全的密钥封装机制(KEM),其安全性基于在模格上的学习错误(LWE)问题的难度。Kyber已被选为NIST后量子加密项目获胜者,将在即将推出的NIST量子安全公钥加密标准中使用。
Dilithium
Dilithium是一种基于模格上 lattice 问题难度的选择消息攻击下强安全的数字签名方案。Dilithium的设计基于 Lyubashevsky 的 "Fiat-Shamir with Aborts" 技术,该技术使用拒绝采样来使基于格的Fiat-Shamir方案紧凑和安全。推荐参数集为 Dilithium3
。
依赖项
~0.7–1.3MB
~27K SLoC