CRYSTALS-Dilithium

Parameter set summary

Parameter setParameter set aliasSecurity modelClaimed NIST LevelPublic key size (bytes)Secret key size (bytes)Signature size (bytes)
Dilithium2NAEUF-CMA2131225282420
Dilithium3NAEUF-CMA3195240003293
Dilithium5NAEUF-CMA5259248644595

Dilithium2 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 SourcerefAllAllNoneTrueTrueFalse
Primary Sourceavx2x86_64Darwin,LinuxAVX2,POPCNTTrueTrueFalse
oldpqclean-aarch64aarch64ARM64_V8Linux,DarwinNoneTrueFalseFalse

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.

Dilithium3 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 SourcerefAllAllNoneTrueTrueFalse
Primary Sourceavx2x86_64Darwin,LinuxAVX2,POPCNTTrueTrueFalse
oldpqclean-aarch64aarch64ARM64_V8Linux,DarwinNoneTrueFalseFalse

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

Dilithium5 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 SourcerefAllAllNoneTrueTrueFalse
Primary Sourceavx2x86_64Darwin,LinuxAVX2,POPCNTTrueTrueFalse
oldpqclean-aarch64aarch64ARM64_V8Linux,DarwinNoneTrueFalseFalse

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.