sign: Add MLD_CONFIG_MAX_SIGNING_ATTEMPTS and dedicated error code#1059
Draft
hanno-becker wants to merge 1 commit intomainfrom
Draft
sign: Add MLD_CONFIG_MAX_SIGNING_ATTEMPTS and dedicated error code#1059hanno-becker wants to merge 1 commit intomainfrom
hanno-becker wants to merge 1 commit intomainfrom
Conversation
Introduce a new configuration option, MLD_CONFIG_MAX_SIGNING_ATTEMPTS, that bounds the number of rejection-sampling iterations performed by the ML-DSA signing routine (FIPS 204, Algorithm 7). This is useful in timing-sensitive environments that require a deterministic worst-case bound on signing time. The default is the maximum value before non-overflow -- practically infinite. A compile-time check rejects values below the FIPS 204 Appendix C minimum of 814 (at which exhaustion has probability < 2^-256). When the bound is reached, signing now returns a dedicated error code MLD_ERR_SIGN_ATTEMPTS_EXHAUSTED instead of the generic MLD_ERR_FAIL. CBMC specifications and documentation for all signing entry points are adjusted accordingly. The PCT path (mld_check_pct) and keypair contracts are also updated because the new code can propagate through MLD_CONFIG_KEYGEN_PCT. Signed-off-by: Hanno Becker <beckphan@amazon.co.uk>
29b0a80 to
089c767
Compare
Contributor
CBMC Results (ML-DSA-65, REDUCE-RAM)⏭️ 16 proof(s) skipped (see
Full Results (185 proofs)
|
Contributor
CBMC Results (ML-DSA-44, REDUCE-RAM)⏭️ 16 proof(s) skipped (see
Full Results (185 proofs)
|
Contributor
CBMC Results (ML-DSA-87, REDUCE-RAM)⏭️ 16 proof(s) skipped (see
Full Results (185 proofs)
|
Contributor
CBMC Results (ML-DSA-87)
Full Results (185 proofs)
|
Contributor
CBMC Results (ML-DSA-44)
Full Results (185 proofs)
|
Contributor
CBMC Results (ML-DSA-65)
Full Results (185 proofs)
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduce a new configuration option, MLD_CONFIG_MAX_SIGNING_ATTEMPTS, that bounds the number of rejection-sampling iterations performed by the ML-DSA signing routine (FIPS 204, Algorithm 7). This is useful in timing-sensitive environments that require a deterministic worst-case bound on signing time.
The default is the maximum value before non-overflow -- practically infinite. A compile-time check rejects values below the FIPS 204 Appendix C minimum of 814 (at which exhaustion has probability < 2^-256).
When the bound is reached, signing now returns a dedicated error code MLD_ERR_SIGN_ATTEMPTS_EXHAUSTED instead of the generic MLD_ERR_FAIL. CBMC specifications and documentation for all signing entry points are adjusted accordingly. The PCT path (mld_check_pct) and keypair contracts are also updated because the new code can propagate through MLD_CONFIG_KEYGEN_PCT.