Hi Ryan,

On 27/05/2024 19:23, Ryan Hurst wrote:
I don't understand your position on the verifier, the faith one can put in the chain of signatures is only the faith appropriate for the weakest signature. As such if a classical key is used to sign a PQ chain, an attacker would go after the classical signature ignoring the others.

That's not quite right.

Let's imagine we have a leaf public key L1, a PQ Public Key M1 and a Classical Public Key N1 and use <- to indicate 'signed by'. Consider the certificate chains:

    (1) L1 <- M1

    (2) N1 -> L1 <- M1  (N1 and M1 are both intermediates signing the same leaf)

    (3) L1 <- M1 <- N1 (N1 cross-signs M1).

Have we made things worse in (2) by adding a classical signature? No. Any verifier that would output accept on (1), will also output accept on (2) without even checking N1. So we cannot have made security worse for anyone that would accept (1). The opposite is also true, anyone that would trust N1 will not need to verify M1. So (2) strictly improves availability without reducing security for anyone. (This was my proposed design in the initial mail).

For (3), we still have the property that anyone that would output accept on (1) would output accept on (3) without checking N1, so security for PQ users has not been reduced at all. The reverse direction for whether we hurt classical users requires us to trust that M1 is at least as secure as N1 - otherwise we're hurting security for the folks that trust N1 but not M1. In the context where M1 is a PQ-Hybrid and N1 is classical and both are operated by the same CA, this is perfectly fine. (This was my alternate design in the initial mail).

The important nuance is this: we can *add* as many certificates / signatures as we like to the leaf node of a chain in order to improve availability without hurting security. We can also extend PQ chains with classical roots, without degrading the security of PQ users in any way.

As a further thought experiment. Imagine we had a fully PQ PKI setup and established, then some attacker used their quantum computer to break a classical root and start adding a classical signature to all our secure PQ chains. This action would not impact security for any client which only trusted PQ signatures. They simply don't care about the classical signature and the attacker can't produce any new chains. For clients which did trust the classical signing algorithm, they're doomed no matter what, because the attacker can just make valid chains of their choice.

Security all comes down to roots and signatures the verifiers accepts, not the chains we make :-).

Best,
Dennis



Ryan

On Mon, May 27, 2024 at 11:15 AM Dennis Jackson <i...@dennis-jackson.uk> wrote:

    Hi Ryan,

    I wonder if the IETF mail servers are having a bad day again. I
    only see your reply to me, no other messages and currently the
    archives are only showing my initial email [1] with no replies.

    [1] https://mailarchive.ietf.org/arch/browse/tls/

    On 27/05/2024 18:51, Ryan Hurst wrote:
    However, doing so with a hybrid chain weakens the security of the
    chain to the security properties of the certificate and keys
    being used for the cross-signing.

    I don't think there's any such thing as the security of the chain.
    Only the security of the *verifier* of the chain. If they trust a
    classical root, they can't do better than classical security. If
    they trust only PQ roots, it doesn't matter how many extraneous
    classical certs are in the chain if there's a valid PQ path from
    leaf to a known PQ root or intermediate. In both cases, the having
    a classical signature on a PQ root or intermediate doesn't change
    security for anybody, it only improves availability.

    Best,
    Dennis



    On Mon, May 27, 2024 at 9:51 AM Dennis Jackson
    <i...@dennis-jackson.uk> wrote:

        Hi Ryan,

        On 27/05/2024 16:39, Ryan Hurst wrote:

        [...]

        Moreover, there's the liability issue: a CA that cross-signs
        another CA exposes its business to distrust based on the
        practices of the CA it cross-signs.

        [...]

        As someone who has both provided said cross-signs and
        received them I really don't see them as the silver bullet
        others seem to in this thread.

        This thread is purely talking about cross-signs between two
        roots operated by the same CA, which is the case when an
        existing CA with classical root is generating a new PQ root.

        This is completely standard practice, as exemplified by Let's
        Encrypt, DigiCert and Sectigo's pages describing their cross
        signs between the roots they operate [1,2,3]. There are no
        commercial relationships or sensitivities involved because
        the same organization controls both the signing and the
        cross-signed root.

        I guess you assumed the alternative scenario where the roots
        belong to two different CAs. The standard terminology of
        referring to both as a cross-sign is regrettably vague.

        Best,
        Dennis

        [1] Let's Encrypt X2 is cross signed by Let's Encrypt X1
        https://letsencrypt.org/certificates/

        [2] Digicert G5 by the Digicert Global Root CA
        
https://knowledge.digicert.com/tutorials/install-the-digicert-g5-cross-signed-root-ca-certificate

        [3] Sectigo UserTrust is cross signed by Sectigo AAA
        
https://support.sectigo.com/articles/Knowledge/Sectigo-Chain-Hierarchy-and-Intermediate-Roots


        Ryan Hurst

        On Mon, May 27, 2024 at 2:31 AM Dennis Jackson
        <ietf=40dennis-jackson...@dmarc.ietf.org> wrote:

            One of the key use cases proposed for Trust Expressions
            is enabling a speedy deployment of PQC Certificates. I
            agree this is an important use case to address, but I
            think a closer inspection of the existing deployment
            options shows that Trust Expressions does not provide
            any improvement or new functionality over existing,
            already widely deployed solutions.

            In particular, having each CA cross-sign their new PQC
            root with their existing classical root. This does not
            require any new functionalities or code changes in TLS
            clients or servers, does not require coordination
            between CAs / Root Programs / Clients and does not
            impose any performance impact on the connection (perhaps
            surprisingly).

            The rest of this message details the Trust Expressions
            proposal for a PQC transition and compares the security
            and performance to existing solutions.

            *The Trust Expressions Proposal for the PQC Transition
            *When we come to transition to PQC Certificates, the
            various Root Programs will include various PQC Roots and
            start distributing them to their clients. They will also
            configure their clients to start advertising the
            relevant PQC / hybrid signature algorithms in their
            signature_algorithms_cert TLS Extensions. TLS Servers
            will decide whether to send their classical chain or
            their PQC chain according to this extension.

            The Trust Expressions authors plus quite a few folks on
            the list have stated that this approach will require us
            to wait for all major root programs to accept a given
            PQC Root and then for that PQC root to be ubiquitously
            supported by all clients which also advertise PQC
            Signature Support. Otherwise, we might send our new PQ
            Chain to a client who only has an older set of PQ Roots,
            which would cause a connection failure. This wait could
            take a long time, even a year or more.

            Trust Expressions proposes that by having clients
            indicate their trust store label and version, we can
            mostly skip waiting for ubiquity. Through the Trust
            Expression's negotiation, we can be sure that we only
            send the PQC Root Certificate Chain to clients that have
            already updated to trust it. Meanwhile, clients that
            don't have PQC Signature support or do support the
            signatures but don't have the new PQC root will continue
            to receive the old classical chain and not enjoy any PQ
            Authentication.

            *The Existing Alternative
            *I believe this argument for the use of Trust
            Expressions overlooks existing widely available
            deployment options for PQC Certificates, which mean that
            we do not need to wait for multiple root stores to
            include new PQC certs or for them to become ubiquitous
            in clients. We will see how we can achieve the exact
            same properties as Trust Expressions (no waiting for
            ubiquity, no connection failures and PQ-Auth for all
            clients with the PQ Root) without the need for any new
            designs or deployments.

            When CAs create roots with new signature algorithms
            (e.g. ECDSA Roots), it is common practice to cross-sign
            the new root with the existing root (e.g. an RSA Root).
            This is the approach taken by Let's Encrypt today, who
            have an older RSA Root (ISRG X1) and a newer ECDSA Root
            (ISRG X2). X2 is cross signed by X1, and each of the new
            ECDSA Intermediates are also cross-signed by X1 [1]. In
            the context of RSA vs ECDSA, this isn't especially
            interesting because there's a purely a tradeoff between
            a smaller chain (ECDSA/X2) vs a more ubiquity (RSA/X1).
            However, we'll see this approach has much more
            substantial benefits with PQC Signatures.

            When the time comes to ship a PQC Root (which we'll call
            X3 for convenience), we'll make some PQC Intermediates
            (F1, F2, F3). We will also cross sign these
            intermediates with our X2 (ECDSA) Root which we'll call
            H1, H2, H3. So both F1 and H1 are certificates on the
            same intermediate PQC Public Key, with F1 having a PQC
            signature and H1 a ECDSA signature from their respective
            roots.

            When we provision servers with their certificate chains,
            we'll provision the PQC Chain as their leaf (PQC Public
            Key + PQC Signature), plus both F1 and H1. Clients that
            don't indicate support PQC Signatures in their
            signature_algorithms_cert extension will receive the
            usual classical chain. Clients that support PQC and have
            the new root will verify the leaf + F1 and so enjoy
            PQ-Auth. Clients that support PQC and don't have the new
            root will verify the leaf and H1 and not receive PQ-Auth.

            This achieves identical properties to Trust Expressions
            in terms of client security and doesn't involve any
            waiting for PQC Root Ubiquity or Root Store Approval.
            The only impact is the extra certificate in the chain.
            Happily, we can cut the overhead of H1 to be a mere 32
            bytes with existing TLS Certificate Compression
            Algorithms like zlib / zstd / brotli (since H1 and F1
            encode the same PQC Public Key). This is tiny compared
            to the necessary PQC Public Key and Signature already in
            the chain. With new schemes like Abridged Certs, we can
            go even further and replace all but the leaf certificate
            with two-byte identifiers.

            There are several alternatives available as well
            depending on the exact use case. For example, we could
            send only F1 (PQC Intermediate chaining to X3) and an X3
            Root signed by X2 - ensuring there's only a single chain
            and no path building support required. Clients with the
            X3 PQC Root will not need to check the final ECDSA
            signatures, others will. With existing TLS Certificate
            Compression algorithms, this compresses slightly worse
            than the dual-intermediates chain, but Abridged Certs
            works just as effectively. AIA Chasing is also deployed
            in Chrome and could be used to fetch this final
            cross-sign certificate if desired, although I think
            stateless mechanisms like Certificate Compression with
            zlib are preferable.

            In the event we'd like to make a second future
            transition, e.g. from a hybrid PQC signature scheme to a
            solely PQC scheme, or between PQC schemes, the same
            approach as above works just as well. I would fully
            expect by time we'd be considering a second transition,
            we'd either have mature deployment of solutions like
            intermediate suppression or abridged certs, or we'd be
            considering a move away from X.509 entirely to a newer,
            slimmer, PKI system.

            Overall, I hope this is convincing that the Trust
            Expressions design does not achieve any improvements
            over existing technology for transitioning to PQC Certs
            and so I think we can set this proposed use case aside
            from the wider discussion.

            *Wider Thoughts on the PQC Transition
            *

            In isolation, drafts like Abridged Certs and Trust
            Expressions can each deliver roughly the same size PQC
            Certificate Chains, able to compress down everything but
            the leaf certificate to just a couple of bytes.
            Depending on whether you expect PQC Signatures for SCTs,
            this gives an overall size of either ~4 KB - similar to
            RSA Chains today - or a rather unpalatable ~9 KB.

            Although recent work on improved CT log implementations
            like Sunlight is vital for the ecosystem and fantastic
            to see, I'm still quite concerned about the long term
            story for a Post Quantum PKI with strong transparency
            guarantees. There are existing proposals like Merkle
            Tree Certificates which look to eliminate X.509 entirely
            and replace signatures with proofs of inclusions. I
            think these ideas are pretty exciting and with
            refinement could be a promising way forwards, but do
            have a few open problems that we still need to solve
            (especially on the transparency and availability aspects).

            However, we do not need Trust Expressions to do Merkle
            Tree Certs or any alternative design, these features
            would necessarily need their own negotiation mechanism
            and so we should not confuse the two proposals.

            Best,
            Dennis

            [1] https://letsencrypt.org/certificates/ *
            *

            _______________________________________________
            TLS mailing list -- tls@ietf.org
            To unsubscribe send an email to tls-le...@ietf.org
_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to