You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+3-4Lines changed: 3 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ It was originally developed in [this repository](https://github.com/b-wagn/hash-
10
10
11
11
The code has *not been audited and is not meant to be used in production*. It is a playground to explore and benchmark these signatures. Use it at your own risk.
12
12
13
-
The implementation takes a generic RNG as input (e.g., `key_gen`, see below). Users must make sure that the RNG is *cryptographically secure*.
13
+
The implementation takes a generic RNG as input (e.g., `key_gen`, see below). Users must make sure that the RNG is *cryptographically secure*.
14
14
The examples below, tests, and benchmarks just use a default (potentially insecure) RNG for illustration.
15
15
16
16
## Signature Interface
@@ -56,12 +56,11 @@ See also function `test_signature_scheme_correctness` in [this file](https://git
56
56
57
57
## Schemes
58
58
The code implements a generic framework from [this paper](https://eprint.iacr.org/2025/055.pdf), which builds XMSS-like hash-based signatures from a primitive called incomparable encodings.
59
-
Hardcoded instantiations of this generic framework (using SHA3 or Poseidon2) are defined in `hashsig::signature::generalized_xmss`.
59
+
Hardcoded instantiations of this generic framework (using Poseidon2) are defined in `hashsig::signature::generalized_xmss`.
60
60
The parameters have been chosen based on the analysis in the paper using Python scripts. Details are as follows:
61
61
62
62
| Submodule | Paper / Documentation | Parameters Set With |
|`instantiations_poseidon_top_level::*`|[this document](https://eprint.iacr.org/2025/1332), inspired by [this](https://eprint.iacr.org/2025/889.pdf)|[this repository](https://github.com/b-wagn/hypercube-hashsig-parameters)|
67
66
@@ -97,7 +96,7 @@ cargo bench
97
96
The schemes that are benchmarked are hardcoded instantiations of the generic framework, which are defined in `hashsig::signature::generalized_xmss`.
98
97
The parameters of these instantiations have been chosen carefully with the aim to achieve a desired security level.
99
98
By default, key generation is not benchmarked. There are two options to benchmark it:
100
-
1. add the option `--features with-gen-benches-sha` or `--features with-gen-benches-poseidon` or `--features with-gen-benches-poseidon-top-level` to `cargo bench`. Note that this will make benchmarks very slow, as key generation will be repeated within the benchmarks. Especially for Poseidon, this is not recommended.
99
+
1. add the option `--features with-gen-benches-poseidon` or `--features with-gen-benches-poseidon-top-level` to `cargo bench`. Note that this will make benchmarks very slow, as key generation will be repeated within the benchmarks. Especially for Poseidon, this is not recommended.
101
100
2. use code similar to the one provided in `src/bin/main.rs` and run it with `cargo run --release`.
102
101
103
102
If criterion only generates json files, one way to extract all means for all benchmarks easily (without re-running criterion) is to run
0 commit comments