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
<pid="section-6.3.1-5">Each landmark specifies a tree size. The first landmark, numbered zero, is always a tree size of zero. The sequence of tree sizes MUST be append-only and monotonically increasing.<ahref="#section-6.3.1-5" class="pilcrow">¶</a></p>
2905
2908
<pid="section-6.3.1-6">Landmarks determine <em>landmark subtrees</em>: for each landmark, other than number zero, let <code>tree_size</code> be the landmark's tree size and <code>prev_tree_size</code> be that of the previous landmark. As described in <ahref="#arbitrary-intervals" class="auto internal xref">Section 4.4</a>, select the one or two subtrees that cover <code>[prev_tree_size, tree_size)</code>. Each of those subtrees is a landmark subtree.<ahref="#section-6.3.1-6" class="pilcrow">¶</a></p>
2906
2909
<pid="section-6.3.1-7">The most recent <code>max_landmarks</code> landmarks are said to be <em>active</em>. Landmarks MUST be allocated such that, at any given time, only active landmarks contain unexpired certificates. The active landmark subtrees are those determined by the active landmarks. There are at most <code>2 * max_landmarks</code> active landmark subtrees at any time. Every unexpired entry will be contained in one or more landmark subtree, or between the last landmark subtree and the latest checkpoint. Active landmark subtrees are predistributed to the relying party as trusted subtrees, as described in <ahref="#trusted-subtrees" class="auto internal xref">Section 7.4</a>.<ahref="#section-6.3.1-7" class="pilcrow">¶</a></p>
2907
-
<pid="section-6.3.1-8">If landmarks are allocated incorrectly (e.g. past landmarks change, or <code>max_landmarks</code> is inaccurate), there are no security consequences, but some older certificates may fail to validate.<ahref="#section-6.3.1-8" class="pilcrow">¶</a></p>
2908
-
<pid="section-6.3.1-9">It is RECOMMENDED that landmarks be allocated by picking some <code>time_between_landmarks</code> interval, and then appending the latest checkpoint tree size to the sequence, once per interval. If the latest checkpoint tree size is already a landmark, the interval is skipped. <code>max_landmarks</code> can then be set to <code>ceil(max_cert_lifetime / time_between_landmarks)</code>, where <code>max_cert_lifetime</code> is the CA's maximum certificate lifetime. Allocations do not need to be precise, as long as <code>max_landmarks</code> is accurate.<ahref="#section-6.3.1-9" class="pilcrow">¶</a></p>
2909
-
<pid="section-6.3.1-10">Relying parties will locally retain up to <code>2 * max_landmarks</code> hashes (<ahref="#trusted-subtrees" class="auto internal xref">Section 7.4</a>) per CA, so <code>max_landmarks</code> should be set to balance the delay between landmarks and the amount of state the relying party must maintain. Using the recommended procedure above, a CA with a maximum certificate lifetime of 7 days, allocating a landmark every hour, will have a <code>max_landmarks</code> of 168. The client state is then 336 hashes, or 10,752 bytes with SHA-256.<ahref="#section-6.3.1-10" class="pilcrow">¶</a></p>
2910
-
<pid="section-6.3.1-11"><code>landmark_url</code> MUST serve a resource with <code>Content-Type: text/plain; charset=utf-8</code> and the following lines. Each line MUST be terminated by a newline character (U+000A):<ahref="#section-6.3.1-11" class="pilcrow">¶</a></p>
2910
+
<pid="section-6.3.1-8">It is RECOMMENDED that landmarks be allocated following the procedure described in <ahref="#allocating-landmarks" class="auto internal xref">Section 6.3.2</a>. If landmarks are allocated incorrectly (e.g. past landmarks change, or <code>max_landmarks</code> is inaccurate), there are no security consequences, but some older certificates may fail to validate.<ahref="#section-6.3.1-8" class="pilcrow">¶</a></p>
2911
+
<pid="section-6.3.1-9">Relying parties will locally retain up to <code>2 * max_landmarks</code> hashes (<ahref="#trusted-subtrees" class="auto internal xref">Section 7.4</a>) per CA, so <code>max_landmarks</code> should be set to balance the delay between landmarks and the amount of state the relying party must maintain. Using the recommended procedure above, a CA with a maximum certificate lifetime of 7 days, allocating a landmark every hour, will have a <code>max_landmarks</code> of 168. The client state is then 336 hashes, or 10,752 bytes with SHA-256.<ahref="#section-6.3.1-9" class="pilcrow">¶</a></p>
2912
+
<pid="section-6.3.1-10"><code>landmark_url</code> MUST serve a resource with <code>Content-Type: text/plain; charset=utf-8</code> and the following lines. Each line MUST be terminated by a newline character (U+000A):<ahref="#section-6.3.1-10" class="pilcrow">¶</a></p>
<pid="section-6.3.1-12.2.1"><code>num_active_landmarks + 1</code> lines each containing a single non-negative decimal integer, containing a tree size. Numbered from zero to <code>num_active_landmarks</code>, line <code>i</code> contains the tree size for landmark <code>last_landmark - i</code>. The integers MUST be monotonically decreasing and lower or equal to the log's latest tree size.<ahref="#section-6.3.1-12.2.1" class="pilcrow">¶</a></p>
2926
+
<liclass="normal" id="section-6.3.1-11.2">
2927
+
<pid="section-6.3.1-11.2.1"><code>num_active_landmarks + 1</code> lines each containing a single non-negative decimal integer, containing a tree size. Numbered from zero to <code>num_active_landmarks</code>, line <code>i</code> contains the tree size for landmark <code>last_landmark - i</code>. The integers MUST be monotonically decreasing and lower or equal to the log's latest tree size.<ahref="#section-6.3.1-11.2.1" class="pilcrow">¶</a></p>
<pid="section-6.3.2-1">Given a TBSCertificateLogEntry in the issuance log and a landmark sequence, a signatureless certificate is constructed as follows:<ahref="#section-6.3.2-1" class="pilcrow">¶</a></p>
2937
+
<pid="section-6.3.2-1">It is RECOMMENDED that landmarks be allocated using the following procedure:<ahref="#section-6.3.2-1" class="pilcrow">¶</a></p>
<pid="section-6.3.2-2.1.1">Wait for the first landmark to be allocated that contains the entry.<ahref="#section-6.3.2-2.1.1" class="pilcrow">¶</a></p>
2940
+
<pid="section-6.3.2-2.1.1">Select some <code>time_between_landmarks</code> duration. Define a series of consecutive, non-overlapping time intervals, each of duration <code>time_between_landmarks</code>.<ahref="#section-6.3.2-2.1.1" class="pilcrow">¶</a></p>
2939
2941
</li>
2940
2942
<liid="section-6.3.2-2.2">
2941
-
<pid="section-6.3.2-2.2.1">Determine the landmark's subtrees and select the one that contains the entry.<ahref="#section-6.3.2-2.2.1" class="pilcrow">¶</a></p>
2943
+
<pid="section-6.3.2-2.2.1">At most once per time interval, append the latest checkpoint tree size to the landmark sequence if it is greater than the last landmark's tree size.<ahref="#section-6.3.2-2.2.1" class="pilcrow">¶</a></p>
2944
+
</li>
2945
+
</ol>
2946
+
<pid="section-6.3.2-3">To ensure that only active landmarks contain unexpired certificates, set <code>max_landmarks</code> to <code>ceil(max_cert_lifetime / time_between_landmarks) + 1</code>, where <code>max_cert_lifetime</code> is the CA's maximum certificate lifetime.<ahref="#section-6.3.2-3" class="pilcrow">¶</a></p>
<pid="section-6.3.3-1">Given a TBSCertificateLogEntry in the issuance log and a landmark sequence, a signatureless certificate is constructed as follows:<ahref="#section-6.3.3-1" class="pilcrow">¶</a></p>
<pid="section-6.3.3-2.1.1">Wait for the first landmark to be allocated that contains the entry.<ahref="#section-6.3.3-2.1.1" class="pilcrow">¶</a></p>
2958
+
</li>
2959
+
<liid="section-6.3.3-2.2">
2960
+
<pid="section-6.3.3-2.2.1">Determine the landmark's subtrees and select the one that contains the entry.<ahref="#section-6.3.3-2.2.1" class="pilcrow">¶</a></p>
2942
2961
</li>
2943
-
<liid="section-6.3.2-2.3">
2944
-
<pid="section-6.3.2-2.3.1">Construct a certificate (<ahref="#certificate-format" class="auto internal xref">Section 6.1</a>) using the selected subtree and no signatures.<ahref="#section-6.3.2-2.3.1" class="pilcrow">¶</a></p>
2962
+
<liid="section-6.3.3-2.3">
2963
+
<pid="section-6.3.3-2.3.1">Construct a certificate (<ahref="#certificate-format" class="auto internal xref">Section 6.1</a>) using the selected subtree and no signatures.<ahref="#section-6.3.3-2.3.1" class="pilcrow">¶</a></p>
2945
2964
</li>
2946
2965
</ol>
2947
-
<pid="section-6.3.2-3">Before sending this certificate, the authenticating party SHOULD obtain some application-protocol-specific signal that implies the relying party has been configured with the corresponding landmark. (<ahref="#trusted-subtrees" class="auto internal xref">Section 7.4</a> defines how relying parties are configured.) The trust anchor ID of the landmark may be used as an efficient identifier in the application protocol. <ahref="#use-in-tls" class="auto internal xref">Section 8</a> discusses how to do this in TLS <span>[<ahref="#RFC8446" class="cite xref">RFC8446</a>]</span>.<ahref="#section-6.3.2-3" class="pilcrow">¶</a></p>
2966
+
<pid="section-6.3.3-3">Before sending this certificate, the authenticating party SHOULD obtain some application-protocol-specific signal that implies the relying party has been configured with the corresponding landmark. (<ahref="#trusted-subtrees" class="auto internal xref">Section 7.4</a> defines how relying parties are configured.) The trust anchor ID of the landmark may be used as an efficient identifier in the application protocol. <ahref="#use-in-tls" class="auto internal xref">Section 8</a> discusses how to do this in TLS <span>[<ahref="#RFC8446" class="cite xref">RFC8446</a>]</span>.<ahref="#section-6.3.3-3" class="pilcrow">¶</a></p>
Copy file name to clipboardExpand all lines: index.html
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -62,23 +62,23 @@ <h2>Preview for branch <a href="lvalenta/landmark-parenthetical">lvalenta/landma
62
62
<tr>
63
63
<td><ahref="lvalenta/landmark-parenthetical/draft-davidben-tls-merkle-tree-certs.html" class="html draft-davidben-tls-merkle-tree-certs" title="Merkle Tree Certificates (HTML)">Merkle Tree Certificates</a></td>
64
64
<td><ahref="lvalenta/landmark-parenthetical/draft-davidben-tls-merkle-tree-certs.txt" class="txt draft-davidben-tls-merkle-tree-certs" title="Merkle Tree Certificates (Text)">plain text</a></td>
65
-
<td>same as main</td>
65
+
<td><ahref="https://author-tools.ietf.org/api/iddiff?url_1=https://davidben.github.io/merkle-tree-certs/draft-davidben-tls-merkle-tree-certs.txt&url_2=https://davidben.github.io/merkle-tree-certs/lvalenta/landmark-parenthetical/draft-davidben-tls-merkle-tree-certs.txt" class="diff draft-davidben-tls-merkle-tree-certs">diff with main</a></td>
66
66
</tr>
67
67
</table>
68
68
<h2>Preview for branch <ahref="lvalenta/allocating-landmarks">lvalenta/allocating-landmarks</a></h2>
69
69
<tableid="branch-lvalenta/allocating-landmarks">
70
70
<tr>
71
71
<td><ahref="lvalenta/allocating-landmarks/draft-davidben-tls-merkle-tree-certs.html" class="html draft-davidben-tls-merkle-tree-certs" title="Merkle Tree Certificates (HTML)">Merkle Tree Certificates</a></td>
72
72
<td><ahref="lvalenta/allocating-landmarks/draft-davidben-tls-merkle-tree-certs.txt" class="txt draft-davidben-tls-merkle-tree-certs" title="Merkle Tree Certificates (Text)">plain text</a></td>
73
-
<td><ahref="https://author-tools.ietf.org/api/iddiff?url_1=https://davidben.github.io/merkle-tree-certs/draft-davidben-tls-merkle-tree-certs.txt&url_2=https://davidben.github.io/merkle-tree-certs/lvalenta/allocating-landmarks/draft-davidben-tls-merkle-tree-certs.txt" class="diff draft-davidben-tls-merkle-tree-certs">diff with main</a></td>
73
+
<td>same as main</td>
74
74
</tr>
75
75
</table>
76
76
<h2>Preview for branch <ahref="lvalenta/rename-landmark">lvalenta/rename-landmark</a></h2>
77
77
<tableid="branch-lvalenta/rename-landmark">
78
78
<tr>
79
79
<td><ahref="lvalenta/rename-landmark/draft-davidben-tls-merkle-tree-certs.html" class="html draft-davidben-tls-merkle-tree-certs" title="Merkle Tree Certificates (HTML)">Merkle Tree Certificates</a></td>
80
80
<td><ahref="lvalenta/rename-landmark/draft-davidben-tls-merkle-tree-certs.txt" class="txt draft-davidben-tls-merkle-tree-certs" title="Merkle Tree Certificates (Text)">plain text</a></td>
81
-
<td>same as main</td>
81
+
<td><ahref="https://author-tools.ietf.org/api/iddiff?url_1=https://davidben.github.io/merkle-tree-certs/draft-davidben-tls-merkle-tree-certs.txt&url_2=https://davidben.github.io/merkle-tree-certs/lvalenta/rename-landmark/draft-davidben-tls-merkle-tree-certs.txt" class="diff draft-davidben-tls-merkle-tree-certs">diff with main</a></td>
82
82
</tr>
83
83
</table>
84
84
<h2>Preview for branch <ahref="affiliation">affiliation</a></h2>
0 commit comments