Regarding Prehash in ML_DSA

183 views
Skip to first unread message

Jeevanjeet Dash

unread,
Sep 11, 2025, 6:42:35 AMSep 11
to pqc-...@list.nist.gov
Hi all,
I would like to confirm our approach regarding ML-DSA implementation. If we are planning to implement Hash-ML-DSA-Sign (Algorithm 4), do we also need to implement the standard ML-DSA-Sign (Algorithm 2), or is Algorithm 4 sufficient on its own?
Thanks & Regards
Jeevanjeet

niux_d...@icloud.com

unread,
Sep 11, 2025, 7:28:51 AMSep 11
to Jeevanjeet Dash, pqc-...@list.nist.gov
A stand-alone implementation of Algorithm 4 doesn't require Algorithm 2 - Algorithm 7 (along with necessary steps to encode the context string and the message) is the necessary and sufficient dependency for Hash-ML-DSA-Sign.

--
You received this message because you are subscribed to the Google Groups "pqc-forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pqc-forum+...@list.nist.gov.
To view this discussion visit https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/CAKODwQjMkM6Oz%3DBpkpAKwB2iwQ7vCFrpuJ15o8BWptaBy1DPOg%40mail.gmail.com.

John Mattsson

unread,
Sep 11, 2025, 8:03:56 AMSep 11
to niux_d...@icloud.com, Jeevanjeet Dash, pqc-...@list.nist.gov

An alternative option is to implement ML-DSA-Sign (Algorithm 2) and let the signed message be (mostly) a hash, calculated with your favorite legacy hash function. This is what IETF and CNSA 2.0 seem to recommend when you cannot use SHAKE256. If you can use SHAKE256, the preferred way to do external hashing is to just use external-μ, which is just a variant of ML-DSA-Sign (Algorithm 2).

https://keymaterial.net/2024/11/05/hashml-dsa-considered-harmful/

Cheers,
John

 

Mike Ounsworth

unread,
Sep 11, 2025, 9:19:35 AMSep 11
to niux_d...@icloud.com, Jeevanjeet Dash, John Mattsson, pqc-...@list.nist.gov
+1 to John,

Although I would re-phrase it as:

If you can use SHAKE256, the preferred way to do external hashing is to just use external-μ, which is just a variant of ML-DSA-Sign (Algorithm 2) and produces signatures which are indistinguishable from "normal" ML-DSA signatures; ie whether the signer does "normal" ML-DSA or external-µ ML-DSA is internal detail of the signer.


If you cannot use SHAKE256, then let the signed message be (mostly) a hash, calculated with your favorite legacy hash function. This, however is a "protocol change" since the verifier will need to know how the signer computed the pre-hashed message so that it can take the same steps while verifying.



---

Mike Ounsworth

 




From: 'John Mattsson' via pqc-forum <pqc-...@list.nist.gov>
Sent: Thursday, September 11, 2025 7:03 AM
To: niux_d...@icloud.com <niux_d...@icloud.com>; Jeevanjeet Dash <dashjee...@gmail.com>
Cc: pqc-...@list.nist.gov <pqc-...@list.nist.gov>
Subject: [EXTERNAL] Re: [pqc-forum] Regarding Prehash in ML_DSA

An alternative option is to implement ML-DSA-Sign (Algorithm 2) and let the signed message be (mostly) a hash, calculated with your favorite legacy hash function. This is what IETF and CNSA 2. 0 seem to recommend when you cannot use SHAKE256. 
Any email and files/attachments transmitted with it are intended solely for the use of the individual or entity to whom they are addressed. If this message has been sent to you in error, you must not copy, distribute or disclose of the information it contains. Please notify Entrust immediately and delete the message from your system.

Reply all
Reply to author
Forward
0 new messages