[openssl/openssl] e0b716: Additional ML-KEM cleansing

"'openssl-machine' via openssl-commits" <[email protected]>
Newsgroups gmane.comp.encryption.openssl.cvs
Message-ID <openssl/openssl/push/refs/heads/master/[email protected]>
  Branch: refs/heads/master
  Home:   https://github.com/openssl/openssl
  Commit: e0b716092d83adb21524c10af4254c043c2a47c7
      https://github.com/openssl/openssl/commit/e0b716092d83adb21524c10af4254c043c2a47c7
  Author: Viktor Dukhovni <[email protected]>
  Date:   2026-08-11 (Tue, 11 Aug 2026)

  Changed paths:
    M crypto/ml_kem/ml_kem.c
    M providers/fips/fipsprov.c
    M providers/implementations/kem/ml_kem_kem.c
    M providers/implementations/kem/mlx_kem.c
    M providers/implementations/keymgmt/ml_kem_kmgmt.c
    M providers/implementations/keymgmt/mlx_kmgmt.c

  Log Message:
  -----------
  Additional ML-KEM cleansing

Also, mark X448MLKEM1024 key management as FIPS non-approved (completion of #26220)

Reviewed-by: Tim Hudson <[email protected]>
Reviewed-by: Bob Beck <[email protected]>
Reviewed-by: Milan Broz <[email protected]>
MergeDate: Tue Aug 11 06:57:33 2026
(Merged from https://github.com/openssl/openssl/pull/32148)


  Commit: 63c17a531c7cd7f6aae0ebef4eb318505a4af87e
      https://github.com/openssl/openssl/commit/63c17a531c7cd7f6aae0ebef4eb318505a4af87e
  Author: Viktor Dukhovni <[email protected]>
  Date:   2026-08-11 (Tue, 11 Aug 2026)

  Changed paths:
    M crypto/ml_dsa/ml_dsa_encoders.c
    M crypto/ml_dsa/ml_dsa_key.c
    M crypto/ml_dsa/ml_dsa_matrix.c
    M crypto/ml_dsa/ml_dsa_sample.c
    M crypto/ml_dsa/ml_dsa_sample_hw_x86_64.inc
    M crypto/ml_dsa/ml_dsa_sign.c
    M providers/implementations/digests/ml_dsa_mu_prov.c
    M providers/implementations/keymgmt/ml_dsa_kmgmt.c
    M providers/implementations/signature/ml_dsa_sig.c

  Log Message:
  -----------
  Additional ML-DSA cleansing

Reviewed-by: Tim Hudson <[email protected]>
Reviewed-by: Bob Beck <[email protected]>
Reviewed-by: Milan Broz <[email protected]>
MergeDate: Tue Aug 11 06:57:34 2026
(Merged from https://github.com/openssl/openssl/pull/32148)


  Commit: 7970e288ee43697956ae0a48ccb045155357a541
      https://github.com/openssl/openssl/commit/7970e288ee43697956ae0a48ccb045155357a541
  Author: Viktor Dukhovni <[email protected]>
  Date:   2026-08-11 (Tue, 11 Aug 2026)

  Changed paths:
    M crypto/slh_dsa/slh_dsa.c
    M crypto/slh_dsa/slh_dsa_hash_ctx.c
    M crypto/slh_dsa/slh_dsa_key.c
    M crypto/slh_dsa/slh_dsa_local.h
    M crypto/slh_dsa/slh_fors.c
    M crypto/slh_dsa/slh_hash.c
    M crypto/slh_dsa/slh_hypertree.c
    M crypto/slh_dsa/slh_wots.c
    M crypto/slh_dsa/slh_xmss.c
    M providers/implementations/keymgmt/slh_dsa_kmgmt.c
    M providers/implementations/signature/slh_dsa_sig.c

  Log Message:
  -----------
  slh-dsa: cleanse temporary copies of sensitive data

The hash functions worked on stack copies of the prehashed PK.seed context.
During signing these absorb SK.seed and WOTS+ chain secrets, and every call
left the final hash state on the stack.  Erasing it per call would burden the
innermost functions, which dominate signing time.

Give SLH_DSA_HASH_CTX a heap-allocated scratch context and use it in place of
the stack copies.  The working state now sits in one reusable buffer, erased
when the hash context is freed; the per-call copy is unchanged and stack use
goes down.  For the SHA2 parameter sets the buffer is sized to double as the
SHA-512 context of security categories 3 and 5.  The prehashed contexts are now
freed with OPENSSL_clear_free().

Erase the remaining temporaries holding secrets or data derived from them:
WOTS+ and FORS secret values, Merkle tree nodes, the message digest and
candidate FORS keys in sign and verify, the encoded message, and the caller's
signature buffer when signing fails part way.  Cleanse a wrong-length private
key that ossl_slh_dsa_key_fromdata() copied in before rejecting it.  The FORS
roots buffer held one root per tree but was sized for k * a nodes; shrink it to
k * n bytes and erase only the used length.

Performance is unchanged within noise; the SHAKE parameter sets measure a few
percent faster, likely because the working Keccak state now stays at one fixed
address rather than a fresh stack copy at each recursion depth.

Reviewed-by: Tim Hudson <[email protected]>
Reviewed-by: Bob Beck <[email protected]>
Reviewed-by: Milan Broz <[email protected]>
MergeDate: Tue Aug 11 06:57:36 2026
(Merged from https://github.com/openssl/openssl/pull/32148)


Compare: https://github.com/openssl/openssl/compare/a62c45948a9d...7970e288ee43

To unsubscribe from these emails, change your notification settings at https://github.com/openssl/openssl/settings/notifications

-- 
You received this message because you are subscribed to the Google Groups "openssl-commits" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/a/openssl.org/d/msgid/openssl-commits/openssl/openssl/push/refs/heads/master/a62c45-7970e2%40github.com.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.