--
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.
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
To view this discussion visit https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/19C12AE9-6592-4D80-824B-534DF9E927EA%40icloud.com.
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