Home

Awesome

SPHINCS+

This repository contains the software that accompanies the SPHINCS+ submission to NIST's Post-Quantum Cryptography project.

Parameters

The SPHINCS+ specification proposed a set of 36 named instances, specifying hash functions and concrete parameters for the security level, tree dimensions, WOTS+ and FORS. This reference implementation allows for more flexibility, as parameters can be specified in a params.h file. The proposed parameter sets have been predefined in ref/params/params-*.h, and the hash function can be varied by linking with the different implementations of hash.h, i.e., hash_haraka.c, hash_sha2.c and hash_shake.c, as well as different implementations of thash.h, i.e., *_robust.c and *_simple.c. This is demonstrated in the Makefile. See the table below for a summary of the parameter sets. These parameters target the NIST security categories 1, 3 and 5; for each category, there is a parameter set geared towards either small signatures or fast signature generation.

nhdlog(t)kwbit securitypk bytessk bytessig bytes
SPHINCS+-128s1663712141613332647,856
SPHINCS+-128f16662263316128326417,088
SPHINCS+-192s24637141716193489616,224
SPHINCS+-192f24662283316194489635,664
SPHINCS+-256s326481422162556412829,792
SPHINCS+-256f326817935162556412849,856

License

All included code has been placed into Public Domain and is available under various open source licenses (Creative Commons Zero v1.0 Universal (CC0-1.0), BSD Zero Clause License (0BSD), and MIT No Attribution (MIT-0), see the LICENSE file and the licenses in the LICENSES folder), with the exception of rng.c, rng.h and PQCgenKAT_sign.c, which were provided by NIST, and parts of ref/haraka.c, which are under MIT license (MIT).