On 10/29/25 11:01 AM, Sophie Schmieg wrote:
The other option is using external-µ as the hash function, but really the issue is that the hash function is always part of the signature scheme, and attempts at considering them separate are fraught with vulnerabilities. So my preference would be exporter-based channel binding


No  no no absolutely not. The 'hash' of mu isn't a pure SHAKE256, it contains ml-dsa specific differences. If you were to identify the hash, you would probably call it ml-dsa-hash, but to use that for anything other calculating 'mu', then you have broken ml-dsa.

In short 'mu' is an implementation optimization, it should not show up in any protocol spec. It should not be assumed to be universally implemented.


On Wed, Oct 29, 2025 at 9:57 AM David Benjamin <[email protected]> wrote:

    Ah yeah, if the identify function works, that's easy enough.
    Although, one reason to keep it small is so you don't have to hold
    on to the certificate after the handshake, across resumptions, and
    in tickets.

    Most TLS stacks do hold on to it today, but they're getting bigger
    with PQ. I've been musing on APIs where the certificate isn't
    retained, and instead you retain only that's needed for the
    application. (After you've verified the certificate, the signature
    is never used again. After you've verified CertificateVerify on
    the initial connection, the public key is never used again. And so
    on.) In that model, if the channel binding might be used later in
    the connection lifetime, or across resumption, keeping it small
    may be worthwhile.

    ...or perhaps we should be using an exporter-based channel binding
    and move on. ;-)

    On Wed, Oct 29, 2025 at 12:34 PM Nico Williams
    <[email protected]> wrote:

        On Wed, Oct 29, 2025 at 12:10:59PM -0400, David Benjamin wrote:
        > The rules in RFC 5929 are quite unfortunate because it means
        that the
        > application needs to actually recognize the signature
        algorithm, [...]

        +1.  I think we wanted the TSEP CB data to be "small".  That was
        misguided.

        Though it need not be the application so much as the TLS
        implementation,
        which can provide an accessor for getting at the CB data for any
        supported CB type for a given connection.

        > If I had a time machine, I would say the right answer would
        be that
        > tls-server-end-point is completely disconnected from the
        certificate
        > signature algorithm and instead is either a fixed hash
        (SHA-256 is fine),
        > or determined from the TLS connection state, not the
        certificate. I don't
        > have a time machine, but that might suggest updating the RFC
        to say:

        Or just the identity function.

        > 1. If the certificate signature algorithm is {one of these
        legacy entries},
        > use {the hash algorithm that the old spelling provide}
        > 2. Otherwise, it is SHA-256[*] and we move on with life
        >
        > [*] Or the cipher suite PRF hash if you like, but the
        channel binding
        > already has a hardcoded SHA-256 dependency. If SHA-256 ever
        falls, defining
        > a new channel binding will be the least of our headaches.

        But it would be one of many headaches.

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



--

Sophie Schmieg | Information Security Engineer | ISE Crypto |[email protected]


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

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

Reply via email to