#post-quantum #ntru #hashing

streamlined-ntru-prime

Rust实现的Streamline NTRU Prime算法

3个版本

使用旧的Rust 2015

0.1.2 2018年11月22日
0.1.1 2018年11月22日
0.1.0 2018年11月22日

#3 in #ntru

MIT/Apache

335KB
632 代码行

Streamlined NTRU Prime


Crates.io Build Status Crates.io dependency status

Streamlined NTRU Prime 4591761的Rust实现

NTRU Prime是一种基于格的密码系统,旨在以最小的成本提高格方案的安全性。它被认为可以抵御量子计算的发展,特别是Shor算法,并是NIST后量子密码学竞赛的参与者[1]

请在使用前阅读警告

该算法由Daniel J. Bernstein,Chitchanok Chuengsatiansup,Tanja Lange和Christine van Vredendaal编写。

欢迎贡献。特别欢迎SIMD或WASM开发。

参数集

  • p = 761
  • q = 4591
  • w = 286

输出

类型 字节
公钥 1218
私钥 1600
密文 1047
共享密钥 32

安装


将其添加到cargo.toml的依赖项中

[dependencies]
streamlined_ntru_prime = "0.1.0"

使用


use streamlined_ntru_prime::*;

// Key Generation
let (public_key, private_key) = generate_key();

// Encapsulation
let (cipher_text, shared_secret) = encapsulate(public_key);

// Decapsulation
let shared_secret = decapsulate(cipher_text, private_key).expect("Decapsulation failure")

测试


为了减少编译时间和大小,测试是可选功能。

# Testing
cargo test --features testing

# Benchmarking
cargo bench --features testing

可以可选地显示生成的和期望的值的完整输出。

cargo test --features testing -- --nocapture

这里找到的sage实现生成了一个包含100个KAT的json文件。

####当前基准

在Intel i7-7500U @ 2.7GHz上测试

running 3 tests
test decapsulate_bench ... bench:   8,785,535 ns/iter (+/- 27,291)
test encapsulate_bench ... bench:   3,215,100 ns/iter (+/- 30,317)
test key_gen_bench     ... bench:  16,914,970 ns/iter (+/- 278,949)

警告


实现

此实现尚未经过任何安全审计,尽管已采取谨慎措施,但在编译时无法保证底层函数的正确性和常数时间运行。 请自行承担风险。

算法

Streamlined NTRU Prime首次于2016年发布,此实现所基于的C实现于2017年8月发布。该算法仍需要仔细的安全审查。请参阅此处了解作者关于NTRU Prime和基于格加密方案的进一步警告。

依赖关系

~1–1.6MB
~29K SLoC