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

Lists

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.