Hi all,

I did some /preliminary/ analysis; I would like to share a couple of cents to reconcile.

TL;DR: /My/ current understanding is that both John and D. J. Bernstein are right, but talking about slightly different things, i.e., system-level and protocol-level, respectively.

In case it helps anyone, the way I reconcile the two apparently diverging opinions is that:

   D. J. Bernstein is looking at signatures in /CertificateVerify/.
   Consistent with /computational/ proofs mentioned by him [0], my
   preliminary /symbolic/ analysis in ProVerif is that EUF-CMA does not
   break my proofs. I used DHKE because he said it does not matter, and
   it is something I am more comfortable and confident. I model EUF-CMA
   signatures using additional /rewrite rule/ to allow this
   functionality for the adversary. In TLS, client uses a fresh nonce
   which makes the use of multiple signatures -- on the /same/
   transcript hash -- useless for the adversary.

   John is looking at systems using signatures in TLS /Certificates/,
   such as firewalls using allowlist. EUF-CMA allows multiple
   certificates for same message (in this case, it refers to the
   contents of certificate, in particular binding of identity and
   public key). So blocked client (acting as attacker) can bypass
   allowlist by using another certificate with same contents. From the
   perspective of the server, it is a valid attack unless all valid
   certificates for that message are blocklisted. I don't have a model
   for it. It is my intuition/understanding from research.

While protocol-level is important, system-level view is important too.

===

Hi D. J. Bernstein,

Thank you for the detailed clarifications. I need more precise details to model the claimed attacks correctly.

Please feel free to correct me if I have misunderstood something.

Quoting below as requested in [1]:

On 06.06.26 14:13, D. J. Bernstein wrote:
To focus on what I was actually asking, I am assuming that you are not
aware of any follow-up paper which challenged/refuted/invalidated
the claims that EUF-CMA is /sufficient/ for TLS. Could you please
explicitly confirm? To my naive understanding, that seems to be the
central part of your claim on this matter.
What TLS cares about is whether the message was
legitimately signed---which in this case it was---rather than whether
this particular signature was the one that the signer produced.
Thanks, that matches my understanding.
My security objection to draft-ietf-tls-mldsa
doesn't actually rely on this---a minor tweak to ECC+PQ to first sign
with ECC and then use PQ to sign the message-signature pair, which is
one of the recommendations in, e.g.,

     https://pqcrypto.eu.org/deliverables/d2.5.pdf#subsection.3.3

in 2018, would stop this "attack"---but, more importantly, it's not an
attack on TLS in the first place.
Just a very quick check: It will stop the "attack" because the whole message-signature pair now acts as a message for the PQ signature (rather than appending two separate signatures), preserving its SUF-CMA properties of ML-DSA, right?
TLS 1.3 was advertised as insisting on proofs. The reality wasn't as
comprehensive as the marketing---there wasn't an insistence on proofs
covering all protocol details and reaching a satisfactory quantitative
security level and being computer-checked.
I appreciate the concern. I would be happy if you could share concrete feedback on the artifacts[2] to make them more comprehensive. We did some extensions which are not yet public because of papers under submission and I would be happy to give you access to private repos for review once you are done with your review of [2].
This is quantified as "mu-EUF-CMA", which is a
"multi-user" version of EUF-CMA where the attacker wins by breaking one
out of many uses of signatures.
For TLS, could you please clarify if "multi-user" refers to attacker (acting as client) opening multiple connections concurrently to the same server?
You ask whether I'm aware of any paper challenging the idea that EUF-CMA
is sufficient for TLS. No, I'm not, nor do I have any idea how such a
challenge could be justified, given how TLS uses signatures.
Thanks. That precisely answers my question.
[...] This isn't because of a lack of study; it's because TLS is
_signing the key exchange_ to ensure _integrity of the key exchange_,
while integrity of the _signature_ is irrelevant.
**The first part does not seem right to me. In TLS 1.3, CertificateVerify is
not just signing the key exchange, it's signing /all messages/ up to and
including Certificate message.
Sure, TLS is also signing more, but my point applies to all of the
messages signed in TLS. What matters about signatures for the TLS
security goals is simply that each of the signed messages was in fact
signed by the legitimate owner of the public key.
Thanks.We are now on the same page.
FWIW, what we have in ProVerif proofs is ideal signatures and SUF-CMA
makes it closer to the proofs.
Well, it's not rocket science to do a symbolic analysis that allows
signature malleability, but either way the symbolic analysis is at best
a simplified analogy of an EUF-CMA analysis or an SUF-CMA analysis.
Sure, I didn't intend to mean complexity; just the observation of what we currently have.
What are your assumptions -- if any -- on the key exchange part of TLS in
the attack? Do you assume KEMs or DHKE or hybrids?
Doesn't matter.
Thanks for the confirmation. I am using DHKE in my model, which I am more comfortable with.
  The only way TLS stops an attacker from posing as the
server is by signing the key exchange under the server's public key.
You agree above that it signs /more/ than just the key exchange, but still keep saying "signing the key exchange." This is confusing for me. It would be helpful to say something like signing the transcript hash. EncryptedExtensions is not critical, but Certificate message has a security-critical role to play, unless you make additional assumptions.
Could you please clarify "equivalent secret key" in the paper?
As the paper says, the attack "recovers an equivalent key---part of the
secret key---and uses the equivalent key to rapidly forge signatures on
arbitrary attacker-chosen messages, signatures that verify under the
original ML-DSA-44 public key"; Section 4 says concretely what's being
recovered; the paper's supplement includes attack demos.
 From TLS perspective, does it mean attacker recovers the server's
long-term private key?
No: "This attack does not recover 'the secret key' (and does not justify
[87]'s claim regarding that)". However, as the paper says: "some extra
work in signing lets the attacker compute 'hints' that pass verification
even without knowing the rest of the secret key". Full details are in
the attack demo.

Combining the above two, as I understand, attacker only computes part of the server's secret key, which is sufficient to produce valid signatures that the client will happily accept (and hence you call it 'equivalent secret key'). Is this a good summary?

Since the key is 'equivalent,' a reasonable symbolic model seems to be that the actual key gets leaked/is exfiltrated.Would that be a faithful model? If not, then why not?

If the private key is recovered, then why the online part is required.
Attacker can simply keep signing anything with that key and fully
impersonate the legitimate server rather than MITM.
I'm not sure what distinctions you're drawing here. Impersonation is an
active attack with an online part. MITM is an example of that where the
attacker is also talking to the server.

Maybe there is terminology mismatch here. Could you please clarify the "online part?"

Something I still don't understand is that attacker can pre-establish two connections with the server, do all the calculations for 'equivalent secret key.' Much later in time, it can simply use that key without needing to do anything with the server at that later time. Do you still call it 'online part?'

## *Two legitimate signatures*
I may be missing something cryptographically, but can you please explain
what exactly you mean by two legitimate signatures under that key?
The server signs two messages (concretely, two key exchanges) under its
public key.
Despite agreement above, I am still a bit confused about the continued use of "key exchanges" now even with "concretely." As explained in my previous email and once above, it would be helpful to use transcript hash instead.
At the /symbolic/ (not cryptographic) level, if you have above 4
assumptions, I don't understand why you need two legitimate signatures under
that key? To be on the same page, are you saying that it is a pre-condition
to one of the above 4 assumptions (#2 maybe?)?
I don't understand your #1/#2/#3/#4 division: e.g., #4 sounds like it's
talking about the Dolev--Yao abstraction, but #1 sounds like it's
talking about the real world; more to the point, the forgeries in my
attack demos (which you seem to have under #2) rely on specific software
bugs (which you seem to have under #1), so these aren't independent
assumptions.
Ok, here is my understanding of the attack vector:

1. Server with buggy standalone ML-DSA implementation
2. Because of bug, attacker can extract 'equivalent secret key' by
   establishing two connections to get two CertificateVerify messages
   and public key from Certificate.
3. With the 'equivalent secret key,' attacker can now issue fake
   signature in CertificateVerify message for /any/ connection of that
   server that the client will accept
4. Attack succeeds if time to complete handshake including forging
   signature for that specific connection < client time out

## *Practicality of attacks*
Do you have practical numbers on what is:
  * typical client time out from standard TLS libraries with references
https://weakdh.org/imperfect-forward-secrecy-ccs15.pdf  exhibited attacks
involving roughly a minute of online computation; typical clients were
not timing out that quickly.
Do you know of any more recent measurements of TLS client timeout behavior? This paper is now more than one decade old.
There's something to be said for trying to enforce short timeouts to
stop attacks, but realistically trying to set a timeout below 1 second
would be an interoperability nightmare, so for faster attacks than that
it isn't necessary to study client behavior---there will certainly be
many vulnerable clients.

Could you please clarify or point me to reference /where/ something is to be said?

Best regards,

-Usama


[0] https://eprint.iacr.org/2020/1029

[1] https://mailarchive.ietf.org/arch/msg/last-call/oKrCjFfDUYoePOVSyWQ-URQU9Fk/

[2] https://github.com/CCC-Attestation/formal-spec-id-crisis

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
TLS mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to