3个版本
使用旧的Rust 2015
0.1.2 | 2018年11月22日 |
---|---|
0.1.1 | 2018年11月22日 |
0.1.0 | 2018年11月22日 |
#3 in #ntru
335KB
632 代码行
Streamlined NTRU Prime
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