#heap #secure #minimize #portable #pure #crystals-kyber #crystals-dilithium

no-std crystals-rs

Rust实现的CRYSTALS-Kyber和CRYSTALS-Dilithium

1个不稳定版本

0.0.1 2022年8月1日

#19 in #minimize

Apache-2.0

150KB
3.5K SLoC

纯Rust,便携,安全且高效的CRYSTALS-Kyber和CRYSTALS-Dilithium实现。

目标

  1. 安全性和安全性
    1. 利用Rust的内存安全性功能
    2. 简单的API,便于安全集成
    3. 最小化使用不安全代码,并完全文档和验证所有不安全代码
    4. 广泛的测试和验证
      1. 与C参考实现和扩展KATs进行验证
  2. 可移植性
    1. 针对32位和64位架构
      1. 支持:ARMv8, ARMv9, RISC-V, 和 x86_64
    2. 在嵌入式平台上可用,有无操作系统 no_std
      1. 无堆分配
    3. 应考虑平台特定的优化
  3. 效率
    1. 性能(延迟,吞吐量)是主要目标
    2. 最小化内存(RAM)占用
    3. 最小化可执行文件大小(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