SPHINCS+

  • Algorithm type: Digital signature scheme.
  • Main cryptographic assumption: hash-based signatures.
  • Principal submitters: Andreas Hülsing.
  • Auxiliary submitters: Jean-Philippe Aumasson, Daniel J. Bernstein,, Ward Beullens, Christoph Dobraunig, Maria Eichlseder, Scott Fluhrer, Stefan-Lukas Gazdag, Panos Kampanakis, Stefan Kölbl, Tanja Lange, Martin M. Lauridsen, Florian Mendel, Ruben Niederhagen, Christian Rechberger, Joost Rijneveld, Peter Schwabe, Bas Westerbaan.
  • Authors' website: https://sphincs.org/
  • Specification version: NIST Round 3 submission, v3.1 (June 10, 2022).
  • Primary Source:

Advisories

  • This algorithm is not tested under Windows.

Parameter set summary

Parameter setParameter set aliasSecurity modelClaimed NIST LevelPublic key size (bytes)Secret key size (bytes)Signature size (bytes)
SPHINCS+-SHA2-128f-simpleNAEUF-CMA1326417088
SPHINCS+-SHA2-128s-simpleNAEUF-CMA132647856
SPHINCS+-SHA2-192f-simpleNAEUF-CMA3489635664
SPHINCS+-SHA2-192s-simpleNAEUF-CMA3489616224
SPHINCS+-SHA2-256f-simpleNAEUF-CMA56412849856
SPHINCS+-SHA2-256s-simpleNAEUF-CMA56412829792
SPHINCS+-SHAKE-128f-simpleNAEUF-CMA1326417088
SPHINCS+-SHAKE-128s-simpleNAEUF-CMA132647856
SPHINCS+-SHAKE-192f-simpleNAEUF-CMA3489635664
SPHINCS+-SHAKE-192s-simpleNAEUF-CMA3489616224
SPHINCS+-SHAKE-256f-simpleNAEUF-CMA56412849856
SPHINCS+-SHAKE-256s-simpleNAEUF-CMA56412829792

SPHINCS+-SHA2-128f-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?‡
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

‡For an explanation of what this denotes, consult the Explanation of Terms section at the end of this file.

SPHINCS+-SHA2-128s-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHA2-192f-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHA2-192s-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHA2-256f-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHA2-256s-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHAKE-128f-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHAKE-128s-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHAKE-192f-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHAKE-192s-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHAKE-256f-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

SPHINCS+-SHAKE-256s-simple implementation characteristics

Implementation sourceIdentifier in upstreamSupported architecture(s)Supported operating system(s)CPU extension(s) usedNo branching-on-secrets claimed?No branching-on-secrets checked by valgrind?Large stack usage?
Primary SourcecleanAllAllNoneFalseFalseFalse
Primary Sourceavx2x86_64Linux,DarwinAVX2TrueTrueFalse

Are implementations chosen based on runtime CPU feature detection? Yes.

Explanation of Terms

  • Large Stack Usage: Implementations identified as having such may cause failures when running in threads or in constrained environments.