#后量子密码学 #机制 # #安全 #最小化 #crystals-dilithium #crystals-kyber

无需 std krystals

Rust 实现的 CRYSTALS-Kyber 和 CRYSTALS-Dilithium

1 个不稳定版本

0.0.1 2022年8月1日

#18 in #最小化

Apache-2.0 协议

155KB
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”技术,该技术使用拒绝采样来使基于 lattice 的 Fiat-Shamir 方案紧凑且安全。“Dilithium3”是推荐的参数集。

依赖项

~0.6–1.3MB
~27K SLoC