#lamports #hash #blake #key #blake3 #protocols

blake3-lamport-signatures

使用Blake 3加密哈希函数实现的Lamport签名

8个版本

0.3.5 2023年4月21日
0.3.4 2023年4月21日
0.2.0 2023年4月19日
0.1.0 2022年1月31日

#458 in 密码学

每月 29 次下载

MIT 许可证

29KB
695 代码行

blake3-lamport-signatures

blake3-lamport-signatures使用了blake3加密哈希函数实现了Lamport以及Lamport-Merkle签名。这是一个极其低效的数字签名协议,几乎在所有情况下都不应使用,其主要优点在于其简单性和灵活性。

Lamport密钥对仅应用于签署一条消息,而您可以为Lamport-Merkle密钥对指定要支持的消息数量。

use blake3_lamport_signatures::lamport;

let private_key = lamport::PrivateKey::generate()?;
let public_key = private_key.public_key();
let message = b"Yeah, I said it";
let signature = private_key.sign(message);

assert!(public_key.verify(message, &signature));

use blake3_lamport_signatures::merkle;
// generate a Merkle-Lamport private key capable of signing 100 messages
let mut private_key = merkle::PrivateKey::generate(100);
let public_key = private_key.public_key();
let message = b"And I'll say it again!";
let signature = private_key.sign(message);

assert!(public_key.verify(message, &signature);

通信

与Lamport签名相关联的是一种自然的双方验证通信协议。Alice和Bob以预共享的PublicKey开始,每次发送消息时,他们都包含下一条消息的PublicKey

致谢

Leslie Lamport真是一位很酷的家伙。

依赖关系

~3.5MB
~79K SLoC