1 个不稳定版本
0.0.1 | 2022年8月1日 |
---|
#18 in #最小化
155KB
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”技术,该技术使用拒绝采样来使基于 lattice 的 Fiat-Shamir 方案紧凑且安全。“Dilithium3”是推荐的参数集。
依赖项
~0.6–1.3MB
~27K SLoC