My comment was intended to address the larger conversation in the thread
regarding cross-signs. That said, as you point out, there is absolutely
nothing preventing a single entity from cross-signing itself. 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.


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