#签名方案 #哈希 #签名 #公钥 #Merkle 树 #命令行工具 #原始

bin+lib hash-based-signatures

使用基于哈希的签名对任意文件进行签名的命令行工具

1 个不稳定版本

0.1.0 2022 年 11 月 2 日

#2419密码学

MIT 许可证

515KB
1.5K SLoC

Rust 1K SLoC // 0.0% comments JavaScript 299 SLoC // 0.2% comments Shell 9 SLoC

基于哈希的签名

基于哈希的签名的 Rust 实现。

免责声明: 此存储库是一个玩具项目,用于在 Rust 和密码学原语上玩耍。它实现了 Dan Boneh 和 Victor Shoup 所著的《应用密码学研究生课程》第 14 章的一些想法。

基于哈希的签名 - 与基于 RSA 或 ECC 的签名方案不同 - 不依赖于已知被量子计算机破坏的数论假设。

无状态多次签名方案可以通过三步过程构建

  1. 一次签名方案可以完全从哈希函数构建。
  2. 从那里,我们构建一个索引签名方案。使用 Merkle 树,否则非常大的公钥可以减少到单个哈希(以更大的签名为代价)。
  3. 最后,Merkle 签名构建索引签名方案的树。

命令行工具

安装 Rust 并运行

$ cargo install hash-based-signatures

这为您提供了一个命令行工具,可以生成密钥、签名文件和验证签名

要开始签名验证,请查看 示例

要签名文件,请运行

$ cargo run -- key-gen

这将在您的当前工作目录中创建一个 .private_key.json 并打印相应的公钥。请保密!

要签名文件,请确保您的工作目录中有一个 .private_key.json 并运行

$ cargo run -- sign example/readme.md

Web 应用程序

最后但并非最不重要的是,可以使用基于 Web Assembly 编译的代码的 Web 应用程序验证签名

https://georgwiese.github.io/hash-based-signatures/

依赖项

~13MB
~333K SLoC