Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gravity-postquantum/prune-horst
Signature scheme submitted to NIST's Post-Quantum Cryptography Project
https://github.com/gravity-postquantum/prune-horst
cyber hash-functions merkle-tree post-quantum-cryptography quantum signature
Last synced: 4 months ago
JSON representation
Signature scheme submitted to NIST's Post-Quantum Cryptography Project
- Host: GitHub
- URL: https://github.com/gravity-postquantum/prune-horst
- Owner: gravity-postquantum
- Created: 2017-09-25T13:35:10.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-01-17T14:07:13.000Z (over 6 years ago)
- Last Synced: 2024-01-17T02:05:02.876Z (6 months ago)
- Topics: cyber, hash-functions, merkle-tree, post-quantum-cryptography, quantum, signature
- Language: C
- Homepage: https://post-quantum.ch
- Size: 21.8 MB
- Stars: 26
- Watchers: 2
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Lists
- awesome-post-quantum - PRUNE-HORST - times signature) (Other Algorithms / Selected algorithms 2022)
README
# PRUNE-HORST
Submission to NIST's Post-Quantum Cryptography Project, structured as per
.PRUNE-HORST is a stateless hash-based signature scheme designed by Jean-Philippe Aumasson and Guillaume Endignoux while working in Kudelski Security's research team.
## Content of this submission package
### Documentation
* [Supporting_Documentation/submission.pdf](Supporting_Documentation/submission.pdf): Reference documentation of PRUNE-HORST, include specification, security analysis, performance analysis.
* [Supporting_Documentation/latex_source/](Supporting_Documentation/latex_source/): LaTeX source of the reference documentation.
* [Supporting_Documentation/master_thesis_endignoux_guillaume.pdf](Supporting_Documentation/master_thesis_endignoux_guillaume.pdf): Masters thesis of Guillaume Endignoux, containing detailed analyses related to PRUNE-HORST's security.
* [Supporting_Documentation/parameters.py](Supporting_Documentation/parameters.py): Python script to compute the security of a PRUNE-HORST instance given a set of parameters.
### Implementations
* [Reference_Implementation/](Reference_Implementation): Our reference C89 implementation, without AES-NI nor SIMD instructions.
* [Additional_Implementations/fast](Additional_Implementations/fast): Our fast C89 implementation, with AES-NI and SIMD instructions.
* [Additional_Implementations/debug](Additional_Implementations/debug): A version of the fast implementation that prints intermediate values. This directory includes intermediate values files for each of the three PRUNE-HORST versions.
The directory [Optimized_Implementation/](Optimized_Implementation) contains a placeholder referring to the code under [Reference_Implementation/](Reference_Implementation), since our optimized implementation (as per NIST's requirements) is the same as our reference implementation.
The [Makefile](Reference_Implementation/Makefile) included in the [reference](Reference_Implementation) and [fast](Additional_Implementations/fast) implementations has the following targets:
```
$ make
Please choose a target:
analyze runs static analyzers
bench runs speed benchmarks
clean cleans up
format formats the code using .clang-format rules
```
Warning: `make bench` with the [reference](Reference_Implementation) implementation is slow because of the textbook AES implementation.The [Makefile](Additional_Implementations/debug/Makefile) of the [debug](Additional_Implementations/debug) implementation in addition provides `make ivs` and `make check` targets.
### Test values
* [KAT/](KAT): Includes NIST's s [PQCgenKAT_sign.c](KAT/PQCgenKAT_sign.c), [rng.c](KAT/rng.c), and [rng.h](KAT/rng.h), as well as a [Makefile](KAT/Makefile) that we created to generate the files PQCsignKAT_64.req and PQCsignKAT_64.rsp required by NIST, using [fast](Additional_Implementations/fast/) implementation.
* [KAT/PQCsignKAT_64_all.req](KAT/PQCsignKAT_64_all.req): .req KAT file generated by running `make`, same for all PRUNE-HORST versions.
* [KAT/PQCsignKAT_64_S.rsp](KAT/PQCsignKAT_64_S.rsp), [KAT/PQCsignKAT_64_M.rsp](KAT/PQCsignKAT_64_M.rsp), [KAT/PQCsignKAT_64_L.rsp](KAT/PQCsignKAT_64_L.rsp): .rsp KAT file generated by running `make`, for the PRUNE-HORST versions S, M, and L.
## Intellectual property
Copyright notices are included in the header of each source code file.
Our original source code of PRUNE-HORST is copyright © 2017 Nagravision S.A., and was written by Jean-Philippe Aumasson and Guillaume Endignoux.The fast, AES-NI-based Haraka implementation is copyright © 2016 Stefan Kölbl.
Our source code is released under [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) license.
Patent situation: We haven't filed any patent related to PRUNE-HORST nor are we aware of existing patent or patent application covering PRUNE-HORST.
## Acknowledgments
Thanks to Samuel Neves for helping optimize our code.