#签名 #量子 #签名方案 #lamports #签名 #后量子密码学

lamport_signatures

后量子密码学中的Lamport签名实现

6个版本

使用旧的Rust 2015

0.2.4 2018年11月29日
0.2.3 2018年11月29日
0.1.0 2018年11月29日

#9#lamports 中排名

MIT 许可证

9KB
125 代码行

lamport-signatures-rs

在密码学中,Lamport签名或Lamport一次性签名方案是一种构造数字签名的算法。Lamport签名可以从任何加密安全的单向函数中构建;通常使用加密散列函数。尽管量子计算机的潜在发展威胁到许多常见加密形式的安全,如RSA,但人们认为具有大散列函数的Lamport签名在这种事件中仍然安全。不幸的是,每个Lamport密钥只能用于签一个消息。然而,结合哈希树,单个密钥可以用于许多消息,这使得这是一个相当高效的数字签名方案。

未在生产环境中测试,使用风险自负

如何使用

extern crate lamport_signatures;
use lamport_signatures::lamport_utils;

// generate private key 
let priv_key = lamport_utils::gen_secret_key().unwrap();
// derive public key 
let pub_key = lamport_utils::derive_pub_key(&priv_key);
// create some message 
let msg = "hi elichai2, some secret msg";
// digest the msg 
let msg_digest = lamport_utils::hash(msg.as_bytes());
// sign the digest 
let signature : Vec<[u8;32]> = priv_key.sign(&msg_digest);
// verify signature against public key 
let is_valid = pub_key.verify(&msg_digest, &signature);

依赖项

~5.5MB
~197K SLoC