Skip to content

Commit 1e0cc26

Browse files
author
ID Bot
committed
Script updating gh-pages from 935cbeb. [ci skip]
1 parent 1a23ab3 commit 1e0cc26

3 files changed

Lines changed: 61 additions & 50 deletions

File tree

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
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.
1515
" name="description">
1616
<meta content="xml2rfc 3.31.0" name="generator">
17-
<meta content="draft-davidben-tls-merkle-tree-certs-latest" name="ietf.draft">
17+
<meta content="draft-ietf-plants-merkle-tree-certs-latest" name="ietf.draft">
1818
<!-- Generator version information:
1919
xml2rfc 3.31.0
2020
Python 3.12.12
@@ -29,7 +29,7 @@
2929
requests 2.32.5
3030
wcwidth 0.3.0
3131
-->
32-
<link href="draft-davidben-tls-merkle-tree-certs.xml" rel="alternate" type="application/rfc+xml">
32+
<link href="draft-ietf-plants-merkle-tree-certs.xml" rel="alternate" type="application/rfc+xml">
3333
<link href="#copyright" rel="license">
3434
<style type="text/css">@font-face {
3535
font-family: 'Lora';
@@ -1052,25 +1052,25 @@
10521052
</tr></thead>
10531053
<tfoot><tr>
10541054
<td class="left">Benjamin, et al.</td>
1055-
<td class="center">Expires 20 August 2026</td>
1055+
<td class="center">Expires 22 August 2026</td>
10561056
<td class="right">[Page]</td>
10571057
</tr></tfoot>
10581058
</table>
10591059
<div id="external-metadata" class="document-information"></div>
10601060
<div id="internal-metadata" class="document-information">
10611061
<dl id="identifiers">
10621062
<dt class="label-workgroup">Workgroup:</dt>
1063-
<dd class="workgroup">PLANTS Working Group</dd>
1063+
<dd class="workgroup">PKI, Logs, And Tree Signatures</dd>
10641064
<dt class="label-internet-draft">Internet-Draft:</dt>
1065-
<dd class="internet-draft">draft-davidben-tls-merkle-tree-certs-latest</dd>
1065+
<dd class="internet-draft">draft-ietf-plants-merkle-tree-certs-latest</dd>
10661066
<dt class="label-published">Published:</dt>
10671067
<dd class="published">
1068-
<time datetime="2026-02-16" class="published">16 February 2026</time>
1068+
<time datetime="2026-02-18" class="published">18 February 2026</time>
10691069
</dd>
10701070
<dt class="label-intended-status">Intended Status:</dt>
10711071
<dd class="intended-status">Standards Track</dd>
10721072
<dt class="label-expires">Expires:</dt>
1073-
<dd class="expires"><time datetime="2026-08-20">20 August 2026</time></dd>
1073+
<dd class="expires"><time datetime="2026-08-22">22 August 2026</time></dd>
10741074
<dt class="label-authors">Authors:</dt>
10751075
<dd class="authors">
10761076
<div class="author">
@@ -1106,12 +1106,12 @@ <h2 id="name-about-this-document">
11061106
</h2>
11071107
<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>
11081108
<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>
11111111
<p id="section-note.1-3">
11121112
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>.
11151115
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>
11161116
<p id="section-note.1-4">Source for this draft and an issue tracker can be found at
11171117
<span><a href="https://github.com/davidben/merkle-tree-certs">https://github.com/davidben/merkle-tree-certs</a></span>.<a href="#section-note.1-4" class="pilcrow">¶</a></p>
@@ -1135,7 +1135,7 @@ <h2 id="name-status-of-this-memo">
11351135
time. It is inappropriate to use Internet-Drafts as reference
11361136
material or to cite them other than as "work in progress."<a href="#section-boilerplate.1-3" class="pilcrow">¶</a></p>
11371137
<p id="section-boilerplate.1-4">
1138-
This Internet-Draft will expire on 20 August 2026.<a href="#section-boilerplate.1-4" class="pilcrow">¶</a></p>
1138+
This Internet-Draft will expire on 22 August 2026.<a href="#section-boilerplate.1-4" class="pilcrow">¶</a></p>
11391139
</section>
11401140
</div>
11411141
<div id="copyright">
@@ -1466,6 +1466,9 @@ <h2 id="name-copyright-notice">
14661466
</li>
14671467
<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.19.2.10">
14681468
<p id="section-toc.1-1.19.2.10.1"><a href="#appendix-E.10" class="auto internal xref"></a><a href="#name-since-draft-davidben-tls-merkle-tre-2" class="internal xref">Since draft-davidben-tls-merkle-tree-certs-09</a></p>
1469+
</li>
1470+
<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.19.2.11">
1471+
<p id="section-toc.1-1.19.2.11.1"><a href="#appendix-E.11" class="auto internal xref"></a><a href="#name-since-draft-davidben-tls-merkle-tre-3" class="internal xref">Since draft-davidben-tls-merkle-tree-certs-10</a></p>
14691472
</li>
14701473
</ul>
14711474
</li>
@@ -1481,25 +1484,24 @@ <h2 id="name-copyright-notice">
14811484
<h2 id="name-introduction">
14821485
<a href="#section-1" class="section-number selfRef">1. </a><a href="#name-introduction" class="section-name selfRef">Introduction</a>
14831486
</h2>
1484-
<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>
14911493
<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>
14941496
</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>
14971499
</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>
15001502
</li>
15011503
</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>
15031505
</section>
15041506
</div>
15051507
<div id="conventions-and-definitions">
@@ -6434,6 +6436,18 @@ <h3 id="name-since-draft-davidben-tls-merkle-tre-2">
64346436
</ul>
64356437
</section>
64366438
</div>
6439+
<div id="since-draft-davidben-tls-merkle-tree-certs-10">
6440+
<section id="appendix-E.11">
6441+
<h3 id="name-since-draft-davidben-tls-merkle-tre-3">
6442+
<a href="#name-since-draft-davidben-tls-merkle-tre-3" class="section-name selfRef">Since draft-davidben-tls-merkle-tree-certs-10</a>
6443+
</h3>
6444+
<ul class="normal">
6445+
<li class="normal" id="appendix-E.11-1.1">
6446+
<p id="appendix-E.11-1.1.1">Adopted by working group<a href="#appendix-E.11-1.1.1" class="pilcrow">¶</a></p>
6447+
</li>
6448+
</ul>
6449+
</section>
6450+
</div>
64376451
</section>
64386452
</div>
64396453
<div id="authors-addresses">

0 commit comments

Comments
 (0)