I agree with Sophie. The proposed text says that a failure results in the parties deriving different shared secrets. So, it seems to be only discussing KEMs that use implicit rejection. (With explicit rejection, the recipient would receive a failure indication rather than deriving a different shared secret.) In the case of implicit rejection, the failure would be indistinguishable from one caused by a corrupted ciphertext. So, it seems incorrect to RECOMMEND against trying to specifically handle such failures when it should be impossible for implementations to attempt to handle such failures differently from other failures.

How about this as possible new text:

   Some post-quantum key-exchange algorithms, including ML-KEM
   [NIST-FIPS-203], have a very small, but non-zero, probability of
   failure. This means that in theory the parties to the key exchange
   could derive different shared secrets even if both parties perform
   the algorithm correctly and no data is modified in transit. Such
   failures would be indistinguishable from other occurrences that
   would result in the client and server not deriving the same shared
   secrets (e.g., random bit corruptions, computation errors, malicious
   modification of data in transit) and so would be handled in the same
   way.


On 9/26/25 06:38, Paul Wouters wrote:
On Thu, 25 Sep 2025, Sophie Schmieg wrote:

So from a practical point of view, there is simply no guidance to give implementers. Not only are such errors incredibly unlikely, they also behave exactly the same as corrupted ciphertexts, and your stack will handle those, since there is no difference to the behavior in the case of ECDH.

I think there is consensus that there is no advise to give to implementers
to handle these failure cases. While we could use that to justify saying
nothing, my own preference is to at least have a sentence explicitely
saying that implementers should do nothing, in case implementers become
aware of these theortical failures and wrongly assume the specification
was not aware and thus "vulnerable" to these issues.

Perhaps:

Current:
    Some post-quantum key exchange algorithms, including ML-KEM
    [NIST-FIPS-203], have non-zero probability of failure, meaning two
    honest parties may derive different shared secrets. This would cause a     handshake failure. ML-KEM has a cryptographically small failure rate; if     other algorithms are used, implementers should be aware of the potential
    of handshake failure.  Clients MAY retry if a failure is encountered.

New:
    Some post-quantum key exchange algorithms, including ML-KEM
    [NIST-FIPS-203], have non-zero probability of failure, meaning
    two honest parties may derive different shared secrets. This
    would cause a handshake failure. As with other similar failures
    (such as bit corruptions), Clients MAY retry if a failure is
    encountered. Due to the negliable rate of occurances of these
    failure events, the lack of a known feasable method and the
    additional risk of introducing new attack vectors when attempting
    to handle these events, it is RECOMMENDED for implementers to
    not specifically handle post-quantum key exchange shared secrets
    failures, and rely on the pre-existing code paths that handle
    derivation failures.

If someone can write up a better and shorter text, please send in your
proposed text.

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

Reply via email to