You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: draft-ietf-plants-merkle-tree-certs.html
+40-26Lines changed: 40 additions & 26 deletions
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@
14
14
This document describes Merkle Tree certificates, a new form of X.509 certificates which integrate public logging of the certificate, in the style of Certificate Transparency. The integrated design reduces logging overhead in the face of both shorter-lived certificates and large post-quantum signature algorithms, while still achieving comparable security properties to traditional X.509 and Certificate Transparency. Merkle Tree certificates additionally admit an optional signatureless optimization, which decreases the message size by avoiding signatures altogether, at the cost of only applying to up-to-date relying parties and older certificates.
<p id="section-note.1-1">This note is to be removed before publishing as an RFC.<a href="#section-note.1-1" class="pilcrow">¶</a></p>
1108
1108
<p id="section-note.1-2">
1109
-
The latest revision of this draft can be found at <span><a href="https://davidben.github.io/merkle-tree-certs/draft-davidben-tls-merkle-tree-certs.html">https://davidben.github.io/merkle-tree-certs/draft-davidben-tls-merkle-tree-certs.html</a></span>.
1110
-
Status information for this document may be found at <span><a href="https://datatracker.ietf.org/doc/draft-davidben-tls-merkle-tree-certs/">https://datatracker.ietf.org/doc/draft-davidben-tls-merkle-tree-certs/</a></span>.<a href="#section-note.1-2" class="pilcrow">¶</a></p>
1109
+
The latest revision of this draft can be found at <span><a href="https://davidben.github.io/merkle-tree-certs/draft-ietf-plants-merkle-tree-certs.html">https://davidben.github.io/merkle-tree-certs/draft-ietf-plants-merkle-tree-certs.html</a></span>.
1110
+
Status information for this document may be found at <span><a href="https://datatracker.ietf.org/doc/draft-ietf-plants-merkle-tree-certs/">https://datatracker.ietf.org/doc/draft-ietf-plants-merkle-tree-certs/</a></span>.<a href="#section-note.1-2" class="pilcrow">¶</a></p>
1111
1111
<p id="section-note.1-3">
1112
1112
Discussion of this document takes place on the
1113
-
PLANTS Working Group mailing list (<span><a href="mailto:plants@ietf.org">mailto:plants@ietf.org</a></span>),
1114
-
which is archived at <span><a href="https://mailarchive.ietf.org/arch/browse/plants/">https://mailarchive.ietf.org/arch/browse/plants/</a></span>.
1113
+
PKI, Logs, And Tree Signatures Working Group mailing list (<span><a href="mailto:plants@ietf.org">mailto:plants@ietf.org</a></span>),
1114
+
which is archived at <span><a href="https://mailarchive.ietf.org/arch/browse/plants">https://mailarchive.ietf.org/arch/browse/plants</a></span>.
1115
1115
Subscribe at <span><a href="https://www.ietf.org/mailman/listinfo/plants/">https://www.ietf.org/mailman/listinfo/plants/</a></span>.<a href="#section-note.1-3" class="pilcrow">¶</a></p>
1116
1116
<p id="section-note.1-4">Source for this draft and an issue tracker can be found at
<p id="section-1-1">Authors' Note: This is an early draft of a proposal with many parts. We expect most details will change as the proposal evolves. This document has a concrete specification of these details, but this is only intended as a starting point, and to help convey the overall idea. The name of the draft says "tls" to keep continuity with earlier iterations of this work, but the protocol itself is not TLS-specific.<a href="#section-1-1" class="pilcrow">¶</a></p>
1485
-
<p id="section-1-2">In Public Key Infrastructures (PKIs) that use Certificate Transparency (CT) <span>[<a href="#RFC6962" class="cite xref">RFC6962</a>]</span> for a public logging requirement, an authenticating party must present Signed Certificate Timestamps (SCTs) alongside certificates. CT policies often require two or more SCTs per certificate <span>[<a href="#APPLE-CT" class="cite xref">APPLE-CT</a>]</span> <span>[<a href="#CHROME-CT" class="cite xref">CHROME-CT</a>]</span>, each of which carries a signature. These signatures are in addition to those in the certificate chain itself.<a href="#section-1-2" class="pilcrow">¶</a></p>
1486
-
<p id="section-1-3">Current signature schemes can use as few as 32 bytes per key and 64 bytes per signature <span>[<a href="#RFC8032" class="cite xref">RFC8032</a>]</span>, but post-quantum replacements are much larger. For example, ML-DSA-44 <span>[<a href="#FIPS204" class="cite xref">FIPS204</a>]</span> uses 1,312 bytes per public key and 2,420 bytes per signature. ML-DSA-65 uses 1,952 bytes per public key and 3,309 bytes per signature. Even with a directly-trusted intermediate (<span><a href="https://datatracker.ietf.org/doc/html/draft-ietf-tls-trust-anchor-ids-02#section-7.5" class="relref">Section 7.5</a> of [<a href="#I-D.ietf-tls-trust-anchor-ids" class="cite xref">I-D.ietf-tls-trust-anchor-ids</a>]</span>), two SCTs and a leaf certificate signature adds 7,260 bytes of authentication overhead with ML-DSA-44 and 9,927 bytes with ML-DSA-65.<a href="#section-1-3" class="pilcrow">¶</a></p>
1487
-
<p id="section-1-4">This increased overhead additionally impacts CT logs themselves. Most of a log's costs scale with the total storage size of the log. Each log entry contains both a public key, and a signature from the CA. With larger public keys and signatures, the size of each log entry will grow.<a href="#section-1-4" class="pilcrow">¶</a></p>
1488
-
<p id="section-1-5">Additionally, as PKIs transition to shorter-lived certificates <span>[<a href="#CABF-153" class="cite xref">CABF-153</a>]</span> <span>[<a href="#CABF-SC081" class="cite xref">CABF-SC081</a>]</span>, the number of entries in the log will grow.<a href="#section-1-5" class="pilcrow">¶</a></p>
1489
-
<p id="section-1-6">This document introduces Merkle Tree certificates, a new form of X.509 certificate that integrates logging with certificate issuance. Each CA maintains a log of everything it issues, signing views of the log to assert it has issued the contents. The CA signature is combined with cosignatures from other parties who verify correct operation and optionally mirror the log. These signatures, together with an inclusion proof for an individual entry, constitute a certificate.<a href="#section-1-6" class="pilcrow">¶</a></p>
1490
-
<p id="section-1-7">This achieves the following:<a href="#section-1-7" class="pilcrow">¶</a></p>
1487
+
<p id="section-1-1">In Public Key Infrastructures (PKIs) that use Certificate Transparency (CT) <span>[<a href="#RFC6962" class="cite xref">RFC6962</a>]</span> for a public logging requirement, an authenticating party must present Signed Certificate Timestamps (SCTs) alongside certificates. CT policies often require two or more SCTs per certificate <span>[<a href="#APPLE-CT" class="cite xref">APPLE-CT</a>]</span> <span>[<a href="#CHROME-CT" class="cite xref">CHROME-CT</a>]</span>, each of which carries a signature. These signatures are in addition to those in the certificate chain itself.<a href="#section-1-1" class="pilcrow">¶</a></p>
1488
+
<p id="section-1-2">Current signature schemes can use as few as 32 bytes per key and 64 bytes per signature <span>[<a href="#RFC8032" class="cite xref">RFC8032</a>]</span>, but post-quantum replacements are much larger. For example, ML-DSA-44 <span>[<a href="#FIPS204" class="cite xref">FIPS204</a>]</span> uses 1,312 bytes per public key and 2,420 bytes per signature. ML-DSA-65 uses 1,952 bytes per public key and 3,309 bytes per signature. Even with a directly-trusted intermediate (<span><a href="https://datatracker.ietf.org/doc/html/draft-ietf-tls-trust-anchor-ids-02#section-7.5" class="relref">Section 7.5</a> of [<a href="#I-D.ietf-tls-trust-anchor-ids" class="cite xref">I-D.ietf-tls-trust-anchor-ids</a>]</span>), two SCTs and a leaf certificate signature adds 7,260 bytes of authentication overhead with ML-DSA-44 and 9,927 bytes with ML-DSA-65.<a href="#section-1-2" class="pilcrow">¶</a></p>
1489
+
<p id="section-1-3">This increased overhead additionally impacts CT logs themselves. Most of a log's costs scale with the total storage size of the log. Each log entry contains both a public key, and a signature from the CA. With larger public keys and signatures, the size of each log entry will grow.<a href="#section-1-3" class="pilcrow">¶</a></p>
1490
+
<p id="section-1-4">Additionally, as PKIs transition to shorter-lived certificates <span>[<a href="#CABF-153" class="cite xref">CABF-153</a>]</span> <span>[<a href="#CABF-SC081" class="cite xref">CABF-SC081</a>]</span>, the number of entries in the log will grow.<a href="#section-1-4" class="pilcrow">¶</a></p>
1491
+
<p id="section-1-5">This document introduces Merkle Tree certificates, a new form of X.509 certificate that integrates logging with certificate issuance. Each CA maintains a log of everything it issues, signing views of the log to assert it has issued the contents. The CA signature is combined with cosignatures from other parties who verify correct operation and optionally mirror the log. These signatures, together with an inclusion proof for an individual entry, constitute a certificate.<a href="#section-1-5" class="pilcrow">¶</a></p>
1492
+
<p id="section-1-6">This achieves the following:<a href="#section-1-6" class="pilcrow">¶</a></p>
1491
1493
<ul class="normal">
1492
-
<li class="normal" id="section-1-8.1">
1493
-
<p id="section-1-8.1.1">Log entries do not scale with public key and signature sizes. Entries replace public keys with hashes and do not contain signatures, while preserving non-repudiability (<a href="#non-repudiation" class="auto internal xref">Section 12.4</a>).<a href="#section-1-8.1.1" class="pilcrow">¶</a></p>
1494
+
<li class="normal" id="section-1-7.1">
1495
+
<p id="section-1-7.1.1">Log entries do not scale with public key and signature sizes. Entries replace public keys with hashes and do not contain signatures, while preserving non-repudiability (<a href="#non-repudiation" class="auto internal xref">Section 12.4</a>).<a href="#section-1-7.1.1" class="pilcrow">¶</a></p>
1494
1496
</li>
1495
-
<li class="normal" id="section-1-8.2">
1496
-
<p id="section-1-8.2.1">To bound growth, long-expired entries can be pruned from logs and mirrors without interrupting existing clients. This allows log sizes to scale by retention policies, not the lifetime of the log, even as certificate lifetimes decrease.<a href="#section-1-8.2.1" class="pilcrow">¶</a></p>
1497
+
<li class="normal" id="section-1-7.2">
1498
+
<p id="section-1-7.2.1">To bound growth, long-expired entries can be pruned from logs and mirrors without interrupting existing clients. This allows log sizes to scale by retention policies, not the lifetime of the log, even as certificate lifetimes decrease.<a href="#section-1-7.2.1" class="pilcrow">¶</a></p>
1497
1499
</li>
1498
-
<li class="normal" id="section-1-8.3">
1499
-
<p id="section-1-8.3.1">After a processing delay, authenticating parties can obtain a second "signatureless" certificate for the same log entry. This second certificate is an optional size optimization that avoids the need for any signatures, assuming an up-to-date client that has some predistributed log information.<a href="#section-1-8.3.1" class="pilcrow">¶</a></p>
1500
+
<li class="normal" id="section-1-7.3">
1501
+
<p id="section-1-7.3.1">After a processing delay, authenticating parties can obtain a second "signatureless" certificate for the same log entry. This second certificate is an optional size optimization that avoids the need for any signatures, assuming an up-to-date client that has some predistributed log information.<a href="#section-1-7.3.1" class="pilcrow">¶</a></p>
1500
1502
</li>
1501
1503
</ul>
1502
-
<p id="section-1-9"><a href="#overview" class="auto internal xref">Section 3</a> gives an overview of the system. <a href="#subtrees" class="auto internal xref">Section 4</a> describes a Merkle Tree primitive used by this system. <a href="#issuance-logs" class="auto internal xref">Section 5</a> describes the log structure. Finally, <a href="#certificates" class="auto internal xref">Section 6</a> and <a href="#relying-parties" class="auto internal xref">Section 7</a> describe how to construct and consume a Merkle Tree certificate.<a href="#section-1-9" class="pilcrow">¶</a></p>
1504
+
<p id="section-1-8"><a href="#overview" class="auto internal xref">Section 3</a> gives an overview of the system. <a href="#subtrees" class="auto internal xref">Section 4</a> describes a Merkle Tree primitive used by this system. <a href="#issuance-logs" class="auto internal xref">Section 5</a> describes the log structure. Finally, <a href="#certificates" class="auto internal xref">Section 6</a> and <a href="#relying-parties" class="auto internal xref">Section 7</a> describe how to construct and consume a Merkle Tree certificate.<a href="#section-1-8" class="pilcrow">¶</a></p>
0 commit comments